From e3629bf8135dc2f9ddb9cec19d09068c7ad20ba9 Mon Sep 17 00:00:00 2001 From: hyperdefined Date: Sun, 26 Jan 2025 16:14:46 -0500 Subject: [PATCH] not possible, wroops --- .../java/lol/hyper/toolstats/ToolStats.java | 3 - .../toolstats/events/GrindstoneEvent.java | 165 ------------------ .../toolstats/tools/config/TokenItems.java | 1 + src/main/resources/config.yml | 3 +- 4 files changed, 3 insertions(+), 169 deletions(-) delete mode 100644 src/main/java/lol/hyper/toolstats/events/GrindstoneEvent.java diff --git a/src/main/java/lol/hyper/toolstats/ToolStats.java b/src/main/java/lol/hyper/toolstats/ToolStats.java index b21c3f9..3f12713 100644 --- a/src/main/java/lol/hyper/toolstats/ToolStats.java +++ b/src/main/java/lol/hyper/toolstats/ToolStats.java @@ -145,7 +145,6 @@ public final class ToolStats extends JavaPlugin { public TokenCrafting tokenCrafting; public AnvilEvent anvilEvent; public PrepareCraft prepareCraft; - public GrindstoneEvent grindstoneEvent; @Override public void onEnable() { @@ -187,7 +186,6 @@ public final class ToolStats extends JavaPlugin { shootBow = new ShootBow(this); anvilEvent = new AnvilEvent(this); prepareCraft = new PrepareCraft(this); - grindstoneEvent = new GrindstoneEvent(this); // save which stat can be used by a reset token tokenKeys.add(blocksMined); @@ -218,7 +216,6 @@ public final class ToolStats extends JavaPlugin { Bukkit.getServer().getPluginManager().registerEvents(playerMove, this); Bukkit.getServer().getPluginManager().registerEvents(anvilEvent, this); Bukkit.getServer().getPluginManager().registerEvents(prepareCraft, this); - Bukkit.getServer().getPluginManager().registerEvents(grindstoneEvent, this); this.getCommand("toolstats").setExecutor(commandToolStats); diff --git a/src/main/java/lol/hyper/toolstats/events/GrindstoneEvent.java b/src/main/java/lol/hyper/toolstats/events/GrindstoneEvent.java deleted file mode 100644 index bc0c0e1..0000000 --- a/src/main/java/lol/hyper/toolstats/events/GrindstoneEvent.java +++ /dev/null @@ -1,165 +0,0 @@ -/* - * This file is part of ToolStats. - * - * ToolStats is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * ToolStats is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with ToolStats. If not, see . - */ - -package lol.hyper.toolstats.events; - -import lol.hyper.toolstats.ToolStats; -import org.bukkit.Material; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.inventory.PrepareGrindstoneEvent; -import org.bukkit.inventory.GrindstoneInventory; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; -import org.bukkit.persistence.PersistentDataContainer; -import org.bukkit.persistence.PersistentDataType; - -public class GrindstoneEvent implements Listener { - - private final ToolStats toolStats; - - public GrindstoneEvent(ToolStats toolStats) { - this.toolStats = toolStats; - } - - @EventHandler - public void onGrindstone(PrepareGrindstoneEvent event) { - if (!toolStats.config.getBoolean("tokens.enabled")) { - return; - } - - GrindstoneInventory inventory = event.getInventory(); - ItemStack upperSlotItem = inventory.getUpperItem(); - ItemStack lowerSlotItem = inventory.getLowerItem(); - - // make sure both slots have an item - if (upperSlotItem == null || lowerSlotItem == null) { - return; - } - - // make sure the first item is a valid item - if (!toolStats.itemChecker.isValidItem(upperSlotItem.getType())) { - return; - } - - PersistentDataContainer lowerSlotContainer = lowerSlotItem.getItemMeta().getPersistentDataContainer(); - // check to see if the lower item is a token - if (lowerSlotItem.getType() != Material.PAPER || !lowerSlotContainer.has(toolStats.tokenType, PersistentDataType.STRING)) { - return; - } - - // check to see if the token is a reset token - String tokenType = lowerSlotContainer.get(toolStats.tokenType, PersistentDataType.STRING); - if (tokenType == null) { - return; - } - if (!tokenType.equalsIgnoreCase("reset")) { - return; - } - - // make sure the upper slot item has tokens applied - PersistentDataContainer upperSlotContainer = upperSlotItem.getItemMeta().getPersistentDataContainer(); - if (!upperSlotContainer.has(toolStats.tokenApplied, PersistentDataType.STRING)) { - return; - } - - String appliedTokens = upperSlotContainer.get(toolStats.tokenApplied, PersistentDataType.STRING); - if (appliedTokens == null) { - return; - } - - // perform the reset - ItemStack resetItem = reset(upperSlotItem.clone(), appliedTokens); - if (resetItem != null) { - inventory.setResult(resetItem); - } - } - - /** - * Reset a given item's stat and lore to zero. - * - * @param inputItem The input item. - * @param appliedTokens The tokens this item has. - * @return The reset item, or null if it broke. - */ - private ItemStack reset(ItemStack inputItem, String appliedTokens) { - ItemMeta meta = inputItem.getItemMeta(); - if (meta == null) { - return null; - } - - ItemMeta finalMeta = meta.clone(); - PersistentDataContainer container = meta.getPersistentDataContainer(); - String[] tokens = appliedTokens.split(","); - for (String token : tokens) { - switch (appliedTokens) { - case "player-kills": { - container.set(toolStats.playerKills, PersistentDataType.INTEGER, 0); - finalMeta = toolStats.itemLore.updatePlayerKills(inputItem, 0); - break; - } - case "mob-kills": { - container.set(toolStats.mobKills, PersistentDataType.INTEGER, 0); - finalMeta = toolStats.itemLore.updateMobKills(inputItem, 0); - break; - } - case "blocks-mined": { - container.set(toolStats.blocksMined, PersistentDataType.INTEGER, 0); - finalMeta = toolStats.itemLore.updateBlocksMined(inputItem, 0); - break; - } - case "crops-mined": { - container.set(toolStats.cropsHarvested, PersistentDataType.INTEGER, 0); - finalMeta = toolStats.itemLore.updateCropsMined(inputItem, 0); - break; - } - case "fish-caught": { - container.set(toolStats.fishCaught, PersistentDataType.INTEGER, 0); - finalMeta = toolStats.itemLore.updateFishCaught(inputItem, 0); - break; - } - case "sheep-sheared": { - container.set(toolStats.sheepSheared, PersistentDataType.INTEGER, 0); - finalMeta = toolStats.itemLore.updateSheepSheared(inputItem, 0); - break; - } - case "damage-taken": { - container.set(toolStats.armorDamage, PersistentDataType.INTEGER, 0); - finalMeta = toolStats.itemLore.updateDamage(inputItem, 0.0); - break; - } - case "arrows-shot": { - container.set(toolStats.arrowsShot, PersistentDataType.INTEGER, 0); - finalMeta = toolStats.itemLore.updateArrowsShot(inputItem, 0); - break; - } - case "flight-time": { - container.set(toolStats.flightTime, PersistentDataType.INTEGER, 0); - finalMeta = toolStats.itemLore.updateFlightTime(inputItem, 0); - break; - } - } - } - - // return the final item - if (finalMeta != null) { - inputItem.setItemMeta(finalMeta); - return inputItem; - } - return null; - } -} diff --git a/src/main/java/lol/hyper/toolstats/tools/config/TokenItems.java b/src/main/java/lol/hyper/toolstats/tools/config/TokenItems.java index b6f332e..10b07b1 100644 --- a/src/main/java/lol/hyper/toolstats/tools/config/TokenItems.java +++ b/src/main/java/lol/hyper/toolstats/tools/config/TokenItems.java @@ -215,6 +215,7 @@ public class TokenItems { token.setItemMeta(tokenMeta); return token; } + public ItemStack resetToken() { // set up the item ItemStack token = new ItemStack(Material.PAPER); diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 70caec3..e1bfb49 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -42,7 +42,8 @@ tokens: levels: 1 reset: title: "&7ToolStats: &8Reset Item" - lore: "&8Use in a grindstone to reset ALL stats for this item. Tokens on this item stay." + lore: "&8Combine in an anvil with to reset ALL stats for this item. Tokens on this item stay." + levels: 1 enabled: # Will show ownership of items when they are created/found.