diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/Disguise.java b/src/main/java/me/libraryaddict/disguise/disguisetypes/Disguise.java index b842cf2e..52fe589e 100644 --- a/src/main/java/me/libraryaddict/disguise/disguisetypes/Disguise.java +++ b/src/main/java/me/libraryaddict/disguise/disguisetypes/Disguise.java @@ -117,6 +117,10 @@ public abstract class Disguise { } public void setMultiName(String... name) { + if (name.length == 1 && name[0].isEmpty()) { + name = new String[0]; + } + name = DisguiseUtilities.reverse(name); String[] oldName = multiName; @@ -939,7 +943,7 @@ public abstract class Disguise { } } - if (getMultiNameLength()> 0) { + if (getMultiNameLength() > 0) { PacketContainer packet = new PacketContainer(Server.ENTITY_DESTROY); packet.getIntegerArrays().write(0, Arrays.copyOf(getArmorstandIds(), getMultiNameLength())); diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/FlagWatcher.java b/src/main/java/me/libraryaddict/disguise/disguisetypes/FlagWatcher.java index 95504ae0..8904dff5 100644 --- a/src/main/java/me/libraryaddict/disguise/disguisetypes/FlagWatcher.java +++ b/src/main/java/me/libraryaddict/disguise/disguisetypes/FlagWatcher.java @@ -256,7 +256,12 @@ public class FlagWatcher { } public String getCustomName() { - if (DisguiseConfig.isOverrideCustomNames() && DisguiseConfig.isArmorstandsName()) { + if (!getDisguise().isPlayerDisguise() && DisguiseConfig.isOverrideCustomNames() && + DisguiseConfig.isArmorstandsName()) { + if (getDisguise().getMultiNameLength() == 0) { + return null; + } + return StringUtils.join(getDisguise().getMultiName(), "\n"); } @@ -276,7 +281,8 @@ public class FlagWatcher { } public void setCustomName(String name) { - if (DisguiseConfig.isArmorstandsName() && DisguiseConfig.isOverrideCustomNames()) { + if (!getDisguise().isPlayerDisguise() && DisguiseConfig.isArmorstandsName() && + DisguiseConfig.isOverrideCustomNames()) { if (NmsVersion.v1_13.isSupported()) { if (!hasValue(MetaIndex.ENTITY_CUSTOM_NAME)) { setData(MetaIndex.ENTITY_CUSTOM_NAME, Optional.empty()); @@ -289,7 +295,7 @@ public class FlagWatcher { } } - if (name == null) { + if (Strings.isNullOrEmpty(name)) { getDisguise().setMultiName(); } else { getDisguise().setMultiName(DisguiseUtilities.splitNewLine(name)); diff --git a/src/main/java/me/libraryaddict/disguise/utilities/parser/DisguiseParser.java b/src/main/java/me/libraryaddict/disguise/utilities/parser/DisguiseParser.java index 5f7d1651..ce10f09d 100644 --- a/src/main/java/me/libraryaddict/disguise/utilities/parser/DisguiseParser.java +++ b/src/main/java/me/libraryaddict/disguise/utilities/parser/DisguiseParser.java @@ -217,18 +217,22 @@ public class DisguiseParser { } private static void addWatcherDefault(Method setMethod, Method getMethod, Object object) { - Map.Entry entry = new HashMap.SimpleEntry<>(getMethod, object); if (defaultWatcherValues.containsKey(setMethod)) { - Object dObj = defaultWatcherValues.get(setMethod); + Object dObj = defaultWatcherValues.get(setMethod).getValue(); - if (!Objects.deepEquals(defaultWatcherValues.get(setMethod).getValue(), object)) { - throw new IllegalStateException(String.format("%s has conflicting values!", setMethod.getName())); + if (!Objects.deepEquals(dObj, object)) { + throw new IllegalStateException(String.format( + "%s has conflicting values! This means it expected the same value again but received a " + + "different value on a different disguise! %s is not the same as %s!", setMethod.getName(), object, + dObj)); } return; } + Map.Entry entry = new HashMap.SimpleEntry<>(getMethod, object); + defaultWatcherValues.put(setMethod, entry); }