From 2c8b1864d840feb902d8c267dd9eb40518642100 Mon Sep 17 00:00:00 2001 From: fullwall Date: Wed, 23 Mar 2022 20:57:18 +0800 Subject: [PATCH] Null check enderdragon bossbar again, set blank hologram names to hover --- .../main/java/net/citizensnpcs/commands/NPCCommands.java | 4 ++-- .../main/java/net/citizensnpcs/trait/HologramTrait.java | 8 ++++---- main/src/main/java/net/citizensnpcs/util/Util.java | 2 +- .../java/net/citizensnpcs/nms/v1_17_R1/util/NMSImpl.java | 6 +++++- .../java/net/citizensnpcs/nms/v1_18_R2/util/NMSImpl.java | 6 +++++- .../nms/v1_18_R2/util/PlayerAnimationImpl.java | 4 ++-- 6 files changed, 19 insertions(+), 11 deletions(-) diff --git a/main/src/main/java/net/citizensnpcs/commands/NPCCommands.java b/main/src/main/java/net/citizensnpcs/commands/NPCCommands.java index 0259b984a..3d12ef6d2 100644 --- a/main/src/main/java/net/citizensnpcs/commands/NPCCommands.java +++ b/main/src/main/java/net/citizensnpcs/commands/NPCCommands.java @@ -1408,13 +1408,13 @@ public class NPCCommands { permission = "citizens.npc.name") @Requirements(selected = true, ownership = true) public void name(CommandContext args, CommandSender sender, NPC npc) { - String old = npc.data(). get(NPC.NAMEPLATE_VISIBLE_METADATA, true).toString(); + String old = npc.data(). get(NPC.Metadata.NAMEPLATE_VISIBLE, true).toString(); if (args.hasFlag('h')) { old = "hover"; } else { old = old.equals("hover") ? "true" : "" + !Boolean.parseBoolean(old); } - npc.data().setPersistent(NPC.NAMEPLATE_VISIBLE_METADATA, old); + npc.data().setPersistent(NPC.Metadata.NAMEPLATE_VISIBLE, old); Messaging.sendTr(sender, Messages.NAMEPLATE_VISIBILITY_TOGGLED); } diff --git a/main/src/main/java/net/citizensnpcs/trait/HologramTrait.java b/main/src/main/java/net/citizensnpcs/trait/HologramTrait.java index dac964ce6..9eb6a0b8e 100644 --- a/main/src/main/java/net/citizensnpcs/trait/HologramTrait.java +++ b/main/src/main/java/net/citizensnpcs/trait/HologramTrait.java @@ -173,7 +173,7 @@ public class HologramTrait extends Trait { if (!npc.isSpawned()) return; lastNameplateVisible = Boolean - .parseBoolean(npc.data(). get(NPC.NAMEPLATE_VISIBLE_METADATA, true).toString()); + .parseBoolean(npc.data(). get(NPC.Metadata.NAMEPLATE_VISIBLE, true).toString()); currentLoc = npc.getStoredLocation(); if (npc.requiresNameHologram() && lastNameplateVisible) { nameNPC = createHologram(npc.getFullName(), 0); @@ -205,7 +205,7 @@ public class HologramTrait extends Trait { currentLoc = npc.getStoredLocation(); } boolean nameplateVisible = Boolean - .parseBoolean(npc.data(). get(NPC.NAMEPLATE_VISIBLE_METADATA, true).toString()); + .parseBoolean(npc.data(). get(NPC.Metadata.NAMEPLATE_VISIBLE, true).toString()); if (npc.requiresNameHologram()) { if (nameNPC != null && !nameplateVisible) { nameNPC.destroy(); @@ -245,10 +245,10 @@ public class HologramTrait extends Trait { } if (text != null && !ChatColor.stripColor(Colorizer.parseColors(text)).isEmpty()) { hologramNPC.setName(Placeholders.replace(text, null, npc)); - hologramNPC.data().set(NPC.NAMEPLATE_VISIBLE_METADATA, true); + hologramNPC.data().set(NPC.Metadata.NAMEPLATE_VISIBLE, true); } else { hologramNPC.setName(""); - hologramNPC.data().set(NPC.NAMEPLATE_VISIBLE_METADATA, false); + hologramNPC.data().set(NPC.Metadata.NAMEPLATE_VISIBLE, "hover"); } } } diff --git a/main/src/main/java/net/citizensnpcs/util/Util.java b/main/src/main/java/net/citizensnpcs/util/Util.java index cdea1d841..7f655e5fb 100644 --- a/main/src/main/java/net/citizensnpcs/util/Util.java +++ b/main/src/main/java/net/citizensnpcs/util/Util.java @@ -107,7 +107,7 @@ public class Util { if (team == null) { team = scoreboard.registerNewTeam(teamName); if (npc.requiresNameHologram() - || npc.data(). get(NPC.NAMEPLATE_VISIBLE_METADATA, true).toString().equals("false")) { + || npc.data(). get(NPC.Metadata.NAMEPLATE_VISIBLE, true).toString().equals("false")) { NMS.setTeamNameTagVisible(team, false); } mode = 0; diff --git a/v1_17_R1/src/main/java/net/citizensnpcs/nms/v1_17_R1/util/NMSImpl.java b/v1_17_R1/src/main/java/net/citizensnpcs/nms/v1_17_R1/util/NMSImpl.java index bf085bf05..e6e29ae3c 100644 --- a/v1_17_R1/src/main/java/net/citizensnpcs/nms/v1_17_R1/util/NMSImpl.java +++ b/v1_17_R1/src/main/java/net/citizensnpcs/nms/v1_17_R1/util/NMSImpl.java @@ -272,6 +272,7 @@ import net.minecraft.world.item.Items; import net.minecraft.world.item.enchantment.EnchantmentHelper; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.dimension.end.EndDragonFight; import net.minecraft.world.level.material.FluidState; import net.minecraft.world.level.pathfinder.BlockPathTypes; import net.minecraft.world.level.pathfinder.Node; @@ -448,7 +449,10 @@ public class NMSImpl implements NMSBridge { if (entity.getType() == EntityType.WITHER) { bserver = ((WitherBoss) NMSImpl.getHandle(entity)).bossEvent; } else if (entity.getType() == EntityType.ENDER_DRAGON) { - bserver = ((EnderDragon) NMSImpl.getHandle(entity)).getDragonFight().dragonEvent; + EndDragonFight df = ((EnderDragon) NMSImpl.getHandle(entity)).getDragonFight(); + if (df != null) { + bserver = df.dragonEvent; + } } } catch (Throwable e) { e.printStackTrace(); diff --git a/v1_18_R2/src/main/java/net/citizensnpcs/nms/v1_18_R2/util/NMSImpl.java b/v1_18_R2/src/main/java/net/citizensnpcs/nms/v1_18_R2/util/NMSImpl.java index 2d23b9a44..685ad64d5 100644 --- a/v1_18_R2/src/main/java/net/citizensnpcs/nms/v1_18_R2/util/NMSImpl.java +++ b/v1_18_R2/src/main/java/net/citizensnpcs/nms/v1_18_R2/util/NMSImpl.java @@ -275,6 +275,7 @@ import net.minecraft.world.item.Items; import net.minecraft.world.item.enchantment.EnchantmentHelper; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.dimension.end.EndDragonFight; import net.minecraft.world.level.material.FluidState; import net.minecraft.world.level.pathfinder.BlockPathTypes; import net.minecraft.world.level.pathfinder.Node; @@ -453,7 +454,10 @@ public class NMSImpl implements NMSBridge { if (entity.getType() == EntityType.WITHER) { bserver = ((WitherBoss) NMSImpl.getHandle(entity)).bossEvent; } else if (entity.getType() == EntityType.ENDER_DRAGON) { - bserver = ((EnderDragon) NMSImpl.getHandle(entity)).getDragonFight().dragonEvent; + EndDragonFight df = ((EnderDragon) NMSImpl.getHandle(entity)).getDragonFight(); + if (df != null) { + bserver = df.dragonEvent; + } } } catch (Throwable e) { e.printStackTrace(); diff --git a/v1_18_R2/src/main/java/net/citizensnpcs/nms/v1_18_R2/util/PlayerAnimationImpl.java b/v1_18_R2/src/main/java/net/citizensnpcs/nms/v1_18_R2/util/PlayerAnimationImpl.java index 5d79917f9..3611e194f 100644 --- a/v1_18_R2/src/main/java/net/citizensnpcs/nms/v1_18_R2/util/PlayerAnimationImpl.java +++ b/v1_18_R2/src/main/java/net/citizensnpcs/nms/v1_18_R2/util/PlayerAnimationImpl.java @@ -1,6 +1,6 @@ package net.citizensnpcs.nms.v1_18_R2.util; -import java.util.EnumMap; +import java.util.Map; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; @@ -128,7 +128,7 @@ public class PlayerAnimationImpl { NMSImpl.sendPacketNearby(player.getBukkitEntity(), player.getBukkitEntity().getLocation(), packet, radius); } - private static EnumMap DEFAULTS = Maps.newEnumMap(PlayerAnimation.class); + private static Map DEFAULTS = Maps.newEnumMap(PlayerAnimation.class); static { DEFAULTS.put(PlayerAnimation.ARM_SWING, 0); DEFAULTS.put(PlayerAnimation.HURT, 1);