From f6eb0f14b73ba5783c7b2b4983218d638df4649a Mon Sep 17 00:00:00 2001 From: libraryaddict Date: Mon, 11 May 2020 15:22:02 +1200 Subject: [PATCH] Update dynamic name for non-player disguises --- .../disguise/disguisetypes/Disguise.java | 28 +++++++++++++++++-- .../disguisetypes/PlayerDisguise.java | 4 --- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/Disguise.java b/src/main/java/me/libraryaddict/disguise/disguisetypes/Disguise.java index a0b9d8e8..5d240e76 100644 --- a/src/main/java/me/libraryaddict/disguise/disguisetypes/Disguise.java +++ b/src/main/java/me/libraryaddict/disguise/disguisetypes/Disguise.java @@ -102,6 +102,9 @@ public abstract class Disguise { private boolean tallDisguisesVisible = DisguiseConfig.isTallSelfDisguises(); private String[] multiName = new String[0]; private transient int[] armorstandIds = new int[0]; + @Getter + @Setter + private boolean dynamicName; public Disguise(DisguiseType disguiseType) { this.disguiseType = disguiseType; @@ -126,6 +129,10 @@ public abstract class Disguise { String[] oldName = multiName; multiName = name; + if (Arrays.equals(oldName, name)) { + return; + } + if (!isDisguiseInUse()) { return; } @@ -192,6 +199,7 @@ public abstract class Disguise { disguise.setVelocitySent(isVelocitySent()); disguise.setModifyBoundingBox(isModifyBoundingBox()); disguise.multiName = Arrays.copyOf(multiName, multiName.length); + disguise.setDynamicName(isDynamicName()); if (getWatcher() != null) { disguise.setWatcher(getWatcher().clone(disguise)); @@ -367,15 +375,19 @@ public abstract class Disguise { new ComponentBuilder(LibsMsg.ACTION_BAR_MESSAGE.get(getDisguiseName())).create()); } - if (Disguise.this instanceof PlayerDisguise && ((PlayerDisguise) Disguise.this).isDynamicName()) { + if (isDynamicName()) { String name = getEntity().getCustomName(); if (name == null) { name = ""; } - if (!((PlayerDisguise) Disguise.this).getName().equals(name)) { - ((PlayerDisguise) Disguise.this).setName(name); + if (isPlayerDisguise()) { + if (!((PlayerDisguise) Disguise.this).getName().equals(name)) { + ((PlayerDisguise) Disguise.this).setName(name); + } + } else { + getWatcher().setCustomName(name); } } } @@ -1161,6 +1173,16 @@ public abstract class Disguise { System.currentTimeMillis() + TimeUnit.SECONDS.toMillis(330)); } + if (isDynamicName() && !isPlayerDisguise()) { + String name = getEntity().getCustomName(); + + if (name == null) { + name = ""; + } + + getWatcher().setCustomName(name); + } + makeBossBar(); return true; diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/PlayerDisguise.java b/src/main/java/me/libraryaddict/disguise/disguisetypes/PlayerDisguise.java index e79db310..a2036a97 100644 --- a/src/main/java/me/libraryaddict/disguise/disguisetypes/PlayerDisguise.java +++ b/src/main/java/me/libraryaddict/disguise/disguisetypes/PlayerDisguise.java @@ -31,9 +31,6 @@ public class PlayerDisguise extends TargetedDisguise { */ private boolean explicitNameVisible = false; private UUID uuid = UUID.randomUUID(); - @Getter - @Setter - private boolean dynamicName; private volatile DisguiseUtilities.DScoreTeam scoreboardName; @Getter private boolean upsideDown; @@ -226,7 +223,6 @@ public class PlayerDisguise extends TargetedDisguise { disguise.setName(getName()); disguise.nameVisible = isNameVisible(); disguise.explicitNameVisible = explicitNameVisible; - disguise.setDynamicName(isDynamicName()); disguise.setUpsideDown(isUpsideDown()); clone(disguise);