From d75aad65968d9cefee538168cc2e0ab2724f8f00 Mon Sep 17 00:00:00 2001 From: ineanto Date: Sun, 3 Dec 2023 22:46:59 +0100 Subject: [PATCH] feat(disguise): update others when joining --- .../xyz/atnrch/nicko/appearance/AppearanceManager.java | 7 +++++-- .../java/xyz/atnrch/nicko/event/PlayerJoinListener.java | 8 +++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/java/xyz/atnrch/nicko/appearance/AppearanceManager.java b/src/main/java/xyz/atnrch/nicko/appearance/AppearanceManager.java index f9bab11..185beae 100644 --- a/src/main/java/xyz/atnrch/nicko/appearance/AppearanceManager.java +++ b/src/main/java/xyz/atnrch/nicko/appearance/AppearanceManager.java @@ -58,7 +58,7 @@ public class AppearanceManager { updateMetadata(); updateTabList(gameProfile, displayName); respawnPlayer(); - updateOthers(); + updateForOthers(); } return result; } @@ -68,7 +68,10 @@ public class AppearanceManager { return optionalProfile.orElse(NickoProfile.EMPTY_PROFILE.clone()); } - public void updateOthers() { + public void updateForOthers() { + final NickoProfile nickoProfile = getNickoProfile(); + if (!nickoProfile.hasData()) return; + final WrapperPlayServerEntityDestroy destroy = new WrapperPlayServerEntityDestroy(); final WrapperPlayServerSpawnEntity spawn = new WrapperPlayServerSpawnEntity(); destroy.setEntityIds(IntList.of(player.getEntityId())); diff --git a/src/main/java/xyz/atnrch/nicko/event/PlayerJoinListener.java b/src/main/java/xyz/atnrch/nicko/event/PlayerJoinListener.java index cfd9523..4038733 100644 --- a/src/main/java/xyz/atnrch/nicko/event/PlayerJoinListener.java +++ b/src/main/java/xyz/atnrch/nicko/event/PlayerJoinListener.java @@ -3,6 +3,7 @@ package xyz.atnrch.nicko.event; import org.bukkit.Bukkit; 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 xyz.atnrch.nicko.NickoBukkit; @@ -17,7 +18,7 @@ import xyz.atnrch.nicko.storage.name.PlayerNameStore; import java.util.Optional; public class PlayerJoinListener implements Listener { - @EventHandler + @EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST) public void onPlayerJoin(PlayerJoinEvent event) { final Player player = event.getPlayer(); final NickoBukkit instance = NickoBukkit.getInstance(); @@ -41,6 +42,11 @@ public class PlayerJoinListener implements Listener { } } }); + + for (Player online : Bukkit.getOnlinePlayers()) { + final AppearanceManager appearanceManager = new AppearanceManager(online); + appearanceManager.updateForOthers(); + } }, 20L); } }