From fea895c959b0b2f43b6af7d17817732e7bf07388 Mon Sep 17 00:00:00 2001 From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com> Date: Mon, 9 Feb 2026 12:30:30 -0500 Subject: [PATCH 1/4] Refactor death context collection --- .../mrshawn/deathmessages/DeathMessages.java | 11 +- .../{EntityManager.java => EntityCtx.java} | 50 +++--- .../{PlayerManager.java => PlayerCtx.java} | 160 +++++++++--------- .../BroadcastEntityDeathMessageEvent.java | 8 +- .../commands/CommandBlacklist.java | 35 ++-- .../deathmessages/commands/CommandToggle.java | 13 +- .../alias/CommandDeathMessagesToggle.java | 13 +- .../hooks/DiscordSRVExtension.java | 8 +- .../hooks/PlaceholderAPIExtension.java | 23 +-- .../deathmessages/listeners/EntityDamage.java | 25 ++- .../listeners/EntityDamageByBlock.java | 21 ++- .../listeners/EntityDamageByEntity.java | 91 +++++----- .../deathmessages/listeners/EntityDeath.java | 147 ++++++++-------- .../deathmessages/listeners/OnCommand.java | 8 +- .../deathmessages/listeners/OnConnection.java | 33 ++++ .../deathmessages/listeners/OnJoin.java | 28 --- .../deathmessages/listeners/OnMove.java | 10 +- .../listeners/PluginMessaging.java | 8 +- .../listeners/combatlogx/PlayerUntag.java | 87 +++++----- .../BroadcastEntityDeathListener.java | 24 +-- .../BroadcastPlayerDeathListener.java | 67 ++++---- .../listeners/mythicmobs/MobDeath.java | 8 +- .../mrshawn/deathmessages/utils/Assets.java | 90 +++++----- .../deathmessages/utils/ComponentUtil.java | 4 +- .../dev/mrshawn/deathmessages/utils/Util.java | 28 +-- 25 files changed, 501 insertions(+), 499 deletions(-) rename DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/api/{EntityManager.java => EntityCtx.java} (62%) rename DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/api/{PlayerManager.java => PlayerCtx.java} (52%) create mode 100644 DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/OnConnection.java delete mode 100644 DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/OnJoin.java diff --git a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/DeathMessages.java b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/DeathMessages.java index 24dc3f8e..4e1b0eb9 100644 --- a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/DeathMessages.java +++ b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/DeathMessages.java @@ -1,7 +1,7 @@ package dev.mrshawn.deathmessages; import com.tcoded.folialib.FoliaLib; -import dev.mrshawn.deathmessages.api.PlayerManager; +import dev.mrshawn.deathmessages.api.PlayerCtx; import dev.mrshawn.deathmessages.commands.CommandManager; import dev.mrshawn.deathmessages.commands.TabCompleter; import dev.mrshawn.deathmessages.commands.alias.CommandDeathMessagesToggle; @@ -16,7 +16,7 @@ import dev.mrshawn.deathmessages.listeners.EntityDeath; import dev.mrshawn.deathmessages.listeners.OnCommand; import dev.mrshawn.deathmessages.listeners.OnInteract; -import dev.mrshawn.deathmessages.listeners.OnJoin; +import dev.mrshawn.deathmessages.listeners.OnConnection; import dev.mrshawn.deathmessages.listeners.OnMove; import dev.mrshawn.deathmessages.listeners.OnQuit; import dev.mrshawn.deathmessages.listeners.PlayerDeath; @@ -35,6 +35,7 @@ import org.bukkit.Bukkit; import org.bukkit.GameRule; import org.bukkit.World; +import org.bukkit.entity.Player; import org.bukkit.event.EventPriority; import org.bukkit.plugin.java.JavaPlugin; @@ -96,7 +97,7 @@ private void initListeners() { new EntityDeath(), new OnCommand(), new OnInteract(), - new OnJoin(), + new OnConnection(), new OnMove(), new OnQuit(), new PlayerDeath() @@ -116,7 +117,9 @@ private void initHooks() { } private void initOnlinePlayers() { - getServer().getOnlinePlayers().forEach(PlayerManager::new); + for (Player player : getServer().getOnlinePlayers()) { + PlayerCtx.create(new PlayerCtx(player)); + } } private void checkGameRules() { diff --git a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/api/EntityManager.java b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/api/EntityCtx.java similarity index 62% rename from DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/api/EntityManager.java rename to DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/api/EntityCtx.java index 6d9401a2..00e1f016 100644 --- a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/api/EntityManager.java +++ b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/api/EntityCtx.java @@ -15,36 +15,35 @@ import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; -// Class designed to keep track of damage and data to mobs that were damaged by players - -public class EntityManager { +/** + * A class for storing entity's death cotext information, for tracking entity that is killed players + */ +public class EntityCtx { private final Entity entity; - private final UUID entityUUID; + private final UUID uuid; private final MobType mobType; private DamageCause damageCause; - private @Nullable PlayerManager lastPlayerDamager; + private @Nullable PlayerCtx lastPlayerDamager; private Entity lastExplosiveEntity; private Projectile lastPlayerProjectile; private Location lastLocation; - private @Nullable WrappedTask lastPlayerTask; - private static final Map entities = new ConcurrentHashMap<>(); + private static final Map ENTITY_CONTEXTS = new ConcurrentHashMap<>(); - public EntityManager(Entity entity, UUID entityUUID, MobType mobType) { + public EntityCtx(Entity entity, MobType mobType) { this.entity = entity; - this.entityUUID = entityUUID; + this.uuid = entity.getUniqueId(); this.mobType = mobType; - entities.put(entityUUID, this); } public Entity getEntity() { return entity; } - public UUID getEntityUUID() { - return entityUUID; + public UUID getUUID() { + return uuid; } public MobType getMobType() { @@ -55,29 +54,29 @@ public void setLastDamageCause(DamageCause damageCause) { this.damageCause = damageCause; } - public DamageCause getLastDamage() { + public DamageCause getLastDamageCause() { return damageCause; } - public void setLastPlayerDamager(PlayerManager pm) { + public void setLastPlayerDamager(PlayerCtx playerCtx) { setLastExplosiveEntity(null); setLastProjectileEntity(null); - this.lastPlayerDamager = pm; + this.lastPlayerDamager = playerCtx; if (lastPlayerTask != null) { lastPlayerTask.cancel(); } - lastPlayerTask = DeathMessages.getInstance().foliaLib.getScheduler().runLater(this::destroy, FileStore.CONFIG.getInt(Config.EXPIRE_LAST_DAMAGE_EXPIRE_ENTITY) * 20L); + lastPlayerTask = DeathMessages.getInstance().foliaLib.getScheduler().runLater(() -> EntityCtx.remove(this.getUUID()), FileStore.CONFIG.getInt(Config.EXPIRE_LAST_DAMAGE_EXPIRE_ENTITY) * 20L); this.damageCause = DamageCause.CUSTOM; } - public @Nullable PlayerManager getLastPlayerDamager() { + public @Nullable PlayerCtx getLastPlayerDamager() { return lastPlayerDamager; } - public void setLastExplosiveEntity(Entity e) { - this.lastExplosiveEntity = e; + public void setLastExplosiveEntity(Entity entity) { + this.lastExplosiveEntity = entity; } public Entity getLastExplosiveEntity() { @@ -100,11 +99,16 @@ public Location getLastLocation() { return lastLocation; } - public static @Nullable EntityManager getEntity(UUID uuid) { - return entities.get(uuid); + public static @Nullable EntityCtx of(UUID uuid) { + return ENTITY_CONTEXTS.get(uuid); + } + + public static void create(EntityCtx entityCtx) { + UUID uuid = entityCtx.getUUID(); + ENTITY_CONTEXTS.put(uuid, entityCtx); } - public void destroy() { - entities.remove(this.entityUUID); + public static void remove(UUID uuid) { + ENTITY_CONTEXTS.remove(uuid); } } diff --git a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/api/PlayerManager.java b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/api/PlayerCtx.java similarity index 52% rename from DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/api/PlayerManager.java rename to DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/api/PlayerCtx.java index a1071fc1..a98db9ca 100644 --- a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/api/PlayerManager.java +++ b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/api/PlayerCtx.java @@ -6,9 +6,9 @@ import dev.mrshawn.deathmessages.config.files.Config; import dev.mrshawn.deathmessages.config.files.FileStore; import org.jspecify.annotations.Nullable; -import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; +import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.entity.Projectile; @@ -19,75 +19,78 @@ import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; -public class PlayerManager { +/** + * A class for storing player's death cotext information, functions as a "wrapper" of Player instance + */ +public class PlayerCtx { - private final UUID playerUUID; - private final String playerName; - private boolean messagesEnabled; + private final UUID uuid; + private final String name; + private final Player player; + private boolean isMessageEnabled; private boolean isBlacklisted; private boolean isCommandDeath; private DamageCause damageCause; private Entity lastEntityDamager; private Entity lastExplosiveEntity; private Projectile lastProjectileEntity; - private Material climbing; - private Location explosionCauser; - private Location location; + private Material climbingBlock; + //private Location location; // Uncomment if we really need to track it and put it in onMove + private Inventory inventory; private int cooldown = 0; private @Nullable WrappedTask cooldownTask; - private Inventory cachedInventory; - private @Nullable WrappedTask lastEntityTask; - private static final Map players = new ConcurrentHashMap<>(); + private static final Map PLAYER_CONTEXTS = new ConcurrentHashMap<>(); public final boolean saveUserData = FileStore.CONFIG.getBoolean(Config.SAVED_USER_DATA); - public PlayerManager(Player p) { - this.playerUUID = p.getUniqueId(); - this.playerName = p.getName(); - - if (saveUserData && !UserData.getInstance().getConfig().contains(playerUUID.toString())) { - UserData.getInstance().getConfig().set(playerUUID + ".username", playerName); - UserData.getInstance().getConfig().set(playerUUID + ".messages-enabled", true); - UserData.getInstance().getConfig().set(playerUUID + ".is-blacklisted", false); - UserData.getInstance().save(); - } + public PlayerCtx(Player p) { + this.uuid = p.getUniqueId(); + this.name = p.getName(); + this.player = p; + this.damageCause = DamageCause.CUSTOM; + this.isCommandDeath = false; if (saveUserData) { - messagesEnabled = UserData.getInstance().getConfig().getBoolean(playerUUID + ".messages-enabled"); - isBlacklisted = UserData.getInstance().getConfig().getBoolean(playerUUID + ".is-blacklisted"); + final FileConfiguration config = UserData.getInstance().getConfig(); + if (!config.contains(uuid.toString())) { + config.set(uuid + ".username", name); + config.set(uuid + ".messages-enabled", true); + config.set(uuid + ".is-blacklisted", false); + UserData.getInstance().save(); + } + + isMessageEnabled = config.getBoolean(uuid + ".messages-enabled"); + isBlacklisted = config.getBoolean(uuid + ".is-blacklisted"); } else { - messagesEnabled = true; + isMessageEnabled = true; isBlacklisted = false; } - - this.damageCause = DamageCause.CUSTOM; - this.isCommandDeath = false; - players.put(p.getUniqueId(), this); - } - - // TODO: Check whether needs to mark as nullable - public @Nullable Player getPlayer() { - return Bukkit.getPlayer(playerUUID); } public UUID getUUID() { - return playerUUID; + return uuid; } public String getName() { - return playerName; + return name; + } + + // TODO: check all call chain + @Deprecated + public Player getPlayer() { + return player; } - public boolean getMessagesEnabled() { - return messagesEnabled; + public boolean isMessageEnabled() { + return isMessageEnabled; } - public void setMessagesEnabled(boolean b) { - this.messagesEnabled = b; + public void setMessageEnabled(boolean isMessageEnabled) { + this.isMessageEnabled = isMessageEnabled; if (saveUserData) { - UserData.getInstance().getConfig().set(playerUUID.toString() + ".messages-enabled", b); + UserData.getInstance().getConfig().set(uuid + ".messages-enabled", isMessageEnabled); UserData.getInstance().save(); } } @@ -96,34 +99,38 @@ public boolean isBlacklisted() { return isBlacklisted; } - public void setBlacklisted(boolean b) { - this.isBlacklisted = b; + public void setBlacklisted(boolean isBlacklisted) { + this.isBlacklisted = isBlacklisted; if (saveUserData) { - UserData.getInstance().getConfig().set(playerUUID.toString() + ".is-blacklisted", b); + UserData.getInstance().getConfig().set(uuid + ".is-blacklisted", isBlacklisted); UserData.getInstance().save(); } } - public void setLastDamageCause(DamageCause dc) { - this.damageCause = dc; + public DamageCause getLastDamageCause() { + return this.damageCause; } - public DamageCause getLastDamage() { - return this.damageCause; + public void setLastDamageCause(DamageCause damageCause) { + this.damageCause = damageCause; + } + + public boolean isCommandDeath() { + return this.isCommandDeath; } public void setCommandDeath(boolean isCommandDeath) { this.isCommandDeath = isCommandDeath; } - public boolean isCommandDeath() { - return this.isCommandDeath; + public Entity getLastEntityDamager() { + return lastEntityDamager; } - public void setLastEntityDamager(Entity e) { + public void setLastEntityDamager(Entity damager) { setLastExplosiveEntity(null); setLastProjectileEntity(null); - this.lastEntityDamager = e; + this.lastEntityDamager = damager; if (lastEntityTask != null) { lastEntityTask.cancel(); @@ -131,18 +138,14 @@ public void setLastEntityDamager(Entity e) { lastEntityTask = DeathMessages.getInstance().foliaLib.getScheduler().runLater(() -> setLastEntityDamager(null), FileStore.CONFIG.getInt(Config.EXPIRE_LAST_DAMAGE_EXPIRE_PLAYER) * 20L); } - public Entity getLastEntityDamager() { - return lastEntityDamager; + public Entity getLastExplosiveEntity() { + return lastExplosiveEntity; } public void setLastExplosiveEntity(Entity e) { this.lastExplosiveEntity = e; } - public Entity getLastExplosiveEntity() { - return lastExplosiveEntity; - } - public Projectile getLastProjectileEntity() { return lastProjectileEntity; } @@ -152,23 +155,16 @@ public void setLastProjectileEntity(Projectile lastProjectileEntity) { } public Material getLastClimbing() { - return climbing; - } - - public void setLastClimbing(Material climbing) { - this.climbing = climbing; + return climbingBlock; } - public void setExplosionCauser(Location location) { - this.explosionCauser = location; - } - - public Location getExplosionCauser() { - return explosionCauser; + public void setLastClimbing(Material climbingBlock) { + this.climbingBlock = climbingBlock; } + // Note: Actually is player current location public Location getLastLocation() { - return getPlayer().getLocation(); + return player.getLocation(); } public boolean isInCooldown() { @@ -185,27 +181,25 @@ public void setCooldown() { }, 1, 20); } - public void setCachedInventory(Inventory inventory) { - cachedInventory = inventory; - } - - public Inventory getCachedInventory() { - return cachedInventory; + public Inventory getInventory() { + return inventory; } - public static @Nullable PlayerManager getPlayer(Player p) { - return getPlayer(p.getUniqueId()); + public void setInventory(Inventory inventory) { + this.inventory = inventory; } - public static @Nullable PlayerManager getPlayer(UUID uuid) { - return players.get(uuid); + // Note: Only for online players + public static @Nullable PlayerCtx of(UUID uuid) { + return PLAYER_CONTEXTS.get(uuid); } - public static boolean isEmpty(Player p) { - return getPlayer(p) == null; + public static void create(PlayerCtx playerContext) { + UUID uuid = playerContext.uuid; + PLAYER_CONTEXTS.put(uuid, playerContext); } - public void removePlayer() { - players.remove(this.playerUUID); + public static void remove(UUID uuid) { + PLAYER_CONTEXTS.remove(uuid); } } diff --git a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/api/events/BroadcastEntityDeathMessageEvent.java b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/api/events/BroadcastEntityDeathMessageEvent.java index 0aee61a4..506d5c84 100644 --- a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/api/events/BroadcastEntityDeathMessageEvent.java +++ b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/api/events/BroadcastEntityDeathMessageEvent.java @@ -1,6 +1,6 @@ package dev.mrshawn.deathmessages.api.events; -import dev.mrshawn.deathmessages.api.PlayerManager; +import dev.mrshawn.deathmessages.api.PlayerCtx; import dev.mrshawn.deathmessages.enums.MessageType; import net.kyori.adventure.text.TextComponent; import org.bukkit.World; @@ -14,7 +14,7 @@ public class BroadcastEntityDeathMessageEvent extends Event implements Cancellable { // The killer - private final PlayerManager player; + private final PlayerCtx player; // The entity that was killed by a player private final Entity entity; private final MessageType messageType; @@ -25,7 +25,7 @@ public class BroadcastEntityDeathMessageEvent extends Event implements Cancellab private static final HandlerList HANDLERS = new HandlerList(); - public BroadcastEntityDeathMessageEvent(PlayerManager pm, Entity entity, MessageType messageType, TextComponent textComponent, TextComponent[] textComponents, + public BroadcastEntityDeathMessageEvent(PlayerCtx pm, Entity entity, MessageType messageType, TextComponent textComponent, TextComponent[] textComponents, List broadcastedWorlds) { this.player = pm; this.entity = entity; @@ -55,7 +55,7 @@ public static HandlerList getHandlerList() { return HANDLERS; } - public PlayerManager getPlayer() { + public PlayerCtx getPlayer() { return this.player; } diff --git a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/commands/CommandBlacklist.java b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/commands/CommandBlacklist.java index 1902f4fc..f856b462 100644 --- a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/commands/CommandBlacklist.java +++ b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/commands/CommandBlacklist.java @@ -1,6 +1,6 @@ package dev.mrshawn.deathmessages.commands; -import dev.mrshawn.deathmessages.api.PlayerManager; +import dev.mrshawn.deathmessages.api.PlayerCtx; import dev.mrshawn.deathmessages.config.Settings; import dev.mrshawn.deathmessages.config.UserData; import dev.mrshawn.deathmessages.enums.Permission; @@ -9,6 +9,7 @@ import net.kyori.adventure.text.TextReplacementConfig; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; +import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Player; import java.util.Map; @@ -44,14 +45,14 @@ public void onCommand(CommandSender sender, String[] args) { // Only can be used on online players if (!Settings.getInstance().getConfig().getBoolean(Config.SAVED_USER_DATA.getPath())) { if (target != null && target.isOnline()) { - PlayerManager getPlayer = PlayerManager.getPlayer(target); - if (getPlayer != null) { - if (getPlayer.isBlacklisted()) { - getPlayer.setBlacklisted(false); + PlayerCtx playerCtx = PlayerCtx.of(target.getUniqueId()); + if (playerCtx != null) { + if (playerCtx.isBlacklisted()) { + playerCtx.setBlacklisted(false); sender.sendMessage(Util.formatMessage("Commands.DeathMessages.Sub-Commands.Blacklist.Blacklist-Remove") .replaceText(player)); } else { - getPlayer.setBlacklisted(true); + playerCtx.setBlacklisted(true); sender.sendMessage(Util.formatMessage("Commands.DeathMessages.Sub-Commands.Blacklist.Blacklist-Add") .replaceText(player)); } @@ -63,29 +64,31 @@ public void onCommand(CommandSender sender, String[] args) { return; } + FileConfiguration userData = UserData.getInstance().getConfig(); + // Saved-User-Data enabled // Can be used on all players stored in userData - for (Map.Entry entry : UserData.getInstance().getConfig().getValues(false).entrySet()) { - String username = UserData.getInstance().getConfig().getString(entry.getKey() + ".username"); + for (Map.Entry entry : userData.getValues(false).entrySet()) { + String username = userData.getString(entry.getKey() + ".username"); if (username.equalsIgnoreCase(args[0])) { - PlayerManager getPlayer = PlayerManager.getPlayer(UUID.fromString(entry.getKey())); - boolean blacklisted = UserData.getInstance().getConfig().getBoolean(entry.getKey() + ".is-blacklisted"); + PlayerCtx playerCtx = PlayerCtx.of(UUID.fromString(entry.getKey())); + boolean blacklisted = userData.getBoolean(entry.getKey() + ".is-blacklisted"); if (blacklisted) { - if (getPlayer != null) { - getPlayer.setBlacklisted(false); + if (playerCtx != null) { + playerCtx.setBlacklisted(false); } else { - UserData.getInstance().getConfig().set(entry.getKey() + ".is-blacklisted", false); + userData.set(entry.getKey() + ".is-blacklisted", false); UserData.getInstance().save(); } sender.sendMessage(Util.formatMessage("Commands.DeathMessages.Sub-Commands.Blacklist.Blacklist-Remove") .replaceText(player)); } else { - if (getPlayer != null) { - getPlayer.setBlacklisted(true); + if (playerCtx != null) { + playerCtx.setBlacklisted(true); } else { - UserData.getInstance().getConfig().set(entry.getKey() + ".is-blacklisted", true); + userData.set(entry.getKey() + ".is-blacklisted", true); UserData.getInstance().save(); } sender.sendMessage(Util.formatMessage("Commands.DeathMessages.Sub-Commands.Blacklist.Blacklist-Add") diff --git a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/commands/CommandToggle.java b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/commands/CommandToggle.java index 7e532d75..90164fa1 100644 --- a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/commands/CommandToggle.java +++ b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/commands/CommandToggle.java @@ -1,6 +1,6 @@ package dev.mrshawn.deathmessages.commands; -import dev.mrshawn.deathmessages.api.PlayerManager; +import dev.mrshawn.deathmessages.api.PlayerCtx; import dev.mrshawn.deathmessages.enums.Permission; import dev.mrshawn.deathmessages.utils.Util; import org.bukkit.command.CommandSender; @@ -24,14 +24,13 @@ public void onCommand(CommandSender sender, String[] args) { return; } - PlayerManager getPlayer = PlayerManager.getPlayer(player); - if (getPlayer != null) { - boolean msg = getPlayer.getMessagesEnabled(); - if (msg) { - getPlayer.setMessagesEnabled(false); + PlayerCtx playerCtx = PlayerCtx.of(player.getUniqueId()); + if (playerCtx != null) { + if (playerCtx.isMessageEnabled()) { + playerCtx.setMessageEnabled(false); player.sendMessage(Util.formatMessage("Commands.DeathMessages.Sub-Commands.Toggle.Toggle-Off")); } else { - getPlayer.setMessagesEnabled(true); + playerCtx.setMessageEnabled(true); player.sendMessage(Util.formatMessage("Commands.DeathMessages.Sub-Commands.Toggle.Toggle-On")); } } diff --git a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/commands/alias/CommandDeathMessagesToggle.java b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/commands/alias/CommandDeathMessagesToggle.java index 5ef4d6ef..bb5719d6 100644 --- a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/commands/alias/CommandDeathMessagesToggle.java +++ b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/commands/alias/CommandDeathMessagesToggle.java @@ -1,6 +1,6 @@ package dev.mrshawn.deathmessages.commands.alias; -import dev.mrshawn.deathmessages.api.PlayerManager; +import dev.mrshawn.deathmessages.api.PlayerCtx; import dev.mrshawn.deathmessages.enums.Permission; import dev.mrshawn.deathmessages.utils.Util; import org.bukkit.command.Command; @@ -20,14 +20,13 @@ public boolean onCommand(final CommandSender sender, final Command command, fina player.sendMessage(Util.formatMessage("Commands.DeathMessages.No-Permission")); return false; } - PlayerManager getPlayer = PlayerManager.getPlayer(player); - if (getPlayer != null) { - boolean msg = getPlayer.getMessagesEnabled(); - if (msg) { - getPlayer.setMessagesEnabled(false); + PlayerCtx playerCtx = PlayerCtx.of(player.getUniqueId()); + if (playerCtx != null) { + if (playerCtx.isMessageEnabled()) { + playerCtx.setMessageEnabled(false); player.sendMessage(Util.formatMessage("Commands.DeathMessages.Sub-Commands.Toggle.Toggle-Off")); } else { - getPlayer.setMessagesEnabled(true); + playerCtx.setMessageEnabled(true); player.sendMessage(Util.formatMessage("Commands.DeathMessages.Sub-Commands.Toggle.Toggle-On")); } } diff --git a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/hooks/DiscordSRVExtension.java b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/hooks/DiscordSRVExtension.java index ea654814..2330637c 100644 --- a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/hooks/DiscordSRVExtension.java +++ b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/hooks/DiscordSRVExtension.java @@ -1,7 +1,7 @@ package dev.mrshawn.deathmessages.hooks; import dev.mrshawn.deathmessages.DeathMessages; -import dev.mrshawn.deathmessages.api.PlayerManager; +import dev.mrshawn.deathmessages.api.PlayerCtx; import dev.mrshawn.deathmessages.config.Messages; import dev.mrshawn.deathmessages.enums.MessageType; import dev.mrshawn.deathmessages.config.files.Config; @@ -30,7 +30,7 @@ public class DiscordSRVExtension { public DiscordSRVExtension() { } - public void sendDiscordMessage(TextComponent[] components, MessageType messageType, PlayerManager pm) { + public void sendDiscordMessage(TextComponent[] components, MessageType messageType, PlayerCtx pm) { final List channels = DiscordAssets.getInstance().getIDs(messageType); for (String groups : channels) { @@ -92,7 +92,7 @@ public void sendDiscordMessage(TextComponent[] components, MessageType messageTy } } - public void sendEntityDiscordMessage(TextComponent[] components, MessageType messageType, PlayerManager pm, Entity entity, boolean hasOwner) { + public void sendEntityDiscordMessage(TextComponent[] components, MessageType messageType, PlayerCtx pm, Entity entity, boolean hasOwner) { final List channels = DiscordAssets.getInstance().getIDs(messageType); for (String groups : channels) { @@ -151,7 +151,7 @@ public void sendEntityDiscordMessage(TextComponent[] components, MessageType mes } } - private MessageEmbed buildMessage(PlayerManager pm, String message) { + private MessageEmbed buildMessage(PlayerCtx pm, String message) { EmbedBuilder eb = new EmbedBuilder(); eb.setColor(getDeathMessageColor()); diff --git a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/hooks/PlaceholderAPIExtension.java b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/hooks/PlaceholderAPIExtension.java index e93181b2..53fd1077 100644 --- a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/hooks/PlaceholderAPIExtension.java +++ b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/hooks/PlaceholderAPIExtension.java @@ -1,9 +1,10 @@ package dev.mrshawn.deathmessages.hooks; import dev.mrshawn.deathmessages.DeathMessages; -import dev.mrshawn.deathmessages.api.PlayerManager; +import dev.mrshawn.deathmessages.api.PlayerCtx; import me.clip.placeholderapi.expansion.PlaceholderExpansion; import org.jspecify.annotations.NullMarked; +import org.bukkit.entity.Entity; import org.bukkit.entity.Player; @NullMarked @@ -94,21 +95,21 @@ public String getVersion() { */ @Override public String onPlaceholderRequest(Player player, String params) { - PlayerManager getPlayer = PlayerManager.getPlayer(player); + PlayerCtx playerCtx = PlayerCtx.of(player.getUniqueId()); - if (getPlayer == null) { + if (playerCtx == null) { return "null"; } + final Entity lastEntityDamager = playerCtx.getLastEntityDamager(); + return switch (params) { - case "messages_enabled" -> String.valueOf(getPlayer.getMessagesEnabled()); - case "is_blacklisted" -> String.valueOf(getPlayer.isBlacklisted()); - case "victim_name" -> getPlayer.getName(); - case "victim_display_name" -> getPlayer.getPlayer().getDisplayName(); - case "killer_name" -> - (getPlayer.getLastEntityDamager() != null) ? getPlayer.getLastEntityDamager().getName() : "null"; - case "killer_display_name" -> - (getPlayer.getLastEntityDamager() != null) ? getPlayer.getLastEntityDamager().getCustomName() : "null"; + case "messages_enabled" -> String.valueOf(playerCtx.isMessageEnabled()); + case "is_blacklisted" -> String.valueOf(playerCtx.isBlacklisted()); + case "victim_name" -> playerCtx.getName(); + case "victim_display_name" -> playerCtx.getPlayer().getDisplayName(); + case "killer_name" -> lastEntityDamager != null ? lastEntityDamager.getName() : "null"; + case "killer_display_name" -> lastEntityDamager != null ? lastEntityDamager.getCustomName() : "null"; default -> "null"; }; } diff --git a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/EntityDamage.java b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/EntityDamage.java index a1b104f4..c797e3c9 100644 --- a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/EntityDamage.java +++ b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/EntityDamage.java @@ -1,12 +1,11 @@ package dev.mrshawn.deathmessages.listeners; import dev.mrshawn.deathmessages.DeathMessages; -import dev.mrshawn.deathmessages.api.EntityManager; -import dev.mrshawn.deathmessages.api.PlayerManager; +import dev.mrshawn.deathmessages.api.EntityCtx; +import dev.mrshawn.deathmessages.api.PlayerCtx; import dev.mrshawn.deathmessages.config.EntityDeathMessages; import dev.mrshawn.deathmessages.enums.MobType; import dev.mrshawn.deathmessages.utils.EntityUtil; -import org.bukkit.Bukkit; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; @@ -23,20 +22,20 @@ public class EntityDamage implements Listener { public void onEntityDamage(EntityDamageEvent e) { if (e.isCancelled()) return; - if (e.getEntity() instanceof Player && Bukkit.getServer().getOnlinePlayers().contains((Player) e.getEntity())) { + if (e.getEntity() instanceof Player) { Player p = (Player) e.getEntity(); - PlayerManager getPlayer = PlayerManager.getPlayer(p); - if (getPlayer != null) { - getPlayer.setLastDamageCause(e.getCause()); + PlayerCtx playerCtx = PlayerCtx.of(p.getUniqueId()); + if (playerCtx != null) { + playerCtx.setLastDamageCause(e.getCause()); if (e.getCause().equals(EntityDamageEvent.DamageCause.BLOCK_EXPLOSION)) { // For >= 1.20.3, because TNT explosion became BLOCK_EXPLOSION since 1.20.3 if (e.getDamageSource().getDirectEntity() instanceof TNTPrimed) { TNTPrimed tnt = (TNTPrimed) e.getDamageSource().getDirectEntity(); if (tnt.getSource() instanceof LivingEntity) { - getPlayer.setLastEntityDamager(tnt.getSource()); + playerCtx.setLastEntityDamager(tnt.getSource()); } - getPlayer.setLastExplosiveEntity(tnt); + playerCtx.setLastExplosiveEntity(tnt); } } } @@ -57,17 +56,17 @@ public void onEntityDamage(EntityDamageEvent e) { for (String listened : listenedMobs) { if (listened.contains(EntityUtil.getConfigNodeByEntity(e.getEntity()))) { - EntityManager getEntity = EntityManager.getEntity(e.getEntity().getUniqueId()); + EntityCtx entityCtx = EntityCtx.of(e.getEntity().getUniqueId()); - if (getEntity != null) { - getEntity.setLastDamageCause(e.getCause()); + if (entityCtx != null) { + entityCtx.setLastDamageCause(e.getCause()); } else { MobType mobType = MobType.VANILLA; if (DeathMessages.getHooks().mythicmobsEnabled && DeathMessages.getHooks().mythicMobs.getAPIHelper().isMythicMob(e.getEntity().getUniqueId())) { mobType = MobType.MYTHIC_MOB; } - new EntityManager(e.getEntity(), e.getEntity().getUniqueId(), mobType); + EntityCtx.create(new EntityCtx(e.getEntity(), mobType)); } } } diff --git a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/EntityDamageByBlock.java b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/EntityDamageByBlock.java index 2eb2a8be..f9cddfff 100644 --- a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/EntityDamageByBlock.java +++ b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/EntityDamageByBlock.java @@ -1,12 +1,11 @@ package dev.mrshawn.deathmessages.listeners; import dev.mrshawn.deathmessages.DeathMessages; -import dev.mrshawn.deathmessages.api.EntityManager; -import dev.mrshawn.deathmessages.api.PlayerManager; +import dev.mrshawn.deathmessages.api.EntityCtx; +import dev.mrshawn.deathmessages.api.PlayerCtx; import dev.mrshawn.deathmessages.config.EntityDeathMessages; import dev.mrshawn.deathmessages.enums.MobType; import dev.mrshawn.deathmessages.utils.EntityUtil; -import org.bukkit.Bukkit; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -20,11 +19,11 @@ public class EntityDamageByBlock implements Listener { @EventHandler(priority = EventPriority.HIGH) public void onEntityDeath(EntityDamageByBlockEvent e) { - if (e.getEntity() instanceof Player && Bukkit.getServer().getOnlinePlayers().contains((Player) e.getEntity())) { + if (e.getEntity() instanceof Player) { Player p = (Player) e.getEntity(); - PlayerManager getPlayer = PlayerManager.getPlayer(p); - if (getPlayer != null) { - getPlayer.setLastDamageCause(e.getCause()); + PlayerCtx playerCtx = PlayerCtx.of(p.getUniqueId()); + if (playerCtx != null) { + playerCtx.setLastDamageCause(e.getCause()); } } else { ConfigurationSection entityConfig = EntityDeathMessages.getInstance().getConfig().getConfigurationSection("Entities"); @@ -42,17 +41,17 @@ public void onEntityDeath(EntityDamageByBlockEvent e) { for (String listened : listenedMobs) { if (listened.contains(EntityUtil.getConfigNodeByEntity(e.getEntity()))) { - EntityManager getEntity = EntityManager.getEntity(e.getEntity().getUniqueId()); + EntityCtx entityCtx = EntityCtx.of(e.getEntity().getUniqueId()); - if (getEntity != null) { - getEntity.setLastDamageCause(e.getCause()); + if (entityCtx != null) { + entityCtx.setLastDamageCause(e.getCause()); } else { MobType mobType = MobType.VANILLA; if (DeathMessages.getHooks().mythicmobsEnabled && DeathMessages.getHooks().mythicMobs.getAPIHelper().isMythicMob(e.getEntity().getUniqueId())) { mobType = MobType.MYTHIC_MOB; } - new EntityManager(e.getEntity(), e.getEntity().getUniqueId(), mobType); + EntityCtx.create(new EntityCtx(e.getEntity(), mobType)); } } } diff --git a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/EntityDamageByEntity.java b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/EntityDamageByEntity.java index 28d65e88..47e613d4 100644 --- a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/EntityDamageByEntity.java +++ b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/EntityDamageByEntity.java @@ -1,13 +1,12 @@ package dev.mrshawn.deathmessages.listeners; import dev.mrshawn.deathmessages.DeathMessages; -import dev.mrshawn.deathmessages.api.EntityManager; -import dev.mrshawn.deathmessages.api.PlayerManager; +import dev.mrshawn.deathmessages.api.EntityCtx; +import dev.mrshawn.deathmessages.api.PlayerCtx; import dev.mrshawn.deathmessages.config.EntityDeathMessages; import dev.mrshawn.deathmessages.enums.MobType; import dev.mrshawn.deathmessages.utils.EntityUtil; import dev.mrshawn.deathmessages.utils.Util; -import org.bukkit.Bukkit; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.entity.AreaEffectCloud; import org.bukkit.entity.EnderCrystal; @@ -33,52 +32,52 @@ public void entityDamageByEntity(EntityDamageByEntityEvent e) { // Get the damager of ender crystal Util.loadCrystalDamager(e.getEntity(), e.getDamager()); - if (e.getEntity() instanceof Player && Bukkit.getServer().getOnlinePlayers().contains((Player) e.getEntity())) { + if (e.getEntity() instanceof Player) { Player p = (Player) e.getEntity(); - PlayerManager getPlayer = PlayerManager.getPlayer(p); - if (getPlayer != null) { + PlayerCtx playerCtx = PlayerCtx.of(p.getUniqueId()); + if (playerCtx != null) { if (e.getCause().equals(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION)) { Entity lastCrystalDamager = Util.crystalDeathData.get(e.getDamager().getUniqueId()); if (e.getDamager() instanceof EnderCrystal && lastCrystalDamager != null) { - getPlayer.setLastEntityDamager(lastCrystalDamager); - getPlayer.setLastExplosiveEntity(e.getDamager()); + playerCtx.setLastEntityDamager(lastCrystalDamager); + playerCtx.setLastExplosiveEntity(e.getDamager()); } else if (e.getDamager() instanceof TNTPrimed) { // For <= 1.20.2, because TNT explosion became BLOCK_EXPLOSION since 1.20.3 TNTPrimed tnt = (TNTPrimed) e.getDamager(); if (tnt.getSource() instanceof LivingEntity) { - getPlayer.setLastEntityDamager(tnt.getSource()); + playerCtx.setLastEntityDamager(tnt.getSource()); } - getPlayer.setLastExplosiveEntity(e.getDamager()); + playerCtx.setLastExplosiveEntity(e.getDamager()); } else if (e.getDamager() instanceof Firework) { // Firework extends Entity under <= 1.15 Firework firework = (Firework) e.getDamager(); try { if (firework.getShooter() instanceof LivingEntity) { - getPlayer.setLastEntityDamager((LivingEntity) firework.getShooter()); + playerCtx.setLastEntityDamager((LivingEntity) firework.getShooter()); } - getPlayer.setLastExplosiveEntity(e.getDamager()); + playerCtx.setLastExplosiveEntity(e.getDamager()); } catch (NoSuchMethodError e2) { // McMMO ability DeathMessages.LOGGER.error(e2); } } else { - getPlayer.setLastEntityDamager(e.getDamager()); - getPlayer.setLastExplosiveEntity(e.getDamager()); + playerCtx.setLastEntityDamager(e.getDamager()); + playerCtx.setLastExplosiveEntity(e.getDamager()); } } else if (e.getDamager() instanceof Projectile) { Projectile projectile = (Projectile) e.getDamager(); if (projectile.getShooter() instanceof LivingEntity) { - getPlayer.setLastEntityDamager((LivingEntity) projectile.getShooter()); + playerCtx.setLastEntityDamager((LivingEntity) projectile.getShooter()); } - getPlayer.setLastProjectileEntity(projectile); + playerCtx.setLastProjectileEntity(projectile); } else if (e.getDamager() instanceof FallingBlock) { - getPlayer.setLastEntityDamager(e.getDamager()); + playerCtx.setLastEntityDamager(e.getDamager()); } else if (e.getDamager().getType().isAlive()) { - getPlayer.setLastEntityDamager(e.getDamager()); + playerCtx.setLastEntityDamager(e.getDamager()); } else if (e.getDamager() instanceof EvokerFangs) { EvokerFangs evokerFangs = (EvokerFangs) e.getDamager(); - getPlayer.setLastEntityDamager(evokerFangs.getOwner()); + playerCtx.setLastEntityDamager(evokerFangs.getOwner()); } else if (e.getDamager() instanceof AreaEffectCloud) { - getPlayer.setLastEntityDamager(e.getDamager()); + playerCtx.setLastEntityDamager(e.getDamager()); } } } else if (!(e.getEntity() instanceof Player) && e.getDamager() instanceof Player) { @@ -101,62 +100,62 @@ public void entityDamageByEntity(EntityDamageByEntityEvent e) { for (String listened : listenedMobs) { if (listened.contains(EntityUtil.getConfigNodeByEntity(e.getEntity())) || (DeathMessages.getHooks().mythicmobsEnabled && DeathMessages.getHooks().mythicMobs.getAPIHelper().isMythicMob(e.getEntity().getUniqueId()))) { - EntityManager getEntity = EntityManager.getEntity(e.getEntity().getUniqueId()); - if (getEntity != null) { + EntityCtx entityCtx = EntityCtx.of(e.getEntity().getUniqueId()); + if (entityCtx != null) { if (e.getCause().equals(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION)) { Entity lastCrystalDamager = Util.crystalDeathData.get(e.getDamager().getUniqueId()); if (e.getDamager() instanceof EnderCrystal && lastCrystalDamager != null) { if (lastCrystalDamager instanceof Player) { - PlayerManager getPlayer = PlayerManager.getPlayer((Player) lastCrystalDamager); - if (getPlayer != null) { - getEntity.setLastPlayerDamager(getPlayer); + PlayerCtx playerCtx = PlayerCtx.of(lastCrystalDamager.getUniqueId()); + if (playerCtx != null) { + entityCtx.setLastPlayerDamager(playerCtx); } - getEntity.setLastExplosiveEntity(e.getDamager()); + entityCtx.setLastExplosiveEntity(e.getDamager()); } } else if (e.getDamager() instanceof TNTPrimed) { TNTPrimed tnt = (TNTPrimed) e.getDamager(); if (tnt.getSource() instanceof Player) { - PlayerManager getPlayer = PlayerManager.getPlayer((Player) tnt.getSource()); - if (getPlayer != null) { - getEntity.setLastPlayerDamager(getPlayer); + PlayerCtx playerCtx = PlayerCtx.of(tnt.getSource().getUniqueId()); + if (playerCtx != null) { + entityCtx.setLastPlayerDamager(playerCtx); } } - getEntity.setLastExplosiveEntity(e.getDamager()); + entityCtx.setLastExplosiveEntity(e.getDamager()); } else if (e.getDamager() instanceof Firework) { Firework firework = (Firework) e.getDamager(); try { if (firework.getShooter() instanceof Player) { - PlayerManager getPlayer = PlayerManager.getPlayer((Player) firework.getShooter()); - if (getPlayer != null) { - getEntity.setLastPlayerDamager(getPlayer); + PlayerCtx playerCtx = PlayerCtx.of(((Player) firework.getShooter()).getUniqueId()); + if (playerCtx != null) { + entityCtx.setLastPlayerDamager(playerCtx); } } - getEntity.setLastExplosiveEntity(e.getDamager()); + entityCtx.setLastExplosiveEntity(e.getDamager()); } catch (NoSuchMethodError e3) { // McMMO ability DeathMessages.LOGGER.error(e3); } } else { - PlayerManager getPlayer = PlayerManager.getPlayer((Player) e.getDamager()); - if (getPlayer != null) { - getEntity.setLastPlayerDamager(getPlayer); + PlayerCtx playerCtx = PlayerCtx.of(e.getDamager().getUniqueId()); + if (playerCtx != null) { + entityCtx.setLastPlayerDamager(playerCtx); } - getEntity.setLastExplosiveEntity(e.getDamager()); + entityCtx.setLastExplosiveEntity(e.getDamager()); } } else if (e.getDamager() instanceof Projectile) { Projectile projectile = (Projectile) e.getDamager(); if (projectile.getShooter() instanceof Player) { - PlayerManager getPlayer = PlayerManager.getPlayer((Player) projectile.getShooter()); - if (getPlayer != null) { - getEntity.setLastPlayerDamager(getPlayer); + PlayerCtx playerCtx = PlayerCtx.of(((Player) projectile.getShooter()).getUniqueId()); + if (playerCtx != null) { + entityCtx.setLastPlayerDamager(playerCtx); } } - getEntity.setLastProjectileEntity(projectile); + entityCtx.setLastProjectileEntity(projectile); } else if (e.getDamager() instanceof Player) { - PlayerManager getPlayer = PlayerManager.getPlayer((Player) e.getDamager()); - if (getPlayer != null) { - getEntity.setLastPlayerDamager(getPlayer); + PlayerCtx playerCtx = PlayerCtx.of(e.getDamager().getUniqueId()); + if (playerCtx != null) { + entityCtx.setLastPlayerDamager(playerCtx); } } } else { @@ -166,7 +165,7 @@ public void entityDamageByEntity(EntityDamageByEntityEvent e) { mobType = MobType.MYTHIC_MOB; } - new EntityManager(e.getEntity(), e.getEntity().getUniqueId(), mobType); + EntityCtx.create(new EntityCtx(e.getEntity(), mobType)); } } } diff --git a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/EntityDeath.java b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/EntityDeath.java index 6b1d94f7..7a10ab8e 100644 --- a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/EntityDeath.java +++ b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/EntityDeath.java @@ -1,8 +1,8 @@ package dev.mrshawn.deathmessages.listeners; import dev.mrshawn.deathmessages.DeathMessages; -import dev.mrshawn.deathmessages.api.EntityManager; -import dev.mrshawn.deathmessages.api.PlayerManager; +import dev.mrshawn.deathmessages.api.EntityCtx; +import dev.mrshawn.deathmessages.api.PlayerCtx; import dev.mrshawn.deathmessages.api.events.BroadcastDeathMessageEvent; import dev.mrshawn.deathmessages.api.events.BroadcastEntityDeathMessageEvent; import dev.mrshawn.deathmessages.config.Gangs; @@ -29,89 +29,88 @@ public class EntityDeath implements Listener { void onEntityDeath(EntityDeathEvent e) { // Player death - if (e.getEntity() instanceof Player && Bukkit.getServer().getOnlinePlayers().contains((Player) e.getEntity())) { + if (e.getEntity() instanceof Player) { Player player = (Player) e.getEntity(); - PlayerManager getPlayer = PlayerManager.getPlayer(player); - if (getPlayer != null) { - if (getPlayer.isCommandDeath()) { // If died by using suicide like command - // set to null since it is command death - getPlayer.setLastEntityDamager(null); - getPlayer.setLastDamageCause(EntityDamageEvent.DamageCause.SUICIDE); - getPlayer.setCommandDeath(false); - } else if (e.getEntity().getLastDamageCause() == null) { - getPlayer.setLastDamageCause(EntityDamageEvent.DamageCause.CUSTOM); - } else { // Reset lastDamageCause - getPlayer.setLastDamageCause(e.getEntity().getLastDamageCause().getCause()); + PlayerCtx playerCtx = PlayerCtx.of(player.getUniqueId()); + + if (playerCtx == null) return; + + if (playerCtx.isCommandDeath()) { // If died by using suicide like command + // set to null since it is command death + playerCtx.setLastEntityDamager(null); + playerCtx.setLastDamageCause(EntityDamageEvent.DamageCause.SUICIDE); + playerCtx.setCommandDeath(false); + } else if (e.getEntity().getLastDamageCause() == null) { + playerCtx.setLastDamageCause(EntityDamageEvent.DamageCause.CUSTOM); + } else { // Reset lastDamageCause + playerCtx.setLastDamageCause(e.getEntity().getLastDamageCause().getCause()); + } + + if (playerCtx.isBlacklisted()) return; + + if (!(playerCtx.getLastEntityDamager() instanceof LivingEntity) || playerCtx.getLastEntityDamager() == e.getEntity()) { + TextComponent[] naturalDeath = Assets.playerNatureDeathMessage(playerCtx, player); + TextComponent oldNaturalDeath = naturalDeath[0].append(naturalDeath[1]); // Dreeam TODO: Remove in 1.4.21 + + if (!ComponentUtil.isMessageEmpty(naturalDeath)) { + BroadcastDeathMessageEvent event = new BroadcastDeathMessageEvent( + player, + null, + MessageType.NATURAL, + oldNaturalDeath, + naturalDeath, + Util.getBroadcastWorlds(player), + false + ); + Bukkit.getPluginManager().callEvent(event); } + } else { + // Killed by mob + Entity ent = playerCtx.getLastEntityDamager(); + boolean gangKill = false; - if (getPlayer.isBlacklisted()) return; - - if (!(getPlayer.getLastEntityDamager() instanceof LivingEntity) || getPlayer.getLastEntityDamager() == e.getEntity()) { - TextComponent[] naturalDeath = Assets.playerNatureDeathMessage(getPlayer, player); - TextComponent oldNaturalDeath = naturalDeath[0].append(naturalDeath[1]); // Dreeam TODO: Remove in 1.4.21 - - if (!ComponentUtil.isMessageEmpty(naturalDeath)) { - BroadcastDeathMessageEvent event = new BroadcastDeathMessageEvent( - player, - null, - MessageType.NATURAL, - oldNaturalDeath, - naturalDeath, - Util.getBroadcastWorlds(player), - false - ); - Bukkit.getPluginManager().callEvent(event); - } - } else { - // Killed by mob - Entity ent = getPlayer.getLastEntityDamager(); - boolean gangKill = false; - - if (Gangs.getInstance().getConfig().getBoolean("Gang.Enabled")) { - String mobName = EntityUtil.getConfigNodeByEntity(ent); - int radius = Gangs.getInstance().getConfig().getInt("Gang.Mobs." + mobName + ".Radius"); - int amount = Gangs.getInstance().getConfig().getInt("Gang.Mobs." + mobName + ".Amount"); - - int totalMobEntities = 0; - List nearbyEntities = player.getNearbyEntities(radius, radius, radius); - - for (Entity entity : nearbyEntities) { - if (entity.toString().contains("EnderDragonPart")) { // Exclude EnderDragonPart - continue; - } + if (Gangs.getInstance().getConfig().getBoolean("Gang.Enabled")) { + String mobName = EntityUtil.getConfigNodeByEntity(ent); + int radius = Gangs.getInstance().getConfig().getInt("Gang.Mobs." + mobName + ".Radius"); + int amount = Gangs.getInstance().getConfig().getInt("Gang.Mobs." + mobName + ".Amount"); + + int totalMobEntities = 0; + List nearbyEntities = player.getNearbyEntities(radius, radius, radius); - if (entity.getType().equals(ent.getType())) { - if (++totalMobEntities >= amount) { - gangKill = true; - break; - } + for (Entity entity : nearbyEntities) { + if (entity.toString().contains("EnderDragonPart")) { // Exclude EnderDragonPart + continue; + } + + if (entity.getType().equals(ent.getType())) { + if (++totalMobEntities >= amount) { + gangKill = true; + break; } } } + } - TextComponent[] playerDeath = Assets.playerDeathMessage(getPlayer, gangKill); - TextComponent oldPlayerDeath = playerDeath[0].append(playerDeath[1]); // Dreeam TODO: Remove in 1.4.21 - - if (!ComponentUtil.isMessageEmpty(playerDeath)) { - MessageType messageType = ent instanceof Player ? MessageType.PLAYER : MessageType.MOB; - BroadcastDeathMessageEvent event = new BroadcastDeathMessageEvent( - player, - (LivingEntity) getPlayer.getLastEntityDamager(), - messageType, - oldPlayerDeath, - playerDeath, - Util.getBroadcastWorlds(player), - gangKill - ); - Bukkit.getPluginManager().callEvent(event); - } + TextComponent[] playerDeath = Assets.playerDeathMessage(playerCtx, gangKill); + TextComponent oldPlayerDeath = playerDeath[0].append(playerDeath[1]); // Dreeam TODO: Remove in 1.4.21 + + if (!ComponentUtil.isMessageEmpty(playerDeath)) { + MessageType messageType = ent instanceof Player ? MessageType.PLAYER : MessageType.MOB; + BroadcastDeathMessageEvent event = new BroadcastDeathMessageEvent( + player, + (LivingEntity) playerCtx.getLastEntityDamager(), + messageType, + oldPlayerDeath, + playerDeath, + Util.getBroadcastWorlds(player), + gangKill + ); + Bukkit.getPluginManager().callEvent(event); } - } else { - new PlayerManager(player); } } else { // Entity killed by Player - EntityManager getEntity = EntityManager.getEntity(e.getEntity().getUniqueId()); + EntityCtx getEntity = EntityCtx.of(e.getEntity().getUniqueId()); if (getEntity != null) { MobType mobType = MobType.VANILLA; if (DeathMessages.getHooks().mythicmobsEnabled) { @@ -120,7 +119,7 @@ void onEntityDeath(EntityDeathEvent e) { } } - PlayerManager damager = getEntity.getLastPlayerDamager(); + PlayerCtx damager = getEntity.getLastPlayerDamager(); if (damager == null) return; // Entity killed by Entity should not include in DM TextComponent[] entityDeath = Assets.entityDeathMessage(getEntity, mobType); diff --git a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/OnCommand.java b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/OnCommand.java index 49f0bbe3..ce7fabb3 100644 --- a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/OnCommand.java +++ b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/OnCommand.java @@ -1,6 +1,6 @@ package dev.mrshawn.deathmessages.listeners; -import dev.mrshawn.deathmessages.api.PlayerManager; +import dev.mrshawn.deathmessages.api.PlayerCtx; import dev.mrshawn.deathmessages.config.Settings; import dev.mrshawn.deathmessages.config.files.Config; import org.bukkit.event.EventHandler; @@ -14,12 +14,12 @@ public class OnCommand implements Listener { @EventHandler(priority = EventPriority.HIGHEST) public void onCommand(PlayerCommandPreprocessEvent e) { - final PlayerManager getPlayer = PlayerManager.getPlayer(e.getPlayer()); + final PlayerCtx playerCtx = PlayerCtx.of(e.getPlayer().getUniqueId()); - if (getPlayer != null) { + if (playerCtx != null) { final List commands = Settings.getInstance().getConfig().getStringList(Config.CUSTOM_SUICIDE_COMMANDS.getPath()); if (commands.contains(e.getMessage())) { - getPlayer.setCommandDeath(true); + playerCtx.setCommandDeath(true); } } } diff --git a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/OnConnection.java b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/OnConnection.java new file mode 100644 index 00000000..2eb62c97 --- /dev/null +++ b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/OnConnection.java @@ -0,0 +1,33 @@ +package dev.mrshawn.deathmessages.listeners; + +import dev.mrshawn.deathmessages.DeathMessages; +import dev.mrshawn.deathmessages.api.PlayerCtx; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerQuitEvent; + +public class OnConnection implements Listener { + + @EventHandler(priority = EventPriority.HIGHEST) + public void onJoin(PlayerJoinEvent e) { + Player p = e.getPlayer(); + + PlayerCtx.create(new PlayerCtx(p)); + + if (DeathMessages.getHooks().bungeeInit) { + DeathMessages.getInstance().foliaLib.getScheduler().runLater(() -> { + if (DeathMessages.getHooks().bungeeServerNameRequest) { + PluginMessaging.sendServerNameRequest(p); + } + }, 5); + } + } + + @EventHandler(priority = EventPriority.HIGHEST) + public void onQuit(PlayerQuitEvent e) { + PlayerCtx.remove(e.getPlayer().getUniqueId()); + } +} diff --git a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/OnJoin.java b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/OnJoin.java deleted file mode 100644 index 69d37560..00000000 --- a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/OnJoin.java +++ /dev/null @@ -1,28 +0,0 @@ -package dev.mrshawn.deathmessages.listeners; - -import dev.mrshawn.deathmessages.DeathMessages; -import dev.mrshawn.deathmessages.api.PlayerManager; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import org.bukkit.event.player.PlayerJoinEvent; - -public class OnJoin implements Listener { - - @EventHandler(priority = EventPriority.HIGHEST) - public void onJoin(PlayerJoinEvent e) { - Player p = e.getPlayer(); - DeathMessages.getInstance().foliaLib.getScheduler().runAsync(task -> { - if (PlayerManager.isEmpty(p)) new PlayerManager(p); - }); - - if (!DeathMessages.getHooks().bungeeInit) return; - - DeathMessages.getInstance().foliaLib.getScheduler().runLater(() -> { - if (DeathMessages.getHooks().bungeeServerNameRequest) { - PluginMessaging.sendServerNameRequest(p); - } - }, 5); - } -} diff --git a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/OnMove.java b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/OnMove.java index 6b513345..bc418157 100644 --- a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/OnMove.java +++ b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/OnMove.java @@ -1,6 +1,6 @@ package dev.mrshawn.deathmessages.listeners; -import dev.mrshawn.deathmessages.api.PlayerManager; +import dev.mrshawn.deathmessages.api.PlayerCtx; import dev.mrshawn.deathmessages.utils.MaterialUtil; import org.bukkit.Material; import org.bukkit.entity.Player; @@ -18,11 +18,11 @@ public class OnMove implements Listener { @EventHandler(priority = EventPriority.MONITOR) public void onMove(PlayerMoveEvent e) { Player p = e.getPlayer(); - PlayerManager getPlayer = PlayerManager.getPlayer(p); - if (getPlayer != null) { + PlayerCtx playerCtx = PlayerCtx.of(p.getUniqueId()); + if (playerCtx != null) { lastBlock = e.getTo().getBlock().getType(); if (MaterialUtil.isClimbable(lastBlock)) { - getPlayer.setLastClimbing(lastBlock); + playerCtx.setLastClimbing(lastBlock); } else { if (p.getFallDistance() > 0) { message = true; @@ -32,7 +32,7 @@ public void onMove(PlayerMoveEvent e) { } } else { if (message) { - getPlayer.setLastClimbing(null); + playerCtx.setLastClimbing(null); falling = false; message = false; } diff --git a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/PluginMessaging.java b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/PluginMessaging.java index 3d09a6ab..279fef3f 100644 --- a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/PluginMessaging.java +++ b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/PluginMessaging.java @@ -3,7 +3,7 @@ import com.google.common.io.ByteArrayDataOutput; import com.google.common.io.ByteStreams; import dev.mrshawn.deathmessages.DeathMessages; -import dev.mrshawn.deathmessages.api.PlayerManager; +import dev.mrshawn.deathmessages.api.PlayerCtx; import dev.mrshawn.deathmessages.config.Messages; import dev.mrshawn.deathmessages.config.files.Config; import dev.mrshawn.deathmessages.config.files.FileStore; @@ -55,9 +55,9 @@ public void onPluginMessageReceived(String channel, Player player, byte[] messag TextComponent message = Util.convertFromLegacy(rawMsg); for (Player onlinePlayer : Bukkit.getServer().getOnlinePlayers()) { - PlayerManager getPlayer = PlayerManager.getPlayer(onlinePlayer); - if (getPlayer != null) { - if (getPlayer.getMessagesEnabled()) { + PlayerCtx playerCtx = PlayerCtx.of(onlinePlayer.getUniqueId()); + if (playerCtx != null) { + if (playerCtx.isMessageEnabled()) { onlinePlayer.sendMessage(Component.text() .append(prefix) .append(message) diff --git a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/combatlogx/PlayerUntag.java b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/combatlogx/PlayerUntag.java index f02ecad5..abbf4a3b 100644 --- a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/combatlogx/PlayerUntag.java +++ b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/combatlogx/PlayerUntag.java @@ -2,7 +2,7 @@ import com.github.sirblobman.combatlogx.api.event.PlayerUntagEvent; import com.github.sirblobman.combatlogx.api.object.UntagReason; -import dev.mrshawn.deathmessages.api.PlayerManager; +import dev.mrshawn.deathmessages.api.PlayerCtx; import dev.mrshawn.deathmessages.api.events.BroadcastDeathMessageEvent; import dev.mrshawn.deathmessages.config.Gangs; import dev.mrshawn.deathmessages.config.Messages; @@ -27,61 +27,60 @@ public class PlayerUntag implements Listener { @EventHandler public void untagPlayer(PlayerUntagEvent e) { Player player = e.getPlayer(); - PlayerManager getPlayer = PlayerManager.getPlayer(player); - if (getPlayer != null) { - UntagReason reason = e.getUntagReason(); + PlayerCtx playerCtx = PlayerCtx.of(player.getUniqueId()); - if (!reason.equals(UntagReason.QUIT)) return; + if (playerCtx == null) return; - boolean gangKill = false; + UntagReason reason = e.getUntagReason(); - if (Gangs.getInstance().getConfig().getBoolean("Gang.Enabled")) { - int radius = Gangs.getInstance().getConfig().getInt("Gang.Mobs.player.Radius"); - int amount = Gangs.getInstance().getConfig().getInt("Gang.Mobs.player.Amount"); + if (!reason.equals(UntagReason.QUIT)) return; - int totalMobEntities = 0; - List nearbyEntities = player.getNearbyEntities(radius, radius, radius); + boolean gangKill = false; - for (Entity entity : nearbyEntities) { - if (entity.toString().contains("EnderDragonPart")) { // Exclude EnderDragonPart - continue; - } + if (Gangs.getInstance().getConfig().getBoolean("Gang.Enabled")) { + int radius = Gangs.getInstance().getConfig().getInt("Gang.Mobs.player.Radius"); + int amount = Gangs.getInstance().getConfig().getInt("Gang.Mobs.player.Amount"); + + int totalMobEntities = 0; + List nearbyEntities = player.getNearbyEntities(radius, radius, radius); - if (entity instanceof Player) { - if (++totalMobEntities >= amount) { - gangKill = true; - break; - } + for (Entity entity : nearbyEntities) { + if (entity.toString().contains("EnderDragonPart")) { // Exclude EnderDragonPart + continue; + } + + if (entity instanceof Player) { + if (++totalMobEntities >= amount) { + gangKill = true; + break; } } } + } - TextComponent deathMessageBody = Assets.get(gangKill, getPlayer, (LivingEntity) e.getPreviousEnemies().get(0), "CombatLogX-Quit"); - TextComponent[] deathMessage = new TextComponent[2]; + TextComponent deathMessageBody = Assets.get(gangKill, playerCtx, (LivingEntity) e.getPreviousEnemies().get(0), "CombatLogX-Quit"); + TextComponent[] deathMessage = new TextComponent[2]; - if (Settings.getInstance().getConfig().getBoolean(Config.ADD_PREFIX_TO_ALL_MESSAGES.getPath())) { - TextComponent prefix = Util.convertFromLegacy(Messages.getInstance().getConfig().getString("Prefix")); - deathMessage[0] = prefix; - } + if (Settings.getInstance().getConfig().getBoolean(Config.ADD_PREFIX_TO_ALL_MESSAGES.getPath())) { + TextComponent prefix = Util.convertFromLegacy(Messages.getInstance().getConfig().getString("Prefix")); + deathMessage[0] = prefix; + } - deathMessage[1] = deathMessageBody; - - TextComponent oldDeathMessage = deathMessage[0].append(deathMessage[1]); // Dreeam TODO: Remove in 1.4.21 - - if (!ComponentUtil.isMessageEmpty(deathMessage)) { - BroadcastDeathMessageEvent event = new BroadcastDeathMessageEvent( - player, - (LivingEntity) e.getPreviousEnemies().get(0), - MessageType.PLAYER, - oldDeathMessage, - deathMessage, - Util.getBroadcastWorlds(player), - gangKill - ); - Bukkit.getPluginManager().callEvent(event); - } - } else { - new PlayerManager(player); + deathMessage[1] = deathMessageBody; + + TextComponent oldDeathMessage = deathMessage[0].append(deathMessage[1]); // Dreeam TODO: Remove in 1.4.21 + + if (!ComponentUtil.isMessageEmpty(deathMessage)) { + BroadcastDeathMessageEvent event = new BroadcastDeathMessageEvent( + player, + (LivingEntity) e.getPreviousEnemies().get(0), + MessageType.PLAYER, + oldDeathMessage, + deathMessage, + Util.getBroadcastWorlds(player), + gangKill + ); + Bukkit.getPluginManager().callEvent(event); } } } diff --git a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/customlisteners/BroadcastEntityDeathListener.java b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/customlisteners/BroadcastEntityDeathListener.java index 81b587e2..debb2029 100644 --- a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/customlisteners/BroadcastEntityDeathListener.java +++ b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/customlisteners/BroadcastEntityDeathListener.java @@ -1,8 +1,8 @@ package dev.mrshawn.deathmessages.listeners.customlisteners; import dev.mrshawn.deathmessages.DeathMessages; -import dev.mrshawn.deathmessages.api.EntityManager; -import dev.mrshawn.deathmessages.api.PlayerManager; +import dev.mrshawn.deathmessages.api.EntityCtx; +import dev.mrshawn.deathmessages.api.PlayerCtx; import dev.mrshawn.deathmessages.api.events.BroadcastEntityDeathMessageEvent; import dev.mrshawn.deathmessages.config.Messages; import dev.mrshawn.deathmessages.config.files.Config; @@ -27,7 +27,7 @@ public class BroadcastEntityDeathListener implements Listener { @EventHandler public void broadcastListener(BroadcastEntityDeathMessageEvent e) { - final PlayerManager pm = e.getPlayer(); + final PlayerCtx pm = e.getPlayer(); final Entity entity = e.getEntity(); final boolean hasOwner = EntityUtil.hasOwner(entity); final TextComponent[] components = e.getTextComponents(); @@ -61,18 +61,18 @@ public void broadcastListener(BroadcastEntityDeathMessageEvent e) { } for (Player player : world.getPlayers()) { - PlayerManager getPlayer = PlayerManager.getPlayer(player); + PlayerCtx playerCtx = PlayerCtx.of(player.getUniqueId()); if (privateTameable) { - if (getPlayer != null) { - if (getPlayer.getUUID().equals(pm.getPlayer().getUniqueId())) { - if (getPlayer.getMessagesEnabled()) { + if (playerCtx != null) { + if (playerCtx.getUUID().equals(pm.getUUID())) { + if (playerCtx.isMessageEnabled()) { player.sendMessage(message); } } } } else { - if (getPlayer != null) { - if (getPlayer.getMessagesEnabled()) { + if (playerCtx != null) { + if (playerCtx.isMessageEnabled()) { if (DeathMessages.getHooks().worldGuardExtension != null) { if (DeathMessages.getHooks().worldGuardExtension.denyFromRegion(player, e.getMessageType().getValue())) { return; @@ -80,7 +80,7 @@ public void broadcastListener(BroadcastEntityDeathMessageEvent e) { } player.sendMessage(message); - PluginMessaging.sendPluginMSG(getPlayer.getPlayer(), Util.convertToLegacy(message)); + PluginMessaging.sendPluginMSG(playerCtx.getPlayer(), Util.convertToLegacy(message)); } } @@ -114,9 +114,9 @@ public void broadcastListener(BroadcastEntityDeathMessageEvent e) { } PluginMessaging.sendPluginMSG(e.getPlayer().getPlayer(), Util.convertToLegacy(message)); - EntityManager getEntity = EntityManager.getEntity(entity.getUniqueId()); + EntityCtx getEntity = EntityCtx.of(entity.getUniqueId()); if (getEntity != null) { - getEntity.destroy(); + EntityCtx.remove(getEntity.getUUID()); } } } diff --git a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/customlisteners/BroadcastPlayerDeathListener.java b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/customlisteners/BroadcastPlayerDeathListener.java index da4fb540..587ad945 100644 --- a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/customlisteners/BroadcastPlayerDeathListener.java +++ b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/customlisteners/BroadcastPlayerDeathListener.java @@ -1,7 +1,7 @@ package dev.mrshawn.deathmessages.listeners.customlisteners; import dev.mrshawn.deathmessages.DeathMessages; -import dev.mrshawn.deathmessages.api.PlayerManager; +import dev.mrshawn.deathmessages.api.PlayerCtx; import dev.mrshawn.deathmessages.api.events.BroadcastDeathMessageEvent; import dev.mrshawn.deathmessages.config.Messages; import dev.mrshawn.deathmessages.enums.MessageType; @@ -27,9 +27,9 @@ public class BroadcastPlayerDeathListener implements Listener { @EventHandler public void broadcastListener(BroadcastDeathMessageEvent e) { - PlayerManager getPlayer = PlayerManager.getPlayer(e.getPlayer()); + PlayerCtx playerCtx = PlayerCtx.of(e.getPlayer().getUniqueId()); - if (getPlayer == null) return; + if (playerCtx == null) return; final TextComponent[] components = e.getTextComponents(); final TextComponent prefix = components[0]; @@ -39,7 +39,7 @@ public void broadcastListener(BroadcastDeathMessageEvent e) { if (Messages.getInstance().getConfig().getBoolean("Console.Enabled")) { // Dreeam TODO: maybe just use formatMessage is also ok? Component rawMessage = Util.convertFromLegacy(Messages.getInstance().getConfig().getString("Console.Message")); - Component consoleMessage = Assets.playerDeathPlaceholders(rawMessage, getPlayer, e.getLivingEntity()) + Component consoleMessage = Assets.playerDeathPlaceholders(rawMessage, playerCtx, e.getLivingEntity()) .replaceText(TextReplacementConfig.builder() .matchLiteral("%message%") .replacement(message) @@ -48,10 +48,10 @@ public void broadcastListener(BroadcastDeathMessageEvent e) { ComponentUtil.sendConsoleMessage(consoleMessage); } - if (getPlayer.isInCooldown()) { + if (playerCtx.isInCooldown()) { return; } else { - getPlayer.setCooldown(); + playerCtx.setCooldown(); } final boolean privatePlayer = FileStore.CONFIG.getBoolean(Config.PRIVATE_MESSAGES_PLAYER); @@ -67,30 +67,29 @@ public void broadcastListener(BroadcastDeathMessageEvent e) { } for (Player player : world.getPlayers()) { - PlayerManager getPlayer2 = PlayerManager.getPlayer(player); - if (getPlayer2 != null) { - if (e.getMessageType().equals(MessageType.PLAYER)) { - if (privatePlayer && (e.getPlayer().getUniqueId().equals(getPlayer2.getUUID()) - || e.getLivingEntity().getUniqueId().equals(getPlayer2.getUUID()))) { - normal(e, components, message, getPlayer2, player, e.getBroadcastedWorlds()); - } else if (!privatePlayer) { - normal(e, components, message, getPlayer2, player, e.getBroadcastedWorlds()); - } - } else if (e.getMessageType().equals(MessageType.MOB)) { - if (privateMobs && e.getPlayer().getUniqueId().equals(getPlayer2.getUUID())) { - normal(e, components, message, getPlayer2, player, e.getBroadcastedWorlds()); - } else if (!privateMobs) { - normal(e, components, message, getPlayer2, player, e.getBroadcastedWorlds()); - } - } else if (e.getMessageType().equals(MessageType.NATURAL)) { - if (privateNatural && e.getPlayer().getUniqueId().equals(getPlayer2.getUUID())) { - normal(e, components, message, getPlayer2, player, e.getBroadcastedWorlds()); - } else if (!privateNatural) { - normal(e, components, message, getPlayer2, player, e.getBroadcastedWorlds()); - } + PlayerCtx otherPlayerCtx = PlayerCtx.of(player.getUniqueId()); + + if (otherPlayerCtx == null) continue; + + if (e.getMessageType().equals(MessageType.PLAYER)) { + if (privatePlayer && (e.getPlayer().getUniqueId().equals(otherPlayerCtx.getUUID()) + || e.getLivingEntity().getUniqueId().equals(otherPlayerCtx.getUUID()))) { + normal(e, components, message, otherPlayerCtx, player, e.getBroadcastedWorlds()); + } else if (!privatePlayer) { + normal(e, components, message, otherPlayerCtx, player, e.getBroadcastedWorlds()); + } + } else if (e.getMessageType().equals(MessageType.MOB)) { + if (privateMobs && e.getPlayer().getUniqueId().equals(otherPlayerCtx.getUUID())) { + normal(e, components, message, otherPlayerCtx, player, e.getBroadcastedWorlds()); + } else if (!privateMobs) { + normal(e, components, message, otherPlayerCtx, player, e.getBroadcastedWorlds()); + } + } else if (e.getMessageType().equals(MessageType.NATURAL)) { + if (privateNatural && e.getPlayer().getUniqueId().equals(otherPlayerCtx.getUUID())) { + normal(e, components, message, otherPlayerCtx, player, e.getBroadcastedWorlds()); + } else if (!privateNatural) { + normal(e, components, message, otherPlayerCtx, player, e.getBroadcastedWorlds()); } - } else { - new PlayerManager(player); } } } @@ -98,7 +97,7 @@ public void broadcastListener(BroadcastDeathMessageEvent e) { PluginMessaging.sendPluginMSG(e.getPlayer(), Util.convertToLegacy(message)); } - private void normal(BroadcastDeathMessageEvent e, TextComponent[] components, TextComponent message, PlayerManager pm, Player player, List worlds) { + private void normal(BroadcastDeathMessageEvent e, TextComponent[] components, TextComponent message, PlayerCtx pm, Player player, List worlds) { if (DeathMessages.getHooks().worldGuardExtension != null) { if (DeathMessages.getHooks().worldGuardExtension.denyFromRegion(player, e.getMessageType().getValue()) || DeathMessages.getHooks().worldGuardExtension.denyFromRegion(e.getPlayer(), e.getMessageType().getValue())) { @@ -106,7 +105,7 @@ private void normal(BroadcastDeathMessageEvent e, TextComponent[] components, Te } } - if (pm.getMessagesEnabled()) { + if (pm.isMessageEnabled()) { player.sendMessage(message); } @@ -125,13 +124,13 @@ private void normal(BroadcastDeathMessageEvent e, TextComponent[] components, Te // Will reach the discord broadcast } - PlayerManager getPlayer = PlayerManager.getPlayer(e.getPlayer()); - if (getPlayer != null) { + PlayerCtx playerCtx = PlayerCtx.of(e.getPlayer().getUniqueId()); + if (playerCtx != null) { if (DeathMessages.getHooks().discordSRVExtension != null && !discordSent) { DeathMessages.getHooks().discordSRVExtension.sendDiscordMessage( components, e.getMessageType(), - getPlayer + playerCtx ); discordSent = true; } diff --git a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/mythicmobs/MobDeath.java b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/mythicmobs/MobDeath.java index bfb91d6b..eff56731 100644 --- a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/mythicmobs/MobDeath.java +++ b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/mythicmobs/MobDeath.java @@ -1,7 +1,7 @@ package dev.mrshawn.deathmessages.listeners.mythicmobs; -import dev.mrshawn.deathmessages.api.EntityManager; -import dev.mrshawn.deathmessages.api.PlayerManager; +import dev.mrshawn.deathmessages.api.EntityCtx; +import dev.mrshawn.deathmessages.api.PlayerCtx; import dev.mrshawn.deathmessages.api.events.BroadcastEntityDeathMessageEvent; import dev.mrshawn.deathmessages.enums.MessageType; import dev.mrshawn.deathmessages.enums.MobType; @@ -32,9 +32,9 @@ public void onMythicMobDeath(MythicMobDeathEvent e) { for (String customMob : mobs) { if (e.getMob().getType().getInternalName().equals(customMob)) { - EntityManager getEntity = EntityManager.getEntity(e.getEntity().getUniqueId()); + EntityCtx getEntity = EntityCtx.of(e.getEntity().getUniqueId()); if (getEntity != null) { - PlayerManager damager = getEntity.getLastPlayerDamager(); + PlayerCtx damager = getEntity.getLastPlayerDamager(); TextComponent[] mythicDeath = Assets.entityDeathMessage(getEntity, MobType.MYTHIC_MOB); TextComponent oldMythicDeath = mythicDeath[0].append(mythicDeath[1]); // Dreeam TODO: Remove in 1.4.21 diff --git a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/utils/Assets.java b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/utils/Assets.java index 201f424b..ab5e5be2 100644 --- a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/utils/Assets.java +++ b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/utils/Assets.java @@ -2,9 +2,9 @@ import com.cryptomorin.xseries.XMaterial; import dev.mrshawn.deathmessages.DeathMessages; -import dev.mrshawn.deathmessages.api.EntityManager; +import dev.mrshawn.deathmessages.api.EntityCtx; import dev.mrshawn.deathmessages.api.ExplosionManager; -import dev.mrshawn.deathmessages.api.PlayerManager; +import dev.mrshawn.deathmessages.api.PlayerCtx; import dev.mrshawn.deathmessages.config.EntityDeathMessages; import dev.mrshawn.deathmessages.config.Messages; import dev.mrshawn.deathmessages.config.PlayerDeathMessages; @@ -57,7 +57,7 @@ public class Assets { // Dreeam TODO - to figure out why the value defined in private static field will not change with the change of the config value //private static final CommentedConfiguration config = Settings.getInstance().getConfig(); - public static TextComponent[] playerNatureDeathMessage(PlayerManager pm, Player player) { + public static TextComponent[] playerNatureDeathMessage(PlayerCtx pm, Player player) { TextComponent[] components = ComponentUtil.empty(); if (Settings.getInstance().getConfig().getBoolean(Config.ADD_PREFIX_TO_ALL_MESSAGES.getPath())) { @@ -72,9 +72,9 @@ public static TextComponent[] playerNatureDeathMessage(PlayerManager pm, Player components[1] = Assets.getNaturalDeath(pm, "TNT"); } else if (pm.getLastExplosiveEntity() instanceof Firework) { components[1] = Assets.getNaturalDeath(pm, "Firework"); - } else if (pm.getLastDamage().equals(EntityDamageEvent.DamageCause.FALL)) { + } else if (pm.getLastDamageCause().equals(EntityDamageEvent.DamageCause.FALL)) { components[1] = Assets.getNaturalDeath(pm, "Climbable"); - } else if (pm.getLastDamage().equals(EntityDamageEvent.DamageCause.BLOCK_EXPLOSION)) { + } else if (pm.getLastDamageCause().equals(EntityDamageEvent.DamageCause.BLOCK_EXPLOSION)) { ExplosionManager explosion = ExplosionManager.getManagerIfEffected(player.getUniqueId()); if (explosion != null) { if (explosion.getMaterial().name().contains("BED")) { @@ -85,7 +85,7 @@ public static TextComponent[] playerNatureDeathMessage(PlayerManager pm, Player } // Dreeam TODO: Check weather needs to handle unknow explosion to prevent potential empty death message } - } else if (pm.getLastDamage().equals(EntityDamageEvent.DamageCause.PROJECTILE)) { + } else if (pm.getLastDamageCause().equals(EntityDamageEvent.DamageCause.PROJECTILE)) { components[1] = Assets.getNaturalDeath(pm, Assets.getSimpleProjectile(pm.getLastProjectileEntity())); } else if (Util.isOlderAndEqual(999, 999) && pm.getLastEntityDamager() instanceof AreaEffectCloud) { // Fix MC-84595 - Killed by Dragon's Breath AreaEffectCloud cloud = (AreaEffectCloud) pm.getLastEntityDamager(); @@ -97,15 +97,15 @@ public static TextComponent[] playerNatureDeathMessage(PlayerManager pm, Player ); } - components[1] = Assets.getNaturalDeath(pm, Assets.getSimpleCause(pm.getLastDamage())); + components[1] = Assets.getNaturalDeath(pm, Assets.getSimpleCause(pm.getLastDamageCause())); } else { - components[1] = Assets.getNaturalDeath(pm, Assets.getSimpleCause(pm.getLastDamage())); + components[1] = Assets.getNaturalDeath(pm, Assets.getSimpleCause(pm.getLastDamageCause())); } return components; } - public static TextComponent[] playerDeathMessage(PlayerManager pm, boolean gang) { + public static TextComponent[] playerDeathMessage(PlayerCtx pm, boolean gang) { LivingEntity mob = (LivingEntity) pm.getLastEntityDamager(); TextComponent[] components = ComponentUtil.empty(); @@ -114,7 +114,7 @@ public static TextComponent[] playerDeathMessage(PlayerManager pm, boolean gang) components[0] = prefix; } - if (pm.getLastDamage().equals(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION)) { + if (pm.getLastDamageCause().equals(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION)) { switch (pm.getLastExplosiveEntity()) { case EnderCrystal ignored -> { components[1] = get(gang, pm, mob, "End-Crystal"); @@ -135,35 +135,35 @@ public static TextComponent[] playerDeathMessage(PlayerManager pm, boolean gang) } } - if (pm.getLastDamage().equals(EntityDamageEvent.DamageCause.BLOCK_EXPLOSION)) { + if (pm.getLastDamageCause().equals(EntityDamageEvent.DamageCause.BLOCK_EXPLOSION)) { ExplosionManager explosionManager = ExplosionManager.getManagerIfEffected(pm.getUUID()); if (explosionManager != null) { - PlayerManager pyro = PlayerManager.getPlayer(explosionManager.getPyro()); - if (pyro != null) { + PlayerCtx pyroCtx = PlayerCtx.of(explosionManager.getPyro()); + if (pyroCtx != null) { // Bed kill if (explosionManager.getMaterial().name().contains("BED")) { - components[1] = get(gang, pm, pyro.getPlayer(), "Bed"); + components[1] = get(gang, pm, pyroCtx.getPlayer(), "Bed"); return components; } // Respawn Anchor kill if (explosionManager.getMaterial().equals(Material.RESPAWN_ANCHOR)) { - components[1] = get(gang, pm, pyro.getPlayer(), "Respawn-Anchor"); + components[1] = get(gang, pm, pyroCtx.getPlayer(), "Respawn-Anchor"); return components; } } } } - boolean hasWeapon = MaterialUtil.hasWeapon(mob, pm.getLastDamage()); + boolean hasWeapon = MaterialUtil.hasWeapon(mob, pm.getLastDamageCause()); if (hasWeapon) { - if (pm.getLastDamage().equals(EntityDamageEvent.DamageCause.ENTITY_ATTACK)) { + if (pm.getLastDamageCause().equals(EntityDamageEvent.DamageCause.ENTITY_ATTACK)) { components[1] = getWeapon(gang, pm, mob); return components; } - if (pm.getLastDamage().equals(EntityDamageEvent.DamageCause.PROJECTILE) && pm.getLastProjectileEntity() instanceof Arrow) { + if (pm.getLastDamageCause().equals(EntityDamageEvent.DamageCause.PROJECTILE) && pm.getLastProjectileEntity() instanceof Arrow) { components[1] = getProjectile(gang, pm, mob, getSimpleProjectile(pm.getLastProjectileEntity())); return components; } @@ -173,12 +173,12 @@ public static TextComponent[] playerDeathMessage(PlayerManager pm, boolean gang) } else { // Dreeam TODO: idk why there is for loop used to if (pm.getLastDamage().equals(dc)), no need, waste performance.. for (EntityDamageEvent.DamageCause dc : EntityDamageEvent.DamageCause.values()) { - if (pm.getLastDamage().equals(EntityDamageEvent.DamageCause.PROJECTILE)) { + if (pm.getLastDamageCause().equals(EntityDamageEvent.DamageCause.PROJECTILE)) { components[1] = getProjectile(gang, pm, mob, getSimpleProjectile(pm.getLastProjectileEntity())); return components; } - if (pm.getLastDamage().equals(dc)) { + if (pm.getLastDamageCause().equals(dc)) { components[1] = get(gang, pm, mob, getSimpleCause(dc)); return components; } @@ -188,8 +188,8 @@ public static TextComponent[] playerDeathMessage(PlayerManager pm, boolean gang) } } - public static TextComponent[] entityDeathMessage(EntityManager em, MobType mobType) { - PlayerManager pm = em.getLastPlayerDamager(); + public static TextComponent[] entityDeathMessage(EntityCtx em, MobType mobType) { + PlayerCtx pm = em.getLastPlayerDamager(); if (pm == null) return ComponentUtil.empty(); @@ -201,7 +201,7 @@ public static TextComponent[] entityDeathMessage(EntityManager em, MobType mobTy components[0] = prefix; } - if (em.getLastDamage().equals(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION)) { + if (em.getLastDamageCause().equals(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION)) { switch (em.getLastExplosiveEntity()) { case EnderCrystal ignored -> { components[1] = getEntityDeath(p, em.getEntity(), "End-Crystal", mobType); @@ -222,35 +222,35 @@ public static TextComponent[] entityDeathMessage(EntityManager em, MobType mobTy } } - if (em.getLastDamage().equals(EntityDamageEvent.DamageCause.BLOCK_EXPLOSION)) { - ExplosionManager explosionManager = ExplosionManager.getManagerIfEffected(em.getEntityUUID()); + if (em.getLastDamageCause().equals(EntityDamageEvent.DamageCause.BLOCK_EXPLOSION)) { + ExplosionManager explosionManager = ExplosionManager.getManagerIfEffected(em.getUUID()); if (explosionManager != null) { - PlayerManager pyro = PlayerManager.getPlayer(explosionManager.getPyro()); - if (pyro != null) { + PlayerCtx pyroCtx = PlayerCtx.of(explosionManager.getPyro()); + if (pyroCtx != null) { // Bed kill if (explosionManager.getMaterial().name().contains("BED")) { - components[1] = getEntityDeath(pyro.getPlayer(), em.getEntity(), "Bed", mobType); + components[1] = getEntityDeath(pyroCtx.getPlayer(), em.getEntity(), "Bed", mobType); return components; } // Respawn Anchor kill if (explosionManager.getMaterial().equals(Material.RESPAWN_ANCHOR)) { - components[1] = getEntityDeath(pyro.getPlayer(), em.getEntity(), "Respawn-Anchor", mobType); + components[1] = getEntityDeath(pyroCtx.getPlayer(), em.getEntity(), "Respawn-Anchor", mobType); return components; } } } } - boolean hasWeapon = MaterialUtil.hasWeapon(p, pm.getLastDamage()); + boolean hasWeapon = MaterialUtil.hasWeapon(p, pm.getLastDamageCause()); if (hasWeapon) { - if (em.getLastDamage().equals(EntityDamageEvent.DamageCause.ENTITY_ATTACK)) { + if (em.getLastDamageCause().equals(EntityDamageEvent.DamageCause.ENTITY_ATTACK)) { components[1] = getEntityDeathWeapon(p, em.getEntity(), mobType); return components; } - if (em.getLastDamage().equals(EntityDamageEvent.DamageCause.PROJECTILE) && em.getLastProjectileEntity() instanceof Arrow) { + if (em.getLastDamageCause().equals(EntityDamageEvent.DamageCause.PROJECTILE) && em.getLastProjectileEntity() instanceof Arrow) { components[1] = getEntityDeathProjectile(p, em, getSimpleProjectile(em.getLastProjectileEntity()), mobType); return components; } @@ -259,12 +259,12 @@ public static TextComponent[] entityDeathMessage(EntityManager em, MobType mobTy return components; } else { for (EntityDamageEvent.DamageCause dc : EntityDamageEvent.DamageCause.values()) { - if (em.getLastDamage().equals(EntityDamageEvent.DamageCause.PROJECTILE)) { + if (em.getLastDamageCause().equals(EntityDamageEvent.DamageCause.PROJECTILE)) { components[1] = getEntityDeathProjectile(p, em, getSimpleProjectile(em.getLastProjectileEntity()), mobType); return components; } - if (em.getLastDamage().equals(dc)) { + if (em.getLastDamageCause().equals(dc)) { components[1] = getEntityDeath(p, em.getEntity(), getSimpleCause(dc), mobType); return components; } @@ -274,7 +274,7 @@ public static TextComponent[] entityDeathMessage(EntityManager em, MobType mobTy } } - public static TextComponent getNaturalDeath(PlayerManager pm, String damageCause) { + public static TextComponent getNaturalDeath(PlayerCtx pm, String damageCause) { List msgs = sortList(getPlayerDeathMessages().getStringList("Natural-Cause." + damageCause), pm.getPlayer(), pm.getPlayer()); if (Settings.getInstance().getConfig().getBoolean(Config.DEBUG.getPath())) @@ -304,7 +304,7 @@ public static TextComponent getNaturalDeath(PlayerManager pm, String damageCause pm.setLastEntityDamager(null); return getNaturalDeath(pm, getSimpleCause(EntityDamageEvent.DamageCause.SUFFOCATION)); } - } else if (msg.contains("%climbable%") && pm.getLastDamage().equals(EntityDamageEvent.DamageCause.FALL)) { + } else if (msg.contains("%climbable%") && pm.getLastDamageCause().equals(EntityDamageEvent.DamageCause.FALL)) { try { String material = pm.getLastClimbing().toString().toLowerCase(); String configValue = Messages.getInstance().getConfig().getString("Blocks." + material); @@ -314,7 +314,7 @@ public static TextComponent getNaturalDeath(PlayerManager pm, String damageCause pm.setLastClimbing(null); return getNaturalDeath(pm, getSimpleCause(EntityDamageEvent.DamageCause.FALL)); } - } else if (msg.contains("%weapon%") && pm.getLastDamage().equals(EntityDamageEvent.DamageCause.PROJECTILE)) { + } else if (msg.contains("%weapon%") && pm.getLastDamageCause().equals(EntityDamageEvent.DamageCause.PROJECTILE)) { ItemStack i = pm.getPlayer().getEquipment().getItemInMainHand(); if (!i.getType().equals(XMaterial.BOW.parseMaterial())) { @@ -364,7 +364,7 @@ public static TextComponent getNaturalDeath(PlayerManager pm, String damageCause return (TextComponent) playerDeathPlaceholders(baseWithEvents, pm, null); } - public static TextComponent getWeapon(boolean gang, PlayerManager pm, LivingEntity mob) { + public static TextComponent getWeapon(boolean gang, PlayerCtx pm, LivingEntity mob) { final boolean basicMode = getPlayerDeathMessages().getBoolean("Basic-Mode.Enabled"); String entityName = EntityUtil.getConfigNodeByEntity(mob); final String mode = basicMode ? DeathModes.BASIC_MODE.getValue() : DeathModes.MOBS.getValue() @@ -511,7 +511,7 @@ public static TextComponent getEntityDeathWeapon(Player p, Entity e, MobType mob return (TextComponent) entityDeathPlaceholders(baseWithEvents, p, e, hasOwner); } - public static TextComponent get(boolean gang, PlayerManager pm, LivingEntity mob, String damageCause) { + public static TextComponent get(boolean gang, PlayerCtx pm, LivingEntity mob, String damageCause) { final boolean basicMode = getPlayerDeathMessages().getBoolean("Basic-Mode.Enabled"); String entityName = EntityUtil.getConfigNodeByEntity(mob); final String mode = basicMode ? DeathModes.BASIC_MODE.getValue() : DeathModes.MOBS.getValue() @@ -567,7 +567,7 @@ public static TextComponent get(boolean gang, PlayerManager pm, LivingEntity mob return (TextComponent) playerDeathPlaceholders(baseWithEvents, pm, mob); } - public static TextComponent getProjectile(boolean gang, PlayerManager pm, LivingEntity mob, String projectileDamage) { + public static TextComponent getProjectile(boolean gang, PlayerCtx pm, LivingEntity mob, String projectileDamage) { final boolean basicMode = getPlayerDeathMessages().getBoolean("Basic-Mode.Enabled"); String entityName = EntityUtil.getConfigNodeByEntity(mob); final String mode = basicMode ? DeathModes.BASIC_MODE.getValue() : DeathModes.MOBS.getValue() @@ -603,7 +603,7 @@ public static TextComponent getProjectile(boolean gang, PlayerManager pm, Living List rawEvents = new ArrayList<>(); msg = ComponentUtil.sortHoverEvents(msg, rawEvents); - if (msg.contains("%weapon%") && pm.getLastDamage().equals(EntityDamageEvent.DamageCause.PROJECTILE)) { + if (msg.contains("%weapon%") && pm.getLastDamageCause().equals(EntityDamageEvent.DamageCause.PROJECTILE)) { Component weaponHover; ItemStack i = mob.getEquipment().getItemInMainHand(); @@ -658,14 +658,14 @@ public static TextComponent getProjectile(boolean gang, PlayerManager pm, Living return (TextComponent) playerDeathPlaceholders(baseWithEvents, pm, mob); } - public static TextComponent getEntityDeathProjectile(Player p, EntityManager em, String projectileDamage, MobType mobType) { + public static TextComponent getEntityDeathProjectile(Player p, EntityCtx em, String projectileDamage, MobType mobType) { String entityName = EntityUtil.getConfigNodeByEntity(em.getEntity()); boolean hasOwner = EntityUtil.hasOwner(em.getEntity()); List msgs = sortList(getEntityDeathMessages().getStringList("Entities." + entityName + "." + projectileDamage), p, em.getEntity()); if (mobType.equals(MobType.MYTHIC_MOB)) { String mmMobType = null; - if (DeathMessages.getHooks().mythicmobsEnabled && DeathMessages.getHooks().mythicMobs.getAPIHelper().isMythicMob(em.getEntityUUID())) { + if (DeathMessages.getHooks().mythicmobsEnabled && DeathMessages.getHooks().mythicMobs.getAPIHelper().isMythicMob(em.getUUID())) { mmMobType = DeathMessages.getHooks().mythicMobs.getAPIHelper().getMythicMobInstance(em.getEntity()).getMobType(); } @@ -930,7 +930,7 @@ public static String entityDeathPlaceholders(String msg, Player player, Entity e return msg; } - public static Component playerDeathPlaceholders(Component msg, PlayerManager pm, Entity mob) { + public static Component playerDeathPlaceholders(Component msg, PlayerCtx pm, Entity mob) { final boolean hasBiome = msg.contains(Component.text("%biome%")); final boolean hasDistance = msg.contains(Component.text("%distance%")); @@ -1001,7 +1001,7 @@ public static Component playerDeathPlaceholders(Component msg, PlayerManager pm, return msg; } - public static String playerDeathPlaceholders(String msg, PlayerManager pm, Entity mob) { + public static String playerDeathPlaceholders(String msg, PlayerCtx pm, Entity mob) { final boolean hasBiome = msg.contains("%biome%"); final boolean hasDistance = msg.contains("%distance%"); diff --git a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/utils/ComponentUtil.java b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/utils/ComponentUtil.java index 6fb88e0b..b15c39b7 100644 --- a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/utils/ComponentUtil.java +++ b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/utils/ComponentUtil.java @@ -1,7 +1,7 @@ package dev.mrshawn.deathmessages.utils; import dev.mrshawn.deathmessages.DeathMessages; -import dev.mrshawn.deathmessages.api.PlayerManager; +import dev.mrshawn.deathmessages.api.PlayerCtx; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.event.ClickEvent; @@ -80,7 +80,7 @@ public static Component buildEntityHover(Entity entity, Component name) { */ public static Component buildHoverEvents( String rawEvent, - PlayerManager pm, + PlayerCtx pm, Player p, Entity e, boolean hasOwner, diff --git a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/utils/Util.java b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/utils/Util.java index c005408e..7a48a2d4 100644 --- a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/utils/Util.java +++ b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/utils/Util.java @@ -1,9 +1,9 @@ package dev.mrshawn.deathmessages.utils; import dev.mrshawn.deathmessages.DeathMessages; -import dev.mrshawn.deathmessages.api.EntityManager; +import dev.mrshawn.deathmessages.api.EntityCtx; import dev.mrshawn.deathmessages.api.ExplosionManager; -import dev.mrshawn.deathmessages.api.PlayerManager; +import dev.mrshawn.deathmessages.api.PlayerCtx; import dev.mrshawn.deathmessages.api.events.DMBlockExplodeEvent; import dev.mrshawn.deathmessages.config.Messages; import dev.mrshawn.deathmessages.config.Settings; @@ -128,22 +128,22 @@ public static void getExplosionNearbyEffected(Player p, Block b) { getNearby.forEach(ent -> { if (ent instanceof Player) { - PlayerManager getPlayer = PlayerManager.getPlayer((Player) ent); - if (getPlayer != null) { + PlayerCtx playerCtx = PlayerCtx.of(ent.getUniqueId()); + if (playerCtx != null) { effected.add(ent.getUniqueId()); - getPlayer.setLastEntityDamager(p); + playerCtx.setLastEntityDamager(p); } } else { - EntityManager getEntity = EntityManager.getEntity(ent.getUniqueId()); - PlayerManager getPlayer = PlayerManager.getPlayer(p); - if (getEntity != null) { + EntityCtx entityCtx = EntityCtx.of(ent.getUniqueId()); + if (entityCtx != null) { effected.add(ent.getUniqueId()); - if (getPlayer != null) { - getEntity.setLastPlayerDamager(getPlayer); + PlayerCtx playerCtx = PlayerCtx.of(p.getUniqueId()); + if (playerCtx != null) { + entityCtx.setLastPlayerDamager(playerCtx); } } else { - new EntityManager(ent, ent.getUniqueId(), MobType.VANILLA); + EntityCtx.create(new EntityCtx(ent, MobType.VANILLA)); } } } @@ -220,7 +220,7 @@ public static String randomNumeric(int length) { return sb.toString(); } - public static String getPlayerName(PlayerManager pm) { + public static String getPlayerName(PlayerCtx pm) { if (isPlayerVanished(pm.getPlayer())) { return PlainTextComponentSerializer.plainText().serialize(getVanishedName()); } @@ -236,7 +236,7 @@ public static String getPlayerName(Player player) { return player.getName(); } - public static String getPlayerDisplayName(PlayerManager pm) { + public static String getPlayerDisplayName(PlayerCtx pm) { final Player player = pm.getPlayer(); if (isPlayerVanished(player)) { @@ -254,7 +254,7 @@ public static String getPlayerDisplayName(Player player) { return player.getDisplayName(); } - public static Component getPlayerDisplayNameComponent(PlayerManager pm) { + public static Component getPlayerDisplayNameComponent(PlayerCtx pm) { final Player player = pm.getPlayer(); if (isPlayerVanished(player)) { From 7dcac5db796599d78d78f18cbed06b1be64a97b6 Mon Sep 17 00:00:00 2001 From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com> Date: Mon, 9 Feb 2026 13:38:09 -0500 Subject: [PATCH 2/4] Rename some --- .../dev/mrshawn/deathmessages/api/EntityCtx.java | 4 ++-- .../mrshawn/deathmessages/listeners/EntityDeath.java | 12 ++++++------ .../BroadcastEntityDeathListener.java | 6 +++--- .../deathmessages/listeners/mythicmobs/MobDeath.java | 10 +++++----- .../java/dev/mrshawn/deathmessages/utils/Assets.java | 8 ++++---- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/api/EntityCtx.java b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/api/EntityCtx.java index 00e1f016..4493ddf8 100644 --- a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/api/EntityCtx.java +++ b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/api/EntityCtx.java @@ -58,11 +58,11 @@ public DamageCause getLastDamageCause() { return damageCause; } - public void setLastPlayerDamager(PlayerCtx playerCtx) { + public void setLastPlayerDamager(PlayerCtx damagerCtx) { setLastExplosiveEntity(null); setLastProjectileEntity(null); - this.lastPlayerDamager = playerCtx; + this.lastPlayerDamager = damagerCtx; if (lastPlayerTask != null) { lastPlayerTask.cancel(); diff --git a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/EntityDeath.java b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/EntityDeath.java index 7a10ab8e..e709c7c6 100644 --- a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/EntityDeath.java +++ b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/EntityDeath.java @@ -110,8 +110,8 @@ void onEntityDeath(EntityDeathEvent e) { } } else { // Entity killed by Player - EntityCtx getEntity = EntityCtx.of(e.getEntity().getUniqueId()); - if (getEntity != null) { + EntityCtx entityCtx = EntityCtx.of(e.getEntity().getUniqueId()); + if (entityCtx != null) { MobType mobType = MobType.VANILLA; if (DeathMessages.getHooks().mythicmobsEnabled) { if (DeathMessages.getHooks().mythicMobs.getAPIHelper().isMythicMob(e.getEntity().getUniqueId())) { @@ -119,15 +119,15 @@ void onEntityDeath(EntityDeathEvent e) { } } - PlayerCtx damager = getEntity.getLastPlayerDamager(); - if (damager == null) return; // Entity killed by Entity should not include in DM + PlayerCtx damagerCtx = entityCtx.getLastPlayerDamager(); + if (damagerCtx == null) return; // Entity killed by Entity should not include in DM - TextComponent[] entityDeath = Assets.entityDeathMessage(getEntity, mobType); + TextComponent[] entityDeath = Assets.entityDeathMessage(entityCtx, mobType); TextComponent oldEntityDeath = entityDeath[0].append(entityDeath[1]); // Dreeam TODO: Remove in 1.4.21 if (!ComponentUtil.isMessageEmpty(entityDeath)) { BroadcastEntityDeathMessageEvent event = new BroadcastEntityDeathMessageEvent( - damager, + damagerCtx, e.getEntity(), MessageType.ENTITY, oldEntityDeath, diff --git a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/customlisteners/BroadcastEntityDeathListener.java b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/customlisteners/BroadcastEntityDeathListener.java index debb2029..7fbea4d9 100644 --- a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/customlisteners/BroadcastEntityDeathListener.java +++ b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/customlisteners/BroadcastEntityDeathListener.java @@ -114,9 +114,9 @@ public void broadcastListener(BroadcastEntityDeathMessageEvent e) { } PluginMessaging.sendPluginMSG(e.getPlayer().getPlayer(), Util.convertToLegacy(message)); - EntityCtx getEntity = EntityCtx.of(entity.getUniqueId()); - if (getEntity != null) { - EntityCtx.remove(getEntity.getUUID()); + EntityCtx entityCtx = EntityCtx.of(entity.getUniqueId()); + if (entityCtx != null) { + EntityCtx.remove(entityCtx.getUUID()); } } } diff --git a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/mythicmobs/MobDeath.java b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/mythicmobs/MobDeath.java index eff56731..d928124f 100644 --- a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/mythicmobs/MobDeath.java +++ b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/mythicmobs/MobDeath.java @@ -32,15 +32,15 @@ public void onMythicMobDeath(MythicMobDeathEvent e) { for (String customMob : mobs) { if (e.getMob().getType().getInternalName().equals(customMob)) { - EntityCtx getEntity = EntityCtx.of(e.getEntity().getUniqueId()); - if (getEntity != null) { - PlayerCtx damager = getEntity.getLastPlayerDamager(); - TextComponent[] mythicDeath = Assets.entityDeathMessage(getEntity, MobType.MYTHIC_MOB); + EntityCtx entityCtx = EntityCtx.of(e.getEntity().getUniqueId()); + if (entityCtx != null) { + PlayerCtx damagerCtx = entityCtx.getLastPlayerDamager(); + TextComponent[] mythicDeath = Assets.entityDeathMessage(entityCtx, MobType.MYTHIC_MOB); TextComponent oldMythicDeath = mythicDeath[0].append(mythicDeath[1]); // Dreeam TODO: Remove in 1.4.21 if (!ComponentUtil.isMessageEmpty(mythicDeath)) { BroadcastEntityDeathMessageEvent event = new BroadcastEntityDeathMessageEvent( - damager, + damagerCtx, e.getEntity(), MessageType.ENTITY, oldMythicDeath, diff --git a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/utils/Assets.java b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/utils/Assets.java index ab5e5be2..3d52e1cb 100644 --- a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/utils/Assets.java +++ b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/utils/Assets.java @@ -189,11 +189,11 @@ public static TextComponent[] playerDeathMessage(PlayerCtx pm, boolean gang) { } public static TextComponent[] entityDeathMessage(EntityCtx em, MobType mobType) { - PlayerCtx pm = em.getLastPlayerDamager(); + PlayerCtx damagerCtx = em.getLastPlayerDamager(); - if (pm == null) return ComponentUtil.empty(); + if (damagerCtx == null) return ComponentUtil.empty(); - Player p = pm.getPlayer(); + Player p = damagerCtx.getPlayer(); TextComponent[] components = ComponentUtil.empty(); if (Settings.getInstance().getConfig().getBoolean(Config.ADD_PREFIX_TO_ALL_MESSAGES.getPath())) { @@ -242,7 +242,7 @@ public static TextComponent[] entityDeathMessage(EntityCtx em, MobType mobType) } } - boolean hasWeapon = MaterialUtil.hasWeapon(p, pm.getLastDamageCause()); + boolean hasWeapon = MaterialUtil.hasWeapon(p, damagerCtx.getLastDamageCause()); if (hasWeapon) { if (em.getLastDamageCause().equals(EntityDamageEvent.DamageCause.ENTITY_ATTACK)) { From b501dd0885e470066311e35356d8753673c9738f Mon Sep 17 00:00:00 2001 From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com> Date: Mon, 9 Feb 2026 14:40:59 -0500 Subject: [PATCH 3/4] Remain rest of --- .../mrshawn/deathmessages/api/PlayerCtx.java | 6 +- .../events/BroadcastDeathMessageEvent.java | 3 +- .../BroadcastEntityDeathMessageEvent.java | 15 +- .../hooks/DiscordSRVExtension.java | 50 +-- .../BroadcastEntityDeathListener.java | 39 ++- .../BroadcastPlayerDeathListener.java | 24 +- .../mrshawn/deathmessages/utils/Assets.java | 300 +++++++++--------- .../deathmessages/utils/ComponentUtil.java | 6 +- .../dev/mrshawn/deathmessages/utils/Util.java | 14 +- 9 files changed, 228 insertions(+), 229 deletions(-) diff --git a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/api/PlayerCtx.java b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/api/PlayerCtx.java index a98db9ca..c09bac57 100644 --- a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/api/PlayerCtx.java +++ b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/api/PlayerCtx.java @@ -194,9 +194,9 @@ public void setInventory(Inventory inventory) { return PLAYER_CONTEXTS.get(uuid); } - public static void create(PlayerCtx playerContext) { - UUID uuid = playerContext.uuid; - PLAYER_CONTEXTS.put(uuid, playerContext); + public static void create(PlayerCtx playerCtx) { + UUID uuid = playerCtx.uuid; + PLAYER_CONTEXTS.put(uuid, playerCtx); } public static void remove(UUID uuid) { diff --git a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/api/events/BroadcastDeathMessageEvent.java b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/api/events/BroadcastDeathMessageEvent.java index 6b633527..76e65923 100644 --- a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/api/events/BroadcastDeathMessageEvent.java +++ b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/api/events/BroadcastDeathMessageEvent.java @@ -18,7 +18,8 @@ public class BroadcastDeathMessageEvent extends Event implements Cancellable { private final @Nullable LivingEntity livingEntity; private final MessageType messageType; private final TextComponent textComponent; - private final TextComponent[] textComponents; // 0: Prefix, 1: Message body + // 0: Prefix, 1: Message body + private final TextComponent[] textComponents; private final boolean isGangDeath; private final List broadcastedWorlds; private boolean isCancelled; diff --git a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/api/events/BroadcastEntityDeathMessageEvent.java b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/api/events/BroadcastEntityDeathMessageEvent.java index 506d5c84..f9bbee71 100644 --- a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/api/events/BroadcastEntityDeathMessageEvent.java +++ b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/api/events/BroadcastEntityDeathMessageEvent.java @@ -13,21 +13,22 @@ public class BroadcastEntityDeathMessageEvent extends Event implements Cancellable { - // The killer - private final PlayerCtx player; + // The killer context + private final PlayerCtx playerCtx; // The entity that was killed by a player private final Entity entity; private final MessageType messageType; private final TextComponent textComponent; - private final TextComponent[] textComponents; // 0: Prefix, 1: Message body + // 0: Prefix, 1: Message body + private final TextComponent[] textComponents; private final List broadcastedWorlds; private boolean isCancelled; private static final HandlerList HANDLERS = new HandlerList(); - public BroadcastEntityDeathMessageEvent(PlayerCtx pm, Entity entity, MessageType messageType, TextComponent textComponent, TextComponent[] textComponents, + public BroadcastEntityDeathMessageEvent(PlayerCtx playerCtx, Entity entity, MessageType messageType, TextComponent textComponent, TextComponent[] textComponents, List broadcastedWorlds) { - this.player = pm; + this.playerCtx = playerCtx; this.entity = entity; this.messageType = messageType; this.textComponent = textComponent; @@ -55,8 +56,8 @@ public static HandlerList getHandlerList() { return HANDLERS; } - public PlayerCtx getPlayer() { - return this.player; + public PlayerCtx getPlayerContext() { + return this.playerCtx; } public Entity getEntity() { diff --git a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/hooks/DiscordSRVExtension.java b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/hooks/DiscordSRVExtension.java index 2330637c..4945225a 100644 --- a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/hooks/DiscordSRVExtension.java +++ b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/hooks/DiscordSRVExtension.java @@ -30,7 +30,7 @@ public class DiscordSRVExtension { public DiscordSRVExtension() { } - public void sendDiscordMessage(TextComponent[] components, MessageType messageType, PlayerCtx pm) { + public void sendDiscordMessage(TextComponent[] components, MessageType messageType, PlayerCtx playerCtx) { final List channels = DiscordAssets.getInstance().getIDs(messageType); for (String groups : channels) { @@ -72,19 +72,19 @@ public void sendDiscordMessage(TextComponent[] components, MessageType messageTy } if (getMessages().getString("Discord.DeathMessage.Text").isEmpty()) { - textChannel.sendMessage(buildMessage(pm, message)).queue(); + textChannel.sendMessage(buildMessage(playerCtx, message)).queue(); } else { String[] spl = getMessages().getString("Discord.DeathMessage.Text").split("\\\\n"); StringBuilder sb = new StringBuilder(); for (String s : spl) { sb.append(s + "\n"); } - if (pm.getLastEntityDamager() instanceof FallingBlock) { - textChannel.sendMessage(Util.convertToLegacy(Assets.playerDeathPlaceholders(Util.convertFromLegacy(sb.toString()), pm, null) + if (playerCtx.getLastEntityDamager() instanceof FallingBlock) { + textChannel.sendMessage(Util.convertToLegacy(Assets.playerDeathPlaceholders(Util.convertFromLegacy(sb.toString()), playerCtx, null) .replaceText(TextReplacementConfig.builder().matchLiteral("%message%").replacement(message).build()))) .queue(); } else { - textChannel.sendMessage(Util.convertToLegacy(Assets.playerDeathPlaceholders(Util.convertFromLegacy(sb.toString()), pm, pm.getLastEntityDamager()) + textChannel.sendMessage(Util.convertToLegacy(Assets.playerDeathPlaceholders(Util.convertFromLegacy(sb.toString()), playerCtx, playerCtx.getLastEntityDamager()) .replaceText(TextReplacementConfig.builder().matchLiteral("%message%").replacement(message).build()))) .queue(); } @@ -92,7 +92,7 @@ public void sendDiscordMessage(TextComponent[] components, MessageType messageTy } } - public void sendEntityDiscordMessage(TextComponent[] components, MessageType messageType, PlayerCtx pm, Entity entity, boolean hasOwner) { + public void sendEntityDiscordMessage(TextComponent[] components, MessageType messageType, PlayerCtx playerCtx, Entity entity, boolean hasOwner) { final List channels = DiscordAssets.getInstance().getIDs(messageType); for (String groups : channels) { @@ -129,7 +129,7 @@ public void sendEntityDiscordMessage(TextComponent[] components, MessageType mes } if (getMessages().getString("Discord.DeathMessage.Text").isEmpty()) { - textChannel.sendMessage(buildMessage(message, pm.getPlayer(), entity, hasOwner)) + textChannel.sendMessage(buildMessage(message, playerCtx.getPlayer(), entity, hasOwner)) .queue(); } else { String[] spl = getMessages().getString("Discord.DeathMessage.Text").split("\\\\n"); @@ -138,12 +138,12 @@ public void sendEntityDiscordMessage(TextComponent[] components, MessageType mes sb.append(s + "\n"); } - if (pm.getLastEntityDamager() instanceof FallingBlock) { - textChannel.sendMessage(Util.convertToLegacy(Assets.playerDeathPlaceholders(Util.convertFromLegacy(sb.toString()), pm, null) + if (playerCtx.getLastEntityDamager() instanceof FallingBlock) { + textChannel.sendMessage(Util.convertToLegacy(Assets.playerDeathPlaceholders(Util.convertFromLegacy(sb.toString()), playerCtx, null) .replaceText(TextReplacementConfig.builder().matchLiteral("%message%").replacement(message).build()))) .queue(); } else { - textChannel.sendMessage(Util.convertToLegacy(Assets.playerDeathPlaceholders(Util.convertFromLegacy(sb.toString()), pm, pm.getLastEntityDamager()) + textChannel.sendMessage(Util.convertToLegacy(Assets.playerDeathPlaceholders(Util.convertFromLegacy(sb.toString()), playerCtx, playerCtx.getLastEntityDamager()) .replaceText(TextReplacementConfig.builder().matchLiteral("%message%").replacement(message).build()))) .queue(); } @@ -151,7 +151,7 @@ public void sendEntityDiscordMessage(TextComponent[] components, MessageType mes } } - private MessageEmbed buildMessage(PlayerCtx pm, String message) { + private MessageEmbed buildMessage(PlayerCtx playerCtx, String message) { EmbedBuilder eb = new EmbedBuilder(); eb.setColor(getDeathMessageColor()); @@ -159,11 +159,11 @@ private MessageEmbed buildMessage(PlayerCtx pm, String message) { String name = getMessages().getString("Discord.DeathMessage.Author.Name") .replaceAll("%message%", message); String url = getMessages().getString("Discord.DeathMessage.Author.URL") - .replaceAll("%uuid%", pm.getUUID().toString()) - .replaceAll("%username%", pm.getName()); + .replaceAll("%uuid%", playerCtx.getUUID().toString()) + .replaceAll("%username%", playerCtx.getName()); String iconURL = getMessages().getString("Discord.DeathMessage.Author.Icon-URL") - .replaceAll("%uuid%", pm.getUUID().toString()) - .replaceAll("%username%", pm.getName()); + .replaceAll("%uuid%", playerCtx.getUUID().toString()) + .replaceAll("%username%", playerCtx.getName()); if (!url.startsWith("http") && iconURL.startsWith("http")) { eb.setAuthor(name, null, iconURL); @@ -179,30 +179,30 @@ private MessageEmbed buildMessage(PlayerCtx pm, String message) { if (getMessages().getString("Discord.DeathMessage.Image").startsWith("http")) { eb.setThumbnail(getMessages().getString("Discord.DeathMessage.Image") - .replaceAll("%uuid%", pm.getUUID().toString()) - .replaceAll("%username%", pm.getName())); + .replaceAll("%uuid%", playerCtx.getUUID().toString()) + .replaceAll("%username%", playerCtx.getName())); } - String title = Util.convertToLegacy(Assets.playerDeathPlaceholders(Util.convertFromLegacy(getMessages().getString("Discord.DeathMessage.Title")), pm, pm.getLastEntityDamager()) + String title = Util.convertToLegacy(Assets.playerDeathPlaceholders(Util.convertFromLegacy(getMessages().getString("Discord.DeathMessage.Title")), playerCtx, playerCtx.getLastEntityDamager()) .replaceText(TextReplacementConfig.builder().matchLiteral("%message%").replacement(message).build())); if (!title.equalsIgnoreCase("")) { eb.setTitle(title); } - String description = Util.convertToLegacy(Assets.playerDeathPlaceholders(Util.convertFromLegacy(getMessages().getString("Discord.DeathMessage.Description")), pm, pm.getLastEntityDamager()) + String description = Util.convertToLegacy(Assets.playerDeathPlaceholders(Util.convertFromLegacy(getMessages().getString("Discord.DeathMessage.Description")), playerCtx, playerCtx.getLastEntityDamager()) .replaceText(TextReplacementConfig.builder().matchLiteral("%message%").replacement(message).build())); if (!description.equalsIgnoreCase("")) { eb.setDescription(description); } - String footerText = Util.convertToLegacy(Assets.playerDeathPlaceholders(Util.convertFromLegacy(getMessages().getString("Discord.DeathMessage.Footer.Text")), pm, pm.getLastEntityDamager()) + String footerText = Util.convertToLegacy(Assets.playerDeathPlaceholders(Util.convertFromLegacy(getMessages().getString("Discord.DeathMessage.Footer.Text")), playerCtx, playerCtx.getLastEntityDamager()) .replaceText(TextReplacementConfig.builder().matchLiteral("%message%").replacement(message).build())); - String footerIcon = Util.convertToLegacy(Assets.playerDeathPlaceholders(Util.convertFromLegacy(getMessages().getString("Discord.DeathMessage.Footer.Icon-URL")), pm, pm.getLastEntityDamager()) + String footerIcon = Util.convertToLegacy(Assets.playerDeathPlaceholders(Util.convertFromLegacy(getMessages().getString("Discord.DeathMessage.Footer.Icon-URL")), playerCtx, playerCtx.getLastEntityDamager()) .replaceText(TextReplacementConfig.builder().matchLiteral("%message%").replacement(message).build()) - .replaceText(TextReplacementConfig.builder().matchLiteral("%uuid%").replacement(pm.getUUID().toString()).build()) - .replaceText(TextReplacementConfig.builder().matchLiteral("%username%").replacement(pm.getName()).build())); + .replaceText(TextReplacementConfig.builder().matchLiteral("%uuid%").replacement(playerCtx.getUUID().toString()).build()) + .replaceText(TextReplacementConfig.builder().matchLiteral("%username%").replacement(playerCtx.getName()).build())); if (!footerText.equalsIgnoreCase("") && footerIcon.startsWith("http")) { eb.setFooter(footerText, footerIcon); @@ -223,9 +223,9 @@ private MessageEmbed buildMessage(PlayerCtx pm, String message) { eb.addBlankField(b); } else { boolean b = Boolean.parseBoolean(conSpl[2]); - String header = Util.convertToLegacy(Assets.playerDeathPlaceholders(Util.convertFromLegacy(conSpl[0]), pm, pm.getLastEntityDamager()) + String header = Util.convertToLegacy(Assets.playerDeathPlaceholders(Util.convertFromLegacy(conSpl[0]), playerCtx, playerCtx.getLastEntityDamager()) .replaceText(TextReplacementConfig.builder().matchLiteral("%message%").replacement(message).build())); - String subHeader = Util.convertToLegacy(Assets.playerDeathPlaceholders(Util.convertFromLegacy(conSpl[1]), pm, pm.getLastEntityDamager()) + String subHeader = Util.convertToLegacy(Assets.playerDeathPlaceholders(Util.convertFromLegacy(conSpl[1]), playerCtx, playerCtx.getLastEntityDamager()) .replaceText(TextReplacementConfig.builder().matchLiteral("%message%").replacement(message).build())); eb.addField(header, subHeader, b); } diff --git a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/customlisteners/BroadcastEntityDeathListener.java b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/customlisteners/BroadcastEntityDeathListener.java index 7fbea4d9..2005bccf 100644 --- a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/customlisteners/BroadcastEntityDeathListener.java +++ b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/customlisteners/BroadcastEntityDeathListener.java @@ -27,7 +27,7 @@ public class BroadcastEntityDeathListener implements Listener { @EventHandler public void broadcastListener(BroadcastEntityDeathMessageEvent e) { - final PlayerCtx pm = e.getPlayer(); + final PlayerCtx playerCtx = e.getPlayerContext(); final Entity entity = e.getEntity(); final boolean hasOwner = EntityUtil.hasOwner(entity); final TextComponent[] components = e.getTextComponents(); @@ -37,7 +37,7 @@ public void broadcastListener(BroadcastEntityDeathMessageEvent e) { if (Messages.getInstance().getConfig().getBoolean("Console.Enabled")) { Component rawMessage = Util.convertFromLegacy(Messages.getInstance().getConfig().getString("Console.Message")); - Component consoleMessage = Assets.entityDeathPlaceholders(rawMessage, pm.getPlayer(), entity, hasOwner) + Component consoleMessage = Assets.entityDeathPlaceholders(rawMessage, playerCtx.getPlayer(), entity, hasOwner) .replaceText(TextReplacementConfig.builder() .matchLiteral("%message%") .replacement(message) @@ -46,10 +46,10 @@ public void broadcastListener(BroadcastEntityDeathMessageEvent e) { ComponentUtil.sendConsoleMessage(consoleMessage); } - if (pm.isInCooldown()) { + if (playerCtx.isInCooldown()) { return; } else { - pm.setCooldown(); + playerCtx.setCooldown(); } final boolean privateTameable = FileStore.CONFIG.getBoolean(Config.PRIVATE_MESSAGES_MOBS); @@ -60,27 +60,27 @@ public void broadcastListener(BroadcastEntityDeathMessageEvent e) { continue; } - for (Player player : world.getPlayers()) { - PlayerCtx playerCtx = PlayerCtx.of(player.getUniqueId()); + for (Player otherPlayer : world.getPlayers()) { + PlayerCtx otherPlayerCtx = PlayerCtx.of(otherPlayer.getUniqueId()); if (privateTameable) { - if (playerCtx != null) { - if (playerCtx.getUUID().equals(pm.getUUID())) { - if (playerCtx.isMessageEnabled()) { - player.sendMessage(message); + if (otherPlayerCtx != null) { + if (otherPlayerCtx.getUUID().equals(playerCtx.getUUID())) { + if (otherPlayerCtx.isMessageEnabled()) { + otherPlayer.sendMessage(message); } } } } else { - if (playerCtx != null) { - if (playerCtx.isMessageEnabled()) { + if (otherPlayerCtx != null) { + if (otherPlayerCtx.isMessageEnabled()) { if (DeathMessages.getHooks().worldGuardExtension != null) { - if (DeathMessages.getHooks().worldGuardExtension.denyFromRegion(player, e.getMessageType().getValue())) { + if (DeathMessages.getHooks().worldGuardExtension.denyFromRegion(otherPlayer, e.getMessageType().getValue())) { return; } } - player.sendMessage(message); - PluginMessaging.sendPluginMSG(playerCtx.getPlayer(), Util.convertToLegacy(message)); + otherPlayer.sendMessage(message); + PluginMessaging.sendPluginMSG(otherPlayerCtx.getPlayer(), Util.convertToLegacy(message)); } } @@ -103,7 +103,7 @@ public void broadcastListener(BroadcastEntityDeathMessageEvent e) { DeathMessages.getHooks().discordSRVExtension.sendEntityDiscordMessage( components, e.getMessageType(), - pm, + playerCtx, entity, hasOwner ); @@ -113,10 +113,7 @@ public void broadcastListener(BroadcastEntityDeathMessageEvent e) { } } - PluginMessaging.sendPluginMSG(e.getPlayer().getPlayer(), Util.convertToLegacy(message)); - EntityCtx entityCtx = EntityCtx.of(entity.getUniqueId()); - if (entityCtx != null) { - EntityCtx.remove(entityCtx.getUUID()); - } + PluginMessaging.sendPluginMSG(e.getPlayerContext().getPlayer(), Util.convertToLegacy(message)); + EntityCtx.remove(entity.getUniqueId()); } } diff --git a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/customlisteners/BroadcastPlayerDeathListener.java b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/customlisteners/BroadcastPlayerDeathListener.java index 587ad945..de478cc9 100644 --- a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/customlisteners/BroadcastPlayerDeathListener.java +++ b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/listeners/customlisteners/BroadcastPlayerDeathListener.java @@ -66,29 +66,29 @@ public void broadcastListener(BroadcastDeathMessageEvent e) { continue; } - for (Player player : world.getPlayers()) { - PlayerCtx otherPlayerCtx = PlayerCtx.of(player.getUniqueId()); + for (Player otherPlayer : world.getPlayers()) { + PlayerCtx otherPlayerCtx = PlayerCtx.of(otherPlayer.getUniqueId()); if (otherPlayerCtx == null) continue; if (e.getMessageType().equals(MessageType.PLAYER)) { if (privatePlayer && (e.getPlayer().getUniqueId().equals(otherPlayerCtx.getUUID()) || e.getLivingEntity().getUniqueId().equals(otherPlayerCtx.getUUID()))) { - normal(e, components, message, otherPlayerCtx, player, e.getBroadcastedWorlds()); + normal(e, components, message, otherPlayerCtx, otherPlayer, e.getBroadcastedWorlds()); } else if (!privatePlayer) { - normal(e, components, message, otherPlayerCtx, player, e.getBroadcastedWorlds()); + normal(e, components, message, otherPlayerCtx, otherPlayer, e.getBroadcastedWorlds()); } } else if (e.getMessageType().equals(MessageType.MOB)) { if (privateMobs && e.getPlayer().getUniqueId().equals(otherPlayerCtx.getUUID())) { - normal(e, components, message, otherPlayerCtx, player, e.getBroadcastedWorlds()); + normal(e, components, message, otherPlayerCtx, otherPlayer, e.getBroadcastedWorlds()); } else if (!privateMobs) { - normal(e, components, message, otherPlayerCtx, player, e.getBroadcastedWorlds()); + normal(e, components, message, otherPlayerCtx, otherPlayer, e.getBroadcastedWorlds()); } } else if (e.getMessageType().equals(MessageType.NATURAL)) { if (privateNatural && e.getPlayer().getUniqueId().equals(otherPlayerCtx.getUUID())) { - normal(e, components, message, otherPlayerCtx, player, e.getBroadcastedWorlds()); + normal(e, components, message, otherPlayerCtx, otherPlayer, e.getBroadcastedWorlds()); } else if (!privateNatural) { - normal(e, components, message, otherPlayerCtx, player, e.getBroadcastedWorlds()); + normal(e, components, message, otherPlayerCtx, otherPlayer, e.getBroadcastedWorlds()); } } } @@ -97,16 +97,16 @@ public void broadcastListener(BroadcastDeathMessageEvent e) { PluginMessaging.sendPluginMSG(e.getPlayer(), Util.convertToLegacy(message)); } - private void normal(BroadcastDeathMessageEvent e, TextComponent[] components, TextComponent message, PlayerCtx pm, Player player, List worlds) { + private void normal(BroadcastDeathMessageEvent e, TextComponent[] components, TextComponent message, PlayerCtx otherPlayerCtx, Player otherPlayer, List worlds) { if (DeathMessages.getHooks().worldGuardExtension != null) { - if (DeathMessages.getHooks().worldGuardExtension.denyFromRegion(player, e.getMessageType().getValue()) + if (DeathMessages.getHooks().worldGuardExtension.denyFromRegion(otherPlayer, e.getMessageType().getValue()) || DeathMessages.getHooks().worldGuardExtension.denyFromRegion(e.getPlayer(), e.getMessageType().getValue())) { return; } } - if (pm.isMessageEnabled()) { - player.sendMessage(message); + if (otherPlayerCtx.isMessageEnabled()) { + otherPlayer.sendMessage(message); } if (FileStore.CONFIG.getBoolean(Config.HOOKS_DISCORD_WORLD_WHITELIST_ENABLED)) { diff --git a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/utils/Assets.java b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/utils/Assets.java index 3d52e1cb..26f457a7 100644 --- a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/utils/Assets.java +++ b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/utils/Assets.java @@ -57,7 +57,7 @@ public class Assets { // Dreeam TODO - to figure out why the value defined in private static field will not change with the change of the config value //private static final CommentedConfiguration config = Settings.getInstance().getConfig(); - public static TextComponent[] playerNatureDeathMessage(PlayerCtx pm, Player player) { + public static TextComponent[] playerNatureDeathMessage(PlayerCtx playerCtx, Player player) { TextComponent[] components = ComponentUtil.empty(); if (Settings.getInstance().getConfig().getBoolean(Config.ADD_PREFIX_TO_ALL_MESSAGES.getPath())) { @@ -66,47 +66,47 @@ public static TextComponent[] playerNatureDeathMessage(PlayerCtx pm, Player play } // Natural Death - if (pm.getLastExplosiveEntity() instanceof EnderCrystal) { - components[1] = Assets.getNaturalDeath(pm, "End-Crystal"); - } else if (pm.getLastExplosiveEntity() instanceof TNTPrimed) { - components[1] = Assets.getNaturalDeath(pm, "TNT"); - } else if (pm.getLastExplosiveEntity() instanceof Firework) { - components[1] = Assets.getNaturalDeath(pm, "Firework"); - } else if (pm.getLastDamageCause().equals(EntityDamageEvent.DamageCause.FALL)) { - components[1] = Assets.getNaturalDeath(pm, "Climbable"); - } else if (pm.getLastDamageCause().equals(EntityDamageEvent.DamageCause.BLOCK_EXPLOSION)) { + if (playerCtx.getLastExplosiveEntity() instanceof EnderCrystal) { + components[1] = Assets.getNaturalDeath(playerCtx, "End-Crystal"); + } else if (playerCtx.getLastExplosiveEntity() instanceof TNTPrimed) { + components[1] = Assets.getNaturalDeath(playerCtx, "TNT"); + } else if (playerCtx.getLastExplosiveEntity() instanceof Firework) { + components[1] = Assets.getNaturalDeath(playerCtx, "Firework"); + } else if (playerCtx.getLastDamageCause().equals(EntityDamageEvent.DamageCause.FALL)) { + components[1] = Assets.getNaturalDeath(playerCtx, "Climbable"); + } else if (playerCtx.getLastDamageCause().equals(EntityDamageEvent.DamageCause.BLOCK_EXPLOSION)) { ExplosionManager explosion = ExplosionManager.getManagerIfEffected(player.getUniqueId()); if (explosion != null) { if (explosion.getMaterial().name().contains("BED")) { - components[1] = Assets.getNaturalDeath(pm, "Bed"); + components[1] = Assets.getNaturalDeath(playerCtx, "Bed"); } if (explosion.getMaterial().equals(Material.RESPAWN_ANCHOR)) { - components[1] = Assets.getNaturalDeath(pm, "Respawn-Anchor"); + components[1] = Assets.getNaturalDeath(playerCtx, "Respawn-Anchor"); } // Dreeam TODO: Check weather needs to handle unknow explosion to prevent potential empty death message } - } else if (pm.getLastDamageCause().equals(EntityDamageEvent.DamageCause.PROJECTILE)) { - components[1] = Assets.getNaturalDeath(pm, Assets.getSimpleProjectile(pm.getLastProjectileEntity())); - } else if (Util.isOlderAndEqual(999, 999) && pm.getLastEntityDamager() instanceof AreaEffectCloud) { // Fix MC-84595 - Killed by Dragon's Breath - AreaEffectCloud cloud = (AreaEffectCloud) pm.getLastEntityDamager(); + } else if (playerCtx.getLastDamageCause().equals(EntityDamageEvent.DamageCause.PROJECTILE)) { + components[1] = Assets.getNaturalDeath(playerCtx, Assets.getSimpleProjectile(playerCtx.getLastProjectileEntity())); + } else if (Util.isOlderAndEqual(999, 999) && playerCtx.getLastEntityDamager() instanceof AreaEffectCloud) { // Fix MC-84595 - Killed by Dragon's Breath + AreaEffectCloud cloud = (AreaEffectCloud) playerCtx.getLastEntityDamager(); if (cloud.getSource() instanceof EnderDragon) { - pm.setLastDamageCause( + playerCtx.setLastDamageCause( Settings.getInstance().getConfig().getBoolean(Config.FIX_MC_84595.getPath()) ? EntityDamageEvent.DamageCause.DRAGON_BREATH : EntityDamageEvent.DamageCause.ENTITY_ATTACK ); } - components[1] = Assets.getNaturalDeath(pm, Assets.getSimpleCause(pm.getLastDamageCause())); + components[1] = Assets.getNaturalDeath(playerCtx, Assets.getSimpleCause(playerCtx.getLastDamageCause())); } else { - components[1] = Assets.getNaturalDeath(pm, Assets.getSimpleCause(pm.getLastDamageCause())); + components[1] = Assets.getNaturalDeath(playerCtx, Assets.getSimpleCause(playerCtx.getLastDamageCause())); } return components; } - public static TextComponent[] playerDeathMessage(PlayerCtx pm, boolean gang) { - LivingEntity mob = (LivingEntity) pm.getLastEntityDamager(); + public static TextComponent[] playerDeathMessage(PlayerCtx playerCtx, boolean gang) { + LivingEntity mob = (LivingEntity) playerCtx.getLastEntityDamager(); TextComponent[] components = ComponentUtil.empty(); if (Settings.getInstance().getConfig().getBoolean(Config.ADD_PREFIX_TO_ALL_MESSAGES.getPath())) { @@ -114,72 +114,72 @@ public static TextComponent[] playerDeathMessage(PlayerCtx pm, boolean gang) { components[0] = prefix; } - if (pm.getLastDamageCause().equals(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION)) { - switch (pm.getLastExplosiveEntity()) { + if (playerCtx.getLastDamageCause().equals(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION)) { + switch (playerCtx.getLastExplosiveEntity()) { case EnderCrystal ignored -> { - components[1] = get(gang, pm, mob, "End-Crystal"); + components[1] = get(gang, playerCtx, mob, "End-Crystal"); return components; } case TNTPrimed ignored -> { - components[1] = get(gang, pm, mob, "TNT"); + components[1] = get(gang, playerCtx, mob, "TNT"); return components; } case Firework ignored -> { - components[1] = get(gang, pm, mob, "Firework"); + components[1] = get(gang, playerCtx, mob, "Firework"); return components; } case null, default -> { - components[1] = get(gang, pm, mob, getSimpleCause(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION)); + components[1] = get(gang, playerCtx, mob, getSimpleCause(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION)); return components; } } } - if (pm.getLastDamageCause().equals(EntityDamageEvent.DamageCause.BLOCK_EXPLOSION)) { - ExplosionManager explosionManager = ExplosionManager.getManagerIfEffected(pm.getUUID()); + if (playerCtx.getLastDamageCause().equals(EntityDamageEvent.DamageCause.BLOCK_EXPLOSION)) { + ExplosionManager explosionManager = ExplosionManager.getManagerIfEffected(playerCtx.getUUID()); if (explosionManager != null) { PlayerCtx pyroCtx = PlayerCtx.of(explosionManager.getPyro()); if (pyroCtx != null) { // Bed kill if (explosionManager.getMaterial().name().contains("BED")) { - components[1] = get(gang, pm, pyroCtx.getPlayer(), "Bed"); + components[1] = get(gang, playerCtx, pyroCtx.getPlayer(), "Bed"); return components; } // Respawn Anchor kill if (explosionManager.getMaterial().equals(Material.RESPAWN_ANCHOR)) { - components[1] = get(gang, pm, pyroCtx.getPlayer(), "Respawn-Anchor"); + components[1] = get(gang, playerCtx, pyroCtx.getPlayer(), "Respawn-Anchor"); return components; } } } } - boolean hasWeapon = MaterialUtil.hasWeapon(mob, pm.getLastDamageCause()); + boolean hasWeapon = MaterialUtil.hasWeapon(mob, playerCtx.getLastDamageCause()); if (hasWeapon) { - if (pm.getLastDamageCause().equals(EntityDamageEvent.DamageCause.ENTITY_ATTACK)) { - components[1] = getWeapon(gang, pm, mob); + if (playerCtx.getLastDamageCause().equals(EntityDamageEvent.DamageCause.ENTITY_ATTACK)) { + components[1] = getWeapon(gang, playerCtx, mob); return components; } - if (pm.getLastDamageCause().equals(EntityDamageEvent.DamageCause.PROJECTILE) && pm.getLastProjectileEntity() instanceof Arrow) { - components[1] = getProjectile(gang, pm, mob, getSimpleProjectile(pm.getLastProjectileEntity())); + if (playerCtx.getLastDamageCause().equals(EntityDamageEvent.DamageCause.PROJECTILE) && playerCtx.getLastProjectileEntity() instanceof Arrow) { + components[1] = getProjectile(gang, playerCtx, mob, getSimpleProjectile(playerCtx.getLastProjectileEntity())); return components; } - components[1] = get(gang, pm, mob, getSimpleCause(EntityDamageEvent.DamageCause.ENTITY_ATTACK)); + components[1] = get(gang, playerCtx, mob, getSimpleCause(EntityDamageEvent.DamageCause.ENTITY_ATTACK)); return components; } else { - // Dreeam TODO: idk why there is for loop used to if (pm.getLastDamage().equals(dc)), no need, waste performance.. + // Dreeam TODO: idk why there is for loop used to if (playerCtx.getLastDamageCause().equals(dc)), no need, waste performance.. for (EntityDamageEvent.DamageCause dc : EntityDamageEvent.DamageCause.values()) { - if (pm.getLastDamageCause().equals(EntityDamageEvent.DamageCause.PROJECTILE)) { - components[1] = getProjectile(gang, pm, mob, getSimpleProjectile(pm.getLastProjectileEntity())); + if (playerCtx.getLastDamageCause().equals(EntityDamageEvent.DamageCause.PROJECTILE)) { + components[1] = getProjectile(gang, playerCtx, mob, getSimpleProjectile(playerCtx.getLastProjectileEntity())); return components; } - if (pm.getLastDamageCause().equals(dc)) { - components[1] = get(gang, pm, mob, getSimpleCause(dc)); + if (playerCtx.getLastDamageCause().equals(dc)) { + components[1] = get(gang, playerCtx, mob, getSimpleCause(dc)); return components; } } @@ -188,8 +188,8 @@ public static TextComponent[] playerDeathMessage(PlayerCtx pm, boolean gang) { } } - public static TextComponent[] entityDeathMessage(EntityCtx em, MobType mobType) { - PlayerCtx damagerCtx = em.getLastPlayerDamager(); + public static TextComponent[] entityDeathMessage(EntityCtx entityCtx, MobType mobType) { + PlayerCtx damagerCtx = entityCtx.getLastPlayerDamager(); if (damagerCtx == null) return ComponentUtil.empty(); @@ -201,41 +201,41 @@ public static TextComponent[] entityDeathMessage(EntityCtx em, MobType mobType) components[0] = prefix; } - if (em.getLastDamageCause().equals(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION)) { - switch (em.getLastExplosiveEntity()) { + if (entityCtx.getLastDamageCause().equals(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION)) { + switch (entityCtx.getLastExplosiveEntity()) { case EnderCrystal ignored -> { - components[1] = getEntityDeath(p, em.getEntity(), "End-Crystal", mobType); + components[1] = getEntityDeath(p, entityCtx.getEntity(), "End-Crystal", mobType); return components; } case TNTPrimed ignored -> { - components[1] = getEntityDeath(p, em.getEntity(), "TNT", mobType); + components[1] = getEntityDeath(p, entityCtx.getEntity(), "TNT", mobType); return components; } case Firework ignored -> { - components[1] = getEntityDeath(p, em.getEntity(), "Firework", mobType); + components[1] = getEntityDeath(p, entityCtx.getEntity(), "Firework", mobType); return components; } case null, default -> { - components[1] = getEntityDeath(p, em.getEntity(), getSimpleCause(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION), mobType); + components[1] = getEntityDeath(p, entityCtx.getEntity(), getSimpleCause(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION), mobType); return components; } } } - if (em.getLastDamageCause().equals(EntityDamageEvent.DamageCause.BLOCK_EXPLOSION)) { - ExplosionManager explosionManager = ExplosionManager.getManagerIfEffected(em.getUUID()); + if (entityCtx.getLastDamageCause().equals(EntityDamageEvent.DamageCause.BLOCK_EXPLOSION)) { + ExplosionManager explosionManager = ExplosionManager.getManagerIfEffected(entityCtx.getUUID()); if (explosionManager != null) { PlayerCtx pyroCtx = PlayerCtx.of(explosionManager.getPyro()); if (pyroCtx != null) { // Bed kill if (explosionManager.getMaterial().name().contains("BED")) { - components[1] = getEntityDeath(pyroCtx.getPlayer(), em.getEntity(), "Bed", mobType); + components[1] = getEntityDeath(pyroCtx.getPlayer(), entityCtx.getEntity(), "Bed", mobType); return components; } // Respawn Anchor kill if (explosionManager.getMaterial().equals(Material.RESPAWN_ANCHOR)) { - components[1] = getEntityDeath(pyroCtx.getPlayer(), em.getEntity(), "Respawn-Anchor", mobType); + components[1] = getEntityDeath(pyroCtx.getPlayer(), entityCtx.getEntity(), "Respawn-Anchor", mobType); return components; } } @@ -245,27 +245,27 @@ public static TextComponent[] entityDeathMessage(EntityCtx em, MobType mobType) boolean hasWeapon = MaterialUtil.hasWeapon(p, damagerCtx.getLastDamageCause()); if (hasWeapon) { - if (em.getLastDamageCause().equals(EntityDamageEvent.DamageCause.ENTITY_ATTACK)) { - components[1] = getEntityDeathWeapon(p, em.getEntity(), mobType); + if (entityCtx.getLastDamageCause().equals(EntityDamageEvent.DamageCause.ENTITY_ATTACK)) { + components[1] = getEntityDeathWeapon(p, entityCtx.getEntity(), mobType); return components; } - if (em.getLastDamageCause().equals(EntityDamageEvent.DamageCause.PROJECTILE) && em.getLastProjectileEntity() instanceof Arrow) { - components[1] = getEntityDeathProjectile(p, em, getSimpleProjectile(em.getLastProjectileEntity()), mobType); + if (entityCtx.getLastDamageCause().equals(EntityDamageEvent.DamageCause.PROJECTILE) && entityCtx.getLastProjectileEntity() instanceof Arrow) { + components[1] = getEntityDeathProjectile(p, entityCtx, getSimpleProjectile(entityCtx.getLastProjectileEntity()), mobType); return components; } - components[1] = getEntityDeathWeapon(p, em.getEntity(), mobType); + components[1] = getEntityDeathWeapon(p, entityCtx.getEntity(), mobType); return components; } else { for (EntityDamageEvent.DamageCause dc : EntityDamageEvent.DamageCause.values()) { - if (em.getLastDamageCause().equals(EntityDamageEvent.DamageCause.PROJECTILE)) { - components[1] = getEntityDeathProjectile(p, em, getSimpleProjectile(em.getLastProjectileEntity()), mobType); + if (entityCtx.getLastDamageCause().equals(EntityDamageEvent.DamageCause.PROJECTILE)) { + components[1] = getEntityDeathProjectile(p, entityCtx, getSimpleProjectile(entityCtx.getLastProjectileEntity()), mobType); return components; } - if (em.getLastDamageCause().equals(dc)) { - components[1] = getEntityDeath(p, em.getEntity(), getSimpleCause(dc), mobType); + if (entityCtx.getLastDamageCause().equals(dc)) { + components[1] = getEntityDeath(p, entityCtx.getEntity(), getSimpleCause(dc), mobType); return components; } } @@ -274,15 +274,15 @@ public static TextComponent[] entityDeathMessage(EntityCtx em, MobType mobType) } } - public static TextComponent getNaturalDeath(PlayerCtx pm, String damageCause) { - List msgs = sortList(getPlayerDeathMessages().getStringList("Natural-Cause." + damageCause), pm.getPlayer(), pm.getPlayer()); + public static TextComponent getNaturalDeath(PlayerCtx playerCtx, String damageCause) { + List msgs = sortList(getPlayerDeathMessages().getStringList("Natural-Cause." + damageCause), playerCtx.getPlayer(), playerCtx.getPlayer()); if (Settings.getInstance().getConfig().getBoolean(Config.DEBUG.getPath())) DeathMessages.LOGGER.warn("node: [Natural-Cause.{}]", damageCause); if (msgs.isEmpty()) { DeathMessages.LOGGER.warn("Can't find message node: [Natural-Cause.{}] in PlayerDeathMessages.yml", damageCause); DeathMessages.LOGGER.warn("This should not happen, please check your config or report issue on Github"); - msgs = sortList(getPlayerDeathMessages().getStringList("Natural-Cause.Unknown"), pm.getPlayer(), pm.getPlayer()); + msgs = sortList(getPlayerDeathMessages().getStringList("Natural-Cause.Unknown"), playerCtx.getPlayer(), playerCtx.getPlayer()); DeathMessages.LOGGER.warn("Fallback this death to [Natural-Cause.Unknown] message node"); } @@ -291,9 +291,9 @@ public static TextComponent getNaturalDeath(PlayerCtx pm, String damageCause) { List rawEvents = new ArrayList<>(); msg = ComponentUtil.sortHoverEvents(msg, rawEvents); - if (msg.contains("%block%") && pm.getLastEntityDamager() instanceof FallingBlock) { + if (msg.contains("%block%") && playerCtx.getLastEntityDamager() instanceof FallingBlock) { try { - FallingBlock fb = (FallingBlock) pm.getLastEntityDamager(); + FallingBlock fb = (FallingBlock) playerCtx.getLastEntityDamager(); String material = fb.getBlockData().getMaterial().toString().toLowerCase(); String configValue = Messages.getInstance().getConfig().getString("Blocks." + material); @@ -301,27 +301,27 @@ public static TextComponent getNaturalDeath(PlayerCtx pm, String damageCause) { } catch (NullPointerException e) { DeathMessages.LOGGER.error("Could not parse %block%. Please check your config for a wrong value." + " Your materials could be spelt wrong or it does not exists in the config. Open a issue if you need help, " + "https://github.com/Winds-Studio/DeathMessages/issues"); - pm.setLastEntityDamager(null); - return getNaturalDeath(pm, getSimpleCause(EntityDamageEvent.DamageCause.SUFFOCATION)); + playerCtx.setLastEntityDamager(null); + return getNaturalDeath(playerCtx, getSimpleCause(EntityDamageEvent.DamageCause.SUFFOCATION)); } - } else if (msg.contains("%climbable%") && pm.getLastDamageCause().equals(EntityDamageEvent.DamageCause.FALL)) { + } else if (msg.contains("%climbable%") && playerCtx.getLastDamageCause().equals(EntityDamageEvent.DamageCause.FALL)) { try { - String material = pm.getLastClimbing().toString().toLowerCase(); + String material = playerCtx.getLastClimbing().toString().toLowerCase(); String configValue = Messages.getInstance().getConfig().getString("Blocks." + material); base.append(Util.convertFromLegacy(msg.replaceAll("%climbable%", configValue))); } catch (NullPointerException e) { - pm.setLastClimbing(null); - return getNaturalDeath(pm, getSimpleCause(EntityDamageEvent.DamageCause.FALL)); + playerCtx.setLastClimbing(null); + return getNaturalDeath(playerCtx, getSimpleCause(EntityDamageEvent.DamageCause.FALL)); } - } else if (msg.contains("%weapon%") && pm.getLastDamageCause().equals(EntityDamageEvent.DamageCause.PROJECTILE)) { - ItemStack i = pm.getPlayer().getEquipment().getItemInMainHand(); + } else if (msg.contains("%weapon%") && playerCtx.getLastDamageCause().equals(EntityDamageEvent.DamageCause.PROJECTILE)) { + ItemStack i = playerCtx.getPlayer().getEquipment().getItemInMainHand(); if (!i.getType().equals(XMaterial.BOW.parseMaterial())) { - return getNaturalDeath(pm, "Projectile-Unknown"); + return getNaturalDeath(playerCtx, "Projectile-Unknown"); } if (!i.getType().equals(XMaterial.CROSSBOW.parseMaterial())) { - return getNaturalDeath(pm, "Projectile-Unknown"); + return getNaturalDeath(playerCtx, "Projectile-Unknown"); } Component displayName; @@ -329,19 +329,19 @@ public static TextComponent getNaturalDeath(PlayerCtx pm, String damageCause) { if (Settings.getInstance().getConfig().getBoolean(Config.DISABLE_WEAPON_KILL_WITH_NO_CUSTOM_NAME_ENABLED.getPath())) { if (!Settings.getInstance().getConfig().getBoolean(Config.DISABLE_WEAPON_KILL_WITH_NO_CUSTOM_NAME_IGNORE_ENCHANTMENTS.getPath())) { if (i.getEnchantments().isEmpty()) { - return getNaturalDeath(pm, "Projectile-Unknown"); + return getNaturalDeath(playerCtx, "Projectile-Unknown"); } } else { - return getNaturalDeath(pm, "Projectile-Unknown"); + return getNaturalDeath(playerCtx, "Projectile-Unknown"); } } - displayName = getI18nName(i, pm.getPlayer()); + displayName = getI18nName(i, playerCtx.getPlayer()); } else { displayName = ComponentUtil.getItemStackDisplayName(i); } TextComponent message = Util.convertFromLegacy(msg); - Component weapon = ComponentUtil.buildItemHover(pm.getPlayer(), i, displayName); + Component weapon = ComponentUtil.buildItemHover(playerCtx.getPlayer(), i, displayName); base.append(message.replaceText(TextReplacementConfig.builder().matchLiteral("%weapon%").replacement(weapon).build())); } else { @@ -354,29 +354,29 @@ public static TextComponent getNaturalDeath(PlayerCtx pm, String damageCause) { if (!rawEvents.isEmpty()) { int index = 0; for (String rawEvent : rawEvents) { - Component hoverEvent = ComponentUtil.buildHoverEvents(rawEvent, pm, null, null, false, true); + Component hoverEvent = ComponentUtil.buildHoverEvents(rawEvent, playerCtx, null, null, false, true); baseWithEvents = baseWithEvents.replaceText( TextReplacementConfig.builder().match("%hover_event_" + index++ + "%").replacement(hoverEvent).build() ); } } - return (TextComponent) playerDeathPlaceholders(baseWithEvents, pm, null); + return (TextComponent) playerDeathPlaceholders(baseWithEvents, playerCtx, null); } - public static TextComponent getWeapon(boolean gang, PlayerCtx pm, LivingEntity mob) { + public static TextComponent getWeapon(boolean gang, PlayerCtx playerCtx, LivingEntity mob) { final boolean basicMode = getPlayerDeathMessages().getBoolean("Basic-Mode.Enabled"); String entityName = EntityUtil.getConfigNodeByEntity(mob); final String mode = basicMode ? DeathModes.BASIC_MODE.getValue() : DeathModes.MOBS.getValue() + "." + entityName; final String affiliation = gang ? DeathAffiliation.GANG.getValue() : DeathAffiliation.SOLO.getValue(); //Bukkit.broadcastMessage(DeathMessages.getInstance().mythicmobsEnabled + " - " + DeathMessages.getInstance().mythicMobs.getAPIHelper().isMythicMob(mob.getUniqueId())); - List msgs = sortList(getPlayerDeathMessages().getStringList(mode + "." + affiliation + ".Weapon"), pm.getPlayer(), mob); + List msgs = sortList(getPlayerDeathMessages().getStringList(mode + "." + affiliation + ".Weapon"), playerCtx.getPlayer(), mob); if (DeathMessages.getHooks().mythicmobsEnabled && DeathMessages.getHooks().mythicMobs.getAPIHelper().isMythicMob(mob.getUniqueId())) { String mmMobType = DeathMessages.getHooks().mythicMobs.getAPIHelper().getMythicMobInstance(mob).getMobType(); //Bukkit.broadcastMessage("is myth - " + mmMobType); - msgs = sortList(getPlayerDeathMessages().getStringList("Custom-Mobs.Mythic-Mobs." + mmMobType + "." + affiliation + ".Weapon"), pm.getPlayer(), mob); + msgs = sortList(getPlayerDeathMessages().getStringList("Custom-Mobs.Mythic-Mobs." + mmMobType + "." + affiliation + ".Weapon"), playerCtx.getPlayer(), mob); if (msgs.isEmpty()) return Component.empty(); // Don't send mm mob death msg if no configured death msg. } @@ -386,7 +386,7 @@ public static TextComponent getWeapon(boolean gang, PlayerCtx pm, LivingEntity m if (msgs.isEmpty()) { DeathMessages.LOGGER.warn("Can't find message node: [{}.{}.Weapon] in PlayerDeathMessages.yml", mode, affiliation); DeathMessages.LOGGER.warn("This should not happen, please check your config or report this issue on Github"); - msgs = sortList(getPlayerDeathMessages().getStringList(DeathModes.BASIC_MODE.getValue() + "." + affiliation + ".Weapon"), pm.getPlayer(), mob); + msgs = sortList(getPlayerDeathMessages().getStringList(DeathModes.BASIC_MODE.getValue() + "." + affiliation + ".Weapon"), playerCtx.getPlayer(), mob); DeathMessages.LOGGER.warn("Fallback this death to Basic-Mode of PlayerDeathMessages"); } @@ -402,19 +402,19 @@ public static TextComponent getWeapon(boolean gang, PlayerCtx pm, LivingEntity m if (FileStore.CONFIG.getBoolean(Config.DISABLE_WEAPON_KILL_WITH_NO_CUSTOM_NAME_ENABLED)) { if (!FileStore.CONFIG.getBoolean(Config.DISABLE_WEAPON_KILL_WITH_NO_CUSTOM_NAME_IGNORE_ENCHANTMENTS)) { if (i.getEnchantments().isEmpty()) { - return get(gang, pm, mob, FileStore.CONFIG.getString(Config.DISABLE_WEAPON_KILL_WITH_NO_CUSTOM_NAME_SOURCE_WEAPON_DEFAULT_TO)); + return get(gang, playerCtx, mob, FileStore.CONFIG.getString(Config.DISABLE_WEAPON_KILL_WITH_NO_CUSTOM_NAME_SOURCE_WEAPON_DEFAULT_TO)); } } else { - return get(gang, pm, mob, FileStore.CONFIG.getString(Config.DISABLE_WEAPON_KILL_WITH_NO_CUSTOM_NAME_SOURCE_WEAPON_DEFAULT_TO)); + return get(gang, playerCtx, mob, FileStore.CONFIG.getString(Config.DISABLE_WEAPON_KILL_WITH_NO_CUSTOM_NAME_SOURCE_WEAPON_DEFAULT_TO)); } } - displayName = getI18nName(i, pm.getPlayer()); + displayName = getI18nName(i, playerCtx.getPlayer()); } else { displayName = ComponentUtil.getItemStackDisplayName(i); } TextComponent deathMessage = Util.convertFromLegacy(msg); - Component weaponHover = ComponentUtil.buildItemHover(pm.getPlayer(), i, displayName); + Component weaponHover = ComponentUtil.buildItemHover(playerCtx.getPlayer(), i, displayName); base.append(deathMessage.replaceText(TextReplacementConfig.builder().matchLiteral("%weapon%").replacement(weaponHover).build())); } else { @@ -427,14 +427,14 @@ public static TextComponent getWeapon(boolean gang, PlayerCtx pm, LivingEntity m if (!rawEvents.isEmpty()) { int index = 0; for (String rawEvent : rawEvents) { - Component hoverEvent = ComponentUtil.buildHoverEvents(rawEvent, pm, null, mob, false, true); + Component hoverEvent = ComponentUtil.buildHoverEvents(rawEvent, playerCtx, null, mob, false, true); baseWithEvents = baseWithEvents.replaceText( TextReplacementConfig.builder().match("%hover_event_" + index++ + "%").replacement(hoverEvent).build() ); } } - return (TextComponent) playerDeathPlaceholders(baseWithEvents, pm, mob); + return (TextComponent) playerDeathPlaceholders(baseWithEvents, playerCtx, mob); } public static TextComponent getEntityDeathWeapon(Player p, Entity e, MobType mobType) { @@ -511,18 +511,18 @@ public static TextComponent getEntityDeathWeapon(Player p, Entity e, MobType mob return (TextComponent) entityDeathPlaceholders(baseWithEvents, p, e, hasOwner); } - public static TextComponent get(boolean gang, PlayerCtx pm, LivingEntity mob, String damageCause) { + public static TextComponent get(boolean gang, PlayerCtx playerCtx, LivingEntity mob, String damageCause) { final boolean basicMode = getPlayerDeathMessages().getBoolean("Basic-Mode.Enabled"); String entityName = EntityUtil.getConfigNodeByEntity(mob); final String mode = basicMode ? DeathModes.BASIC_MODE.getValue() : DeathModes.MOBS.getValue() + "." + entityName; final String affiliation = gang ? DeathAffiliation.GANG.getValue() : DeathAffiliation.SOLO.getValue(); - List msgs = sortList(getPlayerDeathMessages().getStringList(mode + "." + affiliation + "." + damageCause), pm.getPlayer(), mob); + List msgs = sortList(getPlayerDeathMessages().getStringList(mode + "." + affiliation + "." + damageCause), playerCtx.getPlayer(), mob); if (DeathMessages.getHooks().mythicmobsEnabled && DeathMessages.getHooks().mythicMobs.getAPIHelper().isMythicMob(mob.getUniqueId())) { String mmMobType = DeathMessages.getHooks().mythicMobs.getAPIHelper().getMythicMobInstance(mob).getMobType(); //System.out.println("is myth - " + mmMobType); - msgs = sortList(getPlayerDeathMessages().getStringList("Custom-Mobs.Mythic-Mobs." + mmMobType + "." + affiliation + "." + damageCause), pm.getPlayer(), mob); + msgs = sortList(getPlayerDeathMessages().getStringList("Custom-Mobs.Mythic-Mobs." + mmMobType + "." + affiliation + "." + damageCause), playerCtx.getPlayer(), mob); if (msgs.isEmpty()) return Component.empty(); // Don't send mm mob death msg if no configured death msg. } @@ -530,16 +530,16 @@ public static TextComponent get(boolean gang, PlayerCtx pm, LivingEntity mob, St if (Settings.getInstance().getConfig().getBoolean(Config.DEBUG.getPath())) DeathMessages.LOGGER.warn("node: [{}.{}.{}]", mode, affiliation, damageCause); if (msgs.isEmpty()) { - msgs = sortList(getPlayerDeathMessages().getStringList(DeathModes.MOBS.getValue() + ".player." + affiliation + "." + damageCause), pm.getPlayer(), mob); + msgs = sortList(getPlayerDeathMessages().getStringList(DeathModes.MOBS.getValue() + ".player." + affiliation + "." + damageCause), playerCtx.getPlayer(), mob); if (Settings.getInstance().getConfig().getBoolean(Config.DEBUG.getPath())) DeathMessages.LOGGER.warn("node2: [{}.player.{}.{}]", DeathModes.MOBS.getValue(), affiliation, damageCause); if (msgs.isEmpty()) { if (Settings.getInstance().getConfig().getBoolean(Config.DEBUG.getPath())) DeathMessages.LOGGER.info("Redirected from [{}.player.{}.{}]", DeathModes.MOBS.getValue(), affiliation, damageCause); if (Settings.getInstance().getConfig().getBoolean(Config.DEFAULT_NATURAL_DEATH_NOT_DEFINED.getPath())) - return getNaturalDeath(pm, damageCause); + return getNaturalDeath(playerCtx, damageCause); if (Settings.getInstance().getConfig().getBoolean(Config.DEFAULT_MELEE_LAST_DAMAGE_NOT_DEFINED.getPath())) - return get(gang, pm, mob, getSimpleCause(EntityDamageEvent.DamageCause.ENTITY_ATTACK)); + return get(gang, playerCtx, mob, getSimpleCause(EntityDamageEvent.DamageCause.ENTITY_ATTACK)); DeathMessages.LOGGER.warn("This death message will not be broadcast, unless you enable [Default-Natural-Death-Not-Defined] in Settings.yml"); return Component.empty(); } @@ -557,27 +557,27 @@ public static TextComponent get(boolean gang, PlayerCtx pm, LivingEntity mob, St if (!rawEvents.isEmpty()) { int index = 0; for (String rawEvent : rawEvents) { - Component hoverEvent = ComponentUtil.buildHoverEvents(rawEvent, pm, null, mob, false, true); + Component hoverEvent = ComponentUtil.buildHoverEvents(rawEvent, playerCtx, null, mob, false, true); baseWithEvents = baseWithEvents.replaceText( TextReplacementConfig.builder().match("%hover_event_" + index++ + "%").replacement(hoverEvent).build() ); } } - return (TextComponent) playerDeathPlaceholders(baseWithEvents, pm, mob); + return (TextComponent) playerDeathPlaceholders(baseWithEvents, playerCtx, mob); } - public static TextComponent getProjectile(boolean gang, PlayerCtx pm, LivingEntity mob, String projectileDamage) { + public static TextComponent getProjectile(boolean gang, PlayerCtx playerCtx, LivingEntity mob, String projectileDamage) { final boolean basicMode = getPlayerDeathMessages().getBoolean("Basic-Mode.Enabled"); String entityName = EntityUtil.getConfigNodeByEntity(mob); final String mode = basicMode ? DeathModes.BASIC_MODE.getValue() : DeathModes.MOBS.getValue() + "." + entityName; final String affiliation = gang ? DeathAffiliation.GANG.getValue() : DeathAffiliation.SOLO.getValue(); - List msgs = sortList(getPlayerDeathMessages().getStringList(mode + "." + affiliation + "." + projectileDamage), pm.getPlayer(), mob); + List msgs = sortList(getPlayerDeathMessages().getStringList(mode + "." + affiliation + "." + projectileDamage), playerCtx.getPlayer(), mob); if (DeathMessages.getHooks().mythicmobsEnabled && DeathMessages.getHooks().mythicMobs.getAPIHelper().isMythicMob(mob.getUniqueId())) { String mmMobType = DeathMessages.getHooks().mythicMobs.getAPIHelper().getMythicMobInstance(mob).getMobType(); - msgs = sortList(getPlayerDeathMessages().getStringList("Custom-Mobs.Mythic-Mobs." + mmMobType + "." + affiliation + "." + projectileDamage), pm.getPlayer(), mob); + msgs = sortList(getPlayerDeathMessages().getStringList("Custom-Mobs.Mythic-Mobs." + mmMobType + "." + affiliation + "." + projectileDamage), playerCtx.getPlayer(), mob); if (msgs.isEmpty()) return Component.empty(); // Don't send mm mob death msg if no configured death msg. } @@ -585,14 +585,14 @@ public static TextComponent getProjectile(boolean gang, PlayerCtx pm, LivingEnti if (Settings.getInstance().getConfig().getBoolean(Config.DEBUG.getPath())) DeathMessages.LOGGER.warn("node: [{}.{}.{}]", mode, affiliation, projectileDamage); if (msgs.isEmpty()) { - msgs = sortList(getPlayerDeathMessages().getStringList(DeathModes.MOBS.getValue() + ".player." + affiliation + "." + projectileDamage), pm.getPlayer(), mob); + msgs = sortList(getPlayerDeathMessages().getStringList(DeathModes.MOBS.getValue() + ".player." + affiliation + "." + projectileDamage), playerCtx.getPlayer(), mob); if (Settings.getInstance().getConfig().getBoolean(Config.DEBUG.getPath())) DeathMessages.LOGGER.warn("node2: [{}.player.{}.{}]", DeathModes.MOBS.getValue(), affiliation, projectileDamage); if (msgs.isEmpty()) { if (Settings.getInstance().getConfig().getBoolean(Config.DEBUG.getPath())) DeathMessages.LOGGER.info("Redirected from [{}.player.{}.{}]", DeathModes.MOBS.getValue(), affiliation, projectileDamage); if (Settings.getInstance().getConfig().getBoolean(Config.DEFAULT_NATURAL_DEATH_NOT_DEFINED.getPath())) - return getNaturalDeath(pm, projectileDamage); + return getNaturalDeath(playerCtx, projectileDamage); DeathMessages.LOGGER.warn("This death message will not be broadcast, unless you enable [Default-Natural-Death-Not-Defined] in Settings.yml"); return Component.empty(); } @@ -603,7 +603,7 @@ public static TextComponent getProjectile(boolean gang, PlayerCtx pm, LivingEnti List rawEvents = new ArrayList<>(); msg = ComponentUtil.sortHoverEvents(msg, rawEvents); - if (msg.contains("%weapon%") && pm.getLastDamageCause().equals(EntityDamageEvent.DamageCause.PROJECTILE)) { + if (msg.contains("%weapon%") && playerCtx.getLastDamageCause().equals(EntityDamageEvent.DamageCause.PROJECTILE)) { Component weaponHover; ItemStack i = mob.getEquipment().getItemInMainHand(); @@ -618,20 +618,20 @@ public static TextComponent getProjectile(boolean gang, PlayerCtx pm, LivingEnti if (Settings.getInstance().getConfig().getBoolean(Config.DISABLE_WEAPON_KILL_WITH_NO_CUSTOM_NAME_ENABLED.getPath())) { if (!Settings.getInstance().getConfig().getString(Config.DISABLE_WEAPON_KILL_WITH_NO_CUSTOM_NAME_SOURCE_PROJECTILE_DEFAULT_TO.getPath()) .equals(projectileDamage)) { - return getProjectile(gang, pm, mob, Settings.getInstance().getConfig().getString(Config.DISABLE_WEAPON_KILL_WITH_NO_CUSTOM_NAME_SOURCE_PROJECTILE_DEFAULT_TO.getPath())); + return getProjectile(gang, playerCtx, mob, Settings.getInstance().getConfig().getString(Config.DISABLE_WEAPON_KILL_WITH_NO_CUSTOM_NAME_SOURCE_PROJECTILE_DEFAULT_TO.getPath())); } } - displayName = getI18nName(i, pm.getPlayer()); + displayName = getI18nName(i, playerCtx.getPlayer()); } else { displayName = ComponentUtil.getItemStackDisplayName(i); } - weaponHover = ComponentUtil.buildItemHover(pm.getPlayer(), i, displayName); + weaponHover = ComponentUtil.buildItemHover(playerCtx.getPlayer(), i, displayName); } else { - Entity projectile = pm.getLastProjectileEntity(); + Entity projectile = playerCtx.getLastProjectileEntity(); Component projectileName = projectile.customName() != null ? projectile.customName() - : getI18nName(projectile, pm.getPlayer()); + : getI18nName(projectile, playerCtx.getPlayer()); weaponHover = projectileName; } @@ -648,28 +648,28 @@ public static TextComponent getProjectile(boolean gang, PlayerCtx pm, LivingEnti if (!rawEvents.isEmpty()) { int index = 0; for (String rawEvent : rawEvents) { - Component hoverEvent = ComponentUtil.buildHoverEvents(rawEvent, pm, null, mob, false, true); + Component hoverEvent = ComponentUtil.buildHoverEvents(rawEvent, playerCtx, null, mob, false, true); baseWithEvents = baseWithEvents.replaceText( TextReplacementConfig.builder().match("%hover_event_" + index++ + "%").replacement(hoverEvent).build() ); } } - return (TextComponent) playerDeathPlaceholders(baseWithEvents, pm, mob); + return (TextComponent) playerDeathPlaceholders(baseWithEvents, playerCtx, mob); } - public static TextComponent getEntityDeathProjectile(Player p, EntityCtx em, String projectileDamage, MobType mobType) { - String entityName = EntityUtil.getConfigNodeByEntity(em.getEntity()); - boolean hasOwner = EntityUtil.hasOwner(em.getEntity()); - List msgs = sortList(getEntityDeathMessages().getStringList("Entities." + entityName + "." + projectileDamage), p, em.getEntity()); + public static TextComponent getEntityDeathProjectile(Player p, EntityCtx entityCtx, String projectileDamage, MobType mobType) { + String entityName = EntityUtil.getConfigNodeByEntity(entityCtx.getEntity()); + boolean hasOwner = EntityUtil.hasOwner(entityCtx.getEntity()); + List msgs = sortList(getEntityDeathMessages().getStringList("Entities." + entityName + "." + projectileDamage), p, entityCtx.getEntity()); if (mobType.equals(MobType.MYTHIC_MOB)) { String mmMobType = null; - if (DeathMessages.getHooks().mythicmobsEnabled && DeathMessages.getHooks().mythicMobs.getAPIHelper().isMythicMob(em.getUUID())) { - mmMobType = DeathMessages.getHooks().mythicMobs.getAPIHelper().getMythicMobInstance(em.getEntity()).getMobType(); + if (DeathMessages.getHooks().mythicmobsEnabled && DeathMessages.getHooks().mythicMobs.getAPIHelper().isMythicMob(entityCtx.getUUID())) { + mmMobType = DeathMessages.getHooks().mythicMobs.getAPIHelper().getMythicMobInstance(entityCtx.getEntity()).getMobType(); } - msgs = sortList(getEntityDeathMessages().getStringList("Mythic-Mobs-Entities." + mmMobType + "." + projectileDamage), p, em.getEntity()); + msgs = sortList(getEntityDeathMessages().getStringList("Mythic-Mobs-Entities." + mmMobType + "." + projectileDamage), p, entityCtx.getEntity()); if (msgs.isEmpty()) return Component.empty(); // Don't send mm mob death msg if no configured death msg. } @@ -680,7 +680,7 @@ public static TextComponent getEntityDeathProjectile(Player p, EntityCtx em, Str if (Settings.getInstance().getConfig().getBoolean(Config.DEFAULT_MELEE_LAST_DAMAGE_NOT_DEFINED.getPath())) { if (Settings.getInstance().getConfig().getBoolean(Config.DEBUG.getPath())) DeathMessages.LOGGER.warn("node2:: [getEntityDeath]"); - return getEntityDeath(p, em.getEntity(), getSimpleCause(EntityDamageEvent.DamageCause.ENTITY_ATTACK), mobType); + return getEntityDeath(p, entityCtx.getEntity(), getSimpleCause(EntityDamageEvent.DamageCause.ENTITY_ATTACK), mobType); } // This death message will not be broadcast, since user have not set death message for this entity return Component.empty(); @@ -691,7 +691,7 @@ public static TextComponent getEntityDeathProjectile(Player p, EntityCtx em, Str List rawEvents = new ArrayList<>(); msg = ComponentUtil.sortHoverEvents(msg, rawEvents); - if (msg.contains("%weapon%") && em.getLastProjectileEntity() instanceof Arrow) { + if (msg.contains("%weapon%") && entityCtx.getLastProjectileEntity() instanceof Arrow) { Component weaponHover; ItemStack i = p.getEquipment().getItemInMainHand(); @@ -701,7 +701,7 @@ public static TextComponent getEntityDeathProjectile(Player p, EntityCtx em, Str if (Settings.getInstance().getConfig().getBoolean(Config.DISABLE_WEAPON_KILL_WITH_NO_CUSTOM_NAME_ENABLED.getPath())) { if (!Settings.getInstance().getConfig().getString(Config.DISABLE_WEAPON_KILL_WITH_NO_CUSTOM_NAME_SOURCE_PROJECTILE_DEFAULT_TO.getPath()) .equals(projectileDamage)) { - return getEntityDeathProjectile(p, em, + return getEntityDeathProjectile(p, entityCtx, Settings.getInstance().getConfig().getString(Config.DISABLE_WEAPON_KILL_WITH_NO_CUSTOM_NAME_SOURCE_PROJECTILE_DEFAULT_TO.getPath()), mobType); } } @@ -712,7 +712,7 @@ public static TextComponent getEntityDeathProjectile(Player p, EntityCtx em, Str weaponHover = ComponentUtil.buildItemHover(p, i, displayName); } else { - Entity projectile = em.getLastProjectileEntity(); + Entity projectile = entityCtx.getLastProjectileEntity(); Component projectileName = projectile.customName() != null ? projectile.customName() : getI18nName(projectile, p); @@ -732,14 +732,14 @@ public static TextComponent getEntityDeathProjectile(Player p, EntityCtx em, Str if (!rawEvents.isEmpty()) { int index = 0; for (String rawEvent : rawEvents) { - Component hoverEvent = ComponentUtil.buildHoverEvents(rawEvent, null, p, em.getEntity(), hasOwner, false); + Component hoverEvent = ComponentUtil.buildHoverEvents(rawEvent, null, p, entityCtx.getEntity(), hasOwner, false); baseWithEvents = baseWithEvents.replaceText( TextReplacementConfig.builder().match("%hover_event_" + index++ + "%").replacement(hoverEvent).build() ); } } - return (TextComponent) entityDeathPlaceholders(baseWithEvents, p, em.getEntity(), hasOwner); + return (TextComponent) entityDeathPlaceholders(baseWithEvents, p, entityCtx.getEntity(), hasOwner); } public static TextComponent getEntityDeath(Player player, Entity e, String damageCause, MobType mobType) { @@ -930,21 +930,21 @@ public static String entityDeathPlaceholders(String msg, Player player, Entity e return msg; } - public static Component playerDeathPlaceholders(Component msg, PlayerCtx pm, Entity mob) { + public static Component playerDeathPlaceholders(Component msg, PlayerCtx playerCtx, Entity mob) { final boolean hasBiome = msg.contains(Component.text("%biome%")); final boolean hasDistance = msg.contains(Component.text("%distance%")); - msg = msg.replaceText(Util.replace("%player%", Util.getPlayerName(pm))) - .replaceText(Util.replace("%player_display%", Util.getPlayerDisplayNameComponent(pm))) - .replaceText(Util.replace("%world%", pm.getLastLocation().getWorld().getName())) - .replaceText(Util.replace("%world_environment%", getEnvironment(pm.getLastLocation().getWorld().getEnvironment()))) - .replaceText(Util.replace("%x%", String.valueOf(pm.getLastLocation().getBlock().getX()))) - .replaceText(Util.replace("%y%", String.valueOf(pm.getLastLocation().getBlock().getY()))) - .replaceText(Util.replace("%z%", String.valueOf(pm.getLastLocation().getBlock().getZ()))); + msg = msg.replaceText(Util.replace("%player%", Util.getPlayerName(playerCtx))) + .replaceText(Util.replace("%player_display%", Util.getPlayerDisplayNameComponent(playerCtx))) + .replaceText(Util.replace("%world%", playerCtx.getLastLocation().getWorld().getName())) + .replaceText(Util.replace("%world_environment%", getEnvironment(playerCtx.getLastLocation().getWorld().getEnvironment()))) + .replaceText(Util.replace("%x%", String.valueOf(playerCtx.getLastLocation().getBlock().getX()))) + .replaceText(Util.replace("%y%", String.valueOf(playerCtx.getLastLocation().getBlock().getY()))) + .replaceText(Util.replace("%z%", String.valueOf(playerCtx.getLastLocation().getBlock().getZ()))); if (hasBiome) { try { - msg = msg.replaceText(Util.replace("%biome%", pm.getLastLocation().getBlock().getBiome().toString())); + msg = msg.replaceText(Util.replace("%biome%", playerCtx.getLastLocation().getBlock().getBiome().toString())); } catch (NullPointerException e) { DeathMessages.LOGGER.error("Custom Biome detected. Using 'Unknown' for a biome name."); DeathMessages.LOGGER.error("Custom Biomes are not supported yet.'"); @@ -954,7 +954,7 @@ public static Component playerDeathPlaceholders(Component msg, PlayerCtx pm, Ent if (hasDistance && mob != null && mob.getLocation() != null) { try { - msg = msg.replaceText(Util.replace("%distance%", String.valueOf((int) Math.round(pm.getLastLocation().distance(mob.getLocation()))))); + msg = msg.replaceText(Util.replace("%distance%", String.valueOf((int) Math.round(playerCtx.getLastLocation().distance(mob.getLocation()))))); } catch (Exception ex) { DeathMessages.LOGGER.error("Unknown distance calculated. Using 'Zero' for the distance."); msg = msg.replaceText(Util.replace("%distance%", "0")); @@ -994,28 +994,28 @@ public static Component playerDeathPlaceholders(Component msg, PlayerCtx pm, Ent while (params.find()) { String param = params.group(0); - msg = msg.replaceText(Util.replace(param, PlaceholderAPI.setPlaceholders(pm.getPlayer(), param))); + msg = msg.replaceText(Util.replace(param, PlaceholderAPI.setPlaceholders(playerCtx.getPlayer(), param))); } } return msg; } - public static String playerDeathPlaceholders(String msg, PlayerCtx pm, Entity mob) { + public static String playerDeathPlaceholders(String msg, PlayerCtx playerCtx, Entity mob) { final boolean hasBiome = msg.contains("%biome%"); final boolean hasDistance = msg.contains("%distance%"); - msg = msg.replaceAll("%player%", Util.getPlayerName(pm)) - .replaceAll("%player_display%", Util.getPlayerDisplayName(pm)) - .replaceAll("%world%", pm.getLastLocation().getWorld().getName()) - .replaceAll("%world_environment%", getEnvironment(pm.getLastLocation().getWorld().getEnvironment())) - .replaceAll("%x%", String.valueOf(pm.getLastLocation().getBlock().getX())) - .replaceAll("%y%", String.valueOf(pm.getLastLocation().getBlock().getY())) - .replaceAll("%z%", String.valueOf(pm.getLastLocation().getBlock().getZ())); + msg = msg.replaceAll("%player%", Util.getPlayerName(playerCtx)) + .replaceAll("%player_display%", Util.getPlayerDisplayName(playerCtx)) + .replaceAll("%world%", playerCtx.getLastLocation().getWorld().getName()) + .replaceAll("%world_environment%", getEnvironment(playerCtx.getLastLocation().getWorld().getEnvironment())) + .replaceAll("%x%", String.valueOf(playerCtx.getLastLocation().getBlock().getX())) + .replaceAll("%y%", String.valueOf(playerCtx.getLastLocation().getBlock().getY())) + .replaceAll("%z%", String.valueOf(playerCtx.getLastLocation().getBlock().getZ())); if (hasBiome) { try { - msg = msg.replaceAll("%biome%", pm.getLastLocation().getBlock().getBiome().toString()); + msg = msg.replaceAll("%biome%", playerCtx.getLastLocation().getBlock().getBiome().toString()); } catch (NullPointerException e) { DeathMessages.LOGGER.error("Custom Biome detected. Using 'Unknown' for a biome name."); DeathMessages.LOGGER.error("Custom Biomes are not supported yet.'"); @@ -1025,7 +1025,7 @@ public static String playerDeathPlaceholders(String msg, PlayerCtx pm, Entity mo if (hasDistance && mob != null && mob.getLocation() != null) { try { - msg = msg.replaceAll("%distance%", String.valueOf((int) Math.round(pm.getLastLocation().distance(mob.getLocation())))); + msg = msg.replaceAll("%distance%", String.valueOf((int) Math.round(playerCtx.getLastLocation().distance(mob.getLocation())))); } catch (Exception ex) { DeathMessages.LOGGER.error("Unknown distance calculated. Using 'Zero' for the distance."); msg = msg.replaceAll("%distance%", "0"); @@ -1060,7 +1060,7 @@ public static String playerDeathPlaceholders(String msg, PlayerCtx pm, Entity mo } if (DeathMessages.getHooks().placeholderAPIEnabled) { - msg = PlaceholderAPI.setPlaceholders(pm.getPlayer(), msg); + msg = PlaceholderAPI.setPlaceholders(playerCtx.getPlayer(), msg); } return msg; diff --git a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/utils/ComponentUtil.java b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/utils/ComponentUtil.java index b15c39b7..9dbb27ef 100644 --- a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/utils/ComponentUtil.java +++ b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/utils/ComponentUtil.java @@ -76,11 +76,11 @@ public static Component buildEntityHover(Entity entity, Component name) { /* Process and build hover events from raw events list - Only for playerDeath: pm, e, Only for EntityDeath: p, e, hasOwner + Only for playerDeath: playerCtx, e, Only for EntityDeath: p, e, hasOwner */ public static Component buildHoverEvents( String rawEvent, - PlayerCtx pm, + PlayerCtx playerCtx, Player p, Entity e, boolean hasOwner, @@ -103,7 +103,7 @@ public static Component buildHoverEvents( if (rawHover.length == 4) { ClickEvent click = null; final String content = isPlayerDeath - ? Assets.playerDeathPlaceholders(rawHover[3], pm, e) + ? Assets.playerDeathPlaceholders(rawHover[3], playerCtx, e) : Assets.entityDeathPlaceholders(rawHover[3], p, e, hasOwner); switch (rawHover[2]) { diff --git a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/utils/Util.java b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/utils/Util.java index 7a48a2d4..4ffffabc 100644 --- a/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/utils/Util.java +++ b/DeathMessagesModern/src/main/java/dev/mrshawn/deathmessages/utils/Util.java @@ -220,12 +220,12 @@ public static String randomNumeric(int length) { return sb.toString(); } - public static String getPlayerName(PlayerCtx pm) { - if (isPlayerVanished(pm.getPlayer())) { + public static String getPlayerName(PlayerCtx playerCtx) { + if (isPlayerVanished(playerCtx.getPlayer())) { return PlainTextComponentSerializer.plainText().serialize(getVanishedName()); } - return pm.getName(); + return playerCtx.getName(); } public static String getPlayerName(Player player) { @@ -236,8 +236,8 @@ public static String getPlayerName(Player player) { return player.getName(); } - public static String getPlayerDisplayName(PlayerCtx pm) { - final Player player = pm.getPlayer(); + public static String getPlayerDisplayName(PlayerCtx playerCtx) { + final Player player = playerCtx.getPlayer(); if (isPlayerVanished(player)) { return PlainTextComponentSerializer.plainText().serialize(getVanishedName()); @@ -254,8 +254,8 @@ public static String getPlayerDisplayName(Player player) { return player.getDisplayName(); } - public static Component getPlayerDisplayNameComponent(PlayerCtx pm) { - final Player player = pm.getPlayer(); + public static Component getPlayerDisplayNameComponent(PlayerCtx playerCtx) { + final Player player = playerCtx.getPlayer(); if (isPlayerVanished(player)) { return getVanishedName(); From 69eefb2974ad650cd0073a866b404006731376ba Mon Sep 17 00:00:00 2001 From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com> Date: Mon, 9 Feb 2026 15:46:28 -0500 Subject: [PATCH 4/4] Sync to legacy --- .../mrshawn/deathmessages/DeathMessages.java | 11 +- .../{EntityManager.java => EntityCtx.java} | 50 +-- .../mrshawn/deathmessages/api/PlayerCtx.java | 205 +++++++++++ .../deathmessages/api/PlayerManager.java | 211 ------------ .../events/BroadcastDeathMessageEvent.java | 3 +- .../BroadcastEntityDeathMessageEvent.java | 17 +- .../commands/CommandBlacklist.java | 35 +- .../deathmessages/commands/CommandToggle.java | 13 +- .../alias/CommandDeathMessagesToggle.java | 13 +- .../hooks/DiscordSRVExtension.java | 52 +-- .../hooks/PlaceholderAPIExtension.java | 21 +- .../deathmessages/listeners/EntityDamage.java | 25 +- .../listeners/EntityDamageByBlock.java | 21 +- .../listeners/EntityDamageByEntity.java | 91 +++-- .../deathmessages/listeners/EntityDeath.java | 155 +++++---- .../deathmessages/listeners/OnCommand.java | 8 +- .../deathmessages/listeners/OnConnection.java | 33 ++ .../deathmessages/listeners/OnJoin.java | 28 -- .../deathmessages/listeners/OnMove.java | 10 +- .../listeners/PluginMessaging.java | 8 +- .../listeners/combatlogx/PlayerUntag.java | 87 +++-- .../BroadcastEntityDeathListener.java | 43 ++- .../BroadcastPlayerDeathListener.java | 73 ++-- .../listeners/mythicmobs/MobDeath.java | 14 +- .../mrshawn/deathmessages/utils/Assets.java | 326 +++++++++--------- .../deathmessages/utils/ComponentUtil.java | 8 +- .../dev/mrshawn/deathmessages/utils/Util.java | 32 +- 27 files changed, 798 insertions(+), 795 deletions(-) rename DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/api/{EntityManager.java => EntityCtx.java} (62%) create mode 100644 DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/api/PlayerCtx.java delete mode 100644 DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/api/PlayerManager.java create mode 100644 DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/OnConnection.java delete mode 100644 DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/OnJoin.java diff --git a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/DeathMessages.java b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/DeathMessages.java index a8050bb8..c317644c 100644 --- a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/DeathMessages.java +++ b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/DeathMessages.java @@ -1,7 +1,7 @@ package dev.mrshawn.deathmessages; import com.tcoded.folialib.FoliaLib; -import dev.mrshawn.deathmessages.api.PlayerManager; +import dev.mrshawn.deathmessages.api.PlayerCtx; import dev.mrshawn.deathmessages.commands.CommandManager; import dev.mrshawn.deathmessages.commands.TabCompleter; import dev.mrshawn.deathmessages.commands.alias.CommandDeathMessagesToggle; @@ -16,7 +16,7 @@ import dev.mrshawn.deathmessages.listeners.EntityDeath; import dev.mrshawn.deathmessages.listeners.OnCommand; import dev.mrshawn.deathmessages.listeners.OnInteract; -import dev.mrshawn.deathmessages.listeners.OnJoin; +import dev.mrshawn.deathmessages.listeners.OnConnection; import dev.mrshawn.deathmessages.listeners.OnMove; import dev.mrshawn.deathmessages.listeners.OnQuit; import dev.mrshawn.deathmessages.listeners.PlayerDeath; @@ -36,6 +36,7 @@ import org.bukkit.Bukkit; import org.bukkit.GameRule; import org.bukkit.World; +import org.bukkit.entity.Player; import org.bukkit.event.EventPriority; import org.bukkit.plugin.java.JavaPlugin; @@ -105,7 +106,7 @@ private void initListeners() { new EntityDeath(), new OnCommand(), new OnInteract(), - new OnJoin(), + new OnConnection(), new OnMove(), new OnQuit(), new PlayerDeath() @@ -125,7 +126,9 @@ private void initHooks() { } private void initOnlinePlayers() { - getServer().getOnlinePlayers().forEach(PlayerManager::new); + for (Player player : getServer().getOnlinePlayers()) { + PlayerCtx.create(new PlayerCtx(player)); + } } private void checkGameRules() { diff --git a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/api/EntityManager.java b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/api/EntityCtx.java similarity index 62% rename from DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/api/EntityManager.java rename to DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/api/EntityCtx.java index 6d9401a2..4493ddf8 100644 --- a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/api/EntityManager.java +++ b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/api/EntityCtx.java @@ -15,36 +15,35 @@ import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; -// Class designed to keep track of damage and data to mobs that were damaged by players - -public class EntityManager { +/** + * A class for storing entity's death cotext information, for tracking entity that is killed players + */ +public class EntityCtx { private final Entity entity; - private final UUID entityUUID; + private final UUID uuid; private final MobType mobType; private DamageCause damageCause; - private @Nullable PlayerManager lastPlayerDamager; + private @Nullable PlayerCtx lastPlayerDamager; private Entity lastExplosiveEntity; private Projectile lastPlayerProjectile; private Location lastLocation; - private @Nullable WrappedTask lastPlayerTask; - private static final Map entities = new ConcurrentHashMap<>(); + private static final Map ENTITY_CONTEXTS = new ConcurrentHashMap<>(); - public EntityManager(Entity entity, UUID entityUUID, MobType mobType) { + public EntityCtx(Entity entity, MobType mobType) { this.entity = entity; - this.entityUUID = entityUUID; + this.uuid = entity.getUniqueId(); this.mobType = mobType; - entities.put(entityUUID, this); } public Entity getEntity() { return entity; } - public UUID getEntityUUID() { - return entityUUID; + public UUID getUUID() { + return uuid; } public MobType getMobType() { @@ -55,29 +54,29 @@ public void setLastDamageCause(DamageCause damageCause) { this.damageCause = damageCause; } - public DamageCause getLastDamage() { + public DamageCause getLastDamageCause() { return damageCause; } - public void setLastPlayerDamager(PlayerManager pm) { + public void setLastPlayerDamager(PlayerCtx damagerCtx) { setLastExplosiveEntity(null); setLastProjectileEntity(null); - this.lastPlayerDamager = pm; + this.lastPlayerDamager = damagerCtx; if (lastPlayerTask != null) { lastPlayerTask.cancel(); } - lastPlayerTask = DeathMessages.getInstance().foliaLib.getScheduler().runLater(this::destroy, FileStore.CONFIG.getInt(Config.EXPIRE_LAST_DAMAGE_EXPIRE_ENTITY) * 20L); + lastPlayerTask = DeathMessages.getInstance().foliaLib.getScheduler().runLater(() -> EntityCtx.remove(this.getUUID()), FileStore.CONFIG.getInt(Config.EXPIRE_LAST_DAMAGE_EXPIRE_ENTITY) * 20L); this.damageCause = DamageCause.CUSTOM; } - public @Nullable PlayerManager getLastPlayerDamager() { + public @Nullable PlayerCtx getLastPlayerDamager() { return lastPlayerDamager; } - public void setLastExplosiveEntity(Entity e) { - this.lastExplosiveEntity = e; + public void setLastExplosiveEntity(Entity entity) { + this.lastExplosiveEntity = entity; } public Entity getLastExplosiveEntity() { @@ -100,11 +99,16 @@ public Location getLastLocation() { return lastLocation; } - public static @Nullable EntityManager getEntity(UUID uuid) { - return entities.get(uuid); + public static @Nullable EntityCtx of(UUID uuid) { + return ENTITY_CONTEXTS.get(uuid); + } + + public static void create(EntityCtx entityCtx) { + UUID uuid = entityCtx.getUUID(); + ENTITY_CONTEXTS.put(uuid, entityCtx); } - public void destroy() { - entities.remove(this.entityUUID); + public static void remove(UUID uuid) { + ENTITY_CONTEXTS.remove(uuid); } } diff --git a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/api/PlayerCtx.java b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/api/PlayerCtx.java new file mode 100644 index 00000000..c09bac57 --- /dev/null +++ b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/api/PlayerCtx.java @@ -0,0 +1,205 @@ +package dev.mrshawn.deathmessages.api; + +import com.tcoded.folialib.wrapper.task.WrappedTask; +import dev.mrshawn.deathmessages.DeathMessages; +import dev.mrshawn.deathmessages.config.UserData; +import dev.mrshawn.deathmessages.config.files.Config; +import dev.mrshawn.deathmessages.config.files.FileStore; +import org.jspecify.annotations.Nullable; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Entity; +import org.bukkit.entity.Player; +import org.bukkit.entity.Projectile; +import org.bukkit.event.entity.EntityDamageEvent.DamageCause; +import org.bukkit.inventory.Inventory; + +import java.util.Map; +import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; + +/** + * A class for storing player's death cotext information, functions as a "wrapper" of Player instance + */ +public class PlayerCtx { + + private final UUID uuid; + private final String name; + private final Player player; + private boolean isMessageEnabled; + private boolean isBlacklisted; + private boolean isCommandDeath; + private DamageCause damageCause; + private Entity lastEntityDamager; + private Entity lastExplosiveEntity; + private Projectile lastProjectileEntity; + private Material climbingBlock; + //private Location location; // Uncomment if we really need to track it and put it in onMove + private Inventory inventory; + private int cooldown = 0; + private @Nullable WrappedTask cooldownTask; + private @Nullable WrappedTask lastEntityTask; + + private static final Map PLAYER_CONTEXTS = new ConcurrentHashMap<>(); + + public final boolean saveUserData = FileStore.CONFIG.getBoolean(Config.SAVED_USER_DATA); + + public PlayerCtx(Player p) { + this.uuid = p.getUniqueId(); + this.name = p.getName(); + this.player = p; + this.damageCause = DamageCause.CUSTOM; + this.isCommandDeath = false; + + if (saveUserData) { + final FileConfiguration config = UserData.getInstance().getConfig(); + if (!config.contains(uuid.toString())) { + config.set(uuid + ".username", name); + config.set(uuid + ".messages-enabled", true); + config.set(uuid + ".is-blacklisted", false); + UserData.getInstance().save(); + } + + isMessageEnabled = config.getBoolean(uuid + ".messages-enabled"); + isBlacklisted = config.getBoolean(uuid + ".is-blacklisted"); + } else { + isMessageEnabled = true; + isBlacklisted = false; + } + } + + public UUID getUUID() { + return uuid; + } + + public String getName() { + return name; + } + + // TODO: check all call chain + @Deprecated + public Player getPlayer() { + return player; + } + + public boolean isMessageEnabled() { + return isMessageEnabled; + } + + public void setMessageEnabled(boolean isMessageEnabled) { + this.isMessageEnabled = isMessageEnabled; + if (saveUserData) { + UserData.getInstance().getConfig().set(uuid + ".messages-enabled", isMessageEnabled); + UserData.getInstance().save(); + } + } + + public boolean isBlacklisted() { + return isBlacklisted; + } + + public void setBlacklisted(boolean isBlacklisted) { + this.isBlacklisted = isBlacklisted; + if (saveUserData) { + UserData.getInstance().getConfig().set(uuid + ".is-blacklisted", isBlacklisted); + UserData.getInstance().save(); + } + } + + public DamageCause getLastDamageCause() { + return this.damageCause; + } + + public void setLastDamageCause(DamageCause damageCause) { + this.damageCause = damageCause; + } + + public boolean isCommandDeath() { + return this.isCommandDeath; + } + + public void setCommandDeath(boolean isCommandDeath) { + this.isCommandDeath = isCommandDeath; + } + + public Entity getLastEntityDamager() { + return lastEntityDamager; + } + + public void setLastEntityDamager(Entity damager) { + setLastExplosiveEntity(null); + setLastProjectileEntity(null); + this.lastEntityDamager = damager; + + if (lastEntityTask != null) { + lastEntityTask.cancel(); + } + lastEntityTask = DeathMessages.getInstance().foliaLib.getScheduler().runLater(() -> setLastEntityDamager(null), FileStore.CONFIG.getInt(Config.EXPIRE_LAST_DAMAGE_EXPIRE_PLAYER) * 20L); + } + + public Entity getLastExplosiveEntity() { + return lastExplosiveEntity; + } + + public void setLastExplosiveEntity(Entity e) { + this.lastExplosiveEntity = e; + } + + public Projectile getLastProjectileEntity() { + return lastProjectileEntity; + } + + public void setLastProjectileEntity(Projectile lastProjectileEntity) { + this.lastProjectileEntity = lastProjectileEntity; + } + + public Material getLastClimbing() { + return climbingBlock; + } + + public void setLastClimbing(Material climbingBlock) { + this.climbingBlock = climbingBlock; + } + + // Note: Actually is player current location + public Location getLastLocation() { + return player.getLocation(); + } + + public boolean isInCooldown() { + return cooldown > 0; + } + + public void setCooldown() { + cooldown = FileStore.CONFIG.getInt(Config.COOLDOWN); + cooldownTask = DeathMessages.getInstance().foliaLib.getScheduler().runTimer(() -> { + if (cooldown <= 0) { + cooldownTask.cancel(); + } + cooldown--; + }, 1, 20); + } + + public Inventory getInventory() { + return inventory; + } + + public void setInventory(Inventory inventory) { + this.inventory = inventory; + } + + // Note: Only for online players + public static @Nullable PlayerCtx of(UUID uuid) { + return PLAYER_CONTEXTS.get(uuid); + } + + public static void create(PlayerCtx playerCtx) { + UUID uuid = playerCtx.uuid; + PLAYER_CONTEXTS.put(uuid, playerCtx); + } + + public static void remove(UUID uuid) { + PLAYER_CONTEXTS.remove(uuid); + } +} diff --git a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/api/PlayerManager.java b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/api/PlayerManager.java deleted file mode 100644 index 8d32eb3e..00000000 --- a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/api/PlayerManager.java +++ /dev/null @@ -1,211 +0,0 @@ -package dev.mrshawn.deathmessages.api; - -import com.tcoded.folialib.wrapper.task.WrappedTask; -import dev.mrshawn.deathmessages.DeathMessages; -import dev.mrshawn.deathmessages.config.UserData; -import dev.mrshawn.deathmessages.config.files.Config; -import dev.mrshawn.deathmessages.config.files.FileStore; -import org.jspecify.annotations.Nullable; -import org.bukkit.Bukkit; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.entity.Entity; -import org.bukkit.entity.Player; -import org.bukkit.entity.Projectile; -import org.bukkit.event.entity.EntityDamageEvent.DamageCause; -import org.bukkit.inventory.Inventory; - -import java.util.Map; -import java.util.UUID; -import java.util.concurrent.ConcurrentHashMap; - -public class PlayerManager { - - private final UUID playerUUID; - private final String playerName; - private boolean messagesEnabled; - private boolean isBlacklisted; - private boolean isCommandDeath; - private DamageCause damageCause; - private Entity lastEntityDamager; - private Entity lastExplosiveEntity; - private Projectile lastProjectileEntity; - private Material climbing; - private Location explosionCauser; - private Location location; - private int cooldown = 0; - private @Nullable WrappedTask cooldownTask; - private Inventory cachedInventory; - - private @Nullable WrappedTask lastEntityTask; - - private static final Map players = new ConcurrentHashMap<>(); - - public final boolean saveUserData = FileStore.CONFIG.getBoolean(Config.SAVED_USER_DATA); - - public PlayerManager(Player p) { - this.playerUUID = p.getUniqueId(); - this.playerName = p.getName(); - - if (saveUserData && !UserData.getInstance().getConfig().contains(playerUUID.toString())) { - UserData.getInstance().getConfig().set(playerUUID + ".username", playerName); - UserData.getInstance().getConfig().set(playerUUID + ".messages-enabled", true); - UserData.getInstance().getConfig().set(playerUUID + ".is-blacklisted", false); - UserData.getInstance().save(); - } - - if (saveUserData) { - messagesEnabled = UserData.getInstance().getConfig().getBoolean(playerUUID + ".messages-enabled"); - isBlacklisted = UserData.getInstance().getConfig().getBoolean(playerUUID + ".is-blacklisted"); - } else { - messagesEnabled = true; - isBlacklisted = false; - } - - this.damageCause = DamageCause.CUSTOM; - this.isCommandDeath = false; - players.put(p.getUniqueId(), this); - } - - // TODO: Check whether needs to mark as nullable - public @Nullable Player getPlayer() { - return Bukkit.getPlayer(playerUUID); - } - - public UUID getUUID() { - return playerUUID; - } - - public String getName() { - return playerName; - } - - public boolean getMessagesEnabled() { - return messagesEnabled; - } - - public void setMessagesEnabled(boolean b) { - this.messagesEnabled = b; - if (saveUserData) { - UserData.getInstance().getConfig().set(playerUUID.toString() + ".messages-enabled", b); - UserData.getInstance().save(); - } - } - - public boolean isBlacklisted() { - return isBlacklisted; - } - - public void setBlacklisted(boolean b) { - this.isBlacklisted = b; - if (saveUserData) { - UserData.getInstance().getConfig().set(playerUUID.toString() + ".is-blacklisted", b); - UserData.getInstance().save(); - } - } - - public void setLastDamageCause(DamageCause dc) { - this.damageCause = dc; - } - - public DamageCause getLastDamage() { - return this.damageCause; - } - - public void setCommandDeath(boolean isCommandDeath) { - this.isCommandDeath = isCommandDeath; - } - - public boolean isCommandDeath() { - return this.isCommandDeath; - } - - public void setLastEntityDamager(@Nullable Entity e) { - setLastExplosiveEntity(null); - setLastProjectileEntity(null); - this.lastEntityDamager = e; - - if (lastEntityTask != null) { - lastEntityTask.cancel(); - } - lastEntityTask = DeathMessages.getInstance().foliaLib.getScheduler().runLater(() -> setLastEntityDamager(null), FileStore.CONFIG.getInt(Config.EXPIRE_LAST_DAMAGE_EXPIRE_PLAYER) * 20L); - } - - public Entity getLastEntityDamager() { - return lastEntityDamager; - } - - public void setLastExplosiveEntity(@Nullable Entity e) { - this.lastExplosiveEntity = e; - } - - public @Nullable Entity getLastExplosiveEntity() { - return lastExplosiveEntity; - } - - public @Nullable Projectile getLastProjectileEntity() { - return lastProjectileEntity; - } - - public void setLastProjectileEntity(@Nullable Projectile lastProjectileEntity) { - this.lastProjectileEntity = lastProjectileEntity; - } - - public Material getLastClimbing() { - return climbing; - } - - public void setLastClimbing(Material climbing) { - this.climbing = climbing; - } - - public void setExplosionCauser(Location location) { - this.explosionCauser = location; - } - - public Location getExplosionCauser() { - return explosionCauser; - } - - public Location getLastLocation() { - return getPlayer().getLocation(); - } - - public boolean isInCooldown() { - return cooldown > 0; - } - - public void setCooldown() { - cooldown = FileStore.CONFIG.getInt(Config.COOLDOWN); - cooldownTask = DeathMessages.getInstance().foliaLib.getScheduler().runTimer(() -> { - if (cooldown <= 0) { - cooldownTask.cancel(); - } - cooldown--; - }, 1, 20); - } - - public void setCachedInventory(Inventory inventory) { - cachedInventory = inventory; - } - - public Inventory getCachedInventory() { - return cachedInventory; - } - - public static @Nullable PlayerManager getPlayer(Player p) { - return getPlayer(p.getUniqueId()); - } - - public static @Nullable PlayerManager getPlayer(UUID uuid) { - return players.get(uuid); - } - - public static boolean isEmpty(Player p) { - return getPlayer(p) == null; - } - - public void removePlayer() { - players.remove(this.playerUUID); - } -} diff --git a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/api/events/BroadcastDeathMessageEvent.java b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/api/events/BroadcastDeathMessageEvent.java index f7d95b4d..09ab31f0 100644 --- a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/api/events/BroadcastDeathMessageEvent.java +++ b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/api/events/BroadcastDeathMessageEvent.java @@ -18,7 +18,8 @@ public class BroadcastDeathMessageEvent extends Event implements Cancellable { private final @Nullable LivingEntity livingEntity; private final MessageType messageType; private final TextComponent textComponent; - private final TextComponent[] textComponents; // 0: Prefix, 1: Message body + // 0: Prefix, 1: Message body + private final TextComponent[] textComponents; private final boolean isGangDeath; private final List broadcastedWorlds; private boolean isCancelled; diff --git a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/api/events/BroadcastEntityDeathMessageEvent.java b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/api/events/BroadcastEntityDeathMessageEvent.java index c42c7ced..2637b844 100644 --- a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/api/events/BroadcastEntityDeathMessageEvent.java +++ b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/api/events/BroadcastEntityDeathMessageEvent.java @@ -1,6 +1,6 @@ package dev.mrshawn.deathmessages.api.events; -import dev.mrshawn.deathmessages.api.PlayerManager; +import dev.mrshawn.deathmessages.api.PlayerCtx; import dev.mrshawn.deathmessages.enums.MessageType; import net.kyori.adventure.text.TextComponent; import org.bukkit.World; @@ -13,21 +13,22 @@ public class BroadcastEntityDeathMessageEvent extends Event implements Cancellable { - // The killer - private final PlayerManager player; + // The killer context + private final PlayerCtx playerCtx; // The entity that was killed by a player private final Entity entity; private final MessageType messageType; private final TextComponent textComponent; - private final TextComponent[] textComponents; // 0: Prefix, 1: Message body + // 0: Prefix, 1: Message body + private final TextComponent[] textComponents; private final List broadcastedWorlds; private boolean isCancelled; private static final HandlerList HANDLERS = new HandlerList(); - public BroadcastEntityDeathMessageEvent(PlayerManager pm, Entity entity, MessageType messageType, TextComponent textComponent, TextComponent[] textComponents, + public BroadcastEntityDeathMessageEvent(PlayerCtx playerCtx, Entity entity, MessageType messageType, TextComponent textComponent, TextComponent[] textComponents, List broadcastedWorlds) { - this.player = pm; + this.playerCtx = playerCtx; this.entity = entity; this.messageType = messageType; this.textComponent = textComponent; @@ -55,8 +56,8 @@ public static HandlerList getHandlerList() { return HANDLERS; } - public PlayerManager getPlayer() { - return this.player; + public PlayerCtx getPlayerContext() { + return this.playerCtx; } public Entity getEntity() { diff --git a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/commands/CommandBlacklist.java b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/commands/CommandBlacklist.java index bb0c1a01..f844004a 100644 --- a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/commands/CommandBlacklist.java +++ b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/commands/CommandBlacklist.java @@ -1,6 +1,6 @@ package dev.mrshawn.deathmessages.commands; -import dev.mrshawn.deathmessages.api.PlayerManager; +import dev.mrshawn.deathmessages.api.PlayerCtx; import dev.mrshawn.deathmessages.config.Settings; import dev.mrshawn.deathmessages.config.UserData; import dev.mrshawn.deathmessages.enums.Permission; @@ -10,6 +10,7 @@ import net.kyori.adventure.text.TextReplacementConfig; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; +import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Player; import java.util.Map; @@ -45,14 +46,14 @@ public void onCommand(CommandSender sender, String[] args) { // Only can be used on online players if (!Settings.getInstance().getConfig().getBoolean(Config.SAVED_USER_DATA.getPath())) { if (target != null && target.isOnline()) { - PlayerManager getPlayer = PlayerManager.getPlayer(target); - if (getPlayer != null) { - if (getPlayer.isBlacklisted()) { - getPlayer.setBlacklisted(false); + PlayerCtx playerCtx = PlayerCtx.of(target.getUniqueId()); + if (playerCtx != null) { + if (playerCtx.isBlacklisted()) { + playerCtx.setBlacklisted(false); ComponentUtil.sendMessage(sender, Util.formatMessage("Commands.DeathMessages.Sub-Commands.Blacklist.Blacklist-Remove") .replaceText(player)); } else { - getPlayer.setBlacklisted(true); + playerCtx.setBlacklisted(true); ComponentUtil.sendMessage(sender, Util.formatMessage("Commands.DeathMessages.Sub-Commands.Blacklist.Blacklist-Add") .replaceText(player)); } @@ -64,29 +65,31 @@ public void onCommand(CommandSender sender, String[] args) { return; } + FileConfiguration userData = UserData.getInstance().getConfig(); + // Saved-User-Data enabled // Can be used on all players stored in userData - for (Map.Entry entry : UserData.getInstance().getConfig().getValues(false).entrySet()) { - String username = UserData.getInstance().getConfig().getString(entry.getKey() + ".username"); + for (Map.Entry entry : userData.getValues(false).entrySet()) { + String username = userData.getString(entry.getKey() + ".username"); if (username.equalsIgnoreCase(args[0])) { - PlayerManager getPlayer = PlayerManager.getPlayer(UUID.fromString(entry.getKey())); - boolean blacklisted = UserData.getInstance().getConfig().getBoolean(entry.getKey() + ".is-blacklisted"); + PlayerCtx playerCtx = PlayerCtx.of(UUID.fromString(entry.getKey())); + boolean blacklisted = userData.getBoolean(entry.getKey() + ".is-blacklisted"); if (blacklisted) { - if (getPlayer != null) { - getPlayer.setBlacklisted(false); + if (playerCtx != null) { + playerCtx.setBlacklisted(false); } else { - UserData.getInstance().getConfig().set(entry.getKey() + ".is-blacklisted", false); + userData.set(entry.getKey() + ".is-blacklisted", false); UserData.getInstance().save(); } ComponentUtil.sendMessage(sender, Util.formatMessage("Commands.DeathMessages.Sub-Commands.Blacklist.Blacklist-Remove") .replaceText(player)); } else { - if (getPlayer != null) { - getPlayer.setBlacklisted(true); + if (playerCtx != null) { + playerCtx.setBlacklisted(true); } else { - UserData.getInstance().getConfig().set(entry.getKey() + ".is-blacklisted", true); + userData.set(entry.getKey() + ".is-blacklisted", true); UserData.getInstance().save(); } ComponentUtil.sendMessage(sender, Util.formatMessage("Commands.DeathMessages.Sub-Commands.Blacklist.Blacklist-Add") diff --git a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/commands/CommandToggle.java b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/commands/CommandToggle.java index eac7deb1..9edb9479 100644 --- a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/commands/CommandToggle.java +++ b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/commands/CommandToggle.java @@ -1,6 +1,6 @@ package dev.mrshawn.deathmessages.commands; -import dev.mrshawn.deathmessages.api.PlayerManager; +import dev.mrshawn.deathmessages.api.PlayerCtx; import dev.mrshawn.deathmessages.enums.Permission; import dev.mrshawn.deathmessages.utils.ComponentUtil; import dev.mrshawn.deathmessages.utils.Util; @@ -26,14 +26,13 @@ public void onCommand(CommandSender sender, String[] args) { return; } - PlayerManager getPlayer = PlayerManager.getPlayer(player); - if (getPlayer != null) { - boolean msg = getPlayer.getMessagesEnabled(); - if (msg) { - getPlayer.setMessagesEnabled(false); + PlayerCtx playerCtx = PlayerCtx.of(player.getUniqueId()); + if (playerCtx != null) { + if (playerCtx.isMessageEnabled()) { + playerCtx.setMessageEnabled(false); ComponentUtil.sendMessage(player, Util.formatMessage("Commands.DeathMessages.Sub-Commands.Toggle.Toggle-Off")); } else { - getPlayer.setMessagesEnabled(true); + playerCtx.setMessageEnabled(true); ComponentUtil.sendMessage(player, Util.formatMessage("Commands.DeathMessages.Sub-Commands.Toggle.Toggle-On")); } } diff --git a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/commands/alias/CommandDeathMessagesToggle.java b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/commands/alias/CommandDeathMessagesToggle.java index 80b61a8d..a4c4070f 100644 --- a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/commands/alias/CommandDeathMessagesToggle.java +++ b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/commands/alias/CommandDeathMessagesToggle.java @@ -1,6 +1,6 @@ package dev.mrshawn.deathmessages.commands.alias; -import dev.mrshawn.deathmessages.api.PlayerManager; +import dev.mrshawn.deathmessages.api.PlayerCtx; import dev.mrshawn.deathmessages.enums.Permission; import dev.mrshawn.deathmessages.utils.ComponentUtil; import dev.mrshawn.deathmessages.utils.Util; @@ -22,14 +22,13 @@ public boolean onCommand(final CommandSender sender, final Command command, fina ComponentUtil.sendMessage(player, Util.formatMessage("Commands.DeathMessages.No-Permission")); return false; } - PlayerManager getPlayer = PlayerManager.getPlayer(player); - if (getPlayer != null) { - boolean msg = getPlayer.getMessagesEnabled(); - if (msg) { - getPlayer.setMessagesEnabled(false); + PlayerCtx playerCtx = PlayerCtx.of(player.getUniqueId()); + if (playerCtx != null) { + if (playerCtx.isMessageEnabled()) { + playerCtx.setMessageEnabled(false); ComponentUtil.sendMessage(player, Util.formatMessage("Commands.DeathMessages.Sub-Commands.Toggle.Toggle-Off")); } else { - getPlayer.setMessagesEnabled(true); + playerCtx.setMessageEnabled(true); ComponentUtil.sendMessage(player, Util.formatMessage("Commands.DeathMessages.Sub-Commands.Toggle.Toggle-On")); } } diff --git a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/hooks/DiscordSRVExtension.java b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/hooks/DiscordSRVExtension.java index ea654814..4945225a 100644 --- a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/hooks/DiscordSRVExtension.java +++ b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/hooks/DiscordSRVExtension.java @@ -1,7 +1,7 @@ package dev.mrshawn.deathmessages.hooks; import dev.mrshawn.deathmessages.DeathMessages; -import dev.mrshawn.deathmessages.api.PlayerManager; +import dev.mrshawn.deathmessages.api.PlayerCtx; import dev.mrshawn.deathmessages.config.Messages; import dev.mrshawn.deathmessages.enums.MessageType; import dev.mrshawn.deathmessages.config.files.Config; @@ -30,7 +30,7 @@ public class DiscordSRVExtension { public DiscordSRVExtension() { } - public void sendDiscordMessage(TextComponent[] components, MessageType messageType, PlayerManager pm) { + public void sendDiscordMessage(TextComponent[] components, MessageType messageType, PlayerCtx playerCtx) { final List channels = DiscordAssets.getInstance().getIDs(messageType); for (String groups : channels) { @@ -72,19 +72,19 @@ public void sendDiscordMessage(TextComponent[] components, MessageType messageTy } if (getMessages().getString("Discord.DeathMessage.Text").isEmpty()) { - textChannel.sendMessage(buildMessage(pm, message)).queue(); + textChannel.sendMessage(buildMessage(playerCtx, message)).queue(); } else { String[] spl = getMessages().getString("Discord.DeathMessage.Text").split("\\\\n"); StringBuilder sb = new StringBuilder(); for (String s : spl) { sb.append(s + "\n"); } - if (pm.getLastEntityDamager() instanceof FallingBlock) { - textChannel.sendMessage(Util.convertToLegacy(Assets.playerDeathPlaceholders(Util.convertFromLegacy(sb.toString()), pm, null) + if (playerCtx.getLastEntityDamager() instanceof FallingBlock) { + textChannel.sendMessage(Util.convertToLegacy(Assets.playerDeathPlaceholders(Util.convertFromLegacy(sb.toString()), playerCtx, null) .replaceText(TextReplacementConfig.builder().matchLiteral("%message%").replacement(message).build()))) .queue(); } else { - textChannel.sendMessage(Util.convertToLegacy(Assets.playerDeathPlaceholders(Util.convertFromLegacy(sb.toString()), pm, pm.getLastEntityDamager()) + textChannel.sendMessage(Util.convertToLegacy(Assets.playerDeathPlaceholders(Util.convertFromLegacy(sb.toString()), playerCtx, playerCtx.getLastEntityDamager()) .replaceText(TextReplacementConfig.builder().matchLiteral("%message%").replacement(message).build()))) .queue(); } @@ -92,7 +92,7 @@ public void sendDiscordMessage(TextComponent[] components, MessageType messageTy } } - public void sendEntityDiscordMessage(TextComponent[] components, MessageType messageType, PlayerManager pm, Entity entity, boolean hasOwner) { + public void sendEntityDiscordMessage(TextComponent[] components, MessageType messageType, PlayerCtx playerCtx, Entity entity, boolean hasOwner) { final List channels = DiscordAssets.getInstance().getIDs(messageType); for (String groups : channels) { @@ -129,7 +129,7 @@ public void sendEntityDiscordMessage(TextComponent[] components, MessageType mes } if (getMessages().getString("Discord.DeathMessage.Text").isEmpty()) { - textChannel.sendMessage(buildMessage(message, pm.getPlayer(), entity, hasOwner)) + textChannel.sendMessage(buildMessage(message, playerCtx.getPlayer(), entity, hasOwner)) .queue(); } else { String[] spl = getMessages().getString("Discord.DeathMessage.Text").split("\\\\n"); @@ -138,12 +138,12 @@ public void sendEntityDiscordMessage(TextComponent[] components, MessageType mes sb.append(s + "\n"); } - if (pm.getLastEntityDamager() instanceof FallingBlock) { - textChannel.sendMessage(Util.convertToLegacy(Assets.playerDeathPlaceholders(Util.convertFromLegacy(sb.toString()), pm, null) + if (playerCtx.getLastEntityDamager() instanceof FallingBlock) { + textChannel.sendMessage(Util.convertToLegacy(Assets.playerDeathPlaceholders(Util.convertFromLegacy(sb.toString()), playerCtx, null) .replaceText(TextReplacementConfig.builder().matchLiteral("%message%").replacement(message).build()))) .queue(); } else { - textChannel.sendMessage(Util.convertToLegacy(Assets.playerDeathPlaceholders(Util.convertFromLegacy(sb.toString()), pm, pm.getLastEntityDamager()) + textChannel.sendMessage(Util.convertToLegacy(Assets.playerDeathPlaceholders(Util.convertFromLegacy(sb.toString()), playerCtx, playerCtx.getLastEntityDamager()) .replaceText(TextReplacementConfig.builder().matchLiteral("%message%").replacement(message).build()))) .queue(); } @@ -151,7 +151,7 @@ public void sendEntityDiscordMessage(TextComponent[] components, MessageType mes } } - private MessageEmbed buildMessage(PlayerManager pm, String message) { + private MessageEmbed buildMessage(PlayerCtx playerCtx, String message) { EmbedBuilder eb = new EmbedBuilder(); eb.setColor(getDeathMessageColor()); @@ -159,11 +159,11 @@ private MessageEmbed buildMessage(PlayerManager pm, String message) { String name = getMessages().getString("Discord.DeathMessage.Author.Name") .replaceAll("%message%", message); String url = getMessages().getString("Discord.DeathMessage.Author.URL") - .replaceAll("%uuid%", pm.getUUID().toString()) - .replaceAll("%username%", pm.getName()); + .replaceAll("%uuid%", playerCtx.getUUID().toString()) + .replaceAll("%username%", playerCtx.getName()); String iconURL = getMessages().getString("Discord.DeathMessage.Author.Icon-URL") - .replaceAll("%uuid%", pm.getUUID().toString()) - .replaceAll("%username%", pm.getName()); + .replaceAll("%uuid%", playerCtx.getUUID().toString()) + .replaceAll("%username%", playerCtx.getName()); if (!url.startsWith("http") && iconURL.startsWith("http")) { eb.setAuthor(name, null, iconURL); @@ -179,30 +179,30 @@ private MessageEmbed buildMessage(PlayerManager pm, String message) { if (getMessages().getString("Discord.DeathMessage.Image").startsWith("http")) { eb.setThumbnail(getMessages().getString("Discord.DeathMessage.Image") - .replaceAll("%uuid%", pm.getUUID().toString()) - .replaceAll("%username%", pm.getName())); + .replaceAll("%uuid%", playerCtx.getUUID().toString()) + .replaceAll("%username%", playerCtx.getName())); } - String title = Util.convertToLegacy(Assets.playerDeathPlaceholders(Util.convertFromLegacy(getMessages().getString("Discord.DeathMessage.Title")), pm, pm.getLastEntityDamager()) + String title = Util.convertToLegacy(Assets.playerDeathPlaceholders(Util.convertFromLegacy(getMessages().getString("Discord.DeathMessage.Title")), playerCtx, playerCtx.getLastEntityDamager()) .replaceText(TextReplacementConfig.builder().matchLiteral("%message%").replacement(message).build())); if (!title.equalsIgnoreCase("")) { eb.setTitle(title); } - String description = Util.convertToLegacy(Assets.playerDeathPlaceholders(Util.convertFromLegacy(getMessages().getString("Discord.DeathMessage.Description")), pm, pm.getLastEntityDamager()) + String description = Util.convertToLegacy(Assets.playerDeathPlaceholders(Util.convertFromLegacy(getMessages().getString("Discord.DeathMessage.Description")), playerCtx, playerCtx.getLastEntityDamager()) .replaceText(TextReplacementConfig.builder().matchLiteral("%message%").replacement(message).build())); if (!description.equalsIgnoreCase("")) { eb.setDescription(description); } - String footerText = Util.convertToLegacy(Assets.playerDeathPlaceholders(Util.convertFromLegacy(getMessages().getString("Discord.DeathMessage.Footer.Text")), pm, pm.getLastEntityDamager()) + String footerText = Util.convertToLegacy(Assets.playerDeathPlaceholders(Util.convertFromLegacy(getMessages().getString("Discord.DeathMessage.Footer.Text")), playerCtx, playerCtx.getLastEntityDamager()) .replaceText(TextReplacementConfig.builder().matchLiteral("%message%").replacement(message).build())); - String footerIcon = Util.convertToLegacy(Assets.playerDeathPlaceholders(Util.convertFromLegacy(getMessages().getString("Discord.DeathMessage.Footer.Icon-URL")), pm, pm.getLastEntityDamager()) + String footerIcon = Util.convertToLegacy(Assets.playerDeathPlaceholders(Util.convertFromLegacy(getMessages().getString("Discord.DeathMessage.Footer.Icon-URL")), playerCtx, playerCtx.getLastEntityDamager()) .replaceText(TextReplacementConfig.builder().matchLiteral("%message%").replacement(message).build()) - .replaceText(TextReplacementConfig.builder().matchLiteral("%uuid%").replacement(pm.getUUID().toString()).build()) - .replaceText(TextReplacementConfig.builder().matchLiteral("%username%").replacement(pm.getName()).build())); + .replaceText(TextReplacementConfig.builder().matchLiteral("%uuid%").replacement(playerCtx.getUUID().toString()).build()) + .replaceText(TextReplacementConfig.builder().matchLiteral("%username%").replacement(playerCtx.getName()).build())); if (!footerText.equalsIgnoreCase("") && footerIcon.startsWith("http")) { eb.setFooter(footerText, footerIcon); @@ -223,9 +223,9 @@ private MessageEmbed buildMessage(PlayerManager pm, String message) { eb.addBlankField(b); } else { boolean b = Boolean.parseBoolean(conSpl[2]); - String header = Util.convertToLegacy(Assets.playerDeathPlaceholders(Util.convertFromLegacy(conSpl[0]), pm, pm.getLastEntityDamager()) + String header = Util.convertToLegacy(Assets.playerDeathPlaceholders(Util.convertFromLegacy(conSpl[0]), playerCtx, playerCtx.getLastEntityDamager()) .replaceText(TextReplacementConfig.builder().matchLiteral("%message%").replacement(message).build())); - String subHeader = Util.convertToLegacy(Assets.playerDeathPlaceholders(Util.convertFromLegacy(conSpl[1]), pm, pm.getLastEntityDamager()) + String subHeader = Util.convertToLegacy(Assets.playerDeathPlaceholders(Util.convertFromLegacy(conSpl[1]), playerCtx, playerCtx.getLastEntityDamager()) .replaceText(TextReplacementConfig.builder().matchLiteral("%message%").replacement(message).build())); eb.addField(header, subHeader, b); } diff --git a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/hooks/PlaceholderAPIExtension.java b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/hooks/PlaceholderAPIExtension.java index c88b6c39..0bf70e45 100644 --- a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/hooks/PlaceholderAPIExtension.java +++ b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/hooks/PlaceholderAPIExtension.java @@ -1,9 +1,10 @@ package dev.mrshawn.deathmessages.hooks; import dev.mrshawn.deathmessages.DeathMessages; -import dev.mrshawn.deathmessages.api.PlayerManager; +import dev.mrshawn.deathmessages.api.PlayerCtx; import me.clip.placeholderapi.expansion.PlaceholderExpansion; import org.jspecify.annotations.NullMarked; +import org.bukkit.entity.Entity; import org.bukkit.entity.Player; @NullMarked @@ -94,25 +95,27 @@ public String getVersion() { */ @Override public String onPlaceholderRequest(Player player, String params) { - PlayerManager getPlayer = PlayerManager.getPlayer(player); + PlayerCtx playerCtx = PlayerCtx.of(player.getUniqueId()); - if (getPlayer == null) { + if (playerCtx == null) { return "null"; } + final Entity lastEntityDamager = playerCtx.getLastEntityDamager(); + switch (params) { case "messages_enabled": - return String.valueOf(getPlayer.getMessagesEnabled()); + return String.valueOf(playerCtx.isMessageEnabled()); case "is_blacklisted": - return String.valueOf(getPlayer.isBlacklisted()); + return String.valueOf(playerCtx.isBlacklisted()); case "victim_name": - return getPlayer.getName(); + return playerCtx.getName(); case "victim_display_name": - return getPlayer.getPlayer().getDisplayName(); + return playerCtx.getPlayer().getDisplayName(); case "killer_name": - return (getPlayer.getLastEntityDamager() != null) ? getPlayer.getLastEntityDamager().getName() : "null"; + return lastEntityDamager != null ? lastEntityDamager.getName() : "null"; case "killer_display_name": - return (getPlayer.getLastEntityDamager() != null) ? getPlayer.getLastEntityDamager().getCustomName() : "null"; + return lastEntityDamager != null ? lastEntityDamager.getCustomName() : "null"; default: return "null"; } diff --git a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/EntityDamage.java b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/EntityDamage.java index 964e48eb..47515ae1 100644 --- a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/EntityDamage.java +++ b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/EntityDamage.java @@ -1,13 +1,12 @@ package dev.mrshawn.deathmessages.listeners; import dev.mrshawn.deathmessages.DeathMessages; -import dev.mrshawn.deathmessages.api.EntityManager; -import dev.mrshawn.deathmessages.api.PlayerManager; +import dev.mrshawn.deathmessages.api.EntityCtx; +import dev.mrshawn.deathmessages.api.PlayerCtx; import dev.mrshawn.deathmessages.config.EntityDeathMessages; import dev.mrshawn.deathmessages.enums.MobType; import dev.mrshawn.deathmessages.utils.EntityUtil; import dev.mrshawn.deathmessages.utils.Util; -import org.bukkit.Bukkit; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; @@ -24,20 +23,20 @@ public class EntityDamage implements Listener { public void onEntityDamage(EntityDamageEvent e) { if (e.isCancelled()) return; - if (e.getEntity() instanceof Player && Bukkit.getServer().getOnlinePlayers().contains((Player) e.getEntity())) { + if (e.getEntity() instanceof Player) { Player p = (Player) e.getEntity(); - PlayerManager getPlayer = PlayerManager.getPlayer(p); - if (getPlayer != null) { - getPlayer.setLastDamageCause(e.getCause()); + PlayerCtx playerCtx = PlayerCtx.of(p.getUniqueId()); + if (playerCtx != null) { + playerCtx.setLastDamageCause(e.getCause()); if (Util.isNewerAndEqual(20, 3) && e.getCause().equals(EntityDamageEvent.DamageCause.BLOCK_EXPLOSION)) { // For >= 1.20.3, because TNT explosion became BLOCK_EXPLOSION since 1.20.3 if (e.getDamageSource().getDirectEntity() instanceof TNTPrimed) { TNTPrimed tnt = (TNTPrimed) e.getDamageSource().getDirectEntity(); if (tnt.getSource() instanceof LivingEntity) { - getPlayer.setLastEntityDamager(tnt.getSource()); + playerCtx.setLastEntityDamager(tnt.getSource()); } - getPlayer.setLastExplosiveEntity(tnt); + playerCtx.setLastExplosiveEntity(tnt); } } } @@ -58,17 +57,17 @@ public void onEntityDamage(EntityDamageEvent e) { for (String listened : listenedMobs) { if (listened.contains(EntityUtil.getConfigNodeByEntity(e.getEntity()))) { - EntityManager getEntity = EntityManager.getEntity(e.getEntity().getUniqueId()); + EntityCtx entityCtx = EntityCtx.of(e.getEntity().getUniqueId()); - if (getEntity != null) { - getEntity.setLastDamageCause(e.getCause()); + if (entityCtx != null) { + entityCtx.setLastDamageCause(e.getCause()); } else { MobType mobType = MobType.VANILLA; if (DeathMessages.getHooks().mythicmobsEnabled && DeathMessages.getHooks().mythicMobs.getAPIHelper().isMythicMob(e.getEntity().getUniqueId())) { mobType = MobType.MYTHIC_MOB; } - new EntityManager(e.getEntity(), e.getEntity().getUniqueId(), mobType); + EntityCtx.create(new EntityCtx(e.getEntity(), mobType)); } } } diff --git a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/EntityDamageByBlock.java b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/EntityDamageByBlock.java index 2eb2a8be..f9cddfff 100644 --- a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/EntityDamageByBlock.java +++ b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/EntityDamageByBlock.java @@ -1,12 +1,11 @@ package dev.mrshawn.deathmessages.listeners; import dev.mrshawn.deathmessages.DeathMessages; -import dev.mrshawn.deathmessages.api.EntityManager; -import dev.mrshawn.deathmessages.api.PlayerManager; +import dev.mrshawn.deathmessages.api.EntityCtx; +import dev.mrshawn.deathmessages.api.PlayerCtx; import dev.mrshawn.deathmessages.config.EntityDeathMessages; import dev.mrshawn.deathmessages.enums.MobType; import dev.mrshawn.deathmessages.utils.EntityUtil; -import org.bukkit.Bukkit; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -20,11 +19,11 @@ public class EntityDamageByBlock implements Listener { @EventHandler(priority = EventPriority.HIGH) public void onEntityDeath(EntityDamageByBlockEvent e) { - if (e.getEntity() instanceof Player && Bukkit.getServer().getOnlinePlayers().contains((Player) e.getEntity())) { + if (e.getEntity() instanceof Player) { Player p = (Player) e.getEntity(); - PlayerManager getPlayer = PlayerManager.getPlayer(p); - if (getPlayer != null) { - getPlayer.setLastDamageCause(e.getCause()); + PlayerCtx playerCtx = PlayerCtx.of(p.getUniqueId()); + if (playerCtx != null) { + playerCtx.setLastDamageCause(e.getCause()); } } else { ConfigurationSection entityConfig = EntityDeathMessages.getInstance().getConfig().getConfigurationSection("Entities"); @@ -42,17 +41,17 @@ public void onEntityDeath(EntityDamageByBlockEvent e) { for (String listened : listenedMobs) { if (listened.contains(EntityUtil.getConfigNodeByEntity(e.getEntity()))) { - EntityManager getEntity = EntityManager.getEntity(e.getEntity().getUniqueId()); + EntityCtx entityCtx = EntityCtx.of(e.getEntity().getUniqueId()); - if (getEntity != null) { - getEntity.setLastDamageCause(e.getCause()); + if (entityCtx != null) { + entityCtx.setLastDamageCause(e.getCause()); } else { MobType mobType = MobType.VANILLA; if (DeathMessages.getHooks().mythicmobsEnabled && DeathMessages.getHooks().mythicMobs.getAPIHelper().isMythicMob(e.getEntity().getUniqueId())) { mobType = MobType.MYTHIC_MOB; } - new EntityManager(e.getEntity(), e.getEntity().getUniqueId(), mobType); + EntityCtx.create(new EntityCtx(e.getEntity(), mobType)); } } } diff --git a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/EntityDamageByEntity.java b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/EntityDamageByEntity.java index c67e400f..38e650ff 100644 --- a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/EntityDamageByEntity.java +++ b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/EntityDamageByEntity.java @@ -1,13 +1,12 @@ package dev.mrshawn.deathmessages.listeners; import dev.mrshawn.deathmessages.DeathMessages; -import dev.mrshawn.deathmessages.api.EntityManager; -import dev.mrshawn.deathmessages.api.PlayerManager; +import dev.mrshawn.deathmessages.api.EntityCtx; +import dev.mrshawn.deathmessages.api.PlayerCtx; import dev.mrshawn.deathmessages.config.EntityDeathMessages; import dev.mrshawn.deathmessages.enums.MobType; import dev.mrshawn.deathmessages.utils.EntityUtil; import dev.mrshawn.deathmessages.utils.Util; -import org.bukkit.Bukkit; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.entity.AreaEffectCloud; import org.bukkit.entity.EnderCrystal; @@ -33,52 +32,52 @@ public void entityDamageByEntity(EntityDamageByEntityEvent e) { // Get the damager of ender crystal Util.loadCrystalDamager(e.getEntity(), e.getDamager()); - if (e.getEntity() instanceof Player && Bukkit.getServer().getOnlinePlayers().contains((Player) e.getEntity())) { + if (e.getEntity() instanceof Player) { Player p = (Player) e.getEntity(); - PlayerManager getPlayer = PlayerManager.getPlayer(p); - if (getPlayer != null) { + PlayerCtx playerCtx = PlayerCtx.of(p.getUniqueId()); + if (playerCtx != null) { if (e.getCause().equals(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION)) { Entity lastCrystalDamager = Util.crystalDeathData.get(e.getDamager().getUniqueId()); if (e.getDamager() instanceof EnderCrystal && lastCrystalDamager != null) { - getPlayer.setLastEntityDamager(lastCrystalDamager); - getPlayer.setLastExplosiveEntity(e.getDamager()); + playerCtx.setLastEntityDamager(lastCrystalDamager); + playerCtx.setLastExplosiveEntity(e.getDamager()); } else if (e.getDamager() instanceof TNTPrimed) { // For <= 1.20.2, because TNT explosion became BLOCK_EXPLOSION since 1.20.3 TNTPrimed tnt = (TNTPrimed) e.getDamager(); if (tnt.getSource() instanceof LivingEntity) { - getPlayer.setLastEntityDamager(tnt.getSource()); + playerCtx.setLastEntityDamager(tnt.getSource()); } - getPlayer.setLastExplosiveEntity(e.getDamager()); + playerCtx.setLastExplosiveEntity(e.getDamager()); } else if (Util.isNewerAndEqual(16, 0) && e.getDamager() instanceof Firework) { // Firework extends Entity under <= 1.15 Firework firework = (Firework) e.getDamager(); try { if (firework.getShooter() instanceof LivingEntity) { - getPlayer.setLastEntityDamager((LivingEntity) firework.getShooter()); + playerCtx.setLastEntityDamager((LivingEntity) firework.getShooter()); } - getPlayer.setLastExplosiveEntity(e.getDamager()); + playerCtx.setLastExplosiveEntity(e.getDamager()); } catch (NoSuchMethodError e2) { // McMMO ability DeathMessages.LOGGER.error(e2); } } else { - getPlayer.setLastEntityDamager(e.getDamager()); - getPlayer.setLastExplosiveEntity(e.getDamager()); + playerCtx.setLastEntityDamager(e.getDamager()); + playerCtx.setLastExplosiveEntity(e.getDamager()); } } else if (e.getDamager() instanceof Projectile) { Projectile projectile = (Projectile) e.getDamager(); if (projectile.getShooter() instanceof LivingEntity) { - getPlayer.setLastEntityDamager((LivingEntity) projectile.getShooter()); + playerCtx.setLastEntityDamager((LivingEntity) projectile.getShooter()); } - getPlayer.setLastProjectileEntity(projectile); + playerCtx.setLastProjectileEntity(projectile); } else if (e.getDamager() instanceof FallingBlock) { - getPlayer.setLastEntityDamager(e.getDamager()); + playerCtx.setLastEntityDamager(e.getDamager()); } else if (e.getDamager().getType().isAlive()) { - getPlayer.setLastEntityDamager(e.getDamager()); + playerCtx.setLastEntityDamager(e.getDamager()); } else if (e.getDamager() instanceof EvokerFangs) { EvokerFangs evokerFangs = (EvokerFangs) e.getDamager(); - getPlayer.setLastEntityDamager(evokerFangs.getOwner()); + playerCtx.setLastEntityDamager(evokerFangs.getOwner()); } else if (e.getDamager() instanceof AreaEffectCloud) { - getPlayer.setLastEntityDamager(e.getDamager()); + playerCtx.setLastEntityDamager(e.getDamager()); } } } else if (!(e.getEntity() instanceof Player) && e.getDamager() instanceof Player) { @@ -101,62 +100,62 @@ public void entityDamageByEntity(EntityDamageByEntityEvent e) { for (String listened : listenedMobs) { if (listened.contains(EntityUtil.getConfigNodeByEntity(e.getEntity())) || (DeathMessages.getHooks().mythicmobsEnabled && DeathMessages.getHooks().mythicMobs.getAPIHelper().isMythicMob(e.getEntity().getUniqueId()))) { - EntityManager getEntity = EntityManager.getEntity(e.getEntity().getUniqueId()); - if (getEntity != null) { + EntityCtx entityCtx = EntityCtx.of(e.getEntity().getUniqueId()); + if (entityCtx != null) { if (e.getCause().equals(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION)) { Entity lastCrystalDamager = Util.crystalDeathData.get(e.getDamager().getUniqueId()); if (e.getDamager() instanceof EnderCrystal && lastCrystalDamager != null) { if (lastCrystalDamager instanceof Player) { - PlayerManager getPlayer = PlayerManager.getPlayer((Player) lastCrystalDamager); - if (getPlayer != null) { - getEntity.setLastPlayerDamager(getPlayer); + PlayerCtx playerCtx = PlayerCtx.of(lastCrystalDamager.getUniqueId()); + if (playerCtx != null) { + entityCtx.setLastPlayerDamager(playerCtx); } - getEntity.setLastExplosiveEntity(e.getDamager()); + entityCtx.setLastExplosiveEntity(e.getDamager()); } } else if (e.getDamager() instanceof TNTPrimed) { TNTPrimed tnt = (TNTPrimed) e.getDamager(); if (tnt.getSource() instanceof Player) { - PlayerManager getPlayer = PlayerManager.getPlayer((Player) tnt.getSource()); - if (getPlayer != null) { - getEntity.setLastPlayerDamager(getPlayer); + PlayerCtx playerCtx = PlayerCtx.of(tnt.getSource().getUniqueId()); + if (playerCtx != null) { + entityCtx.setLastPlayerDamager(playerCtx); } } - getEntity.setLastExplosiveEntity(e.getDamager()); + entityCtx.setLastExplosiveEntity(e.getDamager()); } else if (Util.isNewerAndEqual(16, 0) && e.getDamager() instanceof Firework) { Firework firework = (Firework) e.getDamager(); try { if (firework.getShooter() instanceof Player) { - PlayerManager getPlayer = PlayerManager.getPlayer((Player) firework.getShooter()); - if (getPlayer != null) { - getEntity.setLastPlayerDamager(getPlayer); + PlayerCtx playerCtx = PlayerCtx.of(((Player) firework.getShooter()).getUniqueId()); + if (playerCtx != null) { + entityCtx.setLastPlayerDamager(playerCtx); } } - getEntity.setLastExplosiveEntity(e.getDamager()); + entityCtx.setLastExplosiveEntity(e.getDamager()); } catch (NoSuchMethodError e3) { // McMMO ability DeathMessages.LOGGER.error(e3); } } else { - PlayerManager getPlayer = PlayerManager.getPlayer((Player) e.getDamager()); - if (getPlayer != null) { - getEntity.setLastPlayerDamager(getPlayer); + PlayerCtx playerCtx = PlayerCtx.of(e.getDamager().getUniqueId()); + if (playerCtx != null) { + entityCtx.setLastPlayerDamager(playerCtx); } - getEntity.setLastExplosiveEntity(e.getDamager()); + entityCtx.setLastExplosiveEntity(e.getDamager()); } } else if (e.getDamager() instanceof Projectile) { Projectile projectile = (Projectile) e.getDamager(); if (projectile.getShooter() instanceof Player) { - PlayerManager getPlayer = PlayerManager.getPlayer((Player) projectile.getShooter()); - if (getPlayer != null) { - getEntity.setLastPlayerDamager(getPlayer); + PlayerCtx playerCtx = PlayerCtx.of(((Player) projectile.getShooter()).getUniqueId()); + if (playerCtx != null) { + entityCtx.setLastPlayerDamager(playerCtx); } } - getEntity.setLastProjectileEntity(projectile); + entityCtx.setLastProjectileEntity(projectile); } else if (e.getDamager() instanceof Player) { - PlayerManager getPlayer = PlayerManager.getPlayer((Player) e.getDamager()); - if (getPlayer != null) { - getEntity.setLastPlayerDamager(getPlayer); + PlayerCtx playerCtx = PlayerCtx.of(e.getDamager().getUniqueId()); + if (playerCtx != null) { + entityCtx.setLastPlayerDamager(playerCtx); } } } else { @@ -166,7 +165,7 @@ public void entityDamageByEntity(EntityDamageByEntityEvent e) { mobType = MobType.MYTHIC_MOB; } - new EntityManager(e.getEntity(), e.getEntity().getUniqueId(), mobType); + EntityCtx.create(new EntityCtx(e.getEntity(), mobType)); } } } diff --git a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/EntityDeath.java b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/EntityDeath.java index 6b1d94f7..e709c7c6 100644 --- a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/EntityDeath.java +++ b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/EntityDeath.java @@ -1,8 +1,8 @@ package dev.mrshawn.deathmessages.listeners; import dev.mrshawn.deathmessages.DeathMessages; -import dev.mrshawn.deathmessages.api.EntityManager; -import dev.mrshawn.deathmessages.api.PlayerManager; +import dev.mrshawn.deathmessages.api.EntityCtx; +import dev.mrshawn.deathmessages.api.PlayerCtx; import dev.mrshawn.deathmessages.api.events.BroadcastDeathMessageEvent; import dev.mrshawn.deathmessages.api.events.BroadcastEntityDeathMessageEvent; import dev.mrshawn.deathmessages.config.Gangs; @@ -29,90 +29,89 @@ public class EntityDeath implements Listener { void onEntityDeath(EntityDeathEvent e) { // Player death - if (e.getEntity() instanceof Player && Bukkit.getServer().getOnlinePlayers().contains((Player) e.getEntity())) { + if (e.getEntity() instanceof Player) { Player player = (Player) e.getEntity(); - PlayerManager getPlayer = PlayerManager.getPlayer(player); - if (getPlayer != null) { - if (getPlayer.isCommandDeath()) { // If died by using suicide like command - // set to null since it is command death - getPlayer.setLastEntityDamager(null); - getPlayer.setLastDamageCause(EntityDamageEvent.DamageCause.SUICIDE); - getPlayer.setCommandDeath(false); - } else if (e.getEntity().getLastDamageCause() == null) { - getPlayer.setLastDamageCause(EntityDamageEvent.DamageCause.CUSTOM); - } else { // Reset lastDamageCause - getPlayer.setLastDamageCause(e.getEntity().getLastDamageCause().getCause()); + PlayerCtx playerCtx = PlayerCtx.of(player.getUniqueId()); + + if (playerCtx == null) return; + + if (playerCtx.isCommandDeath()) { // If died by using suicide like command + // set to null since it is command death + playerCtx.setLastEntityDamager(null); + playerCtx.setLastDamageCause(EntityDamageEvent.DamageCause.SUICIDE); + playerCtx.setCommandDeath(false); + } else if (e.getEntity().getLastDamageCause() == null) { + playerCtx.setLastDamageCause(EntityDamageEvent.DamageCause.CUSTOM); + } else { // Reset lastDamageCause + playerCtx.setLastDamageCause(e.getEntity().getLastDamageCause().getCause()); + } + + if (playerCtx.isBlacklisted()) return; + + if (!(playerCtx.getLastEntityDamager() instanceof LivingEntity) || playerCtx.getLastEntityDamager() == e.getEntity()) { + TextComponent[] naturalDeath = Assets.playerNatureDeathMessage(playerCtx, player); + TextComponent oldNaturalDeath = naturalDeath[0].append(naturalDeath[1]); // Dreeam TODO: Remove in 1.4.21 + + if (!ComponentUtil.isMessageEmpty(naturalDeath)) { + BroadcastDeathMessageEvent event = new BroadcastDeathMessageEvent( + player, + null, + MessageType.NATURAL, + oldNaturalDeath, + naturalDeath, + Util.getBroadcastWorlds(player), + false + ); + Bukkit.getPluginManager().callEvent(event); } + } else { + // Killed by mob + Entity ent = playerCtx.getLastEntityDamager(); + boolean gangKill = false; - if (getPlayer.isBlacklisted()) return; - - if (!(getPlayer.getLastEntityDamager() instanceof LivingEntity) || getPlayer.getLastEntityDamager() == e.getEntity()) { - TextComponent[] naturalDeath = Assets.playerNatureDeathMessage(getPlayer, player); - TextComponent oldNaturalDeath = naturalDeath[0].append(naturalDeath[1]); // Dreeam TODO: Remove in 1.4.21 - - if (!ComponentUtil.isMessageEmpty(naturalDeath)) { - BroadcastDeathMessageEvent event = new BroadcastDeathMessageEvent( - player, - null, - MessageType.NATURAL, - oldNaturalDeath, - naturalDeath, - Util.getBroadcastWorlds(player), - false - ); - Bukkit.getPluginManager().callEvent(event); - } - } else { - // Killed by mob - Entity ent = getPlayer.getLastEntityDamager(); - boolean gangKill = false; - - if (Gangs.getInstance().getConfig().getBoolean("Gang.Enabled")) { - String mobName = EntityUtil.getConfigNodeByEntity(ent); - int radius = Gangs.getInstance().getConfig().getInt("Gang.Mobs." + mobName + ".Radius"); - int amount = Gangs.getInstance().getConfig().getInt("Gang.Mobs." + mobName + ".Amount"); - - int totalMobEntities = 0; - List nearbyEntities = player.getNearbyEntities(radius, radius, radius); - - for (Entity entity : nearbyEntities) { - if (entity.toString().contains("EnderDragonPart")) { // Exclude EnderDragonPart - continue; - } + if (Gangs.getInstance().getConfig().getBoolean("Gang.Enabled")) { + String mobName = EntityUtil.getConfigNodeByEntity(ent); + int radius = Gangs.getInstance().getConfig().getInt("Gang.Mobs." + mobName + ".Radius"); + int amount = Gangs.getInstance().getConfig().getInt("Gang.Mobs." + mobName + ".Amount"); + + int totalMobEntities = 0; + List nearbyEntities = player.getNearbyEntities(radius, radius, radius); - if (entity.getType().equals(ent.getType())) { - if (++totalMobEntities >= amount) { - gangKill = true; - break; - } + for (Entity entity : nearbyEntities) { + if (entity.toString().contains("EnderDragonPart")) { // Exclude EnderDragonPart + continue; + } + + if (entity.getType().equals(ent.getType())) { + if (++totalMobEntities >= amount) { + gangKill = true; + break; } } } + } - TextComponent[] playerDeath = Assets.playerDeathMessage(getPlayer, gangKill); - TextComponent oldPlayerDeath = playerDeath[0].append(playerDeath[1]); // Dreeam TODO: Remove in 1.4.21 - - if (!ComponentUtil.isMessageEmpty(playerDeath)) { - MessageType messageType = ent instanceof Player ? MessageType.PLAYER : MessageType.MOB; - BroadcastDeathMessageEvent event = new BroadcastDeathMessageEvent( - player, - (LivingEntity) getPlayer.getLastEntityDamager(), - messageType, - oldPlayerDeath, - playerDeath, - Util.getBroadcastWorlds(player), - gangKill - ); - Bukkit.getPluginManager().callEvent(event); - } + TextComponent[] playerDeath = Assets.playerDeathMessage(playerCtx, gangKill); + TextComponent oldPlayerDeath = playerDeath[0].append(playerDeath[1]); // Dreeam TODO: Remove in 1.4.21 + + if (!ComponentUtil.isMessageEmpty(playerDeath)) { + MessageType messageType = ent instanceof Player ? MessageType.PLAYER : MessageType.MOB; + BroadcastDeathMessageEvent event = new BroadcastDeathMessageEvent( + player, + (LivingEntity) playerCtx.getLastEntityDamager(), + messageType, + oldPlayerDeath, + playerDeath, + Util.getBroadcastWorlds(player), + gangKill + ); + Bukkit.getPluginManager().callEvent(event); } - } else { - new PlayerManager(player); } } else { // Entity killed by Player - EntityManager getEntity = EntityManager.getEntity(e.getEntity().getUniqueId()); - if (getEntity != null) { + EntityCtx entityCtx = EntityCtx.of(e.getEntity().getUniqueId()); + if (entityCtx != null) { MobType mobType = MobType.VANILLA; if (DeathMessages.getHooks().mythicmobsEnabled) { if (DeathMessages.getHooks().mythicMobs.getAPIHelper().isMythicMob(e.getEntity().getUniqueId())) { @@ -120,15 +119,15 @@ void onEntityDeath(EntityDeathEvent e) { } } - PlayerManager damager = getEntity.getLastPlayerDamager(); - if (damager == null) return; // Entity killed by Entity should not include in DM + PlayerCtx damagerCtx = entityCtx.getLastPlayerDamager(); + if (damagerCtx == null) return; // Entity killed by Entity should not include in DM - TextComponent[] entityDeath = Assets.entityDeathMessage(getEntity, mobType); + TextComponent[] entityDeath = Assets.entityDeathMessage(entityCtx, mobType); TextComponent oldEntityDeath = entityDeath[0].append(entityDeath[1]); // Dreeam TODO: Remove in 1.4.21 if (!ComponentUtil.isMessageEmpty(entityDeath)) { BroadcastEntityDeathMessageEvent event = new BroadcastEntityDeathMessageEvent( - damager, + damagerCtx, e.getEntity(), MessageType.ENTITY, oldEntityDeath, diff --git a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/OnCommand.java b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/OnCommand.java index 49f0bbe3..ce7fabb3 100644 --- a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/OnCommand.java +++ b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/OnCommand.java @@ -1,6 +1,6 @@ package dev.mrshawn.deathmessages.listeners; -import dev.mrshawn.deathmessages.api.PlayerManager; +import dev.mrshawn.deathmessages.api.PlayerCtx; import dev.mrshawn.deathmessages.config.Settings; import dev.mrshawn.deathmessages.config.files.Config; import org.bukkit.event.EventHandler; @@ -14,12 +14,12 @@ public class OnCommand implements Listener { @EventHandler(priority = EventPriority.HIGHEST) public void onCommand(PlayerCommandPreprocessEvent e) { - final PlayerManager getPlayer = PlayerManager.getPlayer(e.getPlayer()); + final PlayerCtx playerCtx = PlayerCtx.of(e.getPlayer().getUniqueId()); - if (getPlayer != null) { + if (playerCtx != null) { final List commands = Settings.getInstance().getConfig().getStringList(Config.CUSTOM_SUICIDE_COMMANDS.getPath()); if (commands.contains(e.getMessage())) { - getPlayer.setCommandDeath(true); + playerCtx.setCommandDeath(true); } } } diff --git a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/OnConnection.java b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/OnConnection.java new file mode 100644 index 00000000..2eb62c97 --- /dev/null +++ b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/OnConnection.java @@ -0,0 +1,33 @@ +package dev.mrshawn.deathmessages.listeners; + +import dev.mrshawn.deathmessages.DeathMessages; +import dev.mrshawn.deathmessages.api.PlayerCtx; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerQuitEvent; + +public class OnConnection implements Listener { + + @EventHandler(priority = EventPriority.HIGHEST) + public void onJoin(PlayerJoinEvent e) { + Player p = e.getPlayer(); + + PlayerCtx.create(new PlayerCtx(p)); + + if (DeathMessages.getHooks().bungeeInit) { + DeathMessages.getInstance().foliaLib.getScheduler().runLater(() -> { + if (DeathMessages.getHooks().bungeeServerNameRequest) { + PluginMessaging.sendServerNameRequest(p); + } + }, 5); + } + } + + @EventHandler(priority = EventPriority.HIGHEST) + public void onQuit(PlayerQuitEvent e) { + PlayerCtx.remove(e.getPlayer().getUniqueId()); + } +} diff --git a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/OnJoin.java b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/OnJoin.java deleted file mode 100644 index 69d37560..00000000 --- a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/OnJoin.java +++ /dev/null @@ -1,28 +0,0 @@ -package dev.mrshawn.deathmessages.listeners; - -import dev.mrshawn.deathmessages.DeathMessages; -import dev.mrshawn.deathmessages.api.PlayerManager; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import org.bukkit.event.player.PlayerJoinEvent; - -public class OnJoin implements Listener { - - @EventHandler(priority = EventPriority.HIGHEST) - public void onJoin(PlayerJoinEvent e) { - Player p = e.getPlayer(); - DeathMessages.getInstance().foliaLib.getScheduler().runAsync(task -> { - if (PlayerManager.isEmpty(p)) new PlayerManager(p); - }); - - if (!DeathMessages.getHooks().bungeeInit) return; - - DeathMessages.getInstance().foliaLib.getScheduler().runLater(() -> { - if (DeathMessages.getHooks().bungeeServerNameRequest) { - PluginMessaging.sendServerNameRequest(p); - } - }, 5); - } -} diff --git a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/OnMove.java b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/OnMove.java index 6b513345..bc418157 100644 --- a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/OnMove.java +++ b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/OnMove.java @@ -1,6 +1,6 @@ package dev.mrshawn.deathmessages.listeners; -import dev.mrshawn.deathmessages.api.PlayerManager; +import dev.mrshawn.deathmessages.api.PlayerCtx; import dev.mrshawn.deathmessages.utils.MaterialUtil; import org.bukkit.Material; import org.bukkit.entity.Player; @@ -18,11 +18,11 @@ public class OnMove implements Listener { @EventHandler(priority = EventPriority.MONITOR) public void onMove(PlayerMoveEvent e) { Player p = e.getPlayer(); - PlayerManager getPlayer = PlayerManager.getPlayer(p); - if (getPlayer != null) { + PlayerCtx playerCtx = PlayerCtx.of(p.getUniqueId()); + if (playerCtx != null) { lastBlock = e.getTo().getBlock().getType(); if (MaterialUtil.isClimbable(lastBlock)) { - getPlayer.setLastClimbing(lastBlock); + playerCtx.setLastClimbing(lastBlock); } else { if (p.getFallDistance() > 0) { message = true; @@ -32,7 +32,7 @@ public void onMove(PlayerMoveEvent e) { } } else { if (message) { - getPlayer.setLastClimbing(null); + playerCtx.setLastClimbing(null); falling = false; message = false; } diff --git a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/PluginMessaging.java b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/PluginMessaging.java index e26105ef..1f25388b 100644 --- a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/PluginMessaging.java +++ b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/PluginMessaging.java @@ -3,7 +3,7 @@ import com.google.common.io.ByteArrayDataOutput; import com.google.common.io.ByteStreams; import dev.mrshawn.deathmessages.DeathMessages; -import dev.mrshawn.deathmessages.api.PlayerManager; +import dev.mrshawn.deathmessages.api.PlayerCtx; import dev.mrshawn.deathmessages.config.Messages; import dev.mrshawn.deathmessages.config.files.Config; import dev.mrshawn.deathmessages.config.files.FileStore; @@ -56,9 +56,9 @@ public void onPluginMessageReceived(String channel, Player player, byte[] messag TextComponent message = Util.convertFromLegacy(rawMsg); for (Player onlinePlayer : Bukkit.getServer().getOnlinePlayers()) { - PlayerManager getPlayer = PlayerManager.getPlayer(onlinePlayer); - if (getPlayer != null) { - if (getPlayer.getMessagesEnabled()) { + PlayerCtx playerCtx = PlayerCtx.of(onlinePlayer.getUniqueId()); + if (playerCtx != null) { + if (playerCtx.isMessageEnabled()) { ComponentUtil.sendMessage(onlinePlayer, Component.text() .append(prefix) .append(message) diff --git a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/combatlogx/PlayerUntag.java b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/combatlogx/PlayerUntag.java index f02ecad5..abbf4a3b 100644 --- a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/combatlogx/PlayerUntag.java +++ b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/combatlogx/PlayerUntag.java @@ -2,7 +2,7 @@ import com.github.sirblobman.combatlogx.api.event.PlayerUntagEvent; import com.github.sirblobman.combatlogx.api.object.UntagReason; -import dev.mrshawn.deathmessages.api.PlayerManager; +import dev.mrshawn.deathmessages.api.PlayerCtx; import dev.mrshawn.deathmessages.api.events.BroadcastDeathMessageEvent; import dev.mrshawn.deathmessages.config.Gangs; import dev.mrshawn.deathmessages.config.Messages; @@ -27,61 +27,60 @@ public class PlayerUntag implements Listener { @EventHandler public void untagPlayer(PlayerUntagEvent e) { Player player = e.getPlayer(); - PlayerManager getPlayer = PlayerManager.getPlayer(player); - if (getPlayer != null) { - UntagReason reason = e.getUntagReason(); + PlayerCtx playerCtx = PlayerCtx.of(player.getUniqueId()); - if (!reason.equals(UntagReason.QUIT)) return; + if (playerCtx == null) return; - boolean gangKill = false; + UntagReason reason = e.getUntagReason(); - if (Gangs.getInstance().getConfig().getBoolean("Gang.Enabled")) { - int radius = Gangs.getInstance().getConfig().getInt("Gang.Mobs.player.Radius"); - int amount = Gangs.getInstance().getConfig().getInt("Gang.Mobs.player.Amount"); + if (!reason.equals(UntagReason.QUIT)) return; - int totalMobEntities = 0; - List nearbyEntities = player.getNearbyEntities(radius, radius, radius); + boolean gangKill = false; - for (Entity entity : nearbyEntities) { - if (entity.toString().contains("EnderDragonPart")) { // Exclude EnderDragonPart - continue; - } + if (Gangs.getInstance().getConfig().getBoolean("Gang.Enabled")) { + int radius = Gangs.getInstance().getConfig().getInt("Gang.Mobs.player.Radius"); + int amount = Gangs.getInstance().getConfig().getInt("Gang.Mobs.player.Amount"); + + int totalMobEntities = 0; + List nearbyEntities = player.getNearbyEntities(radius, radius, radius); - if (entity instanceof Player) { - if (++totalMobEntities >= amount) { - gangKill = true; - break; - } + for (Entity entity : nearbyEntities) { + if (entity.toString().contains("EnderDragonPart")) { // Exclude EnderDragonPart + continue; + } + + if (entity instanceof Player) { + if (++totalMobEntities >= amount) { + gangKill = true; + break; } } } + } - TextComponent deathMessageBody = Assets.get(gangKill, getPlayer, (LivingEntity) e.getPreviousEnemies().get(0), "CombatLogX-Quit"); - TextComponent[] deathMessage = new TextComponent[2]; + TextComponent deathMessageBody = Assets.get(gangKill, playerCtx, (LivingEntity) e.getPreviousEnemies().get(0), "CombatLogX-Quit"); + TextComponent[] deathMessage = new TextComponent[2]; - if (Settings.getInstance().getConfig().getBoolean(Config.ADD_PREFIX_TO_ALL_MESSAGES.getPath())) { - TextComponent prefix = Util.convertFromLegacy(Messages.getInstance().getConfig().getString("Prefix")); - deathMessage[0] = prefix; - } + if (Settings.getInstance().getConfig().getBoolean(Config.ADD_PREFIX_TO_ALL_MESSAGES.getPath())) { + TextComponent prefix = Util.convertFromLegacy(Messages.getInstance().getConfig().getString("Prefix")); + deathMessage[0] = prefix; + } - deathMessage[1] = deathMessageBody; - - TextComponent oldDeathMessage = deathMessage[0].append(deathMessage[1]); // Dreeam TODO: Remove in 1.4.21 - - if (!ComponentUtil.isMessageEmpty(deathMessage)) { - BroadcastDeathMessageEvent event = new BroadcastDeathMessageEvent( - player, - (LivingEntity) e.getPreviousEnemies().get(0), - MessageType.PLAYER, - oldDeathMessage, - deathMessage, - Util.getBroadcastWorlds(player), - gangKill - ); - Bukkit.getPluginManager().callEvent(event); - } - } else { - new PlayerManager(player); + deathMessage[1] = deathMessageBody; + + TextComponent oldDeathMessage = deathMessage[0].append(deathMessage[1]); // Dreeam TODO: Remove in 1.4.21 + + if (!ComponentUtil.isMessageEmpty(deathMessage)) { + BroadcastDeathMessageEvent event = new BroadcastDeathMessageEvent( + player, + (LivingEntity) e.getPreviousEnemies().get(0), + MessageType.PLAYER, + oldDeathMessage, + deathMessage, + Util.getBroadcastWorlds(player), + gangKill + ); + Bukkit.getPluginManager().callEvent(event); } } } diff --git a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/customlisteners/BroadcastEntityDeathListener.java b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/customlisteners/BroadcastEntityDeathListener.java index 834c0706..16777166 100644 --- a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/customlisteners/BroadcastEntityDeathListener.java +++ b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/customlisteners/BroadcastEntityDeathListener.java @@ -1,8 +1,8 @@ package dev.mrshawn.deathmessages.listeners.customlisteners; import dev.mrshawn.deathmessages.DeathMessages; -import dev.mrshawn.deathmessages.api.EntityManager; -import dev.mrshawn.deathmessages.api.PlayerManager; +import dev.mrshawn.deathmessages.api.EntityCtx; +import dev.mrshawn.deathmessages.api.PlayerCtx; import dev.mrshawn.deathmessages.api.events.BroadcastEntityDeathMessageEvent; import dev.mrshawn.deathmessages.config.Messages; import dev.mrshawn.deathmessages.config.files.Config; @@ -27,7 +27,7 @@ public class BroadcastEntityDeathListener implements Listener { @EventHandler public void broadcastListener(BroadcastEntityDeathMessageEvent e) { - final PlayerManager pm = e.getPlayer(); + final PlayerCtx playerCtx = e.getPlayerContext(); final Entity entity = e.getEntity(); final boolean hasOwner = EntityUtil.hasOwner(entity); final TextComponent[] components = e.getTextComponents(); @@ -37,7 +37,7 @@ public void broadcastListener(BroadcastEntityDeathMessageEvent e) { if (Messages.getInstance().getConfig().getBoolean("Console.Enabled")) { Component rawMessage = Util.convertFromLegacy(Messages.getInstance().getConfig().getString("Console.Message")); - Component consoleMessage = Assets.entityDeathPlaceholders(rawMessage, pm.getPlayer(), entity, hasOwner) + Component consoleMessage = Assets.entityDeathPlaceholders(rawMessage, playerCtx.getPlayer(), entity, hasOwner) .replaceText(TextReplacementConfig.builder() .matchLiteral("%message%") .replacement(message) @@ -46,10 +46,10 @@ public void broadcastListener(BroadcastEntityDeathMessageEvent e) { ComponentUtil.sendConsoleMessage(consoleMessage); } - if (pm.isInCooldown()) { + if (playerCtx.isInCooldown()) { return; } else { - pm.setCooldown(); + playerCtx.setCooldown(); } final boolean privateTameable = FileStore.CONFIG.getBoolean(Config.PRIVATE_MESSAGES_MOBS); @@ -60,27 +60,27 @@ public void broadcastListener(BroadcastEntityDeathMessageEvent e) { continue; } - for (Player player : world.getPlayers()) { - PlayerManager getPlayer = PlayerManager.getPlayer(player); + for (Player otherPlayer : world.getPlayers()) { + PlayerCtx otherPlayerCtx = PlayerCtx.of(otherPlayer.getUniqueId()); if (privateTameable) { - if (getPlayer != null) { - if (getPlayer.getUUID().equals(pm.getPlayer().getUniqueId())) { - if (getPlayer.getMessagesEnabled()) { - ComponentUtil.sendMessage(player, message); + if (otherPlayerCtx != null) { + if (otherPlayerCtx.getUUID().equals(playerCtx.getUUID())) { + if (otherPlayerCtx.isMessageEnabled()) { + ComponentUtil.sendMessage(otherPlayer, message); } } } } else { - if (getPlayer != null) { - if (getPlayer.getMessagesEnabled()) { + if (otherPlayerCtx != null) { + if (otherPlayerCtx.isMessageEnabled()) { if (DeathMessages.getHooks().worldGuardExtension != null) { - if (DeathMessages.getHooks().worldGuardExtension.denyFromRegion(player, e.getMessageType().getValue())) { + if (DeathMessages.getHooks().worldGuardExtension.denyFromRegion(otherPlayer, e.getMessageType().getValue())) { return; } } - ComponentUtil.sendMessage(player, message); - PluginMessaging.sendPluginMSG(getPlayer.getPlayer(), Util.convertToLegacy(message)); + ComponentUtil.sendMessage(otherPlayer, message); + PluginMessaging.sendPluginMSG(otherPlayerCtx.getPlayer(), Util.convertToLegacy(message)); } } @@ -103,7 +103,7 @@ public void broadcastListener(BroadcastEntityDeathMessageEvent e) { DeathMessages.getHooks().discordSRVExtension.sendEntityDiscordMessage( components, e.getMessageType(), - pm, + playerCtx, entity, hasOwner ); @@ -113,10 +113,7 @@ public void broadcastListener(BroadcastEntityDeathMessageEvent e) { } } - PluginMessaging.sendPluginMSG(e.getPlayer().getPlayer(), Util.convertToLegacy(message)); - EntityManager getEntity = EntityManager.getEntity(entity.getUniqueId()); - if (getEntity != null) { - getEntity.destroy(); - } + PluginMessaging.sendPluginMSG(e.getPlayerContext().getPlayer(), Util.convertToLegacy(message)); + EntityCtx.remove(entity.getUniqueId()); } } diff --git a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/customlisteners/BroadcastPlayerDeathListener.java b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/customlisteners/BroadcastPlayerDeathListener.java index 3d3f5ccc..a65d74b1 100644 --- a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/customlisteners/BroadcastPlayerDeathListener.java +++ b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/customlisteners/BroadcastPlayerDeathListener.java @@ -1,7 +1,7 @@ package dev.mrshawn.deathmessages.listeners.customlisteners; import dev.mrshawn.deathmessages.DeathMessages; -import dev.mrshawn.deathmessages.api.PlayerManager; +import dev.mrshawn.deathmessages.api.PlayerCtx; import dev.mrshawn.deathmessages.api.events.BroadcastDeathMessageEvent; import dev.mrshawn.deathmessages.config.Messages; import dev.mrshawn.deathmessages.enums.MessageType; @@ -27,9 +27,9 @@ public class BroadcastPlayerDeathListener implements Listener { @EventHandler public void broadcastListener(BroadcastDeathMessageEvent e) { - PlayerManager getPlayer = PlayerManager.getPlayer(e.getPlayer()); + PlayerCtx playerCtx = PlayerCtx.of(e.getPlayer().getUniqueId()); - if (getPlayer == null) return; + if (playerCtx == null) return; final TextComponent[] components = e.getTextComponents(); final TextComponent prefix = components[0]; @@ -39,7 +39,7 @@ public void broadcastListener(BroadcastDeathMessageEvent e) { if (Messages.getInstance().getConfig().getBoolean("Console.Enabled")) { // Dreeam TODO: maybe just use formatMessage is also ok? Component rawMessage = Util.convertFromLegacy(Messages.getInstance().getConfig().getString("Console.Message")); - Component consoleMessage = Assets.playerDeathPlaceholders(rawMessage, getPlayer, e.getLivingEntity()) + Component consoleMessage = Assets.playerDeathPlaceholders(rawMessage, playerCtx, e.getLivingEntity()) .replaceText(TextReplacementConfig.builder() .matchLiteral("%message%") .replacement(message) @@ -48,10 +48,10 @@ public void broadcastListener(BroadcastDeathMessageEvent e) { ComponentUtil.sendConsoleMessage(consoleMessage); } - if (getPlayer.isInCooldown()) { + if (playerCtx.isInCooldown()) { return; } else { - getPlayer.setCooldown(); + playerCtx.setCooldown(); } final boolean privatePlayer = FileStore.CONFIG.getBoolean(Config.PRIVATE_MESSAGES_PLAYER); @@ -66,31 +66,30 @@ public void broadcastListener(BroadcastDeathMessageEvent e) { continue; } - for (Player player : world.getPlayers()) { - PlayerManager getPlayer2 = PlayerManager.getPlayer(player); - if (getPlayer2 != null) { - if (e.getMessageType().equals(MessageType.PLAYER)) { - if (privatePlayer && (e.getPlayer().getUniqueId().equals(getPlayer2.getUUID()) - || e.getLivingEntity().getUniqueId().equals(getPlayer2.getUUID()))) { - normal(e, components, message, getPlayer2, player, e.getBroadcastedWorlds()); - } else if (!privatePlayer) { - normal(e, components, message, getPlayer2, player, e.getBroadcastedWorlds()); - } - } else if (e.getMessageType().equals(MessageType.MOB)) { - if (privateMobs && e.getPlayer().getUniqueId().equals(getPlayer2.getUUID())) { - normal(e, components, message, getPlayer2, player, e.getBroadcastedWorlds()); - } else if (!privateMobs) { - normal(e, components, message, getPlayer2, player, e.getBroadcastedWorlds()); - } - } else if (e.getMessageType().equals(MessageType.NATURAL)) { - if (privateNatural && e.getPlayer().getUniqueId().equals(getPlayer2.getUUID())) { - normal(e, components, message, getPlayer2, player, e.getBroadcastedWorlds()); - } else if (!privateNatural) { - normal(e, components, message, getPlayer2, player, e.getBroadcastedWorlds()); - } + for (Player otherPlayer : world.getPlayers()) { + PlayerCtx otherPlayerCtx = PlayerCtx.of(otherPlayer.getUniqueId()); + + if (otherPlayerCtx == null) continue; + + if (e.getMessageType().equals(MessageType.PLAYER)) { + if (privatePlayer && (e.getPlayer().getUniqueId().equals(otherPlayerCtx.getUUID()) + || e.getLivingEntity().getUniqueId().equals(otherPlayerCtx.getUUID()))) { + normal(e, components, message, otherPlayerCtx, otherPlayer, e.getBroadcastedWorlds()); + } else if (!privatePlayer) { + normal(e, components, message, otherPlayerCtx, otherPlayer, e.getBroadcastedWorlds()); + } + } else if (e.getMessageType().equals(MessageType.MOB)) { + if (privateMobs && e.getPlayer().getUniqueId().equals(otherPlayerCtx.getUUID())) { + normal(e, components, message, otherPlayerCtx, otherPlayer, e.getBroadcastedWorlds()); + } else if (!privateMobs) { + normal(e, components, message, otherPlayerCtx, otherPlayer, e.getBroadcastedWorlds()); + } + } else if (e.getMessageType().equals(MessageType.NATURAL)) { + if (privateNatural && e.getPlayer().getUniqueId().equals(otherPlayerCtx.getUUID())) { + normal(e, components, message, otherPlayerCtx, otherPlayer, e.getBroadcastedWorlds()); + } else if (!privateNatural) { + normal(e, components, message, otherPlayerCtx, otherPlayer, e.getBroadcastedWorlds()); } - } else { - new PlayerManager(player); } } } @@ -98,16 +97,16 @@ public void broadcastListener(BroadcastDeathMessageEvent e) { PluginMessaging.sendPluginMSG(e.getPlayer(), Util.convertToLegacy(message)); } - private void normal(BroadcastDeathMessageEvent e, TextComponent[] components, TextComponent message, PlayerManager pm, Player player, List worlds) { + private void normal(BroadcastDeathMessageEvent e, TextComponent[] components, TextComponent message, PlayerCtx otherPlayerCtx, Player otherPlayer, List worlds) { if (DeathMessages.getHooks().worldGuardExtension != null) { - if (DeathMessages.getHooks().worldGuardExtension.denyFromRegion(player, e.getMessageType().getValue()) + if (DeathMessages.getHooks().worldGuardExtension.denyFromRegion(otherPlayer, e.getMessageType().getValue()) || DeathMessages.getHooks().worldGuardExtension.denyFromRegion(e.getPlayer(), e.getMessageType().getValue())) { return; } } - if (pm.getMessagesEnabled()) { - ComponentUtil.sendMessage(player, message); + if (otherPlayerCtx.isMessageEnabled()) { + ComponentUtil.sendMessage(otherPlayer, message); } if (FileStore.CONFIG.getBoolean(Config.HOOKS_DISCORD_WORLD_WHITELIST_ENABLED)) { @@ -125,13 +124,13 @@ private void normal(BroadcastDeathMessageEvent e, TextComponent[] components, Te // Will reach the discord broadcast } - PlayerManager getPlayer = PlayerManager.getPlayer(e.getPlayer()); - if (getPlayer != null) { + PlayerCtx playerCtx = PlayerCtx.of(e.getPlayer().getUniqueId()); + if (playerCtx != null) { if (DeathMessages.getHooks().discordSRVExtension != null && !discordSent) { DeathMessages.getHooks().discordSRVExtension.sendDiscordMessage( components, e.getMessageType(), - getPlayer + playerCtx ); discordSent = true; } diff --git a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/mythicmobs/MobDeath.java b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/mythicmobs/MobDeath.java index bfb91d6b..d928124f 100644 --- a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/mythicmobs/MobDeath.java +++ b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/listeners/mythicmobs/MobDeath.java @@ -1,7 +1,7 @@ package dev.mrshawn.deathmessages.listeners.mythicmobs; -import dev.mrshawn.deathmessages.api.EntityManager; -import dev.mrshawn.deathmessages.api.PlayerManager; +import dev.mrshawn.deathmessages.api.EntityCtx; +import dev.mrshawn.deathmessages.api.PlayerCtx; import dev.mrshawn.deathmessages.api.events.BroadcastEntityDeathMessageEvent; import dev.mrshawn.deathmessages.enums.MessageType; import dev.mrshawn.deathmessages.enums.MobType; @@ -32,15 +32,15 @@ public void onMythicMobDeath(MythicMobDeathEvent e) { for (String customMob : mobs) { if (e.getMob().getType().getInternalName().equals(customMob)) { - EntityManager getEntity = EntityManager.getEntity(e.getEntity().getUniqueId()); - if (getEntity != null) { - PlayerManager damager = getEntity.getLastPlayerDamager(); - TextComponent[] mythicDeath = Assets.entityDeathMessage(getEntity, MobType.MYTHIC_MOB); + EntityCtx entityCtx = EntityCtx.of(e.getEntity().getUniqueId()); + if (entityCtx != null) { + PlayerCtx damagerCtx = entityCtx.getLastPlayerDamager(); + TextComponent[] mythicDeath = Assets.entityDeathMessage(entityCtx, MobType.MYTHIC_MOB); TextComponent oldMythicDeath = mythicDeath[0].append(mythicDeath[1]); // Dreeam TODO: Remove in 1.4.21 if (!ComponentUtil.isMessageEmpty(mythicDeath)) { BroadcastEntityDeathMessageEvent event = new BroadcastEntityDeathMessageEvent( - damager, + damagerCtx, e.getEntity(), MessageType.ENTITY, oldMythicDeath, diff --git a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/utils/Assets.java b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/utils/Assets.java index 225e685c..e2af7f2c 100644 --- a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/utils/Assets.java +++ b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/utils/Assets.java @@ -3,9 +3,9 @@ import com.cryptomorin.xseries.XMaterial; import com.meowj.langutils.lang.LanguageHelper; import dev.mrshawn.deathmessages.DeathMessages; -import dev.mrshawn.deathmessages.api.EntityManager; +import dev.mrshawn.deathmessages.api.EntityCtx; import dev.mrshawn.deathmessages.api.ExplosionManager; -import dev.mrshawn.deathmessages.api.PlayerManager; +import dev.mrshawn.deathmessages.api.PlayerCtx; import dev.mrshawn.deathmessages.config.EntityDeathMessages; import dev.mrshawn.deathmessages.config.Messages; import dev.mrshawn.deathmessages.config.PlayerDeathMessages; @@ -58,7 +58,7 @@ public class Assets { // Dreeam TODO - to figure out why the value defined in private static field will not change with the change of the config value //private static final CommentedConfiguration config = Settings.getInstance().getConfig(); - public static TextComponent[] playerNatureDeathMessage(PlayerManager pm, Player player) { + public static TextComponent[] playerNatureDeathMessage(PlayerCtx playerCtx, Player player) { TextComponent[] components = ComponentUtil.empty(); if (Settings.getInstance().getConfig().getBoolean(Config.ADD_PREFIX_TO_ALL_MESSAGES.getPath())) { @@ -67,49 +67,49 @@ public static TextComponent[] playerNatureDeathMessage(PlayerManager pm, Player } // Natural Death - if (pm.getLastExplosiveEntity() instanceof EnderCrystal) { - components[1] = Assets.getNaturalDeath(pm, "End-Crystal"); - } else if (pm.getLastExplosiveEntity() instanceof TNTPrimed) { - components[1] = Assets.getNaturalDeath(pm, "TNT"); - } else if (pm.getLastExplosiveEntity() instanceof Firework) { - components[1] = Assets.getNaturalDeath(pm, "Firework"); - } else if (pm.getLastDamage().equals(EntityDamageEvent.DamageCause.FALL)) { - components[1] = Assets.getNaturalDeath(pm, "Climbable"); - } else if (pm.getLastDamage().equals(EntityDamageEvent.DamageCause.BLOCK_EXPLOSION)) { + if (playerCtx.getLastExplosiveEntity() instanceof EnderCrystal) { + components[1] = Assets.getNaturalDeath(playerCtx, "End-Crystal"); + } else if (playerCtx.getLastExplosiveEntity() instanceof TNTPrimed) { + components[1] = Assets.getNaturalDeath(playerCtx, "TNT"); + } else if (playerCtx.getLastExplosiveEntity() instanceof Firework) { + components[1] = Assets.getNaturalDeath(playerCtx, "Firework"); + } else if (playerCtx.getLastDamageCause().equals(EntityDamageEvent.DamageCause.FALL)) { + components[1] = Assets.getNaturalDeath(playerCtx, "Climbable"); + } else if (playerCtx.getLastDamageCause().equals(EntityDamageEvent.DamageCause.BLOCK_EXPLOSION)) { ExplosionManager explosion = ExplosionManager.getManagerIfEffected(player.getUniqueId()); if (explosion != null) { if (explosion.getMaterial().name().contains("BED")) { - components[1] = Assets.getNaturalDeath(pm, "Bed"); + components[1] = Assets.getNaturalDeath(playerCtx, "Bed"); } if (Util.isNewerAndEqual(16, 0)) { if (explosion.getMaterial().equals(Material.RESPAWN_ANCHOR)) { - components[1] = Assets.getNaturalDeath(pm, "Respawn-Anchor"); + components[1] = Assets.getNaturalDeath(playerCtx, "Respawn-Anchor"); } } // Dreeam TODO: Check weather needs to handle unknow explosion to prevent potential empty death message } - } else if (pm.getLastDamage().equals(EntityDamageEvent.DamageCause.PROJECTILE)) { - components[1] = Assets.getNaturalDeath(pm, Assets.getSimpleProjectile(pm.getLastProjectileEntity())); - } else if (Util.isNewerAndEqual(9, 0) && Util.isOlderAndEqual(999, 999) && pm.getLastEntityDamager() instanceof AreaEffectCloud) { // Fix MC-84595 - Killed by Dragon's Breath - AreaEffectCloud cloud = (AreaEffectCloud) pm.getLastEntityDamager(); + } else if (playerCtx.getLastDamageCause().equals(EntityDamageEvent.DamageCause.PROJECTILE)) { + components[1] = Assets.getNaturalDeath(playerCtx, Assets.getSimpleProjectile(playerCtx.getLastProjectileEntity())); + } else if (Util.isNewerAndEqual(9, 0) && Util.isOlderAndEqual(999, 999) && playerCtx.getLastEntityDamager() instanceof AreaEffectCloud) { // Fix MC-84595 - Killed by Dragon's Breath + AreaEffectCloud cloud = (AreaEffectCloud) playerCtx.getLastEntityDamager(); if (cloud.getSource() instanceof EnderDragon) { - pm.setLastDamageCause( + playerCtx.setLastDamageCause( Settings.getInstance().getConfig().getBoolean(Config.FIX_MC_84595.getPath()) ? EntityDamageEvent.DamageCause.DRAGON_BREATH : EntityDamageEvent.DamageCause.ENTITY_ATTACK ); } - components[1] = Assets.getNaturalDeath(pm, Assets.getSimpleCause(pm.getLastDamage())); + components[1] = Assets.getNaturalDeath(playerCtx, Assets.getSimpleCause(playerCtx.getLastDamageCause())); } else { - components[1] = Assets.getNaturalDeath(pm, Assets.getSimpleCause(pm.getLastDamage())); + components[1] = Assets.getNaturalDeath(playerCtx, Assets.getSimpleCause(playerCtx.getLastDamageCause())); } return components; } - public static TextComponent[] playerDeathMessage(PlayerManager pm, boolean gang) { - LivingEntity mob = (LivingEntity) pm.getLastEntityDamager(); + public static TextComponent[] playerDeathMessage(PlayerCtx playerCtx, boolean gang) { + LivingEntity mob = (LivingEntity) playerCtx.getLastEntityDamager(); TextComponent[] components = ComponentUtil.empty(); if (Settings.getInstance().getConfig().getBoolean(Config.ADD_PREFIX_TO_ALL_MESSAGES.getPath())) { @@ -117,41 +117,41 @@ public static TextComponent[] playerDeathMessage(PlayerManager pm, boolean gang) components[0] = prefix; } - if (pm.getLastDamage().equals(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION)) { - if (pm.getLastExplosiveEntity() instanceof EnderCrystal) { - components[1] = get(gang, pm, mob, "End-Crystal"); + if (playerCtx.getLastDamageCause().equals(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION)) { + if (playerCtx.getLastExplosiveEntity() instanceof EnderCrystal) { + components[1] = get(gang, playerCtx, mob, "End-Crystal"); return components; } - if (pm.getLastExplosiveEntity() instanceof TNTPrimed) { - components[1] = get(gang, pm, mob, "TNT"); + if (playerCtx.getLastExplosiveEntity() instanceof TNTPrimed) { + components[1] = get(gang, playerCtx, mob, "TNT"); return components; } - if (pm.getLastExplosiveEntity() instanceof Firework) { - components[1] = get(gang, pm, mob, "Firework"); + if (playerCtx.getLastExplosiveEntity() instanceof Firework) { + components[1] = get(gang, playerCtx, mob, "Firework"); return components; } - components[1] = get(gang, pm, mob, getSimpleCause(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION)); + components[1] = get(gang, playerCtx, mob, getSimpleCause(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION)); return components; } - if (pm.getLastDamage().equals(EntityDamageEvent.DamageCause.BLOCK_EXPLOSION)) { - ExplosionManager explosionManager = ExplosionManager.getManagerIfEffected(pm.getUUID()); + if (playerCtx.getLastDamageCause().equals(EntityDamageEvent.DamageCause.BLOCK_EXPLOSION)) { + ExplosionManager explosionManager = ExplosionManager.getManagerIfEffected(playerCtx.getUUID()); if (explosionManager != null) { - PlayerManager pyro = PlayerManager.getPlayer(explosionManager.getPyro()); - if (pyro != null) { + PlayerCtx pyroCtx = PlayerCtx.of(explosionManager.getPyro()); + if (pyroCtx != null) { // Bed kill if (explosionManager.getMaterial().name().contains("BED")) { - components[1] = get(gang, pm, pyro.getPlayer(), "Bed"); + components[1] = get(gang, playerCtx, pyroCtx.getPlayer(), "Bed"); return components; } // Respawn Anchor kill if (Util.isNewerAndEqual(16, 0)) { if (explosionManager.getMaterial().equals(Material.RESPAWN_ANCHOR)) { - components[1] = get(gang, pm, pyro.getPlayer(), "Respawn-Anchor"); + components[1] = get(gang, playerCtx, pyroCtx.getPlayer(), "Respawn-Anchor"); return components; } } @@ -159,31 +159,31 @@ public static TextComponent[] playerDeathMessage(PlayerManager pm, boolean gang) } } - boolean hasWeapon = MaterialUtil.hasWeapon(mob, pm.getLastDamage()); + boolean hasWeapon = MaterialUtil.hasWeapon(mob, playerCtx.getLastDamageCause()); if (hasWeapon) { - if (pm.getLastDamage().equals(EntityDamageEvent.DamageCause.ENTITY_ATTACK)) { - components[1] = getWeapon(gang, pm, mob); + if (playerCtx.getLastDamageCause().equals(EntityDamageEvent.DamageCause.ENTITY_ATTACK)) { + components[1] = getWeapon(gang, playerCtx, mob); return components; } - if (pm.getLastDamage().equals(EntityDamageEvent.DamageCause.PROJECTILE) && pm.getLastProjectileEntity() instanceof Arrow) { - components[1] = getProjectile(gang, pm, mob, getSimpleProjectile(pm.getLastProjectileEntity())); + if (playerCtx.getLastDamageCause().equals(EntityDamageEvent.DamageCause.PROJECTILE) && playerCtx.getLastProjectileEntity() instanceof Arrow) { + components[1] = getProjectile(gang, playerCtx, mob, getSimpleProjectile(playerCtx.getLastProjectileEntity())); return components; } - components[1] = get(gang, pm, mob, getSimpleCause(EntityDamageEvent.DamageCause.ENTITY_ATTACK)); + components[1] = get(gang, playerCtx, mob, getSimpleCause(EntityDamageEvent.DamageCause.ENTITY_ATTACK)); return components; } else { - // Dreeam TODO: idk why there is for loop used to if (pm.getLastDamage().equals(dc)), no need, waste performance.. + // Dreeam TODO: idk why there is for loop used to if (playerCtx.getLastDamageCause().equals(dc)), no need, waste performance.. for (EntityDamageEvent.DamageCause dc : EntityDamageEvent.DamageCause.values()) { - if (pm.getLastDamage().equals(EntityDamageEvent.DamageCause.PROJECTILE)) { - components[1] = getProjectile(gang, pm, mob, getSimpleProjectile(pm.getLastProjectileEntity())); + if (playerCtx.getLastDamageCause().equals(EntityDamageEvent.DamageCause.PROJECTILE)) { + components[1] = getProjectile(gang, playerCtx, mob, getSimpleProjectile(playerCtx.getLastProjectileEntity())); return components; } - if (pm.getLastDamage().equals(dc)) { - components[1] = get(gang, pm, mob, getSimpleCause(dc)); + if (playerCtx.getLastDamageCause().equals(dc)) { + components[1] = get(gang, playerCtx, mob, getSimpleCause(dc)); return components; } } @@ -192,12 +192,12 @@ public static TextComponent[] playerDeathMessage(PlayerManager pm, boolean gang) } } - public static TextComponent[] entityDeathMessage(EntityManager em, MobType mobType) { - PlayerManager pm = em.getLastPlayerDamager(); + public static TextComponent[] entityDeathMessage(EntityCtx entityCtx, MobType mobType) { + PlayerCtx damagerCtx = entityCtx.getLastPlayerDamager(); - if (pm == null) return ComponentUtil.empty(); + if (damagerCtx == null) return ComponentUtil.empty(); - Player p = pm.getPlayer(); + Player p = damagerCtx.getPlayer(); TextComponent[] components = ComponentUtil.empty(); if (Settings.getInstance().getConfig().getBoolean(Config.ADD_PREFIX_TO_ALL_MESSAGES.getPath())) { @@ -205,41 +205,41 @@ public static TextComponent[] entityDeathMessage(EntityManager em, MobType mobTy components[0] = prefix; } - if (em.getLastDamage().equals(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION)) { - if (em.getLastExplosiveEntity() instanceof EnderCrystal) { - components[1] = getEntityDeath(p, em.getEntity(), "End-Crystal", mobType); + if (entityCtx.getLastDamageCause().equals(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION)) { + if (entityCtx.getLastExplosiveEntity() instanceof EnderCrystal) { + components[1] = getEntityDeath(p, entityCtx.getEntity(), "End-Crystal", mobType); return components; } - if (em.getLastExplosiveEntity() instanceof TNTPrimed) { - components[1] = getEntityDeath(p, em.getEntity(), "TNT", mobType); + if (entityCtx.getLastExplosiveEntity() instanceof TNTPrimed) { + components[1] = getEntityDeath(p, entityCtx.getEntity(), "TNT", mobType); return components; } - if (em.getLastExplosiveEntity() instanceof Firework) { - components[1] = getEntityDeath(p, em.getEntity(), "Firework", mobType); + if (entityCtx.getLastExplosiveEntity() instanceof Firework) { + components[1] = getEntityDeath(p, entityCtx.getEntity(), "Firework", mobType); return components; } - components[1] = getEntityDeath(p, em.getEntity(), getSimpleCause(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION), mobType); + components[1] = getEntityDeath(p, entityCtx.getEntity(), getSimpleCause(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION), mobType); return components; } - if (em.getLastDamage().equals(EntityDamageEvent.DamageCause.BLOCK_EXPLOSION)) { - ExplosionManager explosionManager = ExplosionManager.getManagerIfEffected(em.getEntityUUID()); + if (entityCtx.getLastDamageCause().equals(EntityDamageEvent.DamageCause.BLOCK_EXPLOSION)) { + ExplosionManager explosionManager = ExplosionManager.getManagerIfEffected(entityCtx.getUUID()); if (explosionManager != null) { - PlayerManager pyro = PlayerManager.getPlayer(explosionManager.getPyro()); - if (pyro != null) { + PlayerCtx pyroCtx = PlayerCtx.of(explosionManager.getPyro()); + if (pyroCtx != null) { // Bed kill if (explosionManager.getMaterial().name().contains("BED")) { - components[1] = getEntityDeath(pyro.getPlayer(), em.getEntity(), "Bed", mobType); + components[1] = getEntityDeath(pyroCtx.getPlayer(), entityCtx.getEntity(), "Bed", mobType); return components; } // Respawn Anchor kill if (Util.isNewerAndEqual(16, 0)) { if (explosionManager.getMaterial().equals(Material.RESPAWN_ANCHOR)) { - components[1] = getEntityDeath(pyro.getPlayer(), em.getEntity(), "Respawn-Anchor", mobType); + components[1] = getEntityDeath(pyroCtx.getPlayer(), entityCtx.getEntity(), "Respawn-Anchor", mobType); return components; } } @@ -247,30 +247,30 @@ public static TextComponent[] entityDeathMessage(EntityManager em, MobType mobTy } } - boolean hasWeapon = MaterialUtil.hasWeapon(p, pm.getLastDamage()); + boolean hasWeapon = MaterialUtil.hasWeapon(p, damagerCtx.getLastDamageCause()); if (hasWeapon) { - if (em.getLastDamage().equals(EntityDamageEvent.DamageCause.ENTITY_ATTACK)) { - components[1] = getEntityDeathWeapon(p, em.getEntity(), mobType); + if (entityCtx.getLastDamageCause().equals(EntityDamageEvent.DamageCause.ENTITY_ATTACK)) { + components[1] = getEntityDeathWeapon(p, entityCtx.getEntity(), mobType); return components; } - if (em.getLastDamage().equals(EntityDamageEvent.DamageCause.PROJECTILE) && em.getLastProjectileEntity() instanceof Arrow) { - components[1] = getEntityDeathProjectile(p, em, getSimpleProjectile(em.getLastProjectileEntity()), mobType); + if (entityCtx.getLastDamageCause().equals(EntityDamageEvent.DamageCause.PROJECTILE) && entityCtx.getLastProjectileEntity() instanceof Arrow) { + components[1] = getEntityDeathProjectile(p, entityCtx, getSimpleProjectile(entityCtx.getLastProjectileEntity()), mobType); return components; } - components[1] = getEntityDeathWeapon(p, em.getEntity(), mobType); + components[1] = getEntityDeathWeapon(p, entityCtx.getEntity(), mobType); return components; } else { for (EntityDamageEvent.DamageCause dc : EntityDamageEvent.DamageCause.values()) { - if (em.getLastDamage().equals(EntityDamageEvent.DamageCause.PROJECTILE)) { - components[1] = getEntityDeathProjectile(p, em, getSimpleProjectile(em.getLastProjectileEntity()), mobType); + if (entityCtx.getLastDamageCause().equals(EntityDamageEvent.DamageCause.PROJECTILE)) { + components[1] = getEntityDeathProjectile(p, entityCtx, getSimpleProjectile(entityCtx.getLastProjectileEntity()), mobType); return components; } - if (em.getLastDamage().equals(dc)) { - components[1] = getEntityDeath(p, em.getEntity(), getSimpleCause(dc), mobType); + if (entityCtx.getLastDamageCause().equals(dc)) { + components[1] = getEntityDeath(p, entityCtx.getEntity(), getSimpleCause(dc), mobType); return components; } } @@ -279,15 +279,15 @@ public static TextComponent[] entityDeathMessage(EntityManager em, MobType mobTy } } - public static TextComponent getNaturalDeath(PlayerManager pm, String damageCause) { - List msgs = sortList(getPlayerDeathMessages().getStringList("Natural-Cause." + damageCause), pm.getPlayer(), pm.getPlayer()); + public static TextComponent getNaturalDeath(PlayerCtx playerCtx, String damageCause) { + List msgs = sortList(getPlayerDeathMessages().getStringList("Natural-Cause." + damageCause), playerCtx.getPlayer(), playerCtx.getPlayer()); if (Settings.getInstance().getConfig().getBoolean(Config.DEBUG.getPath())) DeathMessages.LOGGER.warn("node: [Natural-Cause.{}]", damageCause); if (msgs.isEmpty()) { DeathMessages.LOGGER.warn("Can't find message node: [Natural-Cause.{}] in PlayerDeathMessages.yml", damageCause); DeathMessages.LOGGER.warn("This should not happen, please check your config or report issue on Github"); - msgs = sortList(getPlayerDeathMessages().getStringList("Natural-Cause.Unknown"), pm.getPlayer(), pm.getPlayer()); + msgs = sortList(getPlayerDeathMessages().getStringList("Natural-Cause.Unknown"), playerCtx.getPlayer(), playerCtx.getPlayer()); DeathMessages.LOGGER.warn("Fallback this death to [Natural-Cause.Unknown] message node"); } @@ -296,9 +296,9 @@ public static TextComponent getNaturalDeath(PlayerManager pm, String damageCause List rawEvents = new ArrayList<>(); msg = ComponentUtil.sortHoverEvents(msg, rawEvents); - if (msg.contains("%block%") && pm.getLastEntityDamager() instanceof FallingBlock) { + if (msg.contains("%block%") && playerCtx.getLastEntityDamager() instanceof FallingBlock) { try { - FallingBlock fb = (FallingBlock) pm.getLastEntityDamager(); + FallingBlock fb = (FallingBlock) playerCtx.getLastEntityDamager(); String material = Util.isNewerAndEqual(12, 0) ? fb.getBlockData().getMaterial().toString().toLowerCase() : fb.getMaterial().toString().toLowerCase(); @@ -308,28 +308,28 @@ public static TextComponent getNaturalDeath(PlayerManager pm, String damageCause } catch (NullPointerException e) { DeathMessages.LOGGER.error("Could not parse %block%. Please check your config for a wrong value." + " Your materials could be spelt wrong or it does not exists in the config. Open a issue if you need help, " + "https://github.com/Winds-Studio/DeathMessages/issues"); - pm.setLastEntityDamager(null); - return getNaturalDeath(pm, getSimpleCause(EntityDamageEvent.DamageCause.SUFFOCATION)); + playerCtx.setLastEntityDamager(null); + return getNaturalDeath(playerCtx, getSimpleCause(EntityDamageEvent.DamageCause.SUFFOCATION)); } - } else if (msg.contains("%climbable%") && pm.getLastDamage().equals(EntityDamageEvent.DamageCause.FALL)) { + } else if (msg.contains("%climbable%") && playerCtx.getLastDamageCause().equals(EntityDamageEvent.DamageCause.FALL)) { try { - String material = pm.getLastClimbing().toString().toLowerCase(); + String material = playerCtx.getLastClimbing().toString().toLowerCase(); String configValue = Messages.getInstance().getConfig().getString("Blocks." + material); base.append(Util.convertFromLegacy(msg.replaceAll("%climbable%", configValue))); } catch (NullPointerException e) { - pm.setLastClimbing(null); - return getNaturalDeath(pm, getSimpleCause(EntityDamageEvent.DamageCause.FALL)); + playerCtx.setLastClimbing(null); + return getNaturalDeath(playerCtx, getSimpleCause(EntityDamageEvent.DamageCause.FALL)); } - } else if (msg.contains("%weapon%") && pm.getLastDamage().equals(EntityDamageEvent.DamageCause.PROJECTILE)) { - ItemStack i = pm.getPlayer().getEquipment().getItemInMainHand(); + } else if (msg.contains("%weapon%") && playerCtx.getLastDamageCause().equals(EntityDamageEvent.DamageCause.PROJECTILE)) { + ItemStack i = playerCtx.getPlayer().getEquipment().getItemInMainHand(); if (!i.getType().equals(XMaterial.BOW.parseMaterial())) { - return getNaturalDeath(pm, "Projectile-Unknown"); + return getNaturalDeath(playerCtx, "Projectile-Unknown"); } if (Util.isNewerAndEqual(14, 0)) { if (!i.getType().equals(XMaterial.CROSSBOW.parseMaterial())) { - return getNaturalDeath(pm, "Projectile-Unknown"); + return getNaturalDeath(playerCtx, "Projectile-Unknown"); } } @@ -338,19 +338,19 @@ public static TextComponent getNaturalDeath(PlayerManager pm, String damageCause if (Settings.getInstance().getConfig().getBoolean(Config.DISABLE_WEAPON_KILL_WITH_NO_CUSTOM_NAME_ENABLED.getPath())) { if (!Settings.getInstance().getConfig().getBoolean(Config.DISABLE_WEAPON_KILL_WITH_NO_CUSTOM_NAME_IGNORE_ENCHANTMENTS.getPath())) { if (i.getEnchantments().isEmpty()) { - return getNaturalDeath(pm, "Projectile-Unknown"); + return getNaturalDeath(playerCtx, "Projectile-Unknown"); } } else { - return getNaturalDeath(pm, "Projectile-Unknown"); + return getNaturalDeath(playerCtx, "Projectile-Unknown"); } } - displayName = getI18nName(i, pm.getPlayer()); + displayName = getI18nName(i, playerCtx.getPlayer()); } else { displayName = ComponentUtil.getItemStackDisplayName(i); } TextComponent message = Util.convertFromLegacy(msg); - Component weapon = ComponentUtil.buildItemHover(pm.getPlayer(), i, displayName); + Component weapon = ComponentUtil.buildItemHover(playerCtx.getPlayer(), i, displayName); base.append(message.replaceText(TextReplacementConfig.builder().matchLiteral("%weapon%").replacement(weapon).build())); } else { @@ -363,29 +363,29 @@ public static TextComponent getNaturalDeath(PlayerManager pm, String damageCause if (!rawEvents.isEmpty()) { int index = 0; for (String rawEvent : rawEvents) { - Component hoverEvent = ComponentUtil.buildHoverEvents(rawEvent, pm, null, null, false, true); + Component hoverEvent = ComponentUtil.buildHoverEvents(rawEvent, playerCtx, null, null, false, true); baseWithEvents = baseWithEvents.replaceText( TextReplacementConfig.builder().match("%hover_event_" + index++ + "%").replacement(hoverEvent).build() ); } } - return (TextComponent) playerDeathPlaceholders(baseWithEvents, pm, null); + return (TextComponent) playerDeathPlaceholders(baseWithEvents, playerCtx, null); } - public static TextComponent getWeapon(boolean gang, PlayerManager pm, LivingEntity mob) { + public static TextComponent getWeapon(boolean gang, PlayerCtx playerCtx, LivingEntity mob) { final boolean basicMode = getPlayerDeathMessages().getBoolean("Basic-Mode.Enabled"); String entityName = EntityUtil.getConfigNodeByEntity(mob); final String mode = basicMode ? DeathModes.BASIC_MODE.getValue() : DeathModes.MOBS.getValue() + "." + entityName; final String affiliation = gang ? DeathAffiliation.GANG.getValue() : DeathAffiliation.SOLO.getValue(); //Bukkit.broadcastMessage(DeathMessages.getInstance().mythicmobsEnabled + " - " + DeathMessages.getInstance().mythicMobs.getAPIHelper().isMythicMob(mob.getUniqueId())); - List msgs = sortList(getPlayerDeathMessages().getStringList(mode + "." + affiliation + ".Weapon"), pm.getPlayer(), mob); + List msgs = sortList(getPlayerDeathMessages().getStringList(mode + "." + affiliation + ".Weapon"), playerCtx.getPlayer(), mob); if (DeathMessages.getHooks().mythicmobsEnabled && DeathMessages.getHooks().mythicMobs.getAPIHelper().isMythicMob(mob.getUniqueId())) { String mmMobType = DeathMessages.getHooks().mythicMobs.getAPIHelper().getMythicMobInstance(mob).getMobType(); //Bukkit.broadcastMessage("is myth - " + mmMobType); - msgs = sortList(getPlayerDeathMessages().getStringList("Custom-Mobs.Mythic-Mobs." + mmMobType + "." + affiliation + ".Weapon"), pm.getPlayer(), mob); + msgs = sortList(getPlayerDeathMessages().getStringList("Custom-Mobs.Mythic-Mobs." + mmMobType + "." + affiliation + ".Weapon"), playerCtx.getPlayer(), mob); if (msgs.isEmpty()) return Component.empty(); // Don't send mm mob death msg if no configured death msg. } @@ -395,7 +395,7 @@ public static TextComponent getWeapon(boolean gang, PlayerManager pm, LivingEnti if (msgs.isEmpty()) { DeathMessages.LOGGER.warn("Can't find message node: [{}.{}.Weapon] in PlayerDeathMessages.yml", mode, affiliation); DeathMessages.LOGGER.warn("This should not happen, please check your config or report this issue on Github"); - msgs = sortList(getPlayerDeathMessages().getStringList(DeathModes.BASIC_MODE.getValue() + "." + affiliation + ".Weapon"), pm.getPlayer(), mob); + msgs = sortList(getPlayerDeathMessages().getStringList(DeathModes.BASIC_MODE.getValue() + "." + affiliation + ".Weapon"), playerCtx.getPlayer(), mob); DeathMessages.LOGGER.warn("Fallback this death to Basic-Mode of PlayerDeathMessages"); } @@ -411,19 +411,19 @@ public static TextComponent getWeapon(boolean gang, PlayerManager pm, LivingEnti if (FileStore.CONFIG.getBoolean(Config.DISABLE_WEAPON_KILL_WITH_NO_CUSTOM_NAME_ENABLED)) { if (!FileStore.CONFIG.getBoolean(Config.DISABLE_WEAPON_KILL_WITH_NO_CUSTOM_NAME_IGNORE_ENCHANTMENTS)) { if (i.getEnchantments().isEmpty()) { - return get(gang, pm, mob, FileStore.CONFIG.getString(Config.DISABLE_WEAPON_KILL_WITH_NO_CUSTOM_NAME_SOURCE_WEAPON_DEFAULT_TO)); + return get(gang, playerCtx, mob, FileStore.CONFIG.getString(Config.DISABLE_WEAPON_KILL_WITH_NO_CUSTOM_NAME_SOURCE_WEAPON_DEFAULT_TO)); } } else { - return get(gang, pm, mob, FileStore.CONFIG.getString(Config.DISABLE_WEAPON_KILL_WITH_NO_CUSTOM_NAME_SOURCE_WEAPON_DEFAULT_TO)); + return get(gang, playerCtx, mob, FileStore.CONFIG.getString(Config.DISABLE_WEAPON_KILL_WITH_NO_CUSTOM_NAME_SOURCE_WEAPON_DEFAULT_TO)); } } - displayName = getI18nName(i, pm.getPlayer()); + displayName = getI18nName(i, playerCtx.getPlayer()); } else { displayName = ComponentUtil.getItemStackDisplayName(i); } TextComponent deathMessage = Util.convertFromLegacy(msg); - Component weaponHover = ComponentUtil.buildItemHover(pm.getPlayer(), i, displayName); + Component weaponHover = ComponentUtil.buildItemHover(playerCtx.getPlayer(), i, displayName); base.append(deathMessage.replaceText(TextReplacementConfig.builder().matchLiteral("%weapon%").replacement(weaponHover).build())); } else { @@ -436,14 +436,14 @@ public static TextComponent getWeapon(boolean gang, PlayerManager pm, LivingEnti if (!rawEvents.isEmpty()) { int index = 0; for (String rawEvent : rawEvents) { - Component hoverEvent = ComponentUtil.buildHoverEvents(rawEvent, pm, null, mob, false, true); + Component hoverEvent = ComponentUtil.buildHoverEvents(rawEvent, playerCtx, null, mob, false, true); baseWithEvents = baseWithEvents.replaceText( TextReplacementConfig.builder().match("%hover_event_" + index++ + "%").replacement(hoverEvent).build() ); } } - return (TextComponent) playerDeathPlaceholders(baseWithEvents, pm, mob); + return (TextComponent) playerDeathPlaceholders(baseWithEvents, playerCtx, mob); } public static TextComponent getEntityDeathWeapon(Player p, Entity e, MobType mobType) { @@ -520,18 +520,18 @@ public static TextComponent getEntityDeathWeapon(Player p, Entity e, MobType mob return (TextComponent) entityDeathPlaceholders(baseWithEvents, p, e, hasOwner); } - public static TextComponent get(boolean gang, PlayerManager pm, LivingEntity mob, String damageCause) { + public static TextComponent get(boolean gang, PlayerCtx playerCtx, LivingEntity mob, String damageCause) { final boolean basicMode = getPlayerDeathMessages().getBoolean("Basic-Mode.Enabled"); String entityName = EntityUtil.getConfigNodeByEntity(mob); final String mode = basicMode ? DeathModes.BASIC_MODE.getValue() : DeathModes.MOBS.getValue() + "." + entityName; final String affiliation = gang ? DeathAffiliation.GANG.getValue() : DeathAffiliation.SOLO.getValue(); - List msgs = sortList(getPlayerDeathMessages().getStringList(mode + "." + affiliation + "." + damageCause), pm.getPlayer(), mob); + List msgs = sortList(getPlayerDeathMessages().getStringList(mode + "." + affiliation + "." + damageCause), playerCtx.getPlayer(), mob); if (DeathMessages.getHooks().mythicmobsEnabled && DeathMessages.getHooks().mythicMobs.getAPIHelper().isMythicMob(mob.getUniqueId())) { String mmMobType = DeathMessages.getHooks().mythicMobs.getAPIHelper().getMythicMobInstance(mob).getMobType(); //System.out.println("is myth - " + mmMobType); - msgs = sortList(getPlayerDeathMessages().getStringList("Custom-Mobs.Mythic-Mobs." + mmMobType + "." + affiliation + "." + damageCause), pm.getPlayer(), mob); + msgs = sortList(getPlayerDeathMessages().getStringList("Custom-Mobs.Mythic-Mobs." + mmMobType + "." + affiliation + "." + damageCause), playerCtx.getPlayer(), mob); if (msgs.isEmpty()) return Component.empty(); // Don't send mm mob death msg if no configured death msg. } @@ -539,16 +539,16 @@ public static TextComponent get(boolean gang, PlayerManager pm, LivingEntity mob if (Settings.getInstance().getConfig().getBoolean(Config.DEBUG.getPath())) DeathMessages.LOGGER.warn("node: [{}.{}.{}]", mode, affiliation, damageCause); if (msgs.isEmpty()) { - msgs = sortList(getPlayerDeathMessages().getStringList(DeathModes.MOBS.getValue() + ".player." + affiliation + "." + damageCause), pm.getPlayer(), mob); + msgs = sortList(getPlayerDeathMessages().getStringList(DeathModes.MOBS.getValue() + ".player." + affiliation + "." + damageCause), playerCtx.getPlayer(), mob); if (Settings.getInstance().getConfig().getBoolean(Config.DEBUG.getPath())) DeathMessages.LOGGER.warn("node2: [{}.player.{}.{}]", DeathModes.MOBS.getValue(), affiliation, damageCause); if (msgs.isEmpty()) { if (Settings.getInstance().getConfig().getBoolean(Config.DEBUG.getPath())) DeathMessages.LOGGER.info("Redirected from [{}.player.{}.{}]", DeathModes.MOBS.getValue(), affiliation, damageCause); if (Settings.getInstance().getConfig().getBoolean(Config.DEFAULT_NATURAL_DEATH_NOT_DEFINED.getPath())) - return getNaturalDeath(pm, damageCause); + return getNaturalDeath(playerCtx, damageCause); if (Settings.getInstance().getConfig().getBoolean(Config.DEFAULT_MELEE_LAST_DAMAGE_NOT_DEFINED.getPath())) - return get(gang, pm, mob, getSimpleCause(EntityDamageEvent.DamageCause.ENTITY_ATTACK)); + return get(gang, playerCtx, mob, getSimpleCause(EntityDamageEvent.DamageCause.ENTITY_ATTACK)); DeathMessages.LOGGER.warn("This death message will not be broadcast, unless you enable [Default-Natural-Death-Not-Defined] in Settings.yml"); return Component.empty(); } @@ -566,27 +566,27 @@ public static TextComponent get(boolean gang, PlayerManager pm, LivingEntity mob if (!rawEvents.isEmpty()) { int index = 0; for (String rawEvent : rawEvents) { - Component hoverEvent = ComponentUtil.buildHoverEvents(rawEvent, pm, null, mob, false, true); + Component hoverEvent = ComponentUtil.buildHoverEvents(rawEvent, playerCtx, null, mob, false, true); baseWithEvents = baseWithEvents.replaceText( TextReplacementConfig.builder().match("%hover_event_" + index++ + "%").replacement(hoverEvent).build() ); } } - return (TextComponent) playerDeathPlaceholders(baseWithEvents, pm, mob); + return (TextComponent) playerDeathPlaceholders(baseWithEvents, playerCtx, mob); } - public static TextComponent getProjectile(boolean gang, PlayerManager pm, LivingEntity mob, String projectileDamage) { + public static TextComponent getProjectile(boolean gang, PlayerCtx playerCtx, LivingEntity mob, String projectileDamage) { final boolean basicMode = getPlayerDeathMessages().getBoolean("Basic-Mode.Enabled"); String entityName = EntityUtil.getConfigNodeByEntity(mob); final String mode = basicMode ? DeathModes.BASIC_MODE.getValue() : DeathModes.MOBS.getValue() + "." + entityName; final String affiliation = gang ? DeathAffiliation.GANG.getValue() : DeathAffiliation.SOLO.getValue(); - List msgs = sortList(getPlayerDeathMessages().getStringList(mode + "." + affiliation + "." + projectileDamage), pm.getPlayer(), mob); + List msgs = sortList(getPlayerDeathMessages().getStringList(mode + "." + affiliation + "." + projectileDamage), playerCtx.getPlayer(), mob); if (DeathMessages.getHooks().mythicmobsEnabled && DeathMessages.getHooks().mythicMobs.getAPIHelper().isMythicMob(mob.getUniqueId())) { String mmMobType = DeathMessages.getHooks().mythicMobs.getAPIHelper().getMythicMobInstance(mob).getMobType(); - msgs = sortList(getPlayerDeathMessages().getStringList("Custom-Mobs.Mythic-Mobs." + mmMobType + "." + affiliation + "." + projectileDamage), pm.getPlayer(), mob); + msgs = sortList(getPlayerDeathMessages().getStringList("Custom-Mobs.Mythic-Mobs." + mmMobType + "." + affiliation + "." + projectileDamage), playerCtx.getPlayer(), mob); if (msgs.isEmpty()) return Component.empty(); // Don't send mm mob death msg if no configured death msg. } @@ -594,14 +594,14 @@ public static TextComponent getProjectile(boolean gang, PlayerManager pm, Living if (Settings.getInstance().getConfig().getBoolean(Config.DEBUG.getPath())) DeathMessages.LOGGER.warn("node: [{}.{}.{}]", mode, affiliation, projectileDamage); if (msgs.isEmpty()) { - msgs = sortList(getPlayerDeathMessages().getStringList(DeathModes.MOBS.getValue() + ".player." + affiliation + "." + projectileDamage), pm.getPlayer(), mob); + msgs = sortList(getPlayerDeathMessages().getStringList(DeathModes.MOBS.getValue() + ".player." + affiliation + "." + projectileDamage), playerCtx.getPlayer(), mob); if (Settings.getInstance().getConfig().getBoolean(Config.DEBUG.getPath())) DeathMessages.LOGGER.warn("node2: [{}.player.{}.{}]", DeathModes.MOBS.getValue(), affiliation, projectileDamage); if (msgs.isEmpty()) { if (Settings.getInstance().getConfig().getBoolean(Config.DEBUG.getPath())) DeathMessages.LOGGER.info("Redirected from [{}.player.{}.{}]", DeathModes.MOBS.getValue(), affiliation, projectileDamage); if (Settings.getInstance().getConfig().getBoolean(Config.DEFAULT_NATURAL_DEATH_NOT_DEFINED.getPath())) - return getNaturalDeath(pm, projectileDamage); + return getNaturalDeath(playerCtx, projectileDamage); DeathMessages.LOGGER.warn("This death message will not be broadcast, unless you enable [Default-Natural-Death-Not-Defined] in Settings.yml"); return Component.empty(); } @@ -612,7 +612,7 @@ public static TextComponent getProjectile(boolean gang, PlayerManager pm, Living List rawEvents = new ArrayList<>(); msg = ComponentUtil.sortHoverEvents(msg, rawEvents); - if (msg.contains("%weapon%") && pm.getLastDamage().equals(EntityDamageEvent.DamageCause.PROJECTILE)) { + if (msg.contains("%weapon%") && playerCtx.getLastDamageCause().equals(EntityDamageEvent.DamageCause.PROJECTILE)) { Component weaponHover; ItemStack i = mob.getEquipment().getItemInMainHand(); @@ -627,20 +627,20 @@ public static TextComponent getProjectile(boolean gang, PlayerManager pm, Living if (Settings.getInstance().getConfig().getBoolean(Config.DISABLE_WEAPON_KILL_WITH_NO_CUSTOM_NAME_ENABLED.getPath())) { if (!Settings.getInstance().getConfig().getString(Config.DISABLE_WEAPON_KILL_WITH_NO_CUSTOM_NAME_SOURCE_PROJECTILE_DEFAULT_TO.getPath()) .equals(projectileDamage)) { - return getProjectile(gang, pm, mob, Settings.getInstance().getConfig().getString(Config.DISABLE_WEAPON_KILL_WITH_NO_CUSTOM_NAME_SOURCE_PROJECTILE_DEFAULT_TO.getPath())); + return getProjectile(gang, playerCtx, mob, Settings.getInstance().getConfig().getString(Config.DISABLE_WEAPON_KILL_WITH_NO_CUSTOM_NAME_SOURCE_PROJECTILE_DEFAULT_TO.getPath())); } } - displayName = getI18nName(i, pm.getPlayer()); + displayName = getI18nName(i, playerCtx.getPlayer()); } else { displayName = ComponentUtil.getItemStackDisplayName(i); } - weaponHover = ComponentUtil.buildItemHover(pm.getPlayer(), i, displayName); + weaponHover = ComponentUtil.buildItemHover(playerCtx.getPlayer(), i, displayName); } else { - Entity projectile = pm.getLastProjectileEntity(); + Entity projectile = playerCtx.getLastProjectileEntity(); Component projectileName = projectile.getCustomName() != null ? Component.text(projectile.getCustomName()) - : getI18nName(projectile, pm.getPlayer()); + : getI18nName(projectile, playerCtx.getPlayer()); weaponHover = projectileName; } @@ -657,28 +657,28 @@ public static TextComponent getProjectile(boolean gang, PlayerManager pm, Living if (!rawEvents.isEmpty()) { int index = 0; for (String rawEvent : rawEvents) { - Component hoverEvent = ComponentUtil.buildHoverEvents(rawEvent, pm, null, mob, false, true); + Component hoverEvent = ComponentUtil.buildHoverEvents(rawEvent, playerCtx, null, mob, false, true); baseWithEvents = baseWithEvents.replaceText( TextReplacementConfig.builder().match("%hover_event_" + index++ + "%").replacement(hoverEvent).build() ); } } - return (TextComponent) playerDeathPlaceholders(baseWithEvents, pm, mob); + return (TextComponent) playerDeathPlaceholders(baseWithEvents, playerCtx, mob); } - public static TextComponent getEntityDeathProjectile(Player p, EntityManager em, String projectileDamage, MobType mobType) { - String entityName = EntityUtil.getConfigNodeByEntity(em.getEntity()); - boolean hasOwner = EntityUtil.hasOwner(em.getEntity()); - List msgs = sortList(getEntityDeathMessages().getStringList("Entities." + entityName + "." + projectileDamage), p, em.getEntity()); + public static TextComponent getEntityDeathProjectile(Player p, EntityCtx entityCtx, String projectileDamage, MobType mobType) { + String entityName = EntityUtil.getConfigNodeByEntity(entityCtx.getEntity()); + boolean hasOwner = EntityUtil.hasOwner(entityCtx.getEntity()); + List msgs = sortList(getEntityDeathMessages().getStringList("Entities." + entityName + "." + projectileDamage), p, entityCtx.getEntity()); if (mobType.equals(MobType.MYTHIC_MOB)) { String mmMobType = null; - if (DeathMessages.getHooks().mythicmobsEnabled && DeathMessages.getHooks().mythicMobs.getAPIHelper().isMythicMob(em.getEntityUUID())) { - mmMobType = DeathMessages.getHooks().mythicMobs.getAPIHelper().getMythicMobInstance(em.getEntity()).getMobType(); + if (DeathMessages.getHooks().mythicmobsEnabled && DeathMessages.getHooks().mythicMobs.getAPIHelper().isMythicMob(entityCtx.getUUID())) { + mmMobType = DeathMessages.getHooks().mythicMobs.getAPIHelper().getMythicMobInstance(entityCtx.getEntity()).getMobType(); } - msgs = sortList(getEntityDeathMessages().getStringList("Mythic-Mobs-Entities." + mmMobType + "." + projectileDamage), p, em.getEntity()); + msgs = sortList(getEntityDeathMessages().getStringList("Mythic-Mobs-Entities." + mmMobType + "." + projectileDamage), p, entityCtx.getEntity()); if (msgs.isEmpty()) return Component.empty(); // Don't send mm mob death msg if no configured death msg. } @@ -689,7 +689,7 @@ public static TextComponent getEntityDeathProjectile(Player p, EntityManager em, if (Settings.getInstance().getConfig().getBoolean(Config.DEFAULT_MELEE_LAST_DAMAGE_NOT_DEFINED.getPath())) { if (Settings.getInstance().getConfig().getBoolean(Config.DEBUG.getPath())) DeathMessages.LOGGER.warn("node2:: [getEntityDeath]"); - return getEntityDeath(p, em.getEntity(), getSimpleCause(EntityDamageEvent.DamageCause.ENTITY_ATTACK), mobType); + return getEntityDeath(p, entityCtx.getEntity(), getSimpleCause(EntityDamageEvent.DamageCause.ENTITY_ATTACK), mobType); } // This death message will not be broadcast, since user have not set death message for this entity return Component.empty(); @@ -700,7 +700,7 @@ public static TextComponent getEntityDeathProjectile(Player p, EntityManager em, List rawEvents = new ArrayList<>(); msg = ComponentUtil.sortHoverEvents(msg, rawEvents); - if (msg.contains("%weapon%") && em.getLastProjectileEntity() instanceof Arrow) { + if (msg.contains("%weapon%") && entityCtx.getLastProjectileEntity() instanceof Arrow) { Component weaponHover; ItemStack i = p.getEquipment().getItemInMainHand(); @@ -710,7 +710,7 @@ public static TextComponent getEntityDeathProjectile(Player p, EntityManager em, if (Settings.getInstance().getConfig().getBoolean(Config.DISABLE_WEAPON_KILL_WITH_NO_CUSTOM_NAME_ENABLED.getPath())) { if (!Settings.getInstance().getConfig().getString(Config.DISABLE_WEAPON_KILL_WITH_NO_CUSTOM_NAME_SOURCE_PROJECTILE_DEFAULT_TO.getPath()) .equals(projectileDamage)) { - return getEntityDeathProjectile(p, em, + return getEntityDeathProjectile(p, entityCtx, Settings.getInstance().getConfig().getString(Config.DISABLE_WEAPON_KILL_WITH_NO_CUSTOM_NAME_SOURCE_PROJECTILE_DEFAULT_TO.getPath()), mobType); } } @@ -721,7 +721,7 @@ public static TextComponent getEntityDeathProjectile(Player p, EntityManager em, weaponHover = ComponentUtil.buildItemHover(p, i, displayName); } else { - Entity projectile = em.getLastProjectileEntity(); + Entity projectile = entityCtx.getLastProjectileEntity(); Component projectileName = projectile.getCustomName() != null ? Component.text(projectile.getCustomName()) : getI18nName(projectile, p); @@ -741,14 +741,14 @@ public static TextComponent getEntityDeathProjectile(Player p, EntityManager em, if (!rawEvents.isEmpty()) { int index = 0; for (String rawEvent : rawEvents) { - Component hoverEvent = ComponentUtil.buildHoverEvents(rawEvent, null, p, em.getEntity(), hasOwner, false); + Component hoverEvent = ComponentUtil.buildHoverEvents(rawEvent, null, p, entityCtx.getEntity(), hasOwner, false); baseWithEvents = baseWithEvents.replaceText( TextReplacementConfig.builder().match("%hover_event_" + index++ + "%").replacement(hoverEvent).build() ); } } - return (TextComponent) entityDeathPlaceholders(baseWithEvents, p, em.getEntity(), hasOwner); + return (TextComponent) entityDeathPlaceholders(baseWithEvents, p, entityCtx.getEntity(), hasOwner); } public static TextComponent getEntityDeath(Player player, Entity e, String damageCause, MobType mobType) { @@ -946,21 +946,21 @@ public static String entityDeathPlaceholders(String msg, Player player, Entity e return msg; } - public static Component playerDeathPlaceholders(Component msg, PlayerManager pm, Entity mob) { + public static Component playerDeathPlaceholders(Component msg, PlayerCtx playerCtx, Entity mob) { final boolean hasBiome = msg.contains(Component.text("%biome%")); final boolean hasDistance = msg.contains(Component.text("%distance%")); - msg = msg.replaceText(Util.replace("%player%", Util.getPlayerName(pm))) - .replaceText(Util.replace("%player_display%", Util.getPlayerDisplayName(pm))) - .replaceText(Util.replace("%world%", pm.getLastLocation().getWorld().getName())) - .replaceText(Util.replace("%world_environment%", getEnvironment(pm.getLastLocation().getWorld().getEnvironment()))) - .replaceText(Util.replace("%x%", String.valueOf(pm.getLastLocation().getBlock().getX()))) - .replaceText(Util.replace("%y%", String.valueOf(pm.getLastLocation().getBlock().getY()))) - .replaceText(Util.replace("%z%", String.valueOf(pm.getLastLocation().getBlock().getZ()))); + msg = msg.replaceText(Util.replace("%player%", Util.getPlayerName(playerCtx))) + .replaceText(Util.replace("%player_display%", Util.getPlayerDisplayName(playerCtx))) + .replaceText(Util.replace("%world%", playerCtx.getLastLocation().getWorld().getName())) + .replaceText(Util.replace("%world_environment%", getEnvironment(playerCtx.getLastLocation().getWorld().getEnvironment()))) + .replaceText(Util.replace("%x%", String.valueOf(playerCtx.getLastLocation().getBlock().getX()))) + .replaceText(Util.replace("%y%", String.valueOf(playerCtx.getLastLocation().getBlock().getY()))) + .replaceText(Util.replace("%z%", String.valueOf(playerCtx.getLastLocation().getBlock().getZ()))); if (hasBiome) { try { - msg = msg.replaceText(Util.replace("%biome%", pm.getLastLocation().getBlock().getBiome().name())); + msg = msg.replaceText(Util.replace("%biome%", playerCtx.getLastLocation().getBlock().getBiome().name())); } catch (NullPointerException e) { DeathMessages.LOGGER.error("Custom Biome detected. Using 'Unknown' for a biome name."); DeathMessages.LOGGER.error("Custom Biomes are not supported yet.'"); @@ -970,7 +970,7 @@ public static Component playerDeathPlaceholders(Component msg, PlayerManager pm, if (hasDistance && mob != null && mob.getLocation() != null) { try { - msg = msg.replaceText(Util.replace("%distance%", String.valueOf((int) Math.round(pm.getLastLocation().distance(mob.getLocation()))))); + msg = msg.replaceText(Util.replace("%distance%", String.valueOf((int) Math.round(playerCtx.getLastLocation().distance(mob.getLocation()))))); } catch (Exception ex) { DeathMessages.LOGGER.error("Unknown distance calculated. Using 'Zero' for the distance."); msg = msg.replaceText(Util.replace("%distance%", "0")); @@ -1010,28 +1010,28 @@ public static Component playerDeathPlaceholders(Component msg, PlayerManager pm, while (params.find()) { String param = params.group(0); - msg = msg.replaceText(Util.replace(param, PlaceholderAPI.setPlaceholders(pm.getPlayer(), param))); + msg = msg.replaceText(Util.replace(param, PlaceholderAPI.setPlaceholders(playerCtx.getPlayer(), param))); } } return msg; } - public static String playerDeathPlaceholders(String msg, PlayerManager pm, Entity mob) { + public static String playerDeathPlaceholders(String msg, PlayerCtx playerCtx, Entity mob) { final boolean hasBiome = msg.contains("%biome%"); final boolean hasDistance = msg.contains("%distance%"); - msg = msg.replaceAll("%player%", Util.getPlayerName(pm)) - .replaceAll("%player_display%", Util.getPlayerDisplayName(pm)) - .replaceAll("%world%", pm.getLastLocation().getWorld().getName()) - .replaceAll("%world_environment%", getEnvironment(pm.getLastLocation().getWorld().getEnvironment())) - .replaceAll("%x%", String.valueOf(pm.getLastLocation().getBlock().getX())) - .replaceAll("%y%", String.valueOf(pm.getLastLocation().getBlock().getY())) - .replaceAll("%z%", String.valueOf(pm.getLastLocation().getBlock().getZ())); + msg = msg.replaceAll("%player%", Util.getPlayerName(playerCtx)) + .replaceAll("%player_display%", Util.getPlayerDisplayName(playerCtx)) + .replaceAll("%world%", playerCtx.getLastLocation().getWorld().getName()) + .replaceAll("%world_environment%", getEnvironment(playerCtx.getLastLocation().getWorld().getEnvironment())) + .replaceAll("%x%", String.valueOf(playerCtx.getLastLocation().getBlock().getX())) + .replaceAll("%y%", String.valueOf(playerCtx.getLastLocation().getBlock().getY())) + .replaceAll("%z%", String.valueOf(playerCtx.getLastLocation().getBlock().getZ())); if (hasBiome) { try { - msg = msg.replaceAll("%biome%", pm.getLastLocation().getBlock().getBiome().name()); + msg = msg.replaceAll("%biome%", playerCtx.getLastLocation().getBlock().getBiome().name()); } catch (NullPointerException e) { DeathMessages.LOGGER.error("Custom Biome detected. Using 'Unknown' for a biome name."); DeathMessages.LOGGER.error("Custom Biomes are not supported yet.'"); @@ -1041,7 +1041,7 @@ public static String playerDeathPlaceholders(String msg, PlayerManager pm, Entit if (hasDistance && mob != null && mob.getLocation() != null) { try { - msg = msg.replaceAll("%distance%", String.valueOf((int) Math.round(pm.getLastLocation().distance(mob.getLocation())))); + msg = msg.replaceAll("%distance%", String.valueOf((int) Math.round(playerCtx.getLastLocation().distance(mob.getLocation())))); } catch (Exception ex) { DeathMessages.LOGGER.error("Unknown distance calculated. Using 'Zero' for the distance."); msg = msg.replaceAll("%distance%", "0"); @@ -1076,7 +1076,7 @@ public static String playerDeathPlaceholders(String msg, PlayerManager pm, Entit } if (DeathMessages.getHooks().placeholderAPIEnabled) { - msg = PlaceholderAPI.setPlaceholders(pm.getPlayer(), msg); + msg = PlaceholderAPI.setPlaceholders(playerCtx.getPlayer(), msg); } return msg; diff --git a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/utils/ComponentUtil.java b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/utils/ComponentUtil.java index e4880e9c..b5852fb7 100644 --- a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/utils/ComponentUtil.java +++ b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/utils/ComponentUtil.java @@ -4,7 +4,7 @@ import de.tr7zw.changeme.nbtapi.NBT; import de.tr7zw.changeme.nbtapi.iface.ReadWriteNBT; import dev.mrshawn.deathmessages.DeathMessages; -import dev.mrshawn.deathmessages.api.PlayerManager; +import dev.mrshawn.deathmessages.api.PlayerCtx; import net.kyori.adventure.key.Key; import net.kyori.adventure.nbt.api.BinaryTagHolder; import net.kyori.adventure.text.Component; @@ -95,11 +95,11 @@ public static Component buildEntityHover(Entity entity, Component name) { /* Process and build hover events from raw events list - Only for playerDeath: pm, e, Only for EntityDeath: p, e, hasOwner + Only for playerDeath: playerCtx, e, Only for EntityDeath: p, e, hasOwner */ public static Component buildHoverEvents( String rawEvent, - PlayerManager pm, + PlayerCtx playerCtx, Player p, Entity e, boolean hasOwner, @@ -122,7 +122,7 @@ public static Component buildHoverEvents( if (rawHover.length == 4) { ClickEvent click = null; final String content = isPlayerDeath - ? Assets.playerDeathPlaceholders(rawHover[3], pm, e) + ? Assets.playerDeathPlaceholders(rawHover[3], playerCtx, e) : Assets.entityDeathPlaceholders(rawHover[3], p, e, hasOwner); switch (rawHover[2]) { diff --git a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/utils/Util.java b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/utils/Util.java index 4e12265a..bedb1992 100644 --- a/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/utils/Util.java +++ b/DeathMessagesLegacy/src/main/java/dev/mrshawn/deathmessages/utils/Util.java @@ -1,9 +1,9 @@ package dev.mrshawn.deathmessages.utils; import dev.mrshawn.deathmessages.DeathMessages; -import dev.mrshawn.deathmessages.api.EntityManager; +import dev.mrshawn.deathmessages.api.EntityCtx; import dev.mrshawn.deathmessages.api.ExplosionManager; -import dev.mrshawn.deathmessages.api.PlayerManager; +import dev.mrshawn.deathmessages.api.PlayerCtx; import dev.mrshawn.deathmessages.api.events.DMBlockExplodeEvent; import dev.mrshawn.deathmessages.config.Messages; import dev.mrshawn.deathmessages.config.Settings; @@ -132,22 +132,22 @@ public static void getExplosionNearbyEffected(Player p, Block b) { getNearby.forEach(ent -> { if (ent instanceof Player) { - PlayerManager getPlayer = PlayerManager.getPlayer((Player) ent); - if (getPlayer != null) { + PlayerCtx playerCtx = PlayerCtx.of(ent.getUniqueId()); + if (playerCtx != null) { effected.add(ent.getUniqueId()); - getPlayer.setLastEntityDamager(p); + playerCtx.setLastEntityDamager(p); } } else { - EntityManager getEntity = EntityManager.getEntity(ent.getUniqueId()); - PlayerManager getPlayer = PlayerManager.getPlayer(p); - if (getEntity != null) { + EntityCtx entityCtx = EntityCtx.of(ent.getUniqueId()); + if (entityCtx != null) { effected.add(ent.getUniqueId()); - if (getPlayer != null) { - getEntity.setLastPlayerDamager(getPlayer); + PlayerCtx playerCtx = PlayerCtx.of(p.getUniqueId()); + if (playerCtx != null) { + entityCtx.setLastPlayerDamager(playerCtx); } } else { - new EntityManager(ent, ent.getUniqueId(), MobType.VANILLA); + EntityCtx.create(new EntityCtx(ent, MobType.VANILLA)); } } } @@ -224,12 +224,12 @@ public static String randomNumeric(int length) { return sb.toString(); } - public static String getPlayerName(PlayerManager pm) { - if (isPlayerVanished(pm.getPlayer())) { + public static String getPlayerName(PlayerCtx playerCtx) { + if (isPlayerVanished(playerCtx.getPlayer())) { return PlainTextComponentSerializer.plainText().serialize(getVanishedName()); } - return pm.getName(); + return playerCtx.getName(); } public static String getPlayerName(Player player) { @@ -240,8 +240,8 @@ public static String getPlayerName(Player player) { return player.getName(); } - public static String getPlayerDisplayName(PlayerManager pm) { - final Player player = pm.getPlayer(); + public static String getPlayerDisplayName(PlayerCtx playerCtx) { + final Player player = playerCtx.getPlayer(); if (isPlayerVanished(player)) { return PlainTextComponentSerializer.plainText().serialize(getVanishedName());