diff --git a/api/src/main/java/net/momirealms/customnameplates/api/CNPlayer.java b/api/src/main/java/net/momirealms/customnameplates/api/CNPlayer.java index 2acf661..cd5f94b 100644 --- a/api/src/main/java/net/momirealms/customnameplates/api/CNPlayer.java +++ b/api/src/main/java/net/momirealms/customnameplates/api/CNPlayer.java @@ -402,4 +402,11 @@ public interface CNPlayer { * @return team view */ TeamView teamView(); + + /** + * Check if the player is initialized + * + * @return initialized or not + */ + boolean isInitialized(); } diff --git a/bukkit/src/main/java/net/momirealms/customnameplates/bukkit/BukkitCNPlayer.java b/bukkit/src/main/java/net/momirealms/customnameplates/bukkit/BukkitCNPlayer.java index fb7ab71..90565c3 100644 --- a/bukkit/src/main/java/net/momirealms/customnameplates/bukkit/BukkitCNPlayer.java +++ b/bukkit/src/main/java/net/momirealms/customnameplates/bukkit/BukkitCNPlayer.java @@ -52,6 +52,11 @@ public class BukkitCNPlayer extends AbstractCNPlayer { this.player = new WeakReference<>(player); } + @Override + public boolean isInitialized() { + return player != null; + } + @Override public Player player() { return player.get(); diff --git a/bukkit/src/main/java/net/momirealms/customnameplates/bukkit/BukkitPlatform.java b/bukkit/src/main/java/net/momirealms/customnameplates/bukkit/BukkitPlatform.java index 7d7ddc0..e65a2aa 100644 --- a/bukkit/src/main/java/net/momirealms/customnameplates/bukkit/BukkitPlatform.java +++ b/bukkit/src/main/java/net/momirealms/customnameplates/bukkit/BukkitPlatform.java @@ -207,6 +207,7 @@ public class BukkitPlatform implements Platform { // for skin plugin compatibility registerPacketConsumer((player, event, packet) -> { try { + if (!player.isInitialized()) return; UUID pUUID = player.uuid(); @SuppressWarnings("unchecked") List uuids = (List) Reflections.field$ClientboundPlayerInfoRemovePacket$profileIds.get(packet); @@ -228,7 +229,6 @@ public class BukkitPlatform implements Platform { try { EnumSet enums = (EnumSet) Reflections.field$ClientboundPlayerInfoUpdatePacket$actions.get(packet); if (enums == null) return; - UUID pUUID = player.uuid(); boolean add_player = enums.contains(Reflections.enum$ClientboundPlayerInfoUpdatePacket$Action$ADD_PLAYER); boolean update_gamemode = enums.contains(Reflections.enum$ClientboundPlayerInfoUpdatePacket$Action$UPDATE_GAME_MODE); if (add_player || update_gamemode) { @@ -239,8 +239,9 @@ public class BukkitPlatform implements Platform { if (uuid == null) continue; // for skin plugin compatibility - if (add_player && uuid.equals(pUUID)) { - if (player.isTempPreviewing() || player.isToggleablePreviewing() || CustomNameplates.getInstance().getUnlimitedTagManager().isAlwaysShow()) { + if (add_player && player.isInitialized()) { + UUID pUUID = player.uuid(); + if (uuid.equals(pUUID) && (player.isTempPreviewing() || player.isToggleablePreviewing() || CustomNameplates.getInstance().getUnlimitedTagManager().isAlwaysShow())) { Tracker tracker = player.addPlayerToTracker(player); tracker.setScale(player.scale()); tracker.setCrouching(player.isCrouching()); diff --git a/gradle.properties b/gradle.properties index 2635c71..29432aa 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ # Project settings # Rule: [major update].[feature update].[bug fix] -project_version=3.0.10 +project_version=3.0.10.1 config_version=32 project_group=net.momirealms