9
0
mirror of https://github.com/Auxilor/EcoMobs.git synced 2025-12-21 07:59:28 +00:00

Moved top damagers to UUID to fix exploit

This commit is contained in:
Auxilor
2021-04-11 02:03:29 +01:00
parent 68ee97789d
commit bc64bbdb30
3 changed files with 12 additions and 11 deletions

View File

@@ -110,12 +110,12 @@ public class AttackListeners extends PluginDependent implements Listener {
double playerDamage; double playerDamage;
Optional<DamagerProperty> damager = topDamagers.stream().filter(damagerProperty -> damagerProperty.getPlayer().equals(player)).findFirst(); Optional<DamagerProperty> damager = topDamagers.stream().filter(damagerProperty -> damagerProperty.getPlayerUUID().equals(player.getUniqueId())).findFirst();
playerDamage = damager.map(DamagerProperty::getDamage).orElse(0.0); playerDamage = damager.map(DamagerProperty::getDamage).orElse(0.0);
playerDamage += event.getFinalDamage(); playerDamage += event.getFinalDamage();
topDamagers.removeIf(damagerProperty -> damagerProperty.getPlayer().equals(player)); topDamagers.removeIf(damagerProperty -> damagerProperty.getPlayerUUID().equals(player.getUniqueId()));
topDamagers.add(new DamagerProperty(player, playerDamage)); topDamagers.add(new DamagerProperty(player.getUniqueId(), playerDamage));
entity.removeMetadata("ecobosses-top-damagers", this.getPlugin()); entity.removeMetadata("ecobosses-top-damagers", this.getPlugin());
entity.setMetadata("ecobosses-top-damagers", this.getPlugin().getMetadataValueFactory().create(topDamagers)); entity.setMetadata("ecobosses-top-damagers", this.getPlugin().getMetadataValueFactory().create(topDamagers));

View File

@@ -89,13 +89,13 @@ public class DeathListeners extends PluginDependent implements Listener {
String na = this.getPlugin().getLangYml().getString("na"); 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 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 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()); String thirdDamage = third == null ? na : StringUtils.internalToString(third.getDamage());
for (String spawnMessage : boss.getDeathMessages()) { for (String spawnMessage : boss.getDeathMessages()) {
@@ -114,17 +114,17 @@ public class DeathListeners extends PluginDependent implements Listener {
for (Pair<Double, String> pair : topDamagerCommands) { for (Pair<Double, String> pair : topDamagerCommands) {
if (top != null && i == 1) { if (top != null && i == 1) {
if (NumberUtils.randFloat(0, 100) < pair.getFirst()) { 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 (second != null && i == 2) {
if (NumberUtils.randFloat(0, 100) < pair.getFirst()) { 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 (third != null && i == 3) {
if (NumberUtils.randFloat(0, 100) < pair.getFirst()) { 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()));
} }
} }
} }

View File

@@ -1,14 +1,15 @@
package com.willfp.ecobosses.bosses.util.obj; package com.willfp.ecobosses.bosses.util.obj;
import lombok.Data; import lombok.Data;
import org.bukkit.entity.Player;
import java.util.UUID;
@Data @Data
public class DamagerProperty { public class DamagerProperty {
/** /**
* The player. * The player.
*/ */
private final Player player; private final UUID playerUUID;
/** /**
* The damage. * The damage.