diff --git a/src/main/java/kamkeel/npcs/client/renderer/lightning/Vec3d.java b/src/main/java/kamkeel/npcs/client/renderer/lightning/Vec3d.java index 018e55bdb..897dc2a00 100644 --- a/src/main/java/kamkeel/npcs/client/renderer/lightning/Vec3d.java +++ b/src/main/java/kamkeel/npcs/client/renderer/lightning/Vec3d.java @@ -4,6 +4,8 @@ import net.minecraft.util.Vec3; import org.lwjgl.opengl.GL11; +import java.util.Objects; + /** * 3D Vector helper class for lightning calculations. * Adapted from Botania's Vector3 by ChickenBones. @@ -181,4 +183,9 @@ public boolean equals(Object o) { Vec3d v = (Vec3d) o; return x == v.x && y == v.y && z == v.z; } + + @Override + public int hashCode() { + return Objects.hash(x, y, z); + } } diff --git a/src/main/java/noppes/npcs/NoppesUtilPlayer.java b/src/main/java/noppes/npcs/NoppesUtilPlayer.java index 7f9753104..bfa51501e 100644 --- a/src/main/java/noppes/npcs/NoppesUtilPlayer.java +++ b/src/main/java/noppes/npcs/NoppesUtilPlayer.java @@ -550,14 +550,13 @@ public static boolean questPartyCompletion(Party party) { if (data == null) return false; - if (!data.quest.questInterface.isPartyCompleted(party)) - return false; - - Quest quest = data.quest; if (quest == null) return false; + if (!data.quest.questInterface.isPartyCompleted(party)) + return false; + if (data.quest.completion == EnumQuestCompletion.Instant) EventHooks.onPartyFinished(party, data.quest); diff --git a/src/main/java/noppes/npcs/NoppesUtilServer.java b/src/main/java/noppes/npcs/NoppesUtilServer.java index 7faa7b2b5..b076d9484 100644 --- a/src/main/java/noppes/npcs/NoppesUtilServer.java +++ b/src/main/java/noppes/npcs/NoppesUtilServer.java @@ -343,11 +343,6 @@ public static void sendOpenGui(EntityPlayer player, sendOpenGui(player, gui, npc, 0, 0, 0); } - public static void sendOpenGuiNoDelay(EntityPlayer player, - EnumGuiType gui, EntityNPCInterface npc) { - sendOpenGuiNoDelay(player, gui, npc, 0, 0, 0); - } - public static void sendOpenGui(final EntityPlayer player, final EnumGuiType gui, final EntityNPCInterface npc, final int i, final int j, final int k) { if (!(player instanceof EntityPlayerMP)) @@ -369,28 +364,6 @@ public static void sendOpenGui(final EntityPlayer player, ScrollListPacket.sendList((EntityPlayerMP) player, list, EnumScrollData.OPTIONAL); } - public static void sendOpenGuiNoDelay(final EntityPlayer player, - final EnumGuiType gui, final EntityNPCInterface npc, final int i, final int j, final int k) { - if (!(player instanceof EntityPlayerMP)) - return; - - setEditingNpc(player, npc); - sendExtraData(player, npc, gui, i, j, k); - - if (CustomNpcs.proxy.getServerGuiElement(gui.ordinal(), player, player.worldObj, i, j, k) != null) { - player.openGui(CustomNpcs.instance, gui.ordinal(), player.worldObj, i, j, k); - return; - } else { - GuiOpenPacket.openGUI((EntityPlayerMP) player, gui, i, j, k); - } - ArrayList list = getScrollData(player, gui, npc); - if (list == null || list.isEmpty()) - return; - - ScrollListPacket.sendList((EntityPlayerMP) player, list, EnumScrollData.OPTIONAL); - } - - private static void sendExtraData(EntityPlayer player, EntityNPCInterface npc, EnumGuiType gui, int i, int j, int k) { if (gui == EnumGuiType.PlayerFollower || gui == EnumGuiType.PlayerFollowerHire || gui == EnumGuiType.PlayerTrader || gui == EnumGuiType.PlayerTransporter) { sendRoleData(player, npc); diff --git a/src/main/java/noppes/npcs/ServerEventsHandler.java b/src/main/java/noppes/npcs/ServerEventsHandler.java index b6671b72a..bf1c75c73 100644 --- a/src/main/java/noppes/npcs/ServerEventsHandler.java +++ b/src/main/java/noppes/npcs/ServerEventsHandler.java @@ -133,7 +133,7 @@ public void invoke(EntityInteractEvent event) { mounted = event.target; if (isRemote) CustomNpcs.proxy.openGui(MathHelper.floor_double(mounted.posX), MathHelper.floor_double(mounted.posY), MathHelper.floor_double(mounted.posZ), EnumGuiType.MobSpawnerMounter, event.entityPlayer); - } else if (item.getItem() == CustomItems.wand && !isRemote && event.target instanceof EntityVillager) { + } else if (item.getItem() == CustomItems.wand && event.target instanceof EntityVillager) { if (!CustomNpcsPermissions.hasPermission(event.entityPlayer, CustomNpcsPermissions.EDIT_VILLAGER)) return; event.setCanceled(true); diff --git a/src/main/java/noppes/npcs/blocks/BlockCampfire.java b/src/main/java/noppes/npcs/blocks/BlockCampfire.java index 11b520b2e..4b209ec80 100644 --- a/src/main/java/noppes/npcs/blocks/BlockCampfire.java +++ b/src/main/java/noppes/npcs/blocks/BlockCampfire.java @@ -39,8 +39,7 @@ public TileEntity createNewTileEntity(World var1, int var2) { public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int par6, float par7, float par8, float par9) { ItemStack item = player.inventory.getCurrentItem(); if (item == null) - return true; - int meta = world.getBlockMetadata(x, y, z); + return false; if ((item.getItem() == Items.flint || item.getItem() == Items.flint_and_steel) && unlitBlock() == this) { super.onBlockActivated(world, x, y, z, player, par6, par7, par8, par9); @@ -56,7 +55,7 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p super.onBlockActivated(world, x, y, z, player, par6, par7, par8, par9); } - return true; + return false; } @Override diff --git a/src/main/java/noppes/npcs/client/ClientProxy.java b/src/main/java/noppes/npcs/client/ClientProxy.java index 4331ab0ea..88b113e44 100644 --- a/src/main/java/noppes/npcs/client/ClientProxy.java +++ b/src/main/java/noppes/npcs/client/ClientProxy.java @@ -319,7 +319,6 @@ public void load() { MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(CustomItems.shortLamp), new ItemShortLampRenderer()); MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(CustomItems.tallLamp), new ItemTallLampRenderer()); } - Minecraft mc = Minecraft.getMinecraft(); NPCButton = new KeyBinding("NPC Inventory", Keyboard.KEY_N, "key.categories.customnpc"); SpecialKey = new KeyBinding("key.customnpcs.special", Keyboard.KEY_B, "key.categories.customnpc"); @@ -678,9 +677,7 @@ public void openGui(EntityPlayer player, Object guiscreen) { if (!player.worldObj.isRemote || !(guiscreen instanceof GuiScreen)) return; - if (guiscreen != null) { - minecraft.displayGuiScreen((GuiScreen) guiscreen); - } + minecraft.displayGuiScreen((GuiScreen) guiscreen); } @@ -775,8 +772,7 @@ public static void bindTexture(ResourceLocation location) { if (location == null) return; TextureManager texturemanager = Minecraft.getMinecraft().getTextureManager(); - if (location != null) - texturemanager.bindTexture((ResourceLocation) location); + texturemanager.bindTexture((ResourceLocation) location); } catch (NullPointerException ex) { } catch (ReportedException ex) { diff --git a/src/main/java/noppes/npcs/client/ClientTickHandler.java b/src/main/java/noppes/npcs/client/ClientTickHandler.java index 203cef3e2..af5b6a7fc 100644 --- a/src/main/java/noppes/npcs/client/ClientTickHandler.java +++ b/src/main/java/noppes/npcs/client/ClientTickHandler.java @@ -181,10 +181,7 @@ private void updateCompassMarks() { if (player == null || mc.theWorld == null) return; - - if (ClientHudManager.getInstance() == null || ClientHudManager.getInstance().getHudComponents() == null) - return; - + // Update compass HudComponent compass = ClientHudManager.getInstance() .getHudComponents().get(EnumHudComponent.QuestCompass); diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerMounter.java b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerMounter.java index 0afa7d867..b2cc6f99e 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerMounter.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerMounter.java @@ -127,7 +127,6 @@ private void showClones() { return; } - ArrayList list = new ArrayList(); this.list = ClientCloneController.Instance.getClones(activeTab); scroll.setList(getSearchList()); } diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerSelector.java b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerSelector.java index 9c13af815..5291c41cd 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerSelector.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerSelector.java @@ -81,8 +81,6 @@ private void showClones() { return; } - ArrayList list = new ArrayList(); - this.list = new ArrayList(ClientCloneController.Instance.getClones(activeTab)); scroll.setList(getSearchList()); } diff --git a/src/main/java/noppes/npcs/client/gui/SubGuiNpcBiomes.java b/src/main/java/noppes/npcs/client/gui/SubGuiNpcBiomes.java index c0189b4eb..013610ed1 100644 --- a/src/main/java/noppes/npcs/client/gui/SubGuiNpcBiomes.java +++ b/src/main/java/noppes/npcs/client/gui/SubGuiNpcBiomes.java @@ -81,7 +81,6 @@ protected void actionPerformed(GuiButton guibutton) { if (scroll1.hasSelected()) { data.biomes.add(scroll1.getSelected()); scroll1.selected = -1; - scroll1.selected = -1; initGui(); } } diff --git a/src/main/java/noppes/npcs/client/gui/player/GuiNpcAnvil.java b/src/main/java/noppes/npcs/client/gui/player/GuiNpcAnvil.java index c4a21e05e..f50dcee73 100644 --- a/src/main/java/noppes/npcs/client/gui/player/GuiNpcAnvil.java +++ b/src/main/java/noppes/npcs/client/gui/player/GuiNpcAnvil.java @@ -58,9 +58,12 @@ protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, i // Compute the repair status message based on container.repairCost and player's XP. String status = ""; + int textColor = CustomNpcResourceListener.DefaultTextColor; + if (container.repairCost > 0) { if (container.repairCost > mc.thePlayer.experienceTotal) { status = "Repair cost: " + container.repairCost + " XP"; + textColor = 0xFF0000; // red when not enough XP } else { status = "Repair cost: " + container.repairCost + " XP"; } @@ -72,10 +75,6 @@ protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, i status = "Item is already fully repaired"; } } - int textColor = CustomNpcResourceListener.DefaultTextColor; - if (container.repairCost > mc.thePlayer.experienceTotal) { - textColor = 0xFF0000; // red when not enough XP - } fontRendererObj.drawString(status, guiLeft + 5, guiTop + 75, textColor); } diff --git a/src/main/java/noppes/npcs/client/gui/util/script/JavaTextContainer.java b/src/main/java/noppes/npcs/client/gui/util/script/JavaTextContainer.java index fe09cb81a..4f3470b0f 100644 --- a/src/main/java/noppes/npcs/client/gui/util/script/JavaTextContainer.java +++ b/src/main/java/noppes/npcs/client/gui/util/script/JavaTextContainer.java @@ -77,7 +77,7 @@ private int mapNormalizedOffsetToOriginal(String orig, int normalizedOffset, int public void init(String text, int width, int height) { this.text = text == null ? "" : text.replaceAll("\\r?\\n|\\r", "\n"); lines.clear(); - String[] split = text.split("\n", -1); + String[] split = this.text.split("\n", -1); int totalChars = 0; for (String l : split) { diff --git a/src/main/java/noppes/npcs/client/key/KeyPreset.java b/src/main/java/noppes/npcs/client/key/KeyPreset.java index e76cf14ff..566522c2a 100644 --- a/src/main/java/noppes/npcs/client/key/KeyPreset.java +++ b/src/main/java/noppes/npcs/client/key/KeyPreset.java @@ -6,6 +6,7 @@ import org.lwjgl.input.Keyboard; import org.lwjgl.input.Mouse; +import java.util.Objects; import java.util.function.Consumer; public class KeyPreset { @@ -189,6 +190,11 @@ public boolean equals(Object preset) { return false; } + @Override + public int hashCode() { + return Objects.hash( currentState); + } + public static class KeyState { public int keyCode = -1; public boolean hasCtrl, hasAlt, hasShift; @@ -232,6 +238,11 @@ public boolean equals(Object preset) { return false; } + @Override + public int hashCode() { + return Objects.hash(keyCode, hasCtrl, hasAlt, hasShift); + } + public NBTTagCompound writeToNbt() { NBTTagCompound compound = new NBTTagCompound(); compound.setInteger("keyCode", keyCode); diff --git a/src/main/java/noppes/npcs/client/renderer/RenderNPCHumanMale.java b/src/main/java/noppes/npcs/client/renderer/RenderNPCHumanMale.java index 565454766..52635ed65 100644 --- a/src/main/java/noppes/npcs/client/renderer/RenderNPCHumanMale.java +++ b/src/main/java/noppes/npcs/client/renderer/RenderNPCHumanMale.java @@ -22,6 +22,9 @@ import noppes.npcs.constants.EnumAnimation; import noppes.npcs.entity.EntityCustomNpc; import noppes.npcs.entity.EntityNPCInterface; +import noppes.npcs.items.ItemClaw; +import noppes.npcs.items.ItemRotatedShield; +import noppes.npcs.items.ItemShield; import org.lwjgl.opengl.GL11; import static net.minecraftforge.client.IItemRenderer.ItemRenderType.EQUIPPED; @@ -314,7 +317,7 @@ protected void renderSpecials(EntityNPCInterface npc, float f) { Class clazz = itemstack2.getItem().getClass(); boolean pluginMod = itemstack2.getItem().getUnlocalizedName().contains("plug:"); - if (clazz.getSimpleName().equals("ItemShield") || clazz.getSimpleName().equals("ItemRotatedShield") || clazz.getSimpleName().equals("ItemClaw")) + if (clazz.equals(ItemShield.class) || clazz.equals(ItemRotatedShield.class) || clazz.equals(ItemClaw.class)) GL11.glTranslatef(0.30f, 0, 0f); if (itemstack2.getItem() instanceof ItemBlock && (is3D || RenderBlocks.renderItemIn3d(Block.getBlockFromItem(itemstack2.getItem()).getRenderType()))) { diff --git a/src/main/java/noppes/npcs/controllers/ScriptContainer.java b/src/main/java/noppes/npcs/controllers/ScriptContainer.java index efdbc5b2d..9674c8b04 100644 --- a/src/main/java/noppes/npcs/controllers/ScriptContainer.java +++ b/src/main/java/noppes/npcs/controllers/ScriptContainer.java @@ -27,7 +27,7 @@ import java.util.TreeMap; public class ScriptContainer implements IScriptUnit { - private static final String lock = "lock"; + private static final Object lock = new Object(); public static ScriptContainer Current; private static String CurrentType; public String fullscript = ""; diff --git a/src/main/java/noppes/npcs/entity/EntityCustomNpc.java b/src/main/java/noppes/npcs/entity/EntityCustomNpc.java index b1a3c44f3..b47179edf 100644 --- a/src/main/java/noppes/npcs/entity/EntityCustomNpc.java +++ b/src/main/java/noppes/npcs/entity/EntityCustomNpc.java @@ -62,7 +62,7 @@ public void mountEntity(Entity par1Entity) { @Override public void updateHitbox() { Entity entity = modelData.getEntity(this); - if (modelData == null || entity == null) { + if (entity == null) { baseHeight = 1.9f - modelData.getBodyY() + (modelData.modelScale.head.scaleY - 1) / 2; super.updateHitbox(); } else { diff --git a/src/main/java/noppes/npcs/entity/data/ModelDataShared.java b/src/main/java/noppes/npcs/entity/data/ModelDataShared.java index 357312f1f..cbdadbd23 100644 --- a/src/main/java/noppes/npcs/entity/data/ModelDataShared.java +++ b/src/main/java/noppes/npcs/entity/data/ModelDataShared.java @@ -165,8 +165,6 @@ public ModelPartData getOrCreatePart(String type) { public float getBodyY() { if (legParts.type == 3) return (0.9f - modelScale.body.scaleY) * 0.75f + getLegsY(); - if (legParts.type == 3) - return (0.5f - modelScale.body.scaleY) * 0.75f + getLegsY(); return (1 - modelScale.body.scaleY) * 0.75f + getLegsY(); } diff --git a/src/main/java/noppes/npcs/items/ItemNpcWand.java b/src/main/java/noppes/npcs/items/ItemNpcWand.java index 1a11918ae..d36a81fce 100644 --- a/src/main/java/noppes/npcs/items/ItemNpcWand.java +++ b/src/main/java/noppes/npcs/items/ItemNpcWand.java @@ -53,7 +53,7 @@ public boolean onItemUse(ItemStack par1ItemStack, final EntityPlayer player, Wor par3World.spawnEntityInWorld(npc); npc.setHealth(npc.getMaxHealth()); - NoppesUtilServer.sendOpenGuiNoDelay(player, EnumGuiType.MainMenuDisplay, npc); + NoppesUtilServer.sendOpenGui(player, EnumGuiType.MainMenuDisplay, npc); return true; } else player.addChatMessage(new ChatComponentTranslation("availability.permission")); diff --git a/src/main/java/noppes/npcs/roles/RoleCompanion.java b/src/main/java/noppes/npcs/roles/RoleCompanion.java index 93fdd9723..220b218bb 100644 --- a/src/main/java/noppes/npcs/roles/RoleCompanion.java +++ b/src/main/java/noppes/npcs/roles/RoleCompanion.java @@ -328,7 +328,7 @@ public void interact(EntityPlayer player) { ((CompanionTrader) jobInterface).interact(player); if (player != owner || !npc.isEntityAlive() || npc.isAttacking()) return; - if (player.isSneaking()) { + if (player != null && player.isSneaking()) { openGui(player); } else { setSitting(!isSitting()); diff --git a/src/main/java/noppes/npcs/scripted/ScriptBlock.java b/src/main/java/noppes/npcs/scripted/ScriptBlock.java index 5d50d4543..611fb6775 100644 --- a/src/main/java/noppes/npcs/scripted/ScriptBlock.java +++ b/src/main/java/noppes/npcs/scripted/ScriptBlock.java @@ -15,6 +15,8 @@ import noppes.npcs.api.ITileEntity; import noppes.npcs.api.IWorld; +import java.util.Objects; + public class ScriptBlock implements IBlock { protected IWorld world; protected Block block; @@ -224,4 +226,9 @@ public boolean equals(Object obj) { ((ScriptBlock) obj).getWorld() == this.getWorld() && ((ScriptBlock) obj).getPos().equals(this.getPos()); } + + @Override + public int hashCode() { + return Objects.hash(getWorld(), block, getPos()); + } } diff --git a/src/main/java/noppes/npcs/scripted/ScriptBlockPos.java b/src/main/java/noppes/npcs/scripted/ScriptBlockPos.java index 4a36acf16..dd7258a7f 100644 --- a/src/main/java/noppes/npcs/scripted/ScriptBlockPos.java +++ b/src/main/java/noppes/npcs/scripted/ScriptBlockPos.java @@ -5,6 +5,8 @@ import net.minecraft.util.math.BlockPos; import noppes.npcs.api.IPos; +import java.util.Objects; + public class ScriptBlockPos implements IPos { public BlockPos blockPos; @@ -169,4 +171,9 @@ public String toString() { public boolean equals(Object object) { return object instanceof IPos && ((IPos) object).toLong() == this.toLong(); } + + @Override + public int hashCode() { + return Objects.hashCode(blockPos); + } } diff --git a/src/main/java/noppes/npcs/scripted/entity/ScriptEntity.java b/src/main/java/noppes/npcs/scripted/entity/ScriptEntity.java index caac8d87d..6c8bc9e3a 100644 --- a/src/main/java/noppes/npcs/scripted/entity/ScriptEntity.java +++ b/src/main/java/noppes/npcs/scripted/entity/ScriptEntity.java @@ -35,6 +35,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Set; public class ScriptEntity implements IEntity { @@ -964,6 +965,11 @@ public boolean equals(Object object) { return object instanceof IEntity && ((IEntity) object).getMCEntity().equals(this.entity); } + @Override + public int hashCode() { + return Objects.hash(entity, tempData); + } + public void updateEntity() { IWorld world = NpcAPI.Instance().getIWorld(entity.worldObj); entity.dimension = world.getDimensionID(); diff --git a/src/main/java/noppes/npcs/scripted/item/ScriptItemStack.java b/src/main/java/noppes/npcs/scripted/item/ScriptItemStack.java index 6736369b9..b3d6de5d1 100644 --- a/src/main/java/noppes/npcs/scripted/item/ScriptItemStack.java +++ b/src/main/java/noppes/npcs/scripted/item/ScriptItemStack.java @@ -36,6 +36,7 @@ import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Set; public class ScriptItemStack implements IItemStack { @@ -355,6 +356,7 @@ public int getMaxItemDamage() { * @return Returns whether this item is a book * @since 1.7.10d */ + @Override public boolean isWrittenBook() { return item.getItem() == Items.written_book || item.getItem() == Items.writable_book; } @@ -363,6 +365,7 @@ public boolean isWrittenBook() { * @return Returns the books title * @since 1.7.10d */ + @Override public String getBookTitle() { return item.getTagCompound().getString("title"); } @@ -371,6 +374,7 @@ public String getBookTitle() { * @return Returns the books author * @since 1.7.10d */ + @Override public String getBookAuthor() { return item.getTagCompound().getString("author"); } @@ -379,6 +383,7 @@ public String getBookAuthor() { * @return If the item is a book, returns a string array with book pages * @since 1.7.10d */ + @Override public String[] getBookText() { if (!isWrittenBook()) return null; @@ -399,6 +404,7 @@ private NBTTagCompound getTag() { /** * @return Returns whether or not this item is a block */ + @Override public boolean isBlock() { Block block = Block.getBlockFromItem(item.getItem()); if (block == null || block == Blocks.air) @@ -415,6 +421,7 @@ public int getFoodPoints() { return -1; } + @Override public INbt getNbt() { NBTTagCompound compound = this.item.getTagCompound(); if (compound == null) { @@ -424,18 +431,21 @@ public INbt getNbt() { return NpcAPI.Instance().getINbt(compound); } + @Override public INbt getItemNbt() { NBTTagCompound compound = new NBTTagCompound(); this.item.writeToNBT(compound); return NpcAPI.Instance().getINbt(compound); } + @Override public NBTTagCompound getMCNbt() { NBTTagCompound compound = new NBTTagCompound(); this.item.writeToNBT(compound); return compound; } + @Override public void setMCNbt(NBTTagCompound compound) { } @@ -444,18 +454,26 @@ public void setMCNbt(NBTTagCompound compound) { * * @return Minecraft ItemStack */ + @Override public ItemStack getMCItemStack() { return item; } + @Override public int itemHash() { return item.hashCode(); } + @Override public boolean equals(Object object) { return object instanceof ScriptItemStack && ((ScriptItemStack) object).getMCItemStack().equals(this.getMCItemStack()); } + @Override + public int hashCode() { + return Objects.hashCode(item); + } + @Override public boolean compare(IItemStack item, boolean ignoreNBT) { return NoppesUtilPlayer.compareItems(getMCItemStack(), item.getMCItemStack(), false, ignoreNBT);