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
| 1 | package com.mumfrey.liteloader.core; | 1 | package com.mumfrey.liteloader.core; |
| 2 | 2 | ||
| 3 | +import net.minecraft.server.MinecraftServer; | ||
| 4 | + | ||
| 3 | 5 | ||
| 4 | public interface IEventState | 6 | public interface IEventState |
| 5 | { | 7 | { |
| 6 | - public abstract void onTick(); | 8 | + public abstract void onTick(MinecraftServer server); |
| 7 | } | 9 | } |
java/common/com/mumfrey/liteloader/core/LiteLoaderEventBroker.java
| @@ -34,6 +34,7 @@ import com.mumfrey.liteloader.PluginChannelListener; | @@ -34,6 +34,7 @@ import com.mumfrey.liteloader.PluginChannelListener; | ||
| 34 | import com.mumfrey.liteloader.ServerCommandProvider; | 34 | import com.mumfrey.liteloader.ServerCommandProvider; |
| 35 | import com.mumfrey.liteloader.ServerPlayerListener; | 35 | import com.mumfrey.liteloader.ServerPlayerListener; |
| 36 | import com.mumfrey.liteloader.ServerPluginChannelListener; | 36 | import com.mumfrey.liteloader.ServerPluginChannelListener; |
| 37 | +import com.mumfrey.liteloader.ServerTickable; | ||
| 37 | import com.mumfrey.liteloader.api.InterfaceProvider; | 38 | import com.mumfrey.liteloader.api.InterfaceProvider; |
| 38 | import com.mumfrey.liteloader.api.Listener; | 39 | import com.mumfrey.liteloader.api.Listener; |
| 39 | import com.mumfrey.liteloader.common.GameEngine; | 40 | import com.mumfrey.liteloader.common.GameEngine; |
| @@ -146,6 +147,11 @@ public abstract class LiteLoaderEventBroker<TClient, TServer extends MinecraftSe | @@ -146,6 +147,11 @@ public abstract class LiteLoaderEventBroker<TClient, TServer extends MinecraftSe | ||
| 146 | private FastIterable<PlayerMoveListener> playerMoveListeners = new HandlerList<PlayerMoveListener>(PlayerMoveListener.class, ReturnLogicOp.AND_BREAK_ON_FALSE); | 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 | * ctor | 155 | * ctor |
| 150 | * | 156 | * |
| 151 | * @param loader | 157 | * @param loader |
| @@ -203,6 +209,7 @@ public abstract class LiteLoaderEventBroker<TClient, TServer extends MinecraftSe | @@ -203,6 +209,7 @@ public abstract class LiteLoaderEventBroker<TClient, TServer extends MinecraftSe | ||
| 203 | delegate.registerInterface(PlayerInteractionListener.class); | 209 | delegate.registerInterface(PlayerInteractionListener.class); |
| 204 | delegate.registerInterface(PlayerMoveListener.class); | 210 | delegate.registerInterface(PlayerMoveListener.class); |
| 205 | delegate.registerInterface(CommonPluginChannelListener.class); | 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,6 +256,14 @@ public abstract class LiteLoaderEventBroker<TClient, TServer extends MinecraftSe | ||
| 249 | { | 256 | { |
| 250 | this.playerMoveListeners.add(playerMoveListener); | 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 | * @param instance | 269 | * @param instance |
| @@ -349,9 +364,10 @@ public abstract class LiteLoaderEventBroker<TClient, TServer extends MinecraftSe | @@ -349,9 +364,10 @@ public abstract class LiteLoaderEventBroker<TClient, TServer extends MinecraftSe | ||
| 349 | this.loader.onWorldChanged(world); | 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 | public boolean onPlaceBlock(NetHandlerPlayServer netHandler, EntityPlayerMP playerMP, BlockPos pos, EnumFacing facing) | 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,6 +3,7 @@ package com.mumfrey.liteloader.core; | ||
| 3 | import java.lang.ref.WeakReference; | 3 | import java.lang.ref.WeakReference; |
| 4 | 4 | ||
| 5 | import net.minecraft.entity.player.EntityPlayerMP; | 5 | import net.minecraft.entity.player.EntityPlayerMP; |
| 6 | +import net.minecraft.server.MinecraftServer; | ||
| 6 | import net.minecraft.util.BlockPos; | 7 | import net.minecraft.util.BlockPos; |
| 7 | import net.minecraft.util.EnumFacing; | 8 | import net.minecraft.util.EnumFacing; |
| 8 | import net.minecraft.util.MovingObjectPosition; | 9 | import net.minecraft.util.MovingObjectPosition; |
| @@ -70,7 +71,7 @@ public class PlayerEventState implements IEventState | @@ -70,7 +71,7 @@ public class PlayerEventState implements IEventState | ||
| 70 | } | 71 | } |
| 71 | 72 | ||
| 72 | @Override | 73 | @Override |
| 73 | - public void onTick() | 74 | + public void onTick(MinecraftServer server) |
| 74 | { | 75 | { |
| 75 | if (this.leftClick && this.suppressLeftTicks == 0) | 76 | if (this.leftClick && this.suppressLeftTicks == 0) |
| 76 | { | 77 | { |