package codechicken.wirelessredstone.addons; import codechicken.core.ClientUtils; import codechicken.core.ServerUtils; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.PlayerEvent.PlayerChangedDimensionEvent; import cpw.mods.fml.common.gameevent.PlayerEvent.PlayerLoggedInEvent; import cpw.mods.fml.common.gameevent.PlayerEvent.PlayerLoggedOutEvent; import cpw.mods.fml.common.gameevent.PlayerEvent.PlayerRespawnEvent; import cpw.mods.fml.common.gameevent.TickEvent.ClientTickEvent; import cpw.mods.fml.common.gameevent.TickEvent.Phase; import cpw.mods.fml.common.gameevent.TickEvent.ServerTickEvent; import cpw.mods.fml.common.gameevent.TickEvent.WorldTickEvent; import net.minecraft.world.chunk.Chunk; import net.minecraftforge.client.event.TextureStitchEvent; import net.minecraftforge.event.world.ChunkEvent.Unload; import net.minecraftforge.event.world.WorldEvent.Load; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; public class WRAddonEventHandler { @SubscribeEvent public void playerLogin(PlayerLoggedInEvent event) { RedstoneEtherAddons.server().onLogin(event.player); } @SubscribeEvent public void playerLogout(PlayerLoggedOutEvent event) { RedstoneEtherAddons.server().onLogout(event.player); } @SubscribeEvent public void playerDimensionChange(PlayerChangedDimensionEvent event) { RedstoneEtherAddons.server().onDimensionChange(event.player); } @SubscribeEvent public void playerRespawn(PlayerRespawnEvent event) { RedstoneEtherAddons.server().onLogin(event.player); } @SubscribeEvent public void worldTick(WorldTickEvent event) { if(event.phase == Phase.START) RedstoneEtherAddons.server().processSMPMaps(event.world); } @SubscribeEvent public void serverTick(ServerTickEvent event) { if(event.phase == Phase.START) RedstoneEtherAddons.server().processTrackers(); else { RedstoneEtherAddons.server().tickTriangs(); RedstoneEtherAddons.server().updateREPTimeouts(); } } @SubscribeEvent public void clientTick(ClientTickEvent event) { if(ClientUtils.inWorld()) { if (event.phase == Phase.START) TriangTexManager.processAllTextures(); else RedstoneEtherAddons.client().tick(); } } @SubscribeEvent public void onWorldLoad(Load event) { if (event.world.isRemote) RedstoneEtherAddons.loadClientManager(); else RedstoneEtherAddons.loadServerWorld(); } @SubscribeEvent public void onChunkUnload(Unload event) { Chunk chunk = event.getChunk(); for (int i = 0; i < chunk.entityLists.length; ++i) { for (int j = 0; j < chunk.entityLists[i].size(); ++j) { Object o = chunk.entityLists[i].get(j); if (o instanceof EntityWirelessTracker) ((EntityWirelessTracker) o).onChunkUnload(); } } } @SubscribeEvent @SideOnly(Side.CLIENT) public void onTextureLoad(TextureStitchEvent.Pre event) { if (event.map.getTextureType() == 1) { RemoteTexManager.load(event.map); TriangTexManager.loadTextures(); } } @SubscribeEvent public void onWorldUnload(net.minecraftforge.event.world.WorldEvent.Unload event) { if (event.world.isRemote) return; if (!ServerUtils.mc().isServerRunning()) RedstoneEtherAddons.unloadServer(); } }