From 664eddeab00db41daa323134736bc1a3e4727bb7 Mon Sep 17 00:00:00 2001 From: hyperdefined Date: Sat, 30 Sep 2023 20:22:33 -0400 Subject: [PATCH] more hash work --- .../java/lol/hyper/toolstats/ToolStats.java | 2 +- .../lol/hyper/toolstats/events/CraftItem.java | 7 ++-- .../hyper/toolstats/events/GenerateLoot.java | 7 ++-- .../hyper/toolstats/events/InventoryOpen.java | 34 ++++++++++--------- .../hyper/toolstats/events/PickupItem.java | 7 ++++ .../hyper/toolstats/events/VillagerTrade.java | 7 ++-- src/main/resources/config.yml | 7 +++- 7 files changed, 47 insertions(+), 24 deletions(-) diff --git a/src/main/java/lol/hyper/toolstats/ToolStats.java b/src/main/java/lol/hyper/toolstats/ToolStats.java index c2fa7e4..be213b7 100644 --- a/src/main/java/lol/hyper/toolstats/ToolStats.java +++ b/src/main/java/lol/hyper/toolstats/ToolStats.java @@ -119,7 +119,7 @@ public final class ToolStats extends JavaPlugin { public final Logger logger = this.getLogger(); public final File configFile = new File(this.getDataFolder(), "config.yml"); public FileConfiguration config; - public final int CONFIG_VERSION = 5; + public final int CONFIG_VERSION = 6; private BukkitAudiences adventure; public MorePaperLib morePaperLib; diff --git a/src/main/java/lol/hyper/toolstats/events/CraftItem.java b/src/main/java/lol/hyper/toolstats/events/CraftItem.java index 2c536bf..fc03db3 100644 --- a/src/main/java/lol/hyper/toolstats/events/CraftItem.java +++ b/src/main/java/lol/hyper/toolstats/events/CraftItem.java @@ -104,9 +104,12 @@ public class CraftItem implements Listener { return null; } - String hash = toolStats.hashMaker.makeHash(newItem.getType(), owner.getUniqueId(), timeCreated); + // only make the hash if it's enabled + if (toolStats.config.getBoolean("generate-hash-for-items")) { + String hash = toolStats.hashMaker.makeHash(newItem.getType(), owner.getUniqueId(), timeCreated); + container.set(toolStats.hash, PersistentDataType.STRING, hash); + } - container.set(toolStats.hash, PersistentDataType.STRING, hash); container.set(toolStats.timeCreated, PersistentDataType.LONG, timeCreated); container.set(toolStats.genericOwner, new UUIDDataType(), owner.getUniqueId()); container.set(toolStats.originType, PersistentDataType.INTEGER, 0); diff --git a/src/main/java/lol/hyper/toolstats/events/GenerateLoot.java b/src/main/java/lol/hyper/toolstats/events/GenerateLoot.java index 66457de..fa356a1 100644 --- a/src/main/java/lol/hyper/toolstats/events/GenerateLoot.java +++ b/src/main/java/lol/hyper/toolstats/events/GenerateLoot.java @@ -144,9 +144,12 @@ public class GenerateLoot implements Listener { return null; } - String hash = toolStats.hashMaker.makeHash(newItem.getType(), owner.getUniqueId(), timeCreated); + // only make the hash if it's enabled + if (toolStats.config.getBoolean("generate-hash-for-items")) { + String hash = toolStats.hashMaker.makeHash(newItem.getType(), owner.getUniqueId(), timeCreated); + container.set(toolStats.hash, PersistentDataType.STRING, hash); + } - container.set(toolStats.hash, PersistentDataType.STRING, hash); container.set(toolStats.timeCreated, PersistentDataType.LONG, timeCreated); container.set(toolStats.genericOwner, new UUIDDataType(), owner.getUniqueId()); container.set(toolStats.originType, PersistentDataType.INTEGER, 2); diff --git a/src/main/java/lol/hyper/toolstats/events/InventoryOpen.java b/src/main/java/lol/hyper/toolstats/events/InventoryOpen.java index 9b3a393..0b6a81b 100644 --- a/src/main/java/lol/hyper/toolstats/events/InventoryOpen.java +++ b/src/main/java/lol/hyper/toolstats/events/InventoryOpen.java @@ -64,23 +64,25 @@ public class InventoryOpen implements Listener { } PersistentDataContainer container = itemMeta.getPersistentDataContainer(); - // generate a hash if the item doesn't have one - if (!container.has(toolStats.hash, PersistentDataType.STRING)) { - // make sure the item has an owner - if (!container.has(toolStats.genericOwner, new UUIDDataType())) { - continue; + // generate a hash if the item doesn't have one (if it's enabled in the config + if (toolStats.config.getBoolean("generate-hash-for-items")) { + if (!container.has(toolStats.hash, PersistentDataType.STRING)) { + // make sure the item has an owner + if (!container.has(toolStats.genericOwner, new UUIDDataType())) { + continue; + } + UUID owner = container.get(toolStats.genericOwner, new UUIDDataType()); + if (owner == null) { + continue; + } + Long timestamp = container.get(toolStats.timeCreated, PersistentDataType.LONG); + if (timestamp == null) { + continue; + } + String hash = toolStats.hashMaker.makeHash(itemStack.getType(), owner, timestamp); + toolStats.logger.info(hash); + container.set(toolStats.hash, PersistentDataType.STRING, hash); } - UUID owner = container.get(toolStats.genericOwner, new UUIDDataType()); - if (owner == null) { - continue; - } - Long timestamp = container.get(toolStats.timeCreated, PersistentDataType.LONG); - if (timestamp == null) { - continue; - } - String hash = toolStats.hashMaker.makeHash(itemStack.getType(), owner, timestamp); - toolStats.logger.info(hash); - container.set(toolStats.hash, PersistentDataType.STRING, hash); } // add origin tag diff --git a/src/main/java/lol/hyper/toolstats/events/PickupItem.java b/src/main/java/lol/hyper/toolstats/events/PickupItem.java index cb50c72..dce696e 100644 --- a/src/main/java/lol/hyper/toolstats/events/PickupItem.java +++ b/src/main/java/lol/hyper/toolstats/events/PickupItem.java @@ -89,6 +89,13 @@ public class PickupItem implements Listener { long timeCreated = System.currentTimeMillis(); Date finalDate = new Date(timeCreated); PersistentDataContainer container = meta.getPersistentDataContainer(); + + // only make the hash if it's enabled + if (toolStats.config.getBoolean("generate-hash-for-items")) { + String hash = toolStats.hashMaker.makeHash(finalItem.getType(), owner.getUniqueId(), timeCreated); + container.set(toolStats.hash, PersistentDataType.STRING, hash); + } + container.set(toolStats.timeCreated, PersistentDataType.LONG, timeCreated); container.set(toolStats.genericOwner, new UUIDDataType(), owner.getUniqueId()); container.set(toolStats.originType, PersistentDataType.INTEGER, 4); diff --git a/src/main/java/lol/hyper/toolstats/events/VillagerTrade.java b/src/main/java/lol/hyper/toolstats/events/VillagerTrade.java index 61b63ce..bf9342b 100644 --- a/src/main/java/lol/hyper/toolstats/events/VillagerTrade.java +++ b/src/main/java/lol/hyper/toolstats/events/VillagerTrade.java @@ -106,9 +106,12 @@ public class VillagerTrade implements Listener { return null; } - String hash = toolStats.hashMaker.makeHash(newItem.getType(), owner.getUniqueId(), timeCreated); + // only make the hash if it's enabled + if (toolStats.config.getBoolean("generate-hash-for-items")) { + String hash = toolStats.hashMaker.makeHash(newItem.getType(), owner.getUniqueId(), timeCreated); + container.set(toolStats.hash, PersistentDataType.STRING, hash); + } - container.set(toolStats.hash, PersistentDataType.STRING, hash); container.set(toolStats.timeCreated, PersistentDataType.LONG, timeCreated); container.set(toolStats.genericOwner, new UUIDDataType(), owner.getUniqueId()); container.set(toolStats.originType, PersistentDataType.INTEGER, 3); diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 1227eee..e07987b 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -114,4 +114,9 @@ number-formats: comma-format: "#,###" decimal-format: "#,###.00" -config-version: 5 \ No newline at end of file +# When any tool is created, it will generate a hash for the item. +# This hash is not on the item lore, only stored in the NBT data. +# This has no use currently, but can be used for future features for dupe detection. +generate-hash-for-items: true + +config-version: 6 \ No newline at end of file