package net.tropicraft.event; import java.util.List; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiMainMenu; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.potion.Potion; import net.minecraft.world.World; import net.minecraft.world.WorldServer; import net.minecraftforge.event.world.WorldEvent.Load; import net.tropicraft.entity.placeable.EntityChair; import net.tropicraft.util.EffectHelper; import net.tropicraft.util.TropicraftWorldUtils; import CoroUtil.forge.CoroAI; import CoroUtil.world.WorldDirector; import CoroUtil.world.WorldDirectorManager; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.eventhandler.SubscribeEvent; 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.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import extendedrenderer.ExtendedRenderer; public class TCMiscEvents { @SubscribeEvent public void worldLoad(Load event) { if (!event.world.isRemote) { if (((WorldServer)event.world).provider.dimensionId == TropicraftWorldUtils.TROPICS_DIMENSION_ID) { if (WorldDirectorManager.instance().getWorldDirector(CoroAI.modID, event.world) == null) { WorldDirectorManager.instance().registerWorldDirector(new WorldDirector(), CoroAI.modID, event.world); } } } } @SideOnly(Side.CLIENT) @SubscribeEvent public void tickClient(ClientTickEvent event) { if (event.phase == Phase.END) { EffectHelper.tick(); } //so bad, but, where else? if (Minecraft.getMinecraft().currentScreen instanceof GuiMainMenu) { for (int ii = 0; ii < ExtendedRenderer.rotEffRenderer.fxLayers.length; ii++) { List list = ExtendedRenderer.rotEffRenderer.fxLayers[ii]; list.clear(); } } } @SubscribeEvent public void tickServer(ServerTickEvent event) { if (event.phase == Phase.END) { EffectHelper.tick(); } World world = FMLCommonHandler.instance().getMinecraftServerInstance().worldServerForDimension(0); if (world != null && world instanceof WorldServer) { for (int ii = 0; ii < world.playerEntities.size(); ii++) { Entity entity1 = (Entity)world.playerEntities.get(ii); if (entity1 instanceof EntityPlayerMP) { // If player is drunk and it is sunset and the player is riding a chair // teleport player! if (((EntityPlayerMP)entity1).isPotionActive(Potion.confusion) && isSunset(world) && entity1.ridingEntity instanceof EntityChair) { entity1.ridingEntity = null; TropicraftWorldUtils.teleportPlayer((EntityPlayerMP)entity1); } } } } } /** * Returns whether it is currently sunset * @param world World object * @return Is it currently sunset in the world? */ private boolean isSunset(World world) { long timeDay = world.getWorldTime() % 24000; return timeDay > 12200 && timeDay < 14000; } }