diff options
author | kuba6000 <kuba.123123.6000@gmail.com> | 2022-08-23 16:09:24 +0200 |
---|---|---|
committer | kuba6000 <kuba.123123.6000@gmail.com> | 2022-08-23 16:09:24 +0200 |
commit | 46bc982475752c7987bf9c3489cab78ec02b7f93 (patch) | |
tree | 86c1fcc2c83d63cf7c79a56eb7d09f3bdc889700 /src/main/java/kubatech/api | |
parent | 831f61807e824b4660175da986a3d0deec04c40c (diff) | |
download | GT5-Unofficial-46bc982475752c7987bf9c3489cab78ec02b7f93.tar.gz GT5-Unofficial-46bc982475752c7987bf9c3489cab78ec02b7f93.tar.bz2 GT5-Unofficial-46bc982475752c7987bf9c3489cab78ec02b7f93.zip |
Weapon is optional
Diffstat (limited to 'src/main/java/kubatech/api')
-rw-r--r-- | src/main/java/kubatech/api/utils/ItemID.java | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/src/main/java/kubatech/api/utils/ItemID.java b/src/main/java/kubatech/api/utils/ItemID.java new file mode 100644 index 0000000000..199af7ebd0 --- /dev/null +++ b/src/main/java/kubatech/api/utils/ItemID.java @@ -0,0 +1,78 @@ +package kubatech.api.utils; + +import java.util.Objects; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; + +public class ItemID { + private final Item item; + private final int count; + private final int meta; + private final NBTTagCompound tag; + private final boolean ignorecount; + private final boolean ignoremeta; + private final boolean ignorenbt; + + public static ItemID create(ItemStack stack) { + return new ItemID(stack, true, true, true, true); // ignore count by default + } + + public static ItemID create(ItemStack stack, boolean ignorecount) { + return new ItemID(stack, ignorecount, false, false, true); + } + + public static ItemID create(ItemStack stack, boolean ignorecount, boolean ignoremeta) { + return new ItemID(stack, ignorecount, ignoremeta, false, true); + } + + public static ItemID create(ItemStack stack, boolean ignorecount, boolean ignoremeta, boolean ignorenbt) { + return new ItemID(stack, ignorecount, ignoremeta, ignorenbt, true); + } + + public static ItemID create_NoCopy(ItemStack stack) { + return new ItemID(stack, true, false, false, false); // ignore count by default + } + + public static ItemID create_NoCopy(ItemStack stack, boolean ignorecount) { + return new ItemID(stack, ignorecount, false, false, false); + } + + public static ItemID create_NoCopy(ItemStack stack, boolean ignorecount, boolean ignoremeta) { + return new ItemID(stack, ignorecount, ignoremeta, false, false); + } + + public static ItemID create_NoCopy(ItemStack stack, boolean ignorecount, boolean ignoremeta, boolean ignorenbt) { + return new ItemID(stack, ignorecount, ignoremeta, ignorenbt, false); + } + + private ItemID(ItemStack stack, boolean ignorecount, boolean ignoremeta, boolean ignorenbt, boolean createcopy) { + this.ignorecount = ignorecount; + this.ignoremeta = ignoremeta; + this.ignorenbt = ignorenbt; + item = stack.getItem(); + count = ignorecount ? 0 : stack.stackSize; + meta = ignoremeta ? 0 : stack.getItemDamage(); + tag = ignorenbt ? null : (createcopy ? (NBTTagCompound) stack.stackTagCompound.copy() : stack.stackTagCompound); + } + + @Override + public int hashCode() { + return Objects.hash(item, count, meta, tag); + } + + @Override + public boolean equals(Object obj) { + if (obj == null) return false; + if (obj == this) return true; + if (obj instanceof ItemID) return obj.hashCode() == this.hashCode(); + if (obj instanceof ItemStack) { + if (!item.equals(((ItemStack) obj).getItem())) return false; + if (!ignorecount) if (count != ((ItemStack) obj).stackSize) return false; + if (!ignoremeta) if (meta != ((ItemStack) obj).getItemDamage()) return false; + if (!ignorenbt) if (!tag.equals(((ItemStack) obj).stackTagCompound)) return false; + return true; + } + return false; + } +} |