work.................

This commit is contained in:
hyperdefined
2022-01-28 18:51:07 -05:00
parent 839552fb0b
commit 781f8a7b7b
3 changed files with 60 additions and 4 deletions

View File

@@ -37,7 +37,7 @@ public final class ToolStats extends JavaPlugin {
public PlayerFish playerFish; public PlayerFish playerFish;
public SheepShear sheepShear; public SheepShear sheepShear;
public Logger logger = this.getLogger(); public final Logger logger = this.getLogger();
@Override @Override
public void onEnable() { public void onEnable() {

View File

@@ -10,10 +10,13 @@ import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.PlayerInventory;
import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.persistence.PersistentDataContainer; import org.bukkit.persistence.PersistentDataContainer;
import org.bukkit.persistence.PersistentDataType; import org.bukkit.persistence.PersistentDataType;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.util.*; import java.util.*;
public class EntityDamage implements Listener { public class EntityDamage implements Listener {
@@ -22,7 +25,9 @@ public class EntityDamage implements Listener {
private final String[] validTools = {"sword", "trident", "axe"}; private final String[] validTools = {"sword", "trident", "axe"};
private final String playerKillsLore = ChatColor.GRAY + "Player kills: " + ChatColor.DARK_GRAY + "X"; private final String playerKillsLore = ChatColor.GRAY + "Player kills: " + ChatColor.DARK_GRAY + "X";
private final String mobKillsLore = ChatColor.GRAY + "Mob kills: " + ChatColor.DARK_GRAY + "X"; private final String mobKillsLore = ChatColor.GRAY + "Mob kills: " + ChatColor.DARK_GRAY + "X";
public Set<UUID> trackedMobs = new HashSet<>(); private final String damageTakenLore = ChatColor.GRAY + "Damage taken: " + ChatColor.DARK_GRAY + "X";
private final DecimalFormat decimalFormat = new DecimalFormat("0.00");
public final Set<UUID> trackedMobs = new HashSet<>();
public EntityDamage(ToolStats toolStats) { public EntityDamage(ToolStats toolStats) {
this.toolStats = toolStats; this.toolStats = toolStats;
@@ -57,6 +62,14 @@ public class EntityDamage implements Listener {
trackedMobs.add(livingEntity.getUniqueId()); trackedMobs.add(livingEntity.getUniqueId());
} }
} }
// player is taken damage but not being killed
if (livingEntity instanceof Player) {
Player player = (Player) livingEntity;
PlayerInventory inventory = player.getInventory();
for (ItemStack armor : inventory.getArmorContents()) {
updateArmorDamage(armor, event.getDamage());
}
}
} }
private void updatePlayerKills(ItemStack itemStack) { private void updatePlayerKills(ItemStack itemStack) {
@@ -146,4 +159,49 @@ public class EntityDamage implements Listener {
meta.setLore(lore); meta.setLore(lore);
itemStack.setItemMeta(meta); itemStack.setItemMeta(meta);
} }
private void updateArmorDamage(ItemStack itemStack, double damage) {
ItemMeta meta = itemStack.getItemMeta();
if (meta == null) {
return;
}
Double damageTaken = 0.0;
PersistentDataContainer container = meta.getPersistentDataContainer();
if (container.has(toolStats.armorDamage, PersistentDataType.DOUBLE)) {
damageTaken = container.get(toolStats.armorDamage, PersistentDataType.DOUBLE);
}
if (damageTaken == null) {
return;
} else {
damageTaken = damageTaken + damage;
}
decimalFormat.setRoundingMode(RoundingMode.DOWN);
container.set(toolStats.armorDamage, PersistentDataType.DOUBLE, damageTaken);
List<String> lore;
if (meta.hasLore()) {
lore = meta.getLore();
assert lore != null;
boolean hasLore = false;
// we do a for loop like this, we can keep track of index
// this doesn't mess the lore up of existing items
for (int x = 0; x < lore.size(); x++) {
if (lore.get(x).contains("Damage taken")) {
hasLore = true;
lore.set(x, damageTakenLore.replace("X", decimalFormat.format(damageTaken)));
break;
}
}
// if the item has lore but doesn't have the tag, add it
if (!hasLore) {
lore.add(damageTakenLore.replace("X", decimalFormat.format(damageTaken)));
}
} else {
// if the item has no lore, create a new list and add the string
lore = new ArrayList<>();
lore.add(damageTakenLore.replace("X", decimalFormat.format(damageTaken)));
}
meta.setLore(lore);
itemStack.setItemMeta(meta);
}
} }

View File

@@ -1,7 +1,6 @@
package lol.hyper.toolstats.events; package lol.hyper.toolstats.events;
import lol.hyper.toolstats.ToolStats; import lol.hyper.toolstats.ToolStats;
import lol.hyper.toolstats.UUIDDataType;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@@ -14,7 +13,6 @@ import org.bukkit.persistence.PersistentDataContainer;
import org.bukkit.persistence.PersistentDataType; import org.bukkit.persistence.PersistentDataType;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
public class PlayerFish implements Listener { public class PlayerFish implements Listener {