From bc64bbdb302aa4329912813880963e87e8bfa48d Mon Sep 17 00:00:00 2001 From: Auxilor Date: Sun, 11 Apr 2021 02:03:29 +0100 Subject: [PATCH] Moved top damagers to UUID to fix exploit --- .../ecobosses/bosses/listeners/AttackListeners.java | 6 +++--- .../ecobosses/bosses/listeners/DeathListeners.java | 12 ++++++------ .../ecobosses/bosses/util/obj/DamagerProperty.java | 5 +++-- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/listeners/AttackListeners.java b/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/listeners/AttackListeners.java index 61556b9..1787799 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/listeners/AttackListeners.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/listeners/AttackListeners.java @@ -110,12 +110,12 @@ public class AttackListeners extends PluginDependent implements Listener { double playerDamage; - Optional damager = topDamagers.stream().filter(damagerProperty -> damagerProperty.getPlayer().equals(player)).findFirst(); + Optional damager = topDamagers.stream().filter(damagerProperty -> damagerProperty.getPlayerUUID().equals(player.getUniqueId())).findFirst(); playerDamage = damager.map(DamagerProperty::getDamage).orElse(0.0); playerDamage += event.getFinalDamage(); - topDamagers.removeIf(damagerProperty -> damagerProperty.getPlayer().equals(player)); - topDamagers.add(new DamagerProperty(player, playerDamage)); + topDamagers.removeIf(damagerProperty -> damagerProperty.getPlayerUUID().equals(player.getUniqueId())); + topDamagers.add(new DamagerProperty(player.getUniqueId(), playerDamage)); entity.removeMetadata("ecobosses-top-damagers", this.getPlugin()); entity.setMetadata("ecobosses-top-damagers", this.getPlugin().getMetadataValueFactory().create(topDamagers)); diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/listeners/DeathListeners.java b/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/listeners/DeathListeners.java index 8383689..b3e4286 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/listeners/DeathListeners.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/listeners/DeathListeners.java @@ -89,13 +89,13 @@ public class DeathListeners extends PluginDependent implements Listener { String na = this.getPlugin().getLangYml().getString("na"); - String topDamager = top == null ? na : top.getPlayer().getDisplayName(); + String topDamager = top == null ? na : Bukkit.getPlayer(top.getPlayerUUID()).getDisplayName(); String topDamage = top == null ? na : StringUtils.internalToString(top.getDamage()); - String secondDamager = second == null ? na : second.getPlayer().getDisplayName(); + String secondDamager = second == null ? na : Bukkit.getPlayer(second.getPlayerUUID()).getDisplayName(); String secondDamage = second == null ? na : StringUtils.internalToString(second.getDamage()); - String thirdDamager = third == null ? na : third.getPlayer().getDisplayName(); + String thirdDamager = third == null ? na : Bukkit.getPlayer(third.getPlayerUUID()).getDisplayName(); String thirdDamage = third == null ? na : StringUtils.internalToString(third.getDamage()); for (String spawnMessage : boss.getDeathMessages()) { @@ -114,17 +114,17 @@ public class DeathListeners extends PluginDependent implements Listener { for (Pair pair : topDamagerCommands) { if (top != null && i == 1) { if (NumberUtils.randFloat(0, 100) < pair.getFirst()) { - Bukkit.dispatchCommand(Bukkit.getServer().getConsoleSender(), pair.getSecond().replace("%player%", top.getPlayer().getName())); + Bukkit.dispatchCommand(Bukkit.getServer().getConsoleSender(), pair.getSecond().replace("%player%", Bukkit.getOfflinePlayer(top.getPlayerUUID()).getName())); } } if (second != null && i == 2) { if (NumberUtils.randFloat(0, 100) < pair.getFirst()) { - Bukkit.dispatchCommand(Bukkit.getServer().getConsoleSender(), pair.getSecond().replace("%player%", second.getPlayer().getName())); + Bukkit.dispatchCommand(Bukkit.getServer().getConsoleSender(), pair.getSecond().replace("%player%", Bukkit.getOfflinePlayer(second.getPlayerUUID()).getName())); } } if (third != null && i == 3) { if (NumberUtils.randFloat(0, 100) < pair.getFirst()) { - Bukkit.dispatchCommand(Bukkit.getServer().getConsoleSender(), pair.getSecond().replace("%player%", third.getPlayer().getName())); + Bukkit.dispatchCommand(Bukkit.getServer().getConsoleSender(), pair.getSecond().replace("%player%", Bukkit.getOfflinePlayer(third.getPlayerUUID()).getName())); } } } diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/util/obj/DamagerProperty.java b/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/util/obj/DamagerProperty.java index 3b47070..4c29e09 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/util/obj/DamagerProperty.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/util/obj/DamagerProperty.java @@ -1,14 +1,15 @@ package com.willfp.ecobosses.bosses.util.obj; import lombok.Data; -import org.bukkit.entity.Player; + +import java.util.UUID; @Data public class DamagerProperty { /** * The player. */ - private final Player player; + private final UUID playerUUID; /** * The damage.