diff --git a/src/main/java/com/pahimar/ee3/client/gui/inventory/GuiAlchemicalBag.java b/src/main/java/com/pahimar/ee3/client/gui/inventory/GuiAlchemicalBag.java index 38429a6c..01066284 100644 --- a/src/main/java/com/pahimar/ee3/client/gui/inventory/GuiAlchemicalBag.java +++ b/src/main/java/com/pahimar/ee3/client/gui/inventory/GuiAlchemicalBag.java @@ -88,7 +88,7 @@ public class GuiAlchemicalBag extends GuiContainer { if (itemStack != null) { - if (NBTHelper.hasTag(itemStack, Names.NBT.ALCHEMICAL_BAG_GUI_OPEN)) + if (NBTHelper.hasKey(itemStack, Names.NBT.ALCHEMICAL_BAG_GUI_OPEN)) { NBTHelper.removeTag(itemStack, Names.NBT.ALCHEMICAL_BAG_GUI_OPEN); } diff --git a/src/main/java/com/pahimar/ee3/client/handler/ItemTooltipEventHandler.java b/src/main/java/com/pahimar/ee3/client/handler/ItemTooltipEventHandler.java index 4d0d6daa..b74dcbfd 100644 --- a/src/main/java/com/pahimar/ee3/client/handler/ItemTooltipEventHandler.java +++ b/src/main/java/com/pahimar/ee3/client/handler/ItemTooltipEventHandler.java @@ -24,16 +24,9 @@ import org.lwjgl.input.Keyboard; import java.text.DecimalFormat; import java.util.UUID; -/** - * Equivalent-Exchange-3 - *

- * ItemTooltipEventHandler - * - * @author pahimar - */ @SideOnly(Side.CLIENT) -public class ItemTooltipEventHandler -{ +public class ItemTooltipEventHandler { + private static DecimalFormat energyValueDecimalFormat = new DecimalFormat("###,###,###,###,###.###"); @SubscribeEvent @@ -67,38 +60,28 @@ public class ItemTooltipEventHandler } } } - else - { + else { event.toolTip.add("No Exchange Energy value"); // TODO Localize } } - if (((Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) || Keyboard.isKeyDown(Keyboard.KEY_RSHIFT)) && (event.entityPlayer != null && event.entityPlayer.openContainer instanceof ContainerResearchStation))) - { - if (PlayerKnowledgeRegistryProxy.doesPlayerKnow(event.entityPlayer, event.itemStack)) - { + if (((Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) || Keyboard.isKeyDown(Keyboard.KEY_RSHIFT)) && (event.entityPlayer != null && event.entityPlayer.openContainer instanceof ContainerResearchStation))) { + + if (PlayerKnowledgeRegistryProxy.doesPlayerKnow(event.entityPlayer, event.itemStack)) { event.toolTip.add("You know how to transmute this"); // TODO Localize with better phrasing } } - if (event.itemStack.getItem() instanceof IOwnable) - { + if (event.itemStack.getItem() instanceof IOwnable) { + UUID playerUUID = ItemHelper.getOwnerUUID(event.itemStack); - if (playerUUID != null && UsernameCache.containsUUID(playerUUID)) - { + + if (playerUUID != null && UsernameCache.containsUUID(playerUUID)) { event.toolTip.add(StatCollector.translateToLocalFormatted(Messages.Tooltips.ITEM_BELONGS_TO, UsernameCache.getLastKnownUsername(playerUUID))); } - else if (ItemHelper.hasOwnerName(event.itemStack)) - { + else if (ItemHelper.hasOwnerName(event.itemStack)) { event.toolTip.add(StatCollector.translateToLocalFormatted(Messages.Tooltips.ITEM_BELONGS_TO, ItemHelper.getOwnerName(event.itemStack))); } - else - { - if (Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) || Keyboard.isKeyDown(Keyboard.KEY_RSHIFT)) - { - event.toolTip.add(StatCollector.translateToLocal(Messages.Tooltips.ITEM_BELONGS_TO_NO_ONE)); - } - } } } } diff --git a/src/main/java/com/pahimar/ee3/inventory/ContainerAlchemicalBag.java b/src/main/java/com/pahimar/ee3/inventory/ContainerAlchemicalBag.java index ae729502..b1521c6c 100644 --- a/src/main/java/com/pahimar/ee3/inventory/ContainerAlchemicalBag.java +++ b/src/main/java/com/pahimar/ee3/inventory/ContainerAlchemicalBag.java @@ -160,7 +160,7 @@ public class ContainerAlchemicalBag extends ContainerEE { if (itemStack != null) { - if (NBTHelper.hasTag(itemStack, Names.NBT.ALCHEMICAL_BAG_GUI_OPEN)) + if (NBTHelper.hasKey(itemStack, Names.NBT.ALCHEMICAL_BAG_GUI_OPEN)) { NBTHelper.removeTag(itemStack, Names.NBT.ALCHEMICAL_BAG_GUI_OPEN); } diff --git a/src/main/java/com/pahimar/ee3/inventory/InventoryAlchemicalBag.java b/src/main/java/com/pahimar/ee3/inventory/InventoryAlchemicalBag.java index e2f711db..7086acd2 100644 --- a/src/main/java/com/pahimar/ee3/inventory/InventoryAlchemicalBag.java +++ b/src/main/java/com/pahimar/ee3/inventory/InventoryAlchemicalBag.java @@ -40,29 +40,27 @@ public class InventoryAlchemicalBag implements IInventory, INBTTaggable readFromNBT(itemStack.getTagCompound()); } - public void onGuiSaved(EntityPlayer entityPlayer) - { + public void onGuiSaved(EntityPlayer entityPlayer) { + parentItemStack = findParentItemStack(entityPlayer); - if (parentItemStack != null) - { + if (parentItemStack != null) { save(); } } - public ItemStack findParentItemStack(EntityPlayer entityPlayer) - { - if (NBTHelper.hasUUID(parentItemStack)) - { + public ItemStack findParentItemStack(EntityPlayer entityPlayer) { + + if (NBTHelper.hasUUID(parentItemStack)) { + UUID parentItemStackUUID = new UUID(parentItemStack.getTagCompound().getLong(Names.NBT.UUID_MOST_SIG), parentItemStack.getTagCompound().getLong(Names.NBT.UUID_LEAST_SIG)); - for (int i = 0; i < entityPlayer.inventory.getSizeInventory(); i++) - { + + for (int i = 0; i < entityPlayer.inventory.getSizeInventory(); i++) { + ItemStack itemStack = entityPlayer.inventory.getStackInSlot(i); - if (NBTHelper.hasUUID(itemStack)) - { - if (itemStack.getTagCompound().getLong(Names.NBT.UUID_MOST_SIG) == parentItemStackUUID.getMostSignificantBits() && itemStack.getTagCompound().getLong(Names.NBT.UUID_LEAST_SIG) == parentItemStackUUID.getLeastSignificantBits()) - { + if (NBTHelper.hasUUID(itemStack)) { + if (itemStack.getTagCompound().getLong(Names.NBT.UUID_MOST_SIG) == parentItemStackUUID.getMostSignificantBits() && itemStack.getTagCompound().getLong(Names.NBT.UUID_LEAST_SIG) == parentItemStackUUID.getLeastSignificantBits()) { return itemStack; } } @@ -72,17 +70,16 @@ public class InventoryAlchemicalBag implements IInventory, INBTTaggable return null; } - public boolean matchesUUID(UUID uuid) - { + public boolean matchesUUID(UUID uuid) { return NBTHelper.hasUUID(parentItemStack) && parentItemStack.getTagCompound().getLong(Names.NBT.UUID_LEAST_SIG) == uuid.getLeastSignificantBits() && parentItemStack.getTagCompound().getLong(Names.NBT.UUID_MOST_SIG) == uuid.getMostSignificantBits(); } - public void save() - { + public void save() { + NBTTagCompound nbtTagCompound = parentItemStack.getTagCompound(); - if (nbtTagCompound == null) - { + if (nbtTagCompound == null) { + nbtTagCompound = new NBTTagCompound(); UUID uuid = UUID.randomUUID(); diff --git a/src/main/java/com/pahimar/ee3/item/ItemAlchemicalBag.java b/src/main/java/com/pahimar/ee3/item/ItemAlchemicalBag.java index 6e2b85b6..eada4c25 100644 --- a/src/main/java/com/pahimar/ee3/item/ItemAlchemicalBag.java +++ b/src/main/java/com/pahimar/ee3/item/ItemAlchemicalBag.java @@ -1,7 +1,10 @@ package com.pahimar.ee3.item; import com.pahimar.ee3.EquivalentExchange3; -import com.pahimar.ee3.reference.*; +import com.pahimar.ee3.reference.Colors; +import com.pahimar.ee3.reference.GUIs; +import com.pahimar.ee3.reference.Names; +import com.pahimar.ee3.reference.Textures; import com.pahimar.ee3.util.ColorHelper; import com.pahimar.ee3.util.IOwnable; import com.pahimar.ee3.util.ItemHelper; @@ -14,12 +17,12 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.IIcon; import net.minecraft.util.MathHelper; import net.minecraft.world.World; import java.util.List; +import java.util.UUID; public class ItemAlchemicalBag extends ItemEE implements IOwnable { @@ -59,7 +62,7 @@ public class ItemAlchemicalBag extends ItemEE implements IOwnable { if (renderPass == 0) { - if (NBTHelper.hasTag(itemStack, Names.NBT.ALCHEMICAL_BAG_GUI_OPEN)) + if (NBTHelper.hasKey(itemStack, Names.NBT.ALCHEMICAL_BAG_GUI_OPEN)) { return icons[0]; } @@ -91,19 +94,33 @@ public class ItemAlchemicalBag extends ItemEE implements IOwnable } @Override - public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer entityPlayer) - { - if (!world.isRemote) - { - if (!ItemHelper.hasOwnerUUID(itemStack)) - { + public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer entityPlayer) { + + if (!world.isRemote) { + + // Set the owner of the bag if one doesn't exist already + if (!ItemHelper.hasOwnerUUID(itemStack)) { ItemHelper.setOwner(itemStack, entityPlayer); - entityPlayer.addChatComponentMessage(new ChatComponentTranslation(Messages.OWNER_SET_TO_SELF, new Object[]{itemStack.func_151000_E()})); } - // Set a UUID on the Alchemical Bag, if one doesn't exist already - NBTHelper.setUUID(itemStack); + // Set an UUID on the bag if one doesn't exist already + if (!NBTHelper.hasUUID(itemStack)) { + NBTHelper.setUUID(itemStack, UUID.randomUUID()); + } + // TODO Do a scan of inventory and if we find a bag with the same UUID, change it's UUID + for (int i = 0; i < entityPlayer.inventory.getSizeInventory(); i++) { + if (entityPlayer.inventory.getStackInSlot(i) != null) { + ItemStack itemStack1 = entityPlayer.inventory.getStackInSlot(i); + + if (itemStack1.getItem() instanceof ItemAlchemicalBag) { + if (NBTHelper.hasUUID(itemStack1) && NBTHelper.getUUID(itemStack).equals(NBTHelper.getUUID(itemStack1))) { + NBTHelper.setUUID(itemStack1, UUID.randomUUID()); + } + } + } + } + NBTHelper.setBoolean(itemStack, Names.NBT.ALCHEMICAL_BAG_GUI_OPEN, true); entityPlayer.openGui(EquivalentExchange3.instance, GUIs.ALCHEMICAL_BAG.ordinal(), entityPlayer.worldObj, (int) entityPlayer.posX, (int) entityPlayer.posY, (int) entityPlayer.posZ); } diff --git a/src/main/java/com/pahimar/ee3/item/ItemMiniumStone.java b/src/main/java/com/pahimar/ee3/item/ItemMiniumStone.java index eeaaea40..324e5ca0 100644 --- a/src/main/java/com/pahimar/ee3/item/ItemMiniumStone.java +++ b/src/main/java/com/pahimar/ee3/item/ItemMiniumStone.java @@ -46,7 +46,7 @@ public class ItemMiniumStone extends ItemEE implements IKeyBound @SideOnly(Side.CLIENT) public boolean hasEffect(ItemStack itemStack, int renderPass) { - return NBTHelper.hasTag(itemStack, Names.NBT.CRAFTING_GUI_OPEN) || NBTHelper.hasTag(itemStack, Names.NBT.TRANSMUTATION_GUI_OPEN); + return NBTHelper.hasKey(itemStack, Names.NBT.CRAFTING_GUI_OPEN) || NBTHelper.hasKey(itemStack, Names.NBT.TRANSMUTATION_GUI_OPEN); } @Override diff --git a/src/main/java/com/pahimar/ee3/util/ItemHelper.java b/src/main/java/com/pahimar/ee3/util/ItemHelper.java index 276eb454..9e87391a 100644 --- a/src/main/java/com/pahimar/ee3/util/ItemHelper.java +++ b/src/main/java/com/pahimar/ee3/util/ItemHelper.java @@ -56,21 +56,21 @@ public class ItemHelper { } public static boolean hasOwner(ItemStack itemStack) { - return (NBTHelper.hasTag(itemStack, Names.NBT.OWNER_UUID_MOST_SIG) && NBTHelper.hasTag(itemStack, Names.NBT.OWNER_UUID_LEAST_SIG)) || NBTHelper.hasTag(itemStack, Names.NBT.OWNER); + return (NBTHelper.hasKey(itemStack, Names.NBT.OWNER_UUID_MOST_SIG) && NBTHelper.hasKey(itemStack, Names.NBT.OWNER_UUID_LEAST_SIG)) || NBTHelper.hasKey(itemStack, Names.NBT.OWNER); } public static boolean hasOwnerUUID(ItemStack itemStack) { - return NBTHelper.hasTag(itemStack, Names.NBT.OWNER_UUID_MOST_SIG) && NBTHelper.hasTag(itemStack, Names.NBT.OWNER_UUID_LEAST_SIG); + return NBTHelper.hasKey(itemStack, Names.NBT.OWNER_UUID_MOST_SIG) && NBTHelper.hasKey(itemStack, Names.NBT.OWNER_UUID_LEAST_SIG); } public static boolean hasOwnerName(ItemStack itemStack) { - return NBTHelper.hasTag(itemStack, Names.NBT.OWNER); + return NBTHelper.hasKey(itemStack, Names.NBT.OWNER); } public static String getOwnerName(ItemStack itemStack) { - if (NBTHelper.hasTag(itemStack, Names.NBT.OWNER)) + if (NBTHelper.hasKey(itemStack, Names.NBT.OWNER)) { return NBTHelper.getString(itemStack, Names.NBT.OWNER); } @@ -80,7 +80,7 @@ public class ItemHelper { public static UUID getOwnerUUID(ItemStack itemStack) { - if (NBTHelper.hasTag(itemStack, Names.NBT.OWNER_UUID_MOST_SIG) && NBTHelper.hasTag(itemStack, Names.NBT.OWNER_UUID_LEAST_SIG)) + if (NBTHelper.hasKey(itemStack, Names.NBT.OWNER_UUID_MOST_SIG) && NBTHelper.hasKey(itemStack, Names.NBT.OWNER_UUID_LEAST_SIG)) { return new UUID(NBTHelper.getLong(itemStack, Names.NBT.OWNER_UUID_MOST_SIG), NBTHelper.getLong(itemStack, Names.NBT.OWNER_UUID_LEAST_SIG)); } diff --git a/src/main/java/com/pahimar/ee3/util/NBTHelper.java b/src/main/java/com/pahimar/ee3/util/NBTHelper.java index 1a0872d4..393f43d0 100644 --- a/src/main/java/com/pahimar/ee3/util/NBTHelper.java +++ b/src/main/java/com/pahimar/ee3/util/NBTHelper.java @@ -2,270 +2,274 @@ package com.pahimar.ee3.util; import com.pahimar.ee3.reference.Names; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; +import net.minecraft.nbt.*; import java.util.UUID; -public class NBTHelper -{ - public static void clearStatefulNBTTags(ItemStack itemStack) - { - if (NBTHelper.hasTag(itemStack, Names.NBT.CRAFTING_GUI_OPEN)) - { +public class NBTHelper { + + public static void clearStatefulNBTTags(ItemStack itemStack) { + + if (NBTHelper.hasKey(itemStack, Names.NBT.CRAFTING_GUI_OPEN)) { NBTHelper.removeTag(itemStack, Names.NBT.CRAFTING_GUI_OPEN); } - else if (NBTHelper.hasTag(itemStack, Names.NBT.TRANSMUTATION_GUI_OPEN)) - { + else if (NBTHelper.hasKey(itemStack, Names.NBT.TRANSMUTATION_GUI_OPEN)) { NBTHelper.removeTag(itemStack, Names.NBT.TRANSMUTATION_GUI_OPEN); } - else if (NBTHelper.hasTag(itemStack, Names.NBT.ALCHEMICAL_BAG_GUI_OPEN)) - { + else if (NBTHelper.hasKey(itemStack, Names.NBT.ALCHEMICAL_BAG_GUI_OPEN)) { NBTHelper.removeTag(itemStack, Names.NBT.ALCHEMICAL_BAG_GUI_OPEN); } } - public static boolean hasTag(ItemStack itemStack, String keyName) - { + public static boolean hasKey(ItemStack itemStack, String keyName) { return itemStack != null && itemStack.stackTagCompound != null && itemStack.stackTagCompound.hasKey(keyName); } - public static void removeTag(ItemStack itemStack, String keyName) - { - if (itemStack.stackTagCompound != null) - { + public static void removeTag(ItemStack itemStack, String keyName) { + + if (itemStack != null && itemStack.stackTagCompound != null && keyName != null && !keyName.isEmpty()) { itemStack.stackTagCompound.removeTag(keyName); } } - public static boolean hasUUID(ItemStack itemStack) - { - return hasTag(itemStack, Names.NBT.UUID_MOST_SIG) && hasTag(itemStack, Names.NBT.UUID_LEAST_SIG); + public static boolean hasUUID(ItemStack itemStack) { + return getLong(itemStack, Names.NBT.UUID_MOST_SIG) != null && getLong(itemStack, Names.NBT.UUID_LEAST_SIG) != null; } - public static void setUUID(ItemStack itemStack) - { - initNBTTagCompound(itemStack); + public static UUID getUUID(ItemStack itemStack) { - // Set a UUID on the Alchemical Bag, if one doesn't exist already - if (!hasTag(itemStack, Names.NBT.UUID_MOST_SIG) && !hasTag(itemStack, Names.NBT.UUID_LEAST_SIG)) - { - UUID itemUUID = UUID.randomUUID(); - setLong(itemStack, Names.NBT.UUID_MOST_SIG, itemUUID.getMostSignificantBits()); - setLong(itemStack, Names.NBT.UUID_LEAST_SIG, itemUUID.getLeastSignificantBits()); + if (hasUUID(itemStack)) { + return new UUID(getLong(itemStack, Names.NBT.UUID_MOST_SIG), getLong(itemStack, Names.NBT.UUID_LEAST_SIG)); + } + + return null; + } + + public static void setUUID(ItemStack itemStack, UUID uuid) { + + if (itemStack != null) { + + initNBTTagCompound(itemStack); + + if (uuid == null) { + uuid = UUID.randomUUID(); + } + + setLong(itemStack, Names.NBT.UUID_MOST_SIG, uuid.getMostSignificantBits()); + setLong(itemStack, Names.NBT.UUID_LEAST_SIG, uuid.getLeastSignificantBits()); } } /** - * Initializes the NBT Tag Compound for the given ItemStack if it is null + * Initializes the NBT Tag Compound for the given ItemStack * * @param itemStack The ItemStack for which its NBT Tag Compound is being checked for initialization */ - private static void initNBTTagCompound(ItemStack itemStack) - { - if (itemStack.stackTagCompound == null) - { + private static void initNBTTagCompound(ItemStack itemStack) { + + if (itemStack != null && itemStack.stackTagCompound == null) { itemStack.setTagCompound(new NBTTagCompound()); } } - public static void setLong(ItemStack itemStack, String keyName, long keyValue) - { - initNBTTagCompound(itemStack); - - itemStack.stackTagCompound.setLong(keyName, keyValue); - } - // String - public static String getString(ItemStack itemStack, String keyName) - { - initNBTTagCompound(itemStack); + public static String getString(ItemStack itemStack, String keyName) { - if (!itemStack.stackTagCompound.hasKey(keyName)) - { - setString(itemStack, keyName, ""); + if (hasKey(itemStack, keyName)) { + if (itemStack.getTagCompound().getTag(keyName) instanceof NBTTagString) { + return itemStack.stackTagCompound.getString(keyName); + } } - return itemStack.stackTagCompound.getString(keyName); + return null; } - public static void setString(ItemStack itemStack, String keyName, String keyValue) - { - initNBTTagCompound(itemStack); + public static void setString(ItemStack itemStack, String keyName, String keyValue) { - itemStack.stackTagCompound.setString(keyName, keyValue); + if (itemStack != null && keyName != null && !keyName.isEmpty()) { + initNBTTagCompound(itemStack); + itemStack.stackTagCompound.setString(keyName, keyValue); + } } // boolean - public static boolean getBoolean(ItemStack itemStack, String keyName) - { - initNBTTagCompound(itemStack); + public static Boolean getBoolean(ItemStack itemStack, String keyName) { - if (!itemStack.stackTagCompound.hasKey(keyName)) - { - setBoolean(itemStack, keyName, false); + if (hasKey(itemStack, keyName)) { + if (itemStack.getTagCompound().getTag(keyName) instanceof NBTTagByte) { + itemStack.stackTagCompound.getBoolean(keyName); + } } - return itemStack.stackTagCompound.getBoolean(keyName); + return null; } - public static void setBoolean(ItemStack itemStack, String keyName, boolean keyValue) - { - initNBTTagCompound(itemStack); + public static void setBoolean(ItemStack itemStack, String keyName, boolean keyValue) { - itemStack.stackTagCompound.setBoolean(keyName, keyValue); + if (itemStack != null && keyName != null && !keyName.isEmpty()) { + initNBTTagCompound(itemStack); + itemStack.stackTagCompound.setBoolean(keyName, keyValue); + } } // byte - public static byte getByte(ItemStack itemStack, String keyName) - { - initNBTTagCompound(itemStack); + public static Byte getByte(ItemStack itemStack, String keyName) { - if (!itemStack.stackTagCompound.hasKey(keyName)) - { - setByte(itemStack, keyName, (byte) 0); + if (hasKey(itemStack, keyName)) { + if (itemStack.getTagCompound().getTag(keyName) instanceof NBTTagByte) { + return itemStack.stackTagCompound.getByte(keyName); + } } - return itemStack.stackTagCompound.getByte(keyName); + return null; } - public static void setByte(ItemStack itemStack, String keyName, byte keyValue) - { - initNBTTagCompound(itemStack); + public static void setByte(ItemStack itemStack, String keyName, byte keyValue) { - itemStack.stackTagCompound.setByte(keyName, keyValue); + if (itemStack != null && keyName != null && !keyName.isEmpty()) { + initNBTTagCompound(itemStack); + itemStack.stackTagCompound.setByte(keyName, keyValue); + } } // short - public static short getShort(ItemStack itemStack, String keyName) - { - initNBTTagCompound(itemStack); + public static Short getShort(ItemStack itemStack, String keyName) { - if (!itemStack.stackTagCompound.hasKey(keyName)) - { - setShort(itemStack, keyName, (short) 0); + if (hasKey(itemStack, keyName)) { + if (itemStack.getTagCompound().getTag(keyName) instanceof NBTTagShort) { + return itemStack.stackTagCompound.getShort(keyName); + } } - return itemStack.stackTagCompound.getShort(keyName); + return null; } - public static void setShort(ItemStack itemStack, String keyName, short keyValue) - { - initNBTTagCompound(itemStack); + public static void setShort(ItemStack itemStack, String keyName, short keyValue) { - itemStack.stackTagCompound.setShort(keyName, keyValue); + if (itemStack != null && keyName != null && !keyName.isEmpty()) { + initNBTTagCompound(itemStack); + itemStack.stackTagCompound.setShort(keyName, keyValue); + } } // int - public static int getInt(ItemStack itemStack, String keyName) - { - initNBTTagCompound(itemStack); + public static Integer getInteger(ItemStack itemStack, String keyName) { - if (!itemStack.stackTagCompound.hasKey(keyName)) - { - setInteger(itemStack, keyName, 0); + if (hasKey(itemStack, keyName)) { + if (itemStack.getTagCompound().getTag(keyName) instanceof NBTTagInt) { + return itemStack.stackTagCompound.getInteger(keyName); + } } - return itemStack.stackTagCompound.getInteger(keyName); + return null; } - public static void setInteger(ItemStack itemStack, String keyName, int keyValue) - { - initNBTTagCompound(itemStack); + public static void setInteger(ItemStack itemStack, String keyName, int keyValue) { - itemStack.stackTagCompound.setInteger(keyName, keyValue); + if (itemStack != null && keyName != null && !keyName.isEmpty()) { + initNBTTagCompound(itemStack); + itemStack.stackTagCompound.setInteger(keyName, keyValue); + } } // long - public static long getLong(ItemStack itemStack, String keyName) - { - initNBTTagCompound(itemStack); + public static Long getLong(ItemStack itemStack, String keyName) { - if (!itemStack.stackTagCompound.hasKey(keyName)) - { - setLong(itemStack, keyName, 0); + if (hasKey(itemStack, keyName)) { + if (itemStack.getTagCompound().getTag(keyName) instanceof NBTTagLong) { + return itemStack.stackTagCompound.getLong(keyName); + } } - return itemStack.stackTagCompound.getLong(keyName); + return null; + } + + public static void setLong(ItemStack itemStack, String keyName, long keyValue) { + + if (itemStack != null && keyName != null && !keyName.isEmpty()) { + + initNBTTagCompound(itemStack); + itemStack.stackTagCompound.setLong(keyName, keyValue); + } } // float - public static float getFloat(ItemStack itemStack, String keyName) - { - initNBTTagCompound(itemStack); + public static Float getFloat(ItemStack itemStack, String keyName) { - if (!itemStack.stackTagCompound.hasKey(keyName)) - { - setFloat(itemStack, keyName, 0); + if (hasKey(itemStack, keyName)) { + if (itemStack.getTagCompound().getTag(keyName) instanceof NBTTagFloat) { + return itemStack.stackTagCompound.getFloat(keyName); + } } - return itemStack.stackTagCompound.getFloat(keyName); + return null; } - public static void setFloat(ItemStack itemStack, String keyName, float keyValue) - { - initNBTTagCompound(itemStack); + public static void setFloat(ItemStack itemStack, String keyName, float keyValue) { - itemStack.stackTagCompound.setFloat(keyName, keyValue); + if (itemStack != null && keyName != null && !keyName.isEmpty()) { + initNBTTagCompound(itemStack); + itemStack.stackTagCompound.setFloat(keyName, keyValue); + } } // double - public static double getDouble(ItemStack itemStack, String keyName) - { - initNBTTagCompound(itemStack); + public static Double getDouble(ItemStack itemStack, String keyName) { - if (!itemStack.stackTagCompound.hasKey(keyName)) - { - setDouble(itemStack, keyName, 0); + if (hasKey(itemStack, keyName)) { + if (itemStack.getTagCompound().getTag(keyName) instanceof NBTTagDouble) { + return itemStack.stackTagCompound.getDouble(keyName); + } } - return itemStack.stackTagCompound.getDouble(keyName); + return null; } - public static void setDouble(ItemStack itemStack, String keyName, double keyValue) - { - initNBTTagCompound(itemStack); + public static void setDouble(ItemStack itemStack, String keyName, double keyValue) { - itemStack.stackTagCompound.setDouble(keyName, keyValue); + if (itemStack != null && keyName != null && !keyName.isEmpty()) { + initNBTTagCompound(itemStack); + itemStack.stackTagCompound.setDouble(keyName, keyValue); + } } // tag list - public static NBTTagList getTagList(ItemStack itemStack, String keyName, int nbtBaseType) - { - initNBTTagCompound(itemStack); + public static NBTTagList getTagList(ItemStack itemStack, String keyName, int nbtBaseType) { - if (!itemStack.stackTagCompound.hasKey(keyName)) - { - setTagList(itemStack, keyName, new NBTTagList()); + if (hasKey(itemStack, keyName)) { + if (itemStack.getTagCompound().getTag(keyName) instanceof NBTTagList) { + return itemStack.stackTagCompound.getTagList(keyName, nbtBaseType); + } } - return itemStack.stackTagCompound.getTagList(keyName, nbtBaseType); + return null; } - public static void setTagList(ItemStack itemStack, String keyName, NBTTagList nbtTagList) - { - initNBTTagCompound(itemStack); + public static void setTagList(ItemStack itemStack, String keyName, NBTTagList nbtTagList) { - itemStack.stackTagCompound.setTag(keyName, nbtTagList); + if (itemStack != null && keyName != null && !keyName.isEmpty()) { + initNBTTagCompound(itemStack); + itemStack.stackTagCompound.setTag(keyName, nbtTagList); + } } // tag compound - public static NBTTagCompound getTagCompound(ItemStack itemStack, String keyName) - { - initNBTTagCompound(itemStack); + public static NBTTagCompound getTagCompound(ItemStack itemStack, String keyName) { - if (!itemStack.stackTagCompound.hasKey(keyName)) - { - setTagCompound(itemStack, keyName, new NBTTagCompound()); + if (hasKey(itemStack, keyName)) { + if (itemStack.getTagCompound().getTag(keyName) instanceof NBTTagCompound) { + return itemStack.stackTagCompound.getCompoundTag(keyName); + } } - return itemStack.stackTagCompound.getCompoundTag(keyName); + return null; } - public static void setTagCompound(ItemStack itemStack, String keyName, NBTTagCompound nbtTagCompound) - { - initNBTTagCompound(itemStack); + public static void setTagCompound(ItemStack itemStack, String keyName, NBTTagCompound nbtTagCompound) { - itemStack.stackTagCompound.setTag(keyName, nbtTagCompound); + if (itemStack != null && keyName != null && !keyName.isEmpty()) { + initNBTTagCompound(itemStack); + itemStack.stackTagCompound.setTag(keyName, nbtTagCompound); + } } } \ No newline at end of file