aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/kubatech/api
diff options
context:
space:
mode:
authorkuba6000 <kuba.123123.6000@gmail.com>2022-08-23 16:09:24 +0200
committerkuba6000 <kuba.123123.6000@gmail.com>2022-08-23 16:09:24 +0200
commit46bc982475752c7987bf9c3489cab78ec02b7f93 (patch)
tree86c1fcc2c83d63cf7c79a56eb7d09f3bdc889700 /src/main/java/kubatech/api
parent831f61807e824b4660175da986a3d0deec04c40c (diff)
downloadGT5-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.java78
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;
+ }
+}