@eutherin#5367 fixed name ordering
This commit is contained in:
		| @@ -28,6 +28,7 @@ import me.libraryaddict.disguise.utilities.reflection.ReflectionManager; | ||||
| import me.libraryaddict.disguise.utilities.translations.LibsMsg; | ||||
| import net.md_5.bungee.api.ChatMessageType; | ||||
| import net.md_5.bungee.api.chat.ComponentBuilder; | ||||
| import org.apache.commons.lang.ArrayUtils; | ||||
| import org.bukkit.Bukkit; | ||||
| import org.bukkit.Location; | ||||
| import org.bukkit.NamespacedKey; | ||||
| @@ -100,7 +101,6 @@ public abstract class Disguise { | ||||
|     @Getter | ||||
|     @Setter | ||||
|     private boolean tallDisguisesVisible = !DisguiseConfig.isHideTallSelfDisguises(); | ||||
|     @Getter | ||||
|     private String[] multiName = new String[0]; | ||||
|     private transient int[] armorstandIds = new int[0]; | ||||
|  | ||||
| @@ -109,8 +109,18 @@ public abstract class Disguise { | ||||
|         this.disguiseName = disguiseType.toReadable(); | ||||
|     } | ||||
|  | ||||
|     public int getMultiNameLength() { | ||||
|         return multiName.length; | ||||
|     } | ||||
|  | ||||
|     public String[] getMultiName() { | ||||
|         return DisguiseUtilities.reverse(multiName); | ||||
|     } | ||||
|  | ||||
|     public void setMultiName(String... name) { | ||||
|         String[] oldName = getMultiName(); | ||||
|         name = DisguiseUtilities.reverse(name); | ||||
|  | ||||
|         String[] oldName = multiName; | ||||
|         multiName = name; | ||||
|  | ||||
|         if (!isDisguiseInUse()) { | ||||
| @@ -136,10 +146,10 @@ public abstract class Disguise { | ||||
|     } | ||||
|  | ||||
|     public int[] getArmorstandIds() { | ||||
|         if (getMultiName().length > armorstandIds.length) { | ||||
|         if (getMultiNameLength() > armorstandIds.length) { | ||||
|             int oldLen = armorstandIds.length; | ||||
|  | ||||
|             armorstandIds = Arrays.copyOf(armorstandIds, getMultiName().length); | ||||
|             armorstandIds = Arrays.copyOf(armorstandIds, getMultiNameLength()); | ||||
|  | ||||
|             for (int i = oldLen; i < armorstandIds.length; i++) { | ||||
|                 armorstandIds[i] = ReflectionManager.getNewEntityId(); | ||||
| @@ -930,9 +940,9 @@ public abstract class Disguise { | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         if (getMultiName().length > 0) { | ||||
|         if (getMultiNameLength()> 0) { | ||||
|             PacketContainer packet = new PacketContainer(Server.ENTITY_DESTROY); | ||||
|             packet.getIntegerArrays().write(0, Arrays.copyOf(getArmorstandIds(), getMultiName().length)); | ||||
|             packet.getIntegerArrays().write(0, Arrays.copyOf(getArmorstandIds(), getMultiNameLength())); | ||||
|  | ||||
|             try { | ||||
|                 for (Player player : DisguiseUtilities.getPerverts(this)) { | ||||
|   | ||||
| @@ -140,7 +140,7 @@ public class PlayerDisguise extends TargetedDisguise { | ||||
|         if (isDisguiseInUse()) { | ||||
|             if (DisguiseConfig.isArmorstandsName()) { | ||||
|                 this.nameVisible = nameVisible; | ||||
|                 sendArmorStands(isNameVisible() ? getMultiName() : new String[0]); | ||||
|                 sendArmorStands(isNameVisible() ? DisguiseUtilities.reverse(getMultiName()) : new String[0]); | ||||
|             } else if (!DisguiseConfig.isScoreboardNames()) { | ||||
|                 if (stopDisguise()) { | ||||
|                     this.nameVisible = nameVisible; | ||||
|   | ||||
| @@ -1269,7 +1269,7 @@ public class DisguiseUtilities { | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         int[] ids = Arrays.copyOf(disguise.getArmorstandIds(), 1 + disguise.getMultiName().length); | ||||
|         int[] ids = Arrays.copyOf(disguise.getArmorstandIds(), 1 + disguise.getMultiNameLength()); | ||||
|         ids[ids.length - 1] = DisguiseAPI.getSelfDisguiseId(); | ||||
|  | ||||
|         // Send a packet to destroy the fake entity | ||||
| @@ -1760,6 +1760,16 @@ public class DisguiseUtilities { | ||||
|         return string.replaceAll("\\\\(?=\\\\+n)", "\\\\\\\\"); | ||||
|     } | ||||
|  | ||||
|     public static String[] reverse(String[] array) { | ||||
|         String[] newArray = new String[array.length]; | ||||
|  | ||||
|         for (int i = 1; i <= array.length; i++) { | ||||
|             newArray[array.length - i] = array[i - 1]; | ||||
|         } | ||||
|  | ||||
|         return newArray; | ||||
|     } | ||||
|  | ||||
|     public static String[] splitNewLine(String string) { | ||||
|         if (string.contains("\n")) { | ||||
|             return string.split("\n"); | ||||
| @@ -2281,22 +2291,23 @@ public class DisguiseUtilities { | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public static ArrayList<PacketContainer> getNamePackets(Disguise disguise, String[] oldNames) { | ||||
|     public static ArrayList<PacketContainer> getNamePackets(Disguise disguise, String[] internalOldNames) { | ||||
|         ArrayList<PacketContainer> packets = new ArrayList<>(); | ||||
|         String[] newNames = | ||||
|                 (disguise instanceof PlayerDisguise && !((PlayerDisguise) disguise).isNameVisible()) ? new String[0] : | ||||
|                         disguise.getMultiName(); | ||||
|         int[] standIds = disguise.getArmorstandIds(); | ||||
|         int[] destroyIds = new int[0]; | ||||
|         internalOldNames = DisguiseUtilities.reverse(internalOldNames); | ||||
|  | ||||
|         if (oldNames.length > newNames.length) { | ||||
|         if (internalOldNames.length > newNames.length) { | ||||
|             // Destroy packet | ||||
|             destroyIds = Arrays.copyOfRange(standIds, newNames.length, oldNames.length); | ||||
|             destroyIds = Arrays.copyOfRange(standIds, newNames.length, internalOldNames.length); | ||||
|         } | ||||
|  | ||||
|         for (int i = 0; i < newNames.length; i++) { | ||||
|             if (i < oldNames.length) { | ||||
|                 if (newNames[i].equals(oldNames[i]) || newNames[i].isEmpty()) { | ||||
|             if (i < internalOldNames.length) { | ||||
|                 if (newNames[i].equals(internalOldNames[i]) || newNames[i].isEmpty()) { | ||||
|                     continue; | ||||
|                 } | ||||
|  | ||||
|   | ||||
| @@ -42,7 +42,7 @@ public class PacketHandlerMovement implements IPacketHandler { | ||||
|             Entity entity) { | ||||
|         handle2(disguise, sentPacket, packets, observer, entity); | ||||
|  | ||||
|         int len = disguise.getMultiName().length; | ||||
|         int len = disguise.getMultiNameLength(); | ||||
|  | ||||
|         if (len == 0) { | ||||
|             return; | ||||
|   | ||||
| @@ -34,7 +34,7 @@ public class PacketListenerDestroyEntity extends PacketAdapter { | ||||
|                 continue; | ||||
|             } | ||||
|  | ||||
|             int len = disguise.getMultiName().length; | ||||
|             int len = disguise.getMultiNameLength(); | ||||
|  | ||||
|             if (len == 0) { | ||||
|                 continue; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user