diff --git a/src/main/java/makeo/gadomancy/client/ClientProxy.java b/src/main/java/makeo/gadomancy/client/ClientProxy.java index ab21c70..4b4df0b 100644 --- a/src/main/java/makeo/gadomancy/client/ClientProxy.java +++ b/src/main/java/makeo/gadomancy/client/ClientProxy.java @@ -79,6 +79,7 @@ import makeo.gadomancy.common.blocks.tiles.TileStickyJar; import makeo.gadomancy.common.entities.EntityAuraCore; import makeo.gadomancy.common.entities.EntityPermNoClipItem; +import makeo.gadomancy.common.events.EventHandlerTooltips; import makeo.gadomancy.common.registration.RegisteredBlocks; import makeo.gadomancy.common.registration.RegisteredItems; import makeo.gadomancy.common.utils.Injector; @@ -95,7 +96,7 @@ /** * This class is part of the Gadomancy Mod Gadomancy is Open Source and distributed under the GNU LESSER GENERAL PUBLIC * LICENSE for more read the LICENSE file - * + *

* Created by makeo @ 29.11.2014 14:15 */ public class ClientProxy extends CommonProxy { @@ -227,15 +228,15 @@ public void initalize() { @Override public void postInitalize() { IResourceManager manager = Minecraft.getMinecraft().getResourceManager(); - if (manager instanceof SimpleReloadableResourceManager) { - SimpleReloadableResourceManager rm = (SimpleReloadableResourceManager) manager; + if (manager instanceof SimpleReloadableResourceManager rm) { rm.registerReloadListener(ResourceReloadListener.getInstance()); } + MinecraftForge.EVENT_BUS.register(new EventHandlerTooltips()); MinecraftForge.EVENT_BUS.register(EffectHandler.getInstance()); - MinecraftForge.EVENT_BUS.register(new RenderEventHandler()); - FMLCommonHandler.instance().bus().register(new RenderEventHandler()); - + final RenderEventHandler renderHandler = new RenderEventHandler(); + MinecraftForge.EVENT_BUS.register(renderHandler); + FMLCommonHandler.instance().bus().register(renderHandler); FMLCommonHandler.instance().bus().register(new ClientHandler()); super.postInitalize(); diff --git a/src/main/java/makeo/gadomancy/client/events/RenderEventHandler.java b/src/main/java/makeo/gadomancy/client/events/RenderEventHandler.java index 2c91fd2..c531de2 100644 --- a/src/main/java/makeo/gadomancy/client/events/RenderEventHandler.java +++ b/src/main/java/makeo/gadomancy/client/events/RenderEventHandler.java @@ -1,6 +1,5 @@ package makeo.gadomancy.client.events; -import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.zip.GZIPInputStream; @@ -60,21 +59,39 @@ /** * This class is part of the Gadomancy Mod Gadomancy is Open Source and distributed under the GNU LESSER GENERAL PUBLIC * LICENSE for more read the LICENSE file - * + *

* Created by makeo @ 13.10.2015 16:11 */ -public class RenderEventHandler { +public final class RenderEventHandler { - private static final REHWandHandler WAND_HANDLER = new REHWandHandler(); - private static final FakeArchitectItem ARCHITECT_ITEM = new FakeArchitectItem(); + private static final IModelCustom obj; + private static final ResourceLocation texture = new ResourceLocation("gadomancy:textures/misc/texW.png"); + static { + ResourceLocation resourceLocation = new ResourceLocation("gadomancy:textures/models/modelAssec.obj"); + IModelCustom buf; + try { + buf = new WavefrontObject( + "gadomancy:wRender", + new GZIPInputStream( + Minecraft.getMinecraft().getResourceManager().getResource(resourceLocation) + .getInputStream())); + } catch (Exception exc) { + // shush. + buf = null; + } + obj = buf; + } + + private final REHWandHandler WAND_HANDLER = new REHWandHandler(); + private final FakeArchitectItem ARCHITECT_ITEM = new FakeArchitectItem(); private Object oldGolemblurb; private int blurbId; + private int dList = -1; @SubscribeEvent public void on(GuiScreenEvent.DrawScreenEvent.Pre e) { - if (e.gui instanceof GuiGolem) { - GuiGolem gui = (GuiGolem) e.gui; + if (e.gui instanceof GuiGolem gui) { EntityGolemBase golem = new Injector(gui, GuiGolem.class).getField("golem"); if (golem != null) { AdditionalGolemCore core = GadomancyApi.getAdditionalGolemCore(golem); @@ -103,13 +120,13 @@ public void on(DrawBlockHighlightEvent e) { if (e.currentItem == null) return; if (e.currentItem.getItem() instanceof ItemWandCasting) { ItemFocusBasic focus = ((ItemWandCasting) e.currentItem.getItem()).getFocus(e.currentItem); - if (focus == null || !(focus instanceof IArchitect)) { + if (!(focus instanceof IArchitect)) { Block block = e.player.worldObj.getBlock(e.target.blockX, e.target.blockY, e.target.blockZ); if (block != null && block == RegisteredBlocks.blockArcaneDropper) { ForgeDirection dir = ForgeDirection.getOrientation( e.player.worldObj.getBlockMetadata(e.target.blockX, e.target.blockY, e.target.blockZ) & 7); - ArrayList coords = new ArrayList(); + ArrayList coords = new ArrayList<>(); for (int x = -1; x < 2; x++) { for (int y = -1; y < 2; y++) { for (int z = -1; z < 2; z++) { @@ -127,11 +144,11 @@ public void on(DrawBlockHighlightEvent e) { e.target.blockY + dir.offsetY, e.target.blockZ + dir.offsetZ)); - RenderEventHandler.ARCHITECT_ITEM.setCoords(coords); + this.ARCHITECT_ITEM.setCoords(coords); GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS); - RenderEventHandler.WAND_HANDLER.handleArchitectOverlay( - new ItemStack(RenderEventHandler.ARCHITECT_ITEM), + this.WAND_HANDLER.handleArchitectOverlay( + new ItemStack(this.ARCHITECT_ITEM), e, e.player.ticksExisted, e.target); @@ -145,13 +162,11 @@ public void on(DrawBlockHighlightEvent e) { int blockZ = e.target.blockZ; if (Minecraft.getMinecraft().gameSettings.thirdPersonView == 0) { TileEntity tile = e.player.worldObj.getTileEntity(blockX, blockY, blockZ); - if (tile instanceof TileExtendedNode) { - TileExtendedNode node = (TileExtendedNode) tile; + if (tile instanceof TileExtendedNode node) { if (node.getExtendedNodeType() == null) return; ExtendedTypeDisplayManager .notifyDisplayTick(node.getId(), node.getNodeType(), node.getExtendedNodeType()); - } else if (tile instanceof TileExtendedNodeJar) { - TileExtendedNodeJar nodeJar = (TileExtendedNodeJar) tile; + } else if (tile instanceof TileExtendedNodeJar nodeJar) { if (nodeJar.getExtendedNodeType() == null) return; ExtendedTypeDisplayManager .notifyDisplayTick(nodeJar.getId(), nodeJar.getNodeType(), nodeJar.getExtendedNodeType()); @@ -162,8 +177,7 @@ public void on(DrawBlockHighlightEvent e) { @SubscribeEvent public void guiOpen(GuiOpenEvent event) { - if (event.gui != null && event.gui instanceof GuiResearchRecipe) { - GuiResearchRecipe gui = (GuiResearchRecipe) event.gui; + if (event.gui instanceof GuiResearchRecipe gui) { ResearchItem research = new Injector(gui, GuiResearchRecipe.class).getField("research"); if (research.key.equals(Gadomancy.MODID.toUpperCase() + ".AURA_EFFECTS") && !(gui instanceof GuiResearchRecipeAuraEffects)) { @@ -183,10 +197,8 @@ public void worldRenderEvent(RenderWorldLastEvent event) { @SubscribeEvent(priority = EventPriority.LOWEST) public void renderEntityPre(RenderLivingEvent.Pre event) { - if (event.entity instanceof EntityPlayer) { - EntityPlayer p = (EntityPlayer) event.entity; - if (((DataAchromatic) SyncDataHolder.getDataClient("AchromaticData")) - .isAchromatic((EntityPlayer) event.entity)) { + if (event.entity instanceof EntityPlayer p) { + if (((DataAchromatic) SyncDataHolder.getDataClient("AchromaticData")).isAchromatic(p)) { this.current = p; GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.15F); GL11.glDepthMask(false); @@ -224,8 +236,7 @@ public void renderEntityPre(RenderLivingEvent.Pre event) { @SubscribeEvent(priority = EventPriority.LOWEST, receiveCanceled = true) public void renderPost(RenderLivingEvent.Post event) { - if (event.entity instanceof EntityPlayer) { - EntityPlayer p = (EntityPlayer) event.entity; + if (event.entity instanceof EntityPlayer p) { if (this.armor != null) { p.inventory.armorInventory = this.armor; } @@ -241,33 +252,6 @@ public void onSetArmor(RenderPlayerEvent.SetArmorModel event) { } } - static { - ResourceLocation mod = new ResourceLocation( - Gadomancy.MODID.toLowerCase() + new String( - new byte[] { 58, 116, 101, 120, 116, 117, 114, 101, 115, 47, 109, 111, 100, 101, 108, 115, 47, - 109, 111, 100, 101, 108, 65, 115, 115, 101, 99, 46, 111, 98, 106 }, - StandardCharsets.UTF_8)); - IModelCustom buf; - try { - buf = new WavefrontObject( - "gadomancy:wRender", - new GZIPInputStream( - Minecraft.getMinecraft().getResourceManager().getResource(mod).getInputStream())); - } catch (Exception exc) { - // shush. - buf = null; - } - obj = buf; - } - - private static final IModelCustom obj; - private static final ResourceLocation tex = new ResourceLocation( - new String( - new byte[] { 103, 97, 100, 111, 109, 97, 110, 99, 121, 58, 116, 101, 120, 116, 117, 114, 101, 115, - 47, 109, 105, 115, 99, 47, 116, 101, 120, 87, 46, 112, 110, 103 }, - StandardCharsets.UTF_8)); - private static int dList = -1; - @SubscribeEvent public void onRender(RenderPlayerEvent.Specials.Post event) { if (event.entityPlayer == null) return; @@ -278,7 +262,7 @@ public void onRender(RenderPlayerEvent.Specials.Post event) { GL11.glColor4f(1f, 1f, 1f, 1f); GL11.glPushMatrix(); - Minecraft.getMinecraft().renderEngine.bindTexture(RenderEventHandler.tex); + Minecraft.getMinecraft().renderEngine.bindTexture(RenderEventHandler.texture); boolean f = event.entityPlayer.capabilities.isFlying; double ma = f ? 15 : 5; double r = (ma * (Math.abs((ClientHandler.ticks % 80) - 40) / 40D)) + ((65 - ma) * Math @@ -286,22 +270,22 @@ public void onRender(RenderPlayerEvent.Specials.Post event) { GL11.glScaled(0.07, 0.07, 0.07); GL11.glRotatef(180, 0, 0, 1); GL11.glTranslated(0, -12.7, 0.7 - (((float) (r / ma)) * (f ? 0.5D : 0.2D))); - if (RenderEventHandler.dList == -1) { - RenderEventHandler.dList = GLAllocation.generateDisplayLists(2); - GL11.glNewList(RenderEventHandler.dList, GL11.GL_COMPILE); + if (this.dList == -1) { + this.dList = GLAllocation.generateDisplayLists(2); + GL11.glNewList(this.dList, GL11.GL_COMPILE); RenderEventHandler.obj.renderOnly("wR"); GL11.glEndList(); - GL11.glNewList(RenderEventHandler.dList + 1, GL11.GL_COMPILE); + GL11.glNewList(this.dList + 1, GL11.GL_COMPILE); RenderEventHandler.obj.renderOnly("wL"); GL11.glEndList(); } GL11.glPushMatrix(); GL11.glRotated(20D + r, 0, -1, 0); - GL11.glCallList(RenderEventHandler.dList); + GL11.glCallList(this.dList); GL11.glPopMatrix(); GL11.glPushMatrix(); GL11.glRotated(20D + r, 0, 1, 0); - GL11.glCallList(RenderEventHandler.dList + 1); + GL11.glCallList(this.dList + 1); GL11.glPopMatrix(); GL11.glPopMatrix(); } diff --git a/src/main/java/makeo/gadomancy/common/CommonProxy.java b/src/main/java/makeo/gadomancy/common/CommonProxy.java index 1c88bba..48e20b0 100644 --- a/src/main/java/makeo/gadomancy/common/CommonProxy.java +++ b/src/main/java/makeo/gadomancy/common/CommonProxy.java @@ -22,8 +22,9 @@ import makeo.gadomancy.common.containers.ContainerInfusionClaw; import makeo.gadomancy.common.data.SyncDataHolder; import makeo.gadomancy.common.data.config.ModConfig; -import makeo.gadomancy.common.events.EventHandlerEntity; +import makeo.gadomancy.common.events.EventHandlerEntityServer; import makeo.gadomancy.common.events.EventHandlerGolem; +import makeo.gadomancy.common.events.EventHandlerGolemServer; import makeo.gadomancy.common.events.EventHandlerNetwork; import makeo.gadomancy.common.events.EventHandlerWorld; import makeo.gadomancy.common.network.PacketHandler; @@ -72,6 +73,8 @@ public void initalize() { RegisteredEntities.init(); DimensionManager.registerProviderType(ModConfig.dimOuterId, WorldProviderTCEldrich.class, true); DimensionManager.registerDimension(ModConfig.dimOuterId, ModConfig.dimOuterId); + FMLCommonHandler.instance().bus().register(new EventHandlerNetwork()); + MinecraftForge.EVENT_BUS.register(new EventHandlerGolem()); } public void postInitalize() { @@ -126,32 +129,27 @@ public Side getSide() { return Side.SERVER; } - public EventHandlerGolem EVENT_HANDLER_GOLEM; - public EventHandlerNetwork EVENT_HANDLER_NETWORK; - public EventHandlerWorld EVENT_HANDLER_WORLD; - public EventHandlerEntity EVENT_HANDLER_ENTITY; + public EventHandlerGolemServer handlerGolemServer; + private EventHandlerWorld handlerWorld; + public EventHandlerEntityServer handlerEntityServer; public void onServerAboutToStart(FMLServerAboutToStartEvent event) { - EVENT_HANDLER_GOLEM = new EventHandlerGolem(); - MinecraftForge.EVENT_BUS.register(EVENT_HANDLER_GOLEM); - EVENT_HANDLER_NETWORK = new EventHandlerNetwork(); - FMLCommonHandler.instance().bus().register(EVENT_HANDLER_NETWORK); - EVENT_HANDLER_WORLD = new EventHandlerWorld(); - MinecraftForge.EVENT_BUS.register(EVENT_HANDLER_WORLD); - FMLCommonHandler.instance().bus().register(EVENT_HANDLER_WORLD); - EVENT_HANDLER_ENTITY = new EventHandlerEntity(); - MinecraftForge.EVENT_BUS.register(EVENT_HANDLER_ENTITY); + handlerGolemServer = new EventHandlerGolemServer(); + MinecraftForge.EVENT_BUS.register(handlerGolemServer); + handlerWorld = new EventHandlerWorld(); + MinecraftForge.EVENT_BUS.register(handlerWorld); + FMLCommonHandler.instance().bus().register(handlerWorld); + handlerEntityServer = new EventHandlerEntityServer(); + MinecraftForge.EVENT_BUS.register(handlerEntityServer); } public void onServerStopped(FMLServerStoppedEvent event) { - MinecraftForge.EVENT_BUS.unregister(EVENT_HANDLER_GOLEM); - EVENT_HANDLER_GOLEM = null; - FMLCommonHandler.instance().bus().unregister(EVENT_HANDLER_NETWORK); - EVENT_HANDLER_NETWORK = null; - MinecraftForge.EVENT_BUS.unregister(EVENT_HANDLER_WORLD); - FMLCommonHandler.instance().bus().unregister(EVENT_HANDLER_WORLD); - EVENT_HANDLER_WORLD = null; - MinecraftForge.EVENT_BUS.unregister(EVENT_HANDLER_ENTITY); - EVENT_HANDLER_ENTITY = null; + MinecraftForge.EVENT_BUS.unregister(handlerGolemServer); + handlerGolemServer = null; + MinecraftForge.EVENT_BUS.unregister(handlerWorld); + FMLCommonHandler.instance().bus().unregister(handlerWorld); + handlerWorld = null; + MinecraftForge.EVENT_BUS.unregister(handlerEntityServer); + handlerEntityServer = null; } } diff --git a/src/main/java/makeo/gadomancy/common/aura/AuraEffects.java b/src/main/java/makeo/gadomancy/common/aura/AuraEffects.java index 19550c0..2ff25c4 100644 --- a/src/main/java/makeo/gadomancy/common/aura/AuraEffects.java +++ b/src/main/java/makeo/gadomancy/common/aura/AuraEffects.java @@ -201,8 +201,8 @@ public boolean isEntityApplicable(Entity e) { @Override public void doEntityEffect(ChunkCoordinates originTile, Entity e) { - if (!Gadomancy.proxy.EVENT_HANDLER_ENTITY.registeredLuxPylons.contains(originTile)) { - Gadomancy.proxy.EVENT_HANDLER_ENTITY.registeredLuxPylons.add(originTile); + if (!Gadomancy.proxy.handlerEntityServer.registeredLuxPylons.contains(originTile)) { + Gadomancy.proxy.handlerEntityServer.registeredLuxPylons.add(originTile); } } diff --git a/src/main/java/makeo/gadomancy/common/events/EventHandlerEntity.java b/src/main/java/makeo/gadomancy/common/events/EventHandlerEntityServer.java similarity index 96% rename from src/main/java/makeo/gadomancy/common/events/EventHandlerEntity.java rename to src/main/java/makeo/gadomancy/common/events/EventHandlerEntityServer.java index 176fece..380e2cd 100644 --- a/src/main/java/makeo/gadomancy/common/events/EventHandlerEntity.java +++ b/src/main/java/makeo/gadomancy/common/events/EventHandlerEntityServer.java @@ -36,7 +36,7 @@ *

* Created by HellFirePvP @ 31.10.2015 15:28 */ -public class EventHandlerEntity { +public class EventHandlerEntityServer { public final List registeredLuxPylons = new ArrayList<>(); @@ -91,8 +91,7 @@ public void on(LivingDeathEvent event) { @SubscribeEvent public void on(EntityItemPickupEvent event) { if (!event.entityPlayer.worldObj.isRemote) { - if (event.item instanceof EntityPermNoClipItem) { - EntityPermNoClipItem item = (EntityPermNoClipItem) event.item; + if (event.item instanceof EntityPermNoClipItem item) { ChunkCoordinates master = (ChunkCoordinates) item.getDataWatcher() .getWatchedObject(ModConfig.entityNoClipItemDatawatcherMasterId).getObject(); TileEntity te = event.entityPlayer.worldObj.getTileEntity(master.posX, master.posY, master.posZ); diff --git a/src/main/java/makeo/gadomancy/common/events/EventHandlerGolem.java b/src/main/java/makeo/gadomancy/common/events/EventHandlerGolem.java index b547a5a..7aa1e30 100644 --- a/src/main/java/makeo/gadomancy/common/events/EventHandlerGolem.java +++ b/src/main/java/makeo/gadomancy/common/events/EventHandlerGolem.java @@ -1,23 +1,14 @@ package makeo.gadomancy.common.events; -import java.util.HashMap; -import java.util.Map; - import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.StatCollector; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.EntityEvent; import net.minecraftforge.event.entity.EntityJoinWorldEvent; -import net.minecraftforge.event.entity.PlaySoundAtEntityEvent; import net.minecraftforge.event.entity.living.LivingHurtEvent; -import net.minecraftforge.event.entity.player.AttackEntityEvent; import net.minecraftforge.event.entity.player.EntityInteractEvent; -import net.minecraftforge.event.entity.player.ItemTooltipEvent; import net.minecraftforge.event.entity.player.PlayerInteractEvent; import cpw.mods.fml.common.eventhandler.EventPriority; @@ -25,7 +16,6 @@ import makeo.gadomancy.api.GadomancyApi; import makeo.gadomancy.api.golems.AdditionalGolemType; import makeo.gadomancy.api.golems.cores.AdditionalGolemCore; -import makeo.gadomancy.api.golems.events.GolemDropPlacerEvent; import makeo.gadomancy.api.golems.events.PlacerCreateGolemEvent; import makeo.gadomancy.common.Gadomancy; import makeo.gadomancy.common.data.DataAchromatic; @@ -45,28 +35,22 @@ /** * This class is part of the Gadomancy Mod Gadomancy is Open Source and distributed under the GNU LESSER GENERAL PUBLIC * LICENSE for more read the LICENSE file - * + *

* Created by makeo @ 13.03.2015 13:56 */ public class EventHandlerGolem { - private final Map markedGolems = new HashMap<>(); - @SubscribeEvent(priority = EventPriority.LOWEST) public void on(EntityEvent.EntityConstructing e) { - if (e.entity instanceof EntityGolemBase) { - EntityGolemBase golem = (EntityGolemBase) e.entity; - + if (e.entity instanceof EntityGolemBase golem) { golem.registerExtendedProperties(Gadomancy.MODID, new ExtendedGolemProperties(golem)); - golem.getDataWatcher().addObject(ModConfig.golemDatawatcherId, ""); } } @SubscribeEvent(priority = EventPriority.HIGHEST) public void on(EntityEvent.EnteringChunk event) { - if (event.entity instanceof EntityGolemBase) { - EntityGolemBase golem = (EntityGolemBase) event.entity; + if (event.entity instanceof EntityGolemBase golem) { if (GadomancyApi.isAdditionalGolemType(golem.getGolemType())) { ExtendedGolemProperties props = (ExtendedGolemProperties) event.entity .getExtendedProperties(Gadomancy.MODID); @@ -80,18 +64,15 @@ public void on(EntityEvent.EnteringChunk event) { @SubscribeEvent(priority = EventPriority.LOWEST, receiveCanceled = true) public void on(EntityJoinWorldEvent event) { - if (!event.entity.worldObj.isRemote && event.entity instanceof EntityGolemBase) { - EntityGolemBase golem = (EntityGolemBase) event.entity; + if (!event.entity.worldObj.isRemote && event.entity instanceof EntityGolemBase golem) { ExtendedGolemProperties props = (ExtendedGolemProperties) golem.getExtendedProperties(Gadomancy.MODID); if (props != null) { props.setWrapperIfNeeded(); } } - if (event.entity instanceof EntityItem) { - EntityItem item = (EntityItem) event.entity; + if (event.entity instanceof EntityItem item) { ItemStack stack = item.getEntityItem(); - if (stack.getItem() == ConfigItems.itemGolemPlacer) { AdditionalGolemType type = GadomancyApi .getAdditionalGolemType(EnumGolemType.getType(stack.getItemDamage())); @@ -124,8 +105,7 @@ public void on(PlayerInteractEvent e) { .onItemUseFirst(itemInHand, e.entityPlayer, e.world, e.x, e.y, e.z, e.face, 0, 0, 0)) { e.setCanceled(true); Entity entity = e.world.getEntityByID(entityId); - if (entity != null && entity instanceof EntityGolemBase) { - EntityGolemBase golem = (EntityGolemBase) entity; + if (entity instanceof EntityGolemBase golem) { // move persistent data to entity golem.getEntityData().setTag(Gadomancy.MODID, NBTHelper.getPersistentData(itemInHand).copy()); @@ -149,74 +129,14 @@ public void on(PlayerInteractEvent e) { } } - @SubscribeEvent(priority = EventPriority.HIGHEST, receiveCanceled = true) - public void on(PlaySoundAtEntityEvent event) { - if (!event.entity.worldObj.isRemote && event.entity instanceof EntityGolemBase - && event.name.equals("thaumcraft:zap") - && event.volume == 0.5F - && event.pitch == 1.0F) { - EntityGolemBase golem = (EntityGolemBase) event.entity; - if (this.markedGolems.containsKey(golem)) { - EntityPlayer player = this.markedGolems.get(golem); - this.markedGolems.remove(golem); - - AdditionalGolemCore core = GadomancyApi.getAdditionalGolemCore(golem); - - boolean movedPlacer = false; - boolean movedCore = core == null || !player.isSneaking(); - - for (EntityItem entityItem : golem.capturedDrops) { - ItemStack item = entityItem.getEntityItem(); - - if (!movedCore && item.getItem() == ConfigItems.itemGolemCore) { - entityItem.setEntityItemStack(core.getItem()); - } - - if (!movedPlacer && item.getItem() instanceof ItemGolemPlacer - || item.getItem() instanceof ItemAdditionalGolemPlacer) { - // move persistent data to item - NBTTagCompound persistent = (NBTTagCompound) NBTHelper.getPersistentData(golem).copy(); - if (player.isSneaking()) { - persistent.removeTag("Core"); - } - NBTHelper.getData(item).setTag(Gadomancy.MODID, persistent); - event.entity.setDead(); - entityItem.setEntityItemStack(item); - - MinecraftForge.EVENT_BUS.post(new GolemDropPlacerEvent(player, entityItem, golem)); - - movedPlacer = true; - } - event.entity.worldObj.spawnEntityInWorld(entityItem); - } - golem.capturedDrops.clear(); - golem.captureDrops = false; - } - } - } - - @SubscribeEvent(priority = EventPriority.LOWEST) - public void on(AttackEntityEvent event) { - ItemStack heldItem = event.entityPlayer.getHeldItem(); - if (heldItem != null && heldItem.getItem() == ConfigItems.itemGolemBell - && event.target instanceof EntityGolemBase - && !event.target.worldObj.isRemote - && !event.target.isDead) { - event.target.captureDrops = true; - this.markedGolems.put((EntityGolemBase) event.target, event.entityPlayer); - } - } - @SubscribeEvent(priority = EventPriority.NORMAL) public void on(LivingHurtEvent event) { if (!event.entity.worldObj.isRemote) { - if (event.entity instanceof EntityGolemBase) { - EntityGolemBase golem = (EntityGolemBase) event.entity; + if (event.entity instanceof EntityGolemBase golem) { if (event.ammount > 0 && RegisteredGolemStuff.upgradeRunicShield.hasUpgrade(golem)) { event.ammount = RegisteredGolemStuff.upgradeRunicShield.absorb(golem, event.ammount, event.source); } } - /* * if(event.source.getEntity() != null && event.source.getEntity() instanceof EntityGolemBase && * ((EntityGolemBase) event.source.getEntity()).getGolemType() == @@ -229,8 +149,7 @@ public void on(LivingHurtEvent event) { @SubscribeEvent(priority = EventPriority.LOWEST) public void on(EntityInteractEvent event) { ItemStack heldItem = event.entityPlayer.getHeldItem(); - if (event.target instanceof EntityGolemBase) { - EntityGolemBase golem = (EntityGolemBase) event.target; + if (event.target instanceof EntityGolemBase golem) { if (golem.getCore() < 0) { if (heldItem != null) { @@ -275,36 +194,4 @@ public void on(EntityInteractEvent event) { } } } - - @SubscribeEvent(priority = EventPriority.LOWEST) - public void on(ItemTooltipEvent event) { - if (event.itemStack != null) { - if (event.itemStack.getItem() instanceof ItemGolemPlacer - || event.itemStack.getItem() instanceof ItemAdditionalGolemPlacer) { - if (RegisteredGolemStuff.upgradeRunicShield.hasUpgrade(event.itemStack)) { - event.toolTip.add( - "\u00a76" + StatCollector.translateToLocal("item.runic.charge") - + " +" - + RegisteredGolemStuff.upgradeRunicShield.getChargeLimit(event.itemStack)); - } - - AdditionalGolemCore core = GadomancyApi.getAdditionalGolemCore(event.itemStack); - if (core != null) { - String searchStr = StatCollector.translateToLocal("item.ItemGolemCore.name"); - for (int i = 0; i < event.toolTip.size(); i++) { - String line = event.toolTip.get(i); - if (line.contains(searchStr)) { - int index = line.indexOf('\u00a7', searchStr.length()) + 2; - event.toolTip.remove(i); - event.toolTip.add( - i, - line.substring(0, index) - + StatCollector.translateToLocal(core.getUnlocalizedName())); - break; - } - } - } - } - } - } } diff --git a/src/main/java/makeo/gadomancy/common/events/EventHandlerGolemServer.java b/src/main/java/makeo/gadomancy/common/events/EventHandlerGolemServer.java new file mode 100644 index 0000000..6a06a26 --- /dev/null +++ b/src/main/java/makeo/gadomancy/common/events/EventHandlerGolemServer.java @@ -0,0 +1,86 @@ +package makeo.gadomancy.common.events; + +import java.util.HashMap; +import java.util.Map; + +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.entity.PlaySoundAtEntityEvent; +import net.minecraftforge.event.entity.player.AttackEntityEvent; + +import cpw.mods.fml.common.eventhandler.EventPriority; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import makeo.gadomancy.api.GadomancyApi; +import makeo.gadomancy.api.golems.cores.AdditionalGolemCore; +import makeo.gadomancy.api.golems.events.GolemDropPlacerEvent; +import makeo.gadomancy.common.Gadomancy; +import makeo.gadomancy.common.entities.golems.ItemAdditionalGolemPlacer; +import makeo.gadomancy.common.utils.NBTHelper; +import thaumcraft.common.config.ConfigItems; +import thaumcraft.common.entities.golems.EntityGolemBase; +import thaumcraft.common.entities.golems.ItemGolemPlacer; + +public class EventHandlerGolemServer { + + private final Map markedGolems = new HashMap<>(); + + @SubscribeEvent(priority = EventPriority.HIGHEST, receiveCanceled = true) + public void on(PlaySoundAtEntityEvent event) { + if (!event.entity.worldObj.isRemote && event.entity instanceof EntityGolemBase golem + && event.name.equals("thaumcraft:zap") + && event.volume == 0.5F + && event.pitch == 1.0F) { + if (this.markedGolems.containsKey(golem)) { + EntityPlayer player = this.markedGolems.get(golem); + this.markedGolems.remove(golem); + + AdditionalGolemCore core = GadomancyApi.getAdditionalGolemCore(golem); + + boolean movedPlacer = false; + boolean movedCore = core == null || !player.isSneaking(); + + for (EntityItem entityItem : golem.capturedDrops) { + ItemStack item = entityItem.getEntityItem(); + + if (!movedCore && item.getItem() == ConfigItems.itemGolemCore) { + entityItem.setEntityItemStack(core.getItem()); + } + + if (!movedPlacer && item.getItem() instanceof ItemGolemPlacer + || item.getItem() instanceof ItemAdditionalGolemPlacer) { + // move persistent data to item + NBTTagCompound persistent = (NBTTagCompound) NBTHelper.getPersistentData(golem).copy(); + if (player.isSneaking()) { + persistent.removeTag("Core"); + } + NBTHelper.getData(item).setTag(Gadomancy.MODID, persistent); + event.entity.setDead(); + entityItem.setEntityItemStack(item); + + MinecraftForge.EVENT_BUS.post(new GolemDropPlacerEvent(player, entityItem, golem)); + + movedPlacer = true; + } + event.entity.worldObj.spawnEntityInWorld(entityItem); + } + golem.capturedDrops.clear(); + golem.captureDrops = false; + } + } + } + + @SubscribeEvent(priority = EventPriority.LOWEST) + public void on(AttackEntityEvent event) { + ItemStack heldItem = event.entityPlayer.getHeldItem(); + if (heldItem != null && heldItem.getItem() == ConfigItems.itemGolemBell + && event.target instanceof EntityGolemBase + && !event.target.worldObj.isRemote + && !event.target.isDead) { + event.target.captureDrops = true; + this.markedGolems.put((EntityGolemBase) event.target, event.entityPlayer); + } + } +} diff --git a/src/main/java/makeo/gadomancy/common/events/EventHandlerTooltips.java b/src/main/java/makeo/gadomancy/common/events/EventHandlerTooltips.java new file mode 100644 index 0000000..dc9e03b --- /dev/null +++ b/src/main/java/makeo/gadomancy/common/events/EventHandlerTooltips.java @@ -0,0 +1,82 @@ +package makeo.gadomancy.common.events; + +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTBase; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.StatCollector; +import net.minecraftforge.event.entity.player.ItemTooltipEvent; + +import cpw.mods.fml.common.eventhandler.EventPriority; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import makeo.gadomancy.api.GadomancyApi; +import makeo.gadomancy.api.golems.cores.AdditionalGolemCore; +import makeo.gadomancy.common.entities.golems.ItemAdditionalGolemPlacer; +import makeo.gadomancy.common.registration.RegisteredGolemStuff; +import makeo.gadomancy.common.utils.NBTHelper; +import thaumcraft.common.entities.golems.ItemGolemPlacer; + +public class EventHandlerTooltips { + + @SubscribeEvent(priority = EventPriority.NORMAL) + public void on1(ItemTooltipEvent e) { + if (!e.toolTip.isEmpty() && e.itemStack.hasTagCompound()) { + if (e.itemStack.stackTagCompound.getBoolean("isStickyJar")) { + e.toolTip.add(1, EnumChatFormatting.GREEN + StatCollector.translateToLocal("gadomancy.lore.stickyjar")); + } + } + + if (!e.toolTip.isEmpty() && NBTHelper.hasPersistentData(e.itemStack)) { + NBTTagCompound compound = NBTHelper.getPersistentData(e.itemStack); + if (compound.hasKey("disguise")) { + NBTBase base = compound.getTag("disguise"); + String lore = null; + if (base instanceof NBTTagCompound) { + ItemStack stack = ItemStack.loadItemStackFromNBT((NBTTagCompound) base); + if (stack != null) { + lore = String.format( + StatCollector.translateToLocal("gadomancy.lore.disguise.item"), + EnumChatFormatting.getTextWithoutFormattingCodes(stack.getDisplayName())); + } + } else { + lore = StatCollector.translateToLocal("gadomancy.lore.disguise.none"); + } + if (lore != null) { + e.toolTip.add(EnumChatFormatting.GREEN + lore); + } + } + } + } + + @SubscribeEvent(priority = EventPriority.LOWEST) + public void on2(ItemTooltipEvent event) { + if (event.itemStack != null) { + if (event.itemStack.getItem() instanceof ItemGolemPlacer + || event.itemStack.getItem() instanceof ItemAdditionalGolemPlacer) { + if (RegisteredGolemStuff.upgradeRunicShield.hasUpgrade(event.itemStack)) { + event.toolTip.add( + "\u00a76" + StatCollector.translateToLocal("item.runic.charge") + + " +" + + RegisteredGolemStuff.upgradeRunicShield.getChargeLimit(event.itemStack)); + } + + AdditionalGolemCore core = GadomancyApi.getAdditionalGolemCore(event.itemStack); + if (core != null) { + String searchStr = StatCollector.translateToLocal("item.ItemGolemCore.name"); + for (int i = 0; i < event.toolTip.size(); i++) { + String line = event.toolTip.get(i); + if (line.contains(searchStr)) { + int index = line.indexOf('\u00a7', searchStr.length()) + 2; + event.toolTip.remove(i); + event.toolTip.add( + i, + line.substring(0, index) + + StatCollector.translateToLocal(core.getUnlocalizedName())); + break; + } + } + } + } + } + } +} diff --git a/src/main/java/makeo/gadomancy/common/events/EventHandlerWorld.java b/src/main/java/makeo/gadomancy/common/events/EventHandlerWorld.java index 7e4fd74..a6fa563 100644 --- a/src/main/java/makeo/gadomancy/common/events/EventHandlerWorld.java +++ b/src/main/java/makeo/gadomancy/common/events/EventHandlerWorld.java @@ -17,7 +17,6 @@ import net.minecraft.world.Explosion; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.event.entity.EntityJoinWorldEvent; -import net.minecraftforge.event.entity.player.ItemTooltipEvent; import net.minecraftforge.event.entity.player.PlayerInteractEvent; import net.minecraftforge.event.world.BlockEvent; import net.minecraftforge.event.world.ExplosionEvent; @@ -62,7 +61,7 @@ public class EventHandlerWorld { public void on(EntityJoinWorldEvent event) { if (!event.world.isRemote && event.entity instanceof EntityItem) { ItemStack stack = ((EntityItem) event.entity).getEntityItem(); - if (this.isDisguised(stack)) { + if (isDisguised(stack)) { long time = event.world.getTotalWorldTime() + event.world.rand.nextInt(60) + 40; this.trackedItems.put((EntityItem) event.entity, time); } @@ -94,7 +93,7 @@ public void on(TickEvent.WorldTickEvent event) { EntityItem entity = entry.getKey(); if (event.world == entity.worldObj) { - if (entity.isDead || !this.isDisguised(entity.getEntityItem())) { + if (entity.isDead || !isDisguised(entity.getEntityItem())) { iterator.remove(); continue; } @@ -142,7 +141,7 @@ public void on(TickEvent.WorldTickEvent event) { } } - private boolean isDisguised(ItemStack stack) { + private static boolean isDisguised(ItemStack stack) { return NBTHelper.hasPersistentData(stack) && NBTHelper.getPersistentData(stack).hasKey("disguise"); } @@ -190,7 +189,7 @@ public void on(TickEvent.ServerTickEvent event) { SyncDataHolder.doNecessaryUpdates(); this.serverTick++; if ((this.serverTick & 15) == 0) { - Gadomancy.proxy.EVENT_HANDLER_ENTITY.registeredLuxPylons.clear(); + Gadomancy.proxy.handlerEntityServer.registeredLuxPylons.clear(); } } @@ -199,7 +198,7 @@ public void on(BlockEvent.PlaceEvent e) { if (e.isCanceled()) { if (this.interacts != null) this.interacts.remove(e.player); } else { - if (!e.world.isRemote && this.isStickyJar(e.itemInHand)) { + if (!e.world.isRemote && isStickyJar(e.itemInHand)) { TileEntity parent = e.world.getTileEntity(e.x, e.y, e.z); if (parent instanceof TileJarFillable) { int metadata = e.world.getBlockMetadata(e.x, e.y, e.z); @@ -252,7 +251,7 @@ public void onBreak(BlockEvent.BreakEvent event) { @SubscribeEvent(priority = EventPriority.LOWEST) public void on(PlayerInteractEvent e) { if (!e.world.isRemote && e.action == PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK - && this.isStickyJar(e.entityPlayer.getHeldItem())) { + && isStickyJar(e.entityPlayer.getHeldItem())) { if (this.interacts == null) { this.interacts = new HashMap(); } @@ -267,34 +266,8 @@ public void on(PlayerInteractEvent e) { } } - private boolean isStickyJar(ItemStack stack) { + private static boolean isStickyJar(ItemStack stack) { return RegisteredItems.isStickyableJar(stack) && stack.hasTagCompound() && stack.stackTagCompound.getBoolean("isStickyJar"); } - - @SubscribeEvent(priority = EventPriority.NORMAL) - public void on(ItemTooltipEvent e) { - if (!e.toolTip.isEmpty() && e.itemStack.hasTagCompound()) { - if (e.itemStack.stackTagCompound.getBoolean("isStickyJar")) { - e.toolTip.add(1, EnumChatFormatting.GREEN + StatCollector.translateToLocal("gadomancy.lore.stickyjar")); - } - } - - if (!e.toolTip.isEmpty() && NBTHelper.hasPersistentData(e.itemStack)) { - NBTTagCompound compound = NBTHelper.getPersistentData(e.itemStack); - if (compound.hasKey("disguise")) { - NBTBase base = compound.getTag("disguise"); - String lore; - if (base instanceof NBTTagCompound) { - ItemStack stack = ItemStack.loadItemStackFromNBT((NBTTagCompound) base); - lore = String.format( - StatCollector.translateToLocal("gadomancy.lore.disguise.item"), - EnumChatFormatting.getTextWithoutFormattingCodes(stack.getDisplayName())); - } else { - lore = StatCollector.translateToLocal("gadomancy.lore.disguise.none"); - } - e.toolTip.add(EnumChatFormatting.GREEN + lore); - } - } - } } diff --git a/src/main/java/makeo/gadomancy/common/integration/thaumichorizions/IntegrationThaumicHorizions.java b/src/main/java/makeo/gadomancy/common/integration/thaumichorizions/IntegrationThaumicHorizions.java index a1b8b99..1f27241 100644 --- a/src/main/java/makeo/gadomancy/common/integration/thaumichorizions/IntegrationThaumicHorizions.java +++ b/src/main/java/makeo/gadomancy/common/integration/thaumichorizions/IntegrationThaumicHorizions.java @@ -86,7 +86,7 @@ public void on(AttackEntityEvent e) { ItemStack stack = player.getCurrentEquippedItem(); if (stack != null && stack.getItem().onLeftClickEntity(stack, player, e.target) && e.target.isDead) { - Gadomancy.proxy.EVENT_HANDLER_GOLEM + Gadomancy.proxy.handlerGolemServer .on(new PlaySoundAtEntityEvent(e.target, "thaumcraft:zap", 0.5f, 1.0f)); } }