package mods.ocminecart.common; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.PlayerEvent.ItemCraftedEvent; import cpw.mods.fml.common.gameevent.PlayerEvent.PlayerLoggedInEvent; import cpw.mods.fml.common.gameevent.TickEvent.ServerTickEvent; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import mods.ocminecart.Settings; import mods.ocminecart.client.SlotIcons; import mods.ocminecart.common.entityextend.RemoteExtenderRegister; import mods.ocminecart.common.items.interfaces.ItemEntityInteract; import mods.ocminecart.common.recipe.event.CraftingHandler; import mods.ocminecart.network.ModNetwork; import mods.ocminecart.network.message.ConfigSyncMessage; import net.minecraft.entity.item.EntityMinecart; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.client.event.TextureStitchEvent; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.EntityEvent.EntityConstructing; import net.minecraftforge.event.entity.player.AttackEntityEvent; import net.minecraftforge.event.entity.player.EntityInteractEvent; import net.minecraftforge.event.world.WorldEvent; public class EventHandler { int ticks=0; // 40 Server Ticks/sec but we want only 20 public static void initHandler(){ EventHandler handler = new EventHandler(); MinecraftForge.EVENT_BUS.register(handler); FMLCommonHandler.instance().bus().register(handler); } @SubscribeEvent @SideOnly(Side.CLIENT) public void onItemIconRegister(TextureStitchEvent event) { if(event.map.getTextureType()==1) SlotIcons.register(event.map); } @SubscribeEvent public void onItemCraft(ItemCraftedEvent event){ CraftingHandler.onCraftingEvent(event); } @SubscribeEvent public void onEntityClick(EntityInteractEvent event) { ItemStack stack = event.entityPlayer.inventory.getCurrentItem(); if(stack!=null && stack.getItem() instanceof ItemEntityInteract){ if(((ItemEntityInteract) stack.getItem()).onEntityClick(event.entityPlayer, event.target, stack, ItemEntityInteract.Type.RIGHT_CLICK)) event.setCanceled(true); } } @SubscribeEvent public void onEntityHit(AttackEntityEvent event) { ItemStack stack = event.entityPlayer.inventory.getCurrentItem(); if(stack!=null && stack.getItem() instanceof ItemEntityInteract){ if(((ItemEntityInteract) stack.getItem()).onEntityClick(event.entityPlayer, event.target, stack, ItemEntityInteract.Type.LEFT_CLICK)) event.setCanceled(true); } } @SubscribeEvent public void onEntityConstructing(EntityConstructing event){ if(FMLCommonHandler.instance().getEffectiveSide().isClient()) return; if(event.entity instanceof EntityMinecart){ RemoteExtenderRegister.addRemote((EntityMinecart) event.entity); } } @SubscribeEvent public void onServerTick(ServerTickEvent event){ ticks++; if(ticks<2) return; ticks=0; RemoteExtenderRegister.serverTick(); } @SubscribeEvent public void onPlayerLogin(PlayerLoggedInEvent event){ NBTTagCompound config = new NBTTagCompound(); config.setIntArray("remoterange", Settings.RemoteRange); ModNetwork.channel.sendTo(new ConfigSyncMessage(config), (EntityPlayerMP)event.player); } @SubscribeEvent public void onWorldUnload(WorldEvent.Unload event){ if(event.world.isRemote) return; RemoteExtenderRegister.reinit(); } @SubscribeEvent public void onWorldLoad(WorldEvent.Load event){ if(event.world.isRemote) return; RemoteExtenderRegister.reinit(); } }