From 93c30cc8886b77fe0db461c943a90137d9fc85af Mon Sep 17 00:00:00 2001 From: hyperdefined Date: Fri, 28 Jan 2022 19:03:17 -0500 Subject: [PATCH] work --- .../java/lol/hyper/toolstats/ToolStats.java | 13 +++++++++++++ .../hyper/toolstats/events/EntityDamage.java | 4 +++- .../hyper/toolstats/events/EntityDeath.java | 18 ++++++++++++++++++ 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/src/main/java/lol/hyper/toolstats/ToolStats.java b/src/main/java/lol/hyper/toolstats/ToolStats.java index 9842cd5..0c6ed03 100644 --- a/src/main/java/lol/hyper/toolstats/ToolStats.java +++ b/src/main/java/lol/hyper/toolstats/ToolStats.java @@ -9,6 +9,8 @@ import org.bukkit.NamespacedKey; import org.bukkit.plugin.java.JavaPlugin; import java.io.IOException; +import java.util.HashSet; +import java.util.Set; import java.util.logging.Logger; public final class ToolStats extends JavaPlugin { @@ -30,6 +32,8 @@ public final class ToolStats extends JavaPlugin { // stores how much damage armor has taken public final NamespacedKey armorDamage = new NamespacedKey(this, "damage-taken"); + public Set keys = new HashSet<>(); + public BlocksMined blocksMined; public CraftItem craftItem; public EntityDeath entityDeath; @@ -58,6 +62,15 @@ public final class ToolStats extends JavaPlugin { new Metrics(this, 14110); Bukkit.getScheduler().runTaskAsynchronously(this, this::checkForUpdates); + + keys.add(craftedOwner); + keys.add(craftedTime); + keys.add(swordPlayerKills); + keys.add(swordMobKills); + keys.add(genericMined); + keys.add(fishingRodCaught); + keys.add(shearsSheared); + keys.add(armorDamage); } public void checkForUpdates() { diff --git a/src/main/java/lol/hyper/toolstats/events/EntityDamage.java b/src/main/java/lol/hyper/toolstats/events/EntityDamage.java index e4b989d..a4b93e9 100644 --- a/src/main/java/lol/hyper/toolstats/events/EntityDamage.java +++ b/src/main/java/lol/hyper/toolstats/events/EntityDamage.java @@ -67,7 +67,9 @@ public class EntityDamage implements Listener { Player player = (Player) livingEntity; PlayerInventory inventory = player.getInventory(); for (ItemStack armor : inventory.getArmorContents()) { - updateArmorDamage(armor, event.getDamage()); + if (armor != null) { + updateArmorDamage(armor, event.getDamage()); + } } } } diff --git a/src/main/java/lol/hyper/toolstats/events/EntityDeath.java b/src/main/java/lol/hyper/toolstats/events/EntityDeath.java index 69ae7d3..0ddb9a9 100644 --- a/src/main/java/lol/hyper/toolstats/events/EntityDeath.java +++ b/src/main/java/lol/hyper/toolstats/events/EntityDeath.java @@ -2,12 +2,14 @@ package lol.hyper.toolstats.events; import lol.hyper.toolstats.ToolStats; import org.bukkit.ChatColor; +import org.bukkit.NamespacedKey; import org.bukkit.entity.LivingEntity; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityDeathEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.persistence.PersistentDataContainer; import java.util.*; @@ -26,6 +28,22 @@ public class EntityDeath implements Listener { UUID livingEntityUUID = event.getEntity().getUniqueId(); if (toolStats.mobKill.trackedMobs.contains(livingEntityUUID)) { for (ItemStack current : event.getDrops()) { + ItemMeta meta = current.getItemMeta(); + boolean hasKey = false; + // check if the mob has one of our keys + // this will prevent the "dropped by" tag from being added + if (meta != null) { + PersistentDataContainer container = meta.getPersistentDataContainer(); + for (NamespacedKey key : container.getKeys()) { + if (toolStats.keys.contains(key)) { + hasKey = true; + break; + } + } + } + if (hasKey) { + continue; + } String name = current.getType().toString().toLowerCase(Locale.ROOT); for (String item : toolStats.craftItem.validItems) { if (name.contains(item)) {