@eutherin#5367 fixed name ordering
This commit is contained in:
parent
d1c0e9eff8
commit
f40492b2e7
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user