2014-06-14 21:40:45 +02:00
|
|
|
package com.pahimar.ee3.util;
|
|
|
|
|
2015-05-05 04:36:39 +02:00
|
|
|
import com.pahimar.ee3.reference.Comparators;
|
2014-07-15 18:24:18 +02:00
|
|
|
import com.pahimar.ee3.reference.Names;
|
|
|
|
import net.minecraft.entity.player.EntityPlayer;
|
2014-06-14 21:40:45 +02:00
|
|
|
import net.minecraft.item.ItemStack;
|
|
|
|
|
2015-03-05 05:31:43 +01:00
|
|
|
import java.util.UUID;
|
2014-06-14 21:40:45 +02:00
|
|
|
|
2016-05-19 21:17:56 +02:00
|
|
|
public class ItemHelper {
|
|
|
|
|
|
|
|
public static ItemStack clone(ItemStack itemStack, int stackSize) {
|
|
|
|
|
|
|
|
if (itemStack != null) {
|
|
|
|
ItemStack clonedItemStack = itemStack.copy();
|
|
|
|
clonedItemStack.stackSize = stackSize;
|
|
|
|
return clonedItemStack;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
return null;
|
|
|
|
}
|
2014-07-31 21:38:23 +02:00
|
|
|
}
|
|
|
|
|
2014-06-14 21:40:45 +02:00
|
|
|
/**
|
|
|
|
* Compares two ItemStacks for equality, testing itemID, metaData, stackSize, and their NBTTagCompounds (if they are
|
|
|
|
* present)
|
|
|
|
*
|
2014-07-04 21:18:10 +02:00
|
|
|
* @param first The first ItemStack being tested for equality
|
|
|
|
* @param second The second ItemStack being tested for equality
|
2014-06-14 21:40:45 +02:00
|
|
|
* @return true if the two ItemStacks are equivalent, false otherwise
|
|
|
|
*/
|
2016-05-19 21:17:56 +02:00
|
|
|
public static boolean equals(ItemStack first, ItemStack second) {
|
2016-05-20 03:10:55 +02:00
|
|
|
return (Comparators.ID_COMPARATOR.compare(first, second) == 0);
|
2014-06-14 21:40:45 +02:00
|
|
|
}
|
|
|
|
|
2016-05-19 21:17:56 +02:00
|
|
|
public static boolean equalsIgnoreStackSize(ItemStack itemStack1, ItemStack itemStack2) {
|
|
|
|
return equals(clone(itemStack1, 1), clone(itemStack2, 1));
|
2014-07-31 21:38:23 +02:00
|
|
|
}
|
|
|
|
|
2016-05-19 21:17:56 +02:00
|
|
|
public static int compare(ItemStack itemStack1, ItemStack itemStack2) {
|
2016-05-20 03:10:55 +02:00
|
|
|
return Comparators.ID_COMPARATOR.compare(itemStack1, itemStack2);
|
2014-06-14 21:40:45 +02:00
|
|
|
}
|
|
|
|
|
2016-05-19 21:17:56 +02:00
|
|
|
public static String toString(ItemStack itemStack) {
|
|
|
|
|
|
|
|
if (itemStack != null) {
|
|
|
|
if (itemStack.hasTagCompound()) {
|
2015-01-30 05:38:10 +01:00
|
|
|
return String.format("%sxitemStack[%s@%s:%s]", itemStack.stackSize, itemStack.getUnlocalizedName(), itemStack.getItemDamage(), itemStack.getTagCompound());
|
2015-02-05 05:48:07 +01:00
|
|
|
}
|
2016-05-19 21:17:56 +02:00
|
|
|
else {
|
2015-01-30 05:38:10 +01:00
|
|
|
return String.format("%sxitemStack[%s@%s]", itemStack.stackSize, itemStack.getUnlocalizedName(), itemStack.getItemDamage());
|
|
|
|
}
|
2014-06-14 21:40:45 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
return "null";
|
|
|
|
}
|
2014-07-15 18:24:18 +02:00
|
|
|
|
2016-05-19 21:17:56 +02:00
|
|
|
public static boolean hasOwner(ItemStack itemStack) {
|
2016-05-27 17:10:38 +02:00
|
|
|
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);
|
2014-07-15 18:24:18 +02:00
|
|
|
}
|
|
|
|
|
2016-05-19 21:17:56 +02:00
|
|
|
public static boolean hasOwnerUUID(ItemStack itemStack) {
|
2016-05-27 17:10:38 +02:00
|
|
|
return NBTHelper.hasKey(itemStack, Names.NBT.OWNER_UUID_MOST_SIG) && NBTHelper.hasKey(itemStack, Names.NBT.OWNER_UUID_LEAST_SIG);
|
2015-02-20 04:09:10 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
public static boolean hasOwnerName(ItemStack itemStack)
|
|
|
|
{
|
2016-05-27 17:10:38 +02:00
|
|
|
return NBTHelper.hasKey(itemStack, Names.NBT.OWNER);
|
2015-02-20 04:09:10 +01:00
|
|
|
}
|
|
|
|
|
2014-07-15 18:24:18 +02:00
|
|
|
public static String getOwnerName(ItemStack itemStack)
|
|
|
|
{
|
2016-05-27 17:10:38 +02:00
|
|
|
if (NBTHelper.hasKey(itemStack, Names.NBT.OWNER))
|
2014-07-15 18:24:18 +02:00
|
|
|
{
|
|
|
|
return NBTHelper.getString(itemStack, Names.NBT.OWNER);
|
|
|
|
}
|
|
|
|
|
2015-02-20 04:09:10 +01:00
|
|
|
return null;
|
2014-07-15 18:24:18 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
public static UUID getOwnerUUID(ItemStack itemStack)
|
|
|
|
{
|
2016-05-27 17:10:38 +02:00
|
|
|
if (NBTHelper.hasKey(itemStack, Names.NBT.OWNER_UUID_MOST_SIG) && NBTHelper.hasKey(itemStack, Names.NBT.OWNER_UUID_LEAST_SIG))
|
2014-07-15 18:24:18 +02:00
|
|
|
{
|
|
|
|
return new UUID(NBTHelper.getLong(itemStack, Names.NBT.OWNER_UUID_MOST_SIG), NBTHelper.getLong(itemStack, Names.NBT.OWNER_UUID_LEAST_SIG));
|
|
|
|
}
|
|
|
|
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
public static void setOwner(ItemStack itemStack, EntityPlayer entityPlayer)
|
|
|
|
{
|
2015-02-20 04:09:10 +01:00
|
|
|
setOwnerName(itemStack, entityPlayer);
|
|
|
|
setOwnerUUID(itemStack, entityPlayer);
|
|
|
|
}
|
|
|
|
|
|
|
|
public static void setOwnerUUID(ItemStack itemStack, EntityPlayer entityPlayer)
|
|
|
|
{
|
2014-07-15 18:24:18 +02:00
|
|
|
NBTHelper.setLong(itemStack, Names.NBT.OWNER_UUID_MOST_SIG, entityPlayer.getUniqueID().getMostSignificantBits());
|
|
|
|
NBTHelper.setLong(itemStack, Names.NBT.OWNER_UUID_LEAST_SIG, entityPlayer.getUniqueID().getLeastSignificantBits());
|
|
|
|
}
|
2015-02-20 04:09:10 +01:00
|
|
|
|
|
|
|
public static void setOwnerName(ItemStack itemStack, EntityPlayer entityPlayer)
|
|
|
|
{
|
|
|
|
NBTHelper.setString(itemStack, Names.NBT.OWNER, entityPlayer.getDisplayName());
|
|
|
|
}
|
2015-02-21 04:47:28 +01:00
|
|
|
|
2014-06-14 21:40:45 +02:00
|
|
|
}
|