Commit e068f3708bdd3ad58fad93e6b6181c1e1dd928c6
1 parent
027952f9
LiteLoader -add ServerTickable interface
Showing
4 changed files
with
41 additions
and
4 deletions
java/common/com/mumfrey/liteloader/ServerTickable.java
0 → 100644
1 | +package com.mumfrey.liteloader; | |
2 | + | |
3 | +import net.minecraft.server.MinecraftServer; | |
4 | + | |
5 | +/** | |
6 | + * Interface for mods which want to be ticked on the server thread | |
7 | + * | |
8 | + * @author Adam Mummery-Smith | |
9 | + */ | |
10 | +public interface ServerTickable extends LiteMod | |
11 | +{ | |
12 | + /** | |
13 | + * Called at the start of every server update tick | |
14 | + * | |
15 | + * @param server | |
16 | + */ | |
17 | + public abstract void onTick(MinecraftServer server); | |
18 | +} | ... | ... |
java/common/com/mumfrey/liteloader/core/IEventState.java
java/common/com/mumfrey/liteloader/core/LiteLoaderEventBroker.java
... | ... | @@ -34,6 +34,7 @@ import com.mumfrey.liteloader.PluginChannelListener; |
34 | 34 | import com.mumfrey.liteloader.ServerCommandProvider; |
35 | 35 | import com.mumfrey.liteloader.ServerPlayerListener; |
36 | 36 | import com.mumfrey.liteloader.ServerPluginChannelListener; |
37 | +import com.mumfrey.liteloader.ServerTickable; | |
37 | 38 | import com.mumfrey.liteloader.api.InterfaceProvider; |
38 | 39 | import com.mumfrey.liteloader.api.Listener; |
39 | 40 | import com.mumfrey.liteloader.common.GameEngine; |
... | ... | @@ -146,6 +147,11 @@ public abstract class LiteLoaderEventBroker<TClient, TServer extends MinecraftSe |
146 | 147 | private FastIterable<PlayerMoveListener> playerMoveListeners = new HandlerList<PlayerMoveListener>(PlayerMoveListener.class, ReturnLogicOp.AND_BREAK_ON_FALSE); |
147 | 148 | |
148 | 149 | /** |
150 | + * List of mods which monitor server ticks | |
151 | + */ | |
152 | + private FastIterable<ServerTickable> serverTickListeners = new HandlerList<ServerTickable>(ServerTickable.class); | |
153 | + | |
154 | + /** | |
149 | 155 | * ctor |
150 | 156 | * |
151 | 157 | * @param loader |
... | ... | @@ -203,6 +209,7 @@ public abstract class LiteLoaderEventBroker<TClient, TServer extends MinecraftSe |
203 | 209 | delegate.registerInterface(PlayerInteractionListener.class); |
204 | 210 | delegate.registerInterface(PlayerMoveListener.class); |
205 | 211 | delegate.registerInterface(CommonPluginChannelListener.class); |
212 | + delegate.registerInterface(ServerTickable.class); | |
206 | 213 | } |
207 | 214 | |
208 | 215 | /** |
... | ... | @@ -249,6 +256,14 @@ public abstract class LiteLoaderEventBroker<TClient, TServer extends MinecraftSe |
249 | 256 | { |
250 | 257 | this.playerMoveListeners.add(playerMoveListener); |
251 | 258 | } |
259 | + | |
260 | + /** | |
261 | + * @param serverTickable | |
262 | + */ | |
263 | + public void addServerTickable(ServerTickable serverTickable) | |
264 | + { | |
265 | + this.serverTickListeners.add(serverTickable); | |
266 | + } | |
252 | 267 | |
253 | 268 | /** |
254 | 269 | * @param instance |
... | ... | @@ -349,9 +364,10 @@ public abstract class LiteLoaderEventBroker<TClient, TServer extends MinecraftSe |
349 | 364 | this.loader.onWorldChanged(world); |
350 | 365 | } |
351 | 366 | |
352 | - public void onServerTick(MinecraftServer minecraftServer) | |
367 | + public void onServerTick(MinecraftServer server) | |
353 | 368 | { |
354 | - this.playerStateList.all().onTick(); | |
369 | + this.playerStateList.all().onTick(server); | |
370 | + this.serverTickListeners.all().onTick(server); | |
355 | 371 | } |
356 | 372 | |
357 | 373 | public boolean onPlaceBlock(NetHandlerPlayServer netHandler, EntityPlayerMP playerMP, BlockPos pos, EnumFacing facing) | ... | ... |
java/common/com/mumfrey/liteloader/core/PlayerEventState.java
... | ... | @@ -3,6 +3,7 @@ package com.mumfrey.liteloader.core; |
3 | 3 | import java.lang.ref.WeakReference; |
4 | 4 | |
5 | 5 | import net.minecraft.entity.player.EntityPlayerMP; |
6 | +import net.minecraft.server.MinecraftServer; | |
6 | 7 | import net.minecraft.util.BlockPos; |
7 | 8 | import net.minecraft.util.EnumFacing; |
8 | 9 | import net.minecraft.util.MovingObjectPosition; |
... | ... | @@ -70,7 +71,7 @@ public class PlayerEventState implements IEventState |
70 | 71 | } |
71 | 72 | |
72 | 73 | @Override |
73 | - public void onTick() | |
74 | + public void onTick(MinecraftServer server) | |
74 | 75 | { |
75 | 76 | if (this.leftClick && this.suppressLeftTicks == 0) |
76 | 77 | { | ... | ... |