From 17fa6328c9a35b5b513c6427f05d0616f68aaae2 Mon Sep 17 00:00:00 2001 From: 1whohears <1whohears28@gmail.com> Date: Mon, 6 Jun 2022 14:38:33 -0500 Subject: [PATCH] fixed crash when hovering over a trader item slot HashMap.put doesn't work the way I thought it did --- .../noppes/npcs/containers/ContainerNPCTrader.java | 4 ++-- src/main/java/noppes/npcs/roles/RoleTrader.java | 13 ++++++------- .../npcs/scripted/roles/ScriptRoleTrader.java | 5 ++--- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/main/java/noppes/npcs/containers/ContainerNPCTrader.java b/src/main/java/noppes/npcs/containers/ContainerNPCTrader.java index f0390478e..f6b936b46 100644 --- a/src/main/java/noppes/npcs/containers/ContainerNPCTrader.java +++ b/src/main/java/noppes/npcs/containers/ContainerNPCTrader.java @@ -68,12 +68,12 @@ public class ContainerNPCTrader extends ContainerNpcInterface{ NoppesUtilPlayer.consumeItem(entityplayer, role.inventoryCurrency.getStackInSlot(i + 18), role.ignoreDamage, role.ignoreNBT); ItemStack soldItem = item.copy(); givePlayer(soldItem, entityplayer); - role.addPurchase(i, entityplayer); + role.addPurchase(i, entityplayer.getDisplayName()); return soldItem; } public boolean isSlotEnabled(int slot, EntityPlayer player) { - return role.isSlotEnabled(slot, player); + return role.isSlotEnabled(slot, player.getDisplayName()); } public boolean canBuy(int slot, EntityPlayer player) { ItemStack currency = role.inventoryCurrency.getStackInSlot(slot); diff --git a/src/main/java/noppes/npcs/roles/RoleTrader.java b/src/main/java/noppes/npcs/roles/RoleTrader.java index 3c918dc57..b239a5b94 100644 --- a/src/main/java/noppes/npcs/roles/RoleTrader.java +++ b/src/main/java/noppes/npcs/roles/RoleTrader.java @@ -118,23 +118,22 @@ public class RoleTrader extends RoleInterface{ return false; } - public void addPurchase(int slot, EntityPlayer player) { + public void addPurchase(int slot, String playerName) { if(slot >= 18 || slot < 0) return; ++purchases[slot]; - ++getArrayByName(player.getDisplayName(), playerPurchases)[slot]; + ++getArrayByName(playerName, playerPurchases)[slot]; } - public boolean isSlotEnabled(int slot, EntityPlayer player) { + public boolean isSlotEnabled(int slot, String playerName) { if(slot >= 18 || slot < 0) return false; if (disableSlot[slot] > 0) return false; - if (getArrayByName(player.getDisplayName(), playerDisableSlot)[slot] > 0) return false; + if (getArrayByName(playerName, playerDisableSlot)[slot] > 0) return false; return true; } public int[] getArrayByName(String name, HashMap map) { - int[] a = map.get(name); - if (a == null) a = map.put(name, new int[18]); - return a; + if (map.get(name) == null) map.put(name, new int[18]); + return map.get(name); } } diff --git a/src/main/java/noppes/npcs/scripted/roles/ScriptRoleTrader.java b/src/main/java/noppes/npcs/scripted/roles/ScriptRoleTrader.java index 6d36f0d0d..98271fcc5 100644 --- a/src/main/java/noppes/npcs/scripted/roles/ScriptRoleTrader.java +++ b/src/main/java/noppes/npcs/scripted/roles/ScriptRoleTrader.java @@ -1,13 +1,12 @@ package noppes.npcs.scripted.roles; import foxz.utils.Market; -import net.minecraft.entity.player.EntityPlayer; import noppes.npcs.entity.EntityNPCInterface; import noppes.npcs.roles.RoleTrader; import noppes.npcs.scripted.NpcAPI; -import noppes.npcs.scripted.interfaces.item.IItemStack; import noppes.npcs.scripted.constants.RoleType; import noppes.npcs.scripted.interfaces.entity.IPlayer; +import noppes.npcs.scripted.interfaces.item.IItemStack; public class ScriptRoleTrader extends ScriptRoleInterface{ private RoleTrader role; @@ -160,7 +159,7 @@ public class ScriptRoleTrader extends ScriptRoleInterface{ */ public boolean isSlotEnabled(int slot, IPlayer player) { if(slot >= 18 || slot < 0) return false; - return role.isSlotEnabled(slot, (EntityPlayer)player.getMCEntity()); + return role.isSlotEnabled(slot, player.getDisplayName()); } /**