This commit is contained in:
hyperdefined
2022-01-28 19:03:17 -05:00
parent 781f8a7b7b
commit 93c30cc888
3 changed files with 34 additions and 1 deletions

View File

@@ -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<NamespacedKey> 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() {

View File

@@ -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());
}
}
}
}

View File

@@ -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)) {