Armorstand names now adapt to basic entity sizes, and player sneaking. Doesn't handle poses.
This commit is contained in:
parent
93eef36c58
commit
e6b7651571
@ -116,6 +116,8 @@ public abstract class Disguise {
|
|||||||
return DisguiseUtilities.reverse(multiName);
|
return DisguiseUtilities.reverse(multiName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public abstract double getHeight();
|
||||||
|
|
||||||
public void setMultiName(String... name) {
|
public void setMultiName(String... name) {
|
||||||
if (name.length == 1 && name[0].isEmpty()) {
|
if (name.length == 1 && name[0].isEmpty()) {
|
||||||
name = new String[0];
|
name = new String[0];
|
||||||
|
@ -47,10 +47,12 @@ public class FlagWatcher {
|
|||||||
private HashMap<Integer, Object> entityValues = new HashMap<>();
|
private HashMap<Integer, Object> entityValues = new HashMap<>();
|
||||||
private LibsEquipment equipment;
|
private LibsEquipment equipment;
|
||||||
private boolean hasDied;
|
private boolean hasDied;
|
||||||
|
@Getter
|
||||||
private boolean[] modifiedEntityAnimations = new boolean[8];
|
private boolean[] modifiedEntityAnimations = new boolean[8];
|
||||||
private transient List<WrappedWatchableObject> watchableObjects;
|
private transient List<WrappedWatchableObject> watchableObjects;
|
||||||
private boolean sleeping;
|
private boolean sleeping;
|
||||||
private boolean swimming;
|
private boolean swimming;
|
||||||
|
private transient boolean previouslySneaking;
|
||||||
|
|
||||||
public FlagWatcher(Disguise disguise) {
|
public FlagWatcher(Disguise disguise) {
|
||||||
this.disguise = (TargetedDisguise) disguise;
|
this.disguise = (TargetedDisguise) disguise;
|
||||||
@ -150,8 +152,10 @@ public class FlagWatcher {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (value != null) {
|
if (value != null) {
|
||||||
if (isEntityAnimationsAdded() && id == 0) {
|
if (isEntityAnimationsAdded() && id == MetaIndex.ENTITY_META.getIndex()) {
|
||||||
value = addEntityAnimations((byte) value, (byte) watch.getValue());
|
value = addEntityAnimations((byte) value, (byte) watch.getValue());
|
||||||
|
|
||||||
|
doSneakCheck((Byte) value);
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean isDirty = watch.getDirtyState();
|
boolean isDirty = watch.getDirtyState();
|
||||||
@ -175,6 +179,10 @@ public class FlagWatcher {
|
|||||||
if (!isDirty) {
|
if (!isDirty) {
|
||||||
watch.setDirtyState(false);
|
watch.setDirtyState(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (id == MetaIndex.ENTITY_META.getIndex()) {
|
||||||
|
doSneakCheck((Byte) watch.getValue());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
newList.add(watch);
|
newList.add(watch);
|
||||||
@ -207,7 +215,7 @@ public class FlagWatcher {
|
|||||||
getDisguise().getEntity() instanceof Player) {
|
getDisguise().getEntity() instanceof Player) {
|
||||||
for (WrappedWatchableObject watch : newList) {
|
for (WrappedWatchableObject watch : newList) {
|
||||||
// Its a health packet
|
// Its a health packet
|
||||||
if (watch.getIndex() == 6) {
|
if (watch.getIndex() == MetaIndex.LIVING_HEALTH.getIndex()) {
|
||||||
Object value = watch.getValue();
|
Object value = watch.getValue();
|
||||||
|
|
||||||
if (value instanceof Float) {
|
if (value instanceof Float) {
|
||||||
@ -236,6 +244,21 @@ public class FlagWatcher {
|
|||||||
return newList;
|
return newList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void doSneakCheck(byte value) {
|
||||||
|
if (getModifiedEntityAnimations()[1] || !getDisguise().isPlayerDisguise()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean sneak = (value & 1 << 1) != 0;
|
||||||
|
|
||||||
|
if (sneak == previouslySneaking) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
previouslySneaking = sneak;
|
||||||
|
updateNameHeight();
|
||||||
|
}
|
||||||
|
|
||||||
@NmsAddedIn(val = NmsVersion.v1_14)
|
@NmsAddedIn(val = NmsVersion.v1_14)
|
||||||
public EntityPose getEntityPose() {
|
public EntityPose getEntityPose() {
|
||||||
return getData(MetaIndex.ENTITY_POSE);
|
return getData(MetaIndex.ENTITY_POSE);
|
||||||
@ -255,6 +278,55 @@ public class FlagWatcher {
|
|||||||
getEquipment().setArmorContents(items);
|
getEquipment().setArmorContents(items);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void updateNameHeight() {
|
||||||
|
if (!getDisguise().isDisguiseInUse()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!DisguiseConfig.isArmorstandsName()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!getDisguise().isPlayerDisguise() && !DisguiseConfig.isOverrideCustomNames()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (getDisguise().getEntity() == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Not using this as it's "Smooth" and looks a bit weirder
|
||||||
|
/*int[] ids = getDisguise().getArmorstandIds();
|
||||||
|
|
||||||
|
ArrayList<PacketContainer> packets = new ArrayList<>();
|
||||||
|
Location loc = getDisguise().getEntity().getLocation();
|
||||||
|
|
||||||
|
for (int i = 0; i < getDisguise().getMultiNameLength(); i++) {
|
||||||
|
PacketContainer packet = new PacketContainer(Server.ENTITY_TELEPORT);
|
||||||
|
packet.getIntegers().write(0, ids[i]);
|
||||||
|
|
||||||
|
StructureModifier<Double> doubles = packet.getDoubles();
|
||||||
|
doubles.write(0, loc.getX());
|
||||||
|
doubles.write(1, loc.getY() + getDisguise().getHeight() + (0.28 * i));
|
||||||
|
doubles.write(2, loc.getZ());
|
||||||
|
|
||||||
|
packets.add(packet);
|
||||||
|
}*/
|
||||||
|
|
||||||
|
ArrayList<PacketContainer> packets = DisguiseUtilities.getNamePackets(getDisguise(), new String[0]);
|
||||||
|
|
||||||
|
try {
|
||||||
|
for (Player player : DisguiseUtilities.getPerverts(getDisguise())) {
|
||||||
|
for (PacketContainer packet : packets) {
|
||||||
|
ProtocolLibrary.getProtocolManager().sendServerPacket(player, packet);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (InvocationTargetException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public String getCustomName() {
|
public String getCustomName() {
|
||||||
if (!getDisguise().isPlayerDisguise() && DisguiseConfig.isOverrideCustomNames() &&
|
if (!getDisguise().isPlayerDisguise() && DisguiseConfig.isOverrideCustomNames() &&
|
||||||
DisguiseConfig.isArmorstandsName()) {
|
DisguiseConfig.isArmorstandsName()) {
|
||||||
@ -266,6 +338,10 @@ public class FlagWatcher {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!NmsVersion.v1_13.isSupported()) {
|
if (!NmsVersion.v1_13.isSupported()) {
|
||||||
|
if (!hasValue(MetaIndex.ENTITY_CUSTOM_NAME_OLD)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
return getData(MetaIndex.ENTITY_CUSTOM_NAME_OLD);
|
return getData(MetaIndex.ENTITY_CUSTOM_NAME_OLD);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -470,6 +546,10 @@ public class FlagWatcher {
|
|||||||
setEntityFlag(1, setSneaking);
|
setEntityFlag(1, setSneaking);
|
||||||
sendData(MetaIndex.ENTITY_META);
|
sendData(MetaIndex.ENTITY_META);
|
||||||
|
|
||||||
|
if (getDisguise().isPlayerDisguise()) {
|
||||||
|
updateNameHeight();
|
||||||
|
}
|
||||||
|
|
||||||
if (NmsVersion.v1_14.isSupported()) {
|
if (NmsVersion.v1_14.isSupported()) {
|
||||||
updatePose();
|
updatePose();
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ import me.libraryaddict.disguise.disguisetypes.watchers.DroppedItemWatcher;
|
|||||||
import me.libraryaddict.disguise.disguisetypes.watchers.FallingBlockWatcher;
|
import me.libraryaddict.disguise.disguisetypes.watchers.FallingBlockWatcher;
|
||||||
import me.libraryaddict.disguise.disguisetypes.watchers.PaintingWatcher;
|
import me.libraryaddict.disguise.disguisetypes.watchers.PaintingWatcher;
|
||||||
import me.libraryaddict.disguise.disguisetypes.watchers.SplashPotionWatcher;
|
import me.libraryaddict.disguise.disguisetypes.watchers.SplashPotionWatcher;
|
||||||
|
import me.libraryaddict.disguise.utilities.DisguiseValues;
|
||||||
import org.bukkit.Art;
|
import org.bukkit.Art;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
@ -63,6 +64,17 @@ public class MiscDisguise extends TargetedDisguise {
|
|||||||
apply(id, new ItemStack(Material.STONE));
|
apply(id, new ItemStack(Material.STONE));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getHeight() {
|
||||||
|
DisguiseValues values = DisguiseValues.getDisguiseValues(getType());
|
||||||
|
|
||||||
|
if (values == null || values.getAdultBox() == null) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return values.getAdultBox().getY();
|
||||||
|
}
|
||||||
|
|
||||||
private void apply(int id, ItemStack itemStack) {
|
private void apply(int id, ItemStack itemStack) {
|
||||||
createDisguise();
|
createDisguise();
|
||||||
|
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
package me.libraryaddict.disguise.disguisetypes;
|
package me.libraryaddict.disguise.disguisetypes;
|
||||||
|
|
||||||
import me.libraryaddict.disguise.disguisetypes.watchers.AgeableWatcher;
|
import me.libraryaddict.disguise.disguisetypes.watchers.*;
|
||||||
import me.libraryaddict.disguise.disguisetypes.watchers.LivingWatcher;
|
import me.libraryaddict.disguise.utilities.DisguiseValues;
|
||||||
import me.libraryaddict.disguise.disguisetypes.watchers.ZombieWatcher;
|
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@ -30,6 +29,30 @@ public class MobDisguise extends TargetedDisguise {
|
|||||||
createDisguise();
|
createDisguise();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getHeight() {
|
||||||
|
DisguiseValues values = DisguiseValues.getDisguiseValues(getType());
|
||||||
|
|
||||||
|
if (values == null || values.getAdultBox() == null) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isAdult() && values.getBabyBox() != null) {
|
||||||
|
return values.getBabyBox().getY();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (getWatcher() != null) {
|
||||||
|
if (getType() == DisguiseType.ARMOR_STAND) {
|
||||||
|
return (((ArmorStandWatcher) getWatcher()).isSmall() ? values.getBabyBox() : values.getAdultBox())
|
||||||
|
.getY();
|
||||||
|
} else if (getType() == DisguiseType.SLIME || getType() == DisguiseType.MAGMA_CUBE) {
|
||||||
|
return 0.51 * (0.255 * ((SlimeWatcher) getWatcher()).getSize());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return values.getAdultBox().getY();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MobDisguise addPlayer(Player player) {
|
public MobDisguise addPlayer(Player player) {
|
||||||
return (MobDisguise) super.addPlayer(player);
|
return (MobDisguise) super.addPlayer(player);
|
||||||
|
@ -38,6 +38,11 @@ public class ModdedDisguise extends TargetedDisguise {
|
|||||||
createDisguise();
|
createDisguise();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getHeight() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isCustomDisguise() {
|
public boolean isCustomDisguise() {
|
||||||
return true;
|
return true;
|
||||||
|
@ -83,6 +83,19 @@ public class PlayerDisguise extends TargetedDisguise {
|
|||||||
createDisguise();
|
createDisguise();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getHeight() {
|
||||||
|
if (getWatcher() == null) {
|
||||||
|
return 1.8;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (getEntity() == null || getWatcher().getModifiedEntityAnimations()[1]) {
|
||||||
|
return getWatcher().isSneaking() ? 1.5 : 1.8;
|
||||||
|
}
|
||||||
|
|
||||||
|
return getEntity() instanceof Player && ((Player) getEntity()).isSneaking() ? 1.5 : 1.8;
|
||||||
|
}
|
||||||
|
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public DisguiseUtilities.DScoreTeam getScoreboardName() {
|
public DisguiseUtilities.DScoreTeam getScoreboardName() {
|
||||||
if (!DisguiseConfig.isScoreboardNames()) {
|
if (!DisguiseConfig.isScoreboardNames()) {
|
||||||
|
@ -25,7 +25,13 @@ public class SlimeWatcher extends InsentientWatcher {
|
|||||||
size = 50;
|
size = 50;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (hasValue(MetaIndex.SLIME_SIZE) && getData(MetaIndex.SLIME_SIZE) == size) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
setData(MetaIndex.SLIME_SIZE, size);
|
setData(MetaIndex.SLIME_SIZE, size);
|
||||||
sendData(MetaIndex.SLIME_SIZE);
|
sendData(MetaIndex.SLIME_SIZE);
|
||||||
|
|
||||||
|
updateNameHeight();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,7 +22,7 @@ import me.libraryaddict.disguise.LibsDisguises;
|
|||||||
import me.libraryaddict.disguise.disguisetypes.*;
|
import me.libraryaddict.disguise.disguisetypes.*;
|
||||||
import me.libraryaddict.disguise.disguisetypes.TargetedDisguise.TargetType;
|
import me.libraryaddict.disguise.disguisetypes.TargetedDisguise.TargetType;
|
||||||
import me.libraryaddict.disguise.disguisetypes.watchers.AgeableWatcher;
|
import me.libraryaddict.disguise.disguisetypes.watchers.AgeableWatcher;
|
||||||
import me.libraryaddict.disguise.disguisetypes.watchers.LivingWatcher;
|
import me.libraryaddict.disguise.disguisetypes.watchers.ArmorStandWatcher;
|
||||||
import me.libraryaddict.disguise.disguisetypes.watchers.ZombieWatcher;
|
import me.libraryaddict.disguise.disguisetypes.watchers.ZombieWatcher;
|
||||||
import me.libraryaddict.disguise.utilities.json.*;
|
import me.libraryaddict.disguise.utilities.json.*;
|
||||||
import me.libraryaddict.disguise.utilities.mineskin.MineSkinAPI;
|
import me.libraryaddict.disguise.utilities.mineskin.MineSkinAPI;
|
||||||
@ -2323,6 +2323,8 @@ public class DisguiseUtilities {
|
|||||||
destroyIds = Arrays.copyOfRange(standIds, newNames.length, internalOldNames.length);
|
destroyIds = Arrays.copyOfRange(standIds, newNames.length, internalOldNames.length);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
double height = disguise.getHeight();
|
||||||
|
|
||||||
for (int i = 0; i < newNames.length; i++) {
|
for (int i = 0; i < newNames.length; i++) {
|
||||||
if (i < internalOldNames.length) {
|
if (i < internalOldNames.length) {
|
||||||
if (newNames[i].equals(internalOldNames[i]) || newNames[i].isEmpty()) {
|
if (newNames[i].equals(internalOldNames[i]) || newNames[i].isEmpty()) {
|
||||||
@ -2358,19 +2360,19 @@ public class DisguiseUtilities {
|
|||||||
Location loc = disguise.getEntity().getLocation();
|
Location loc = disguise.getEntity().getLocation();
|
||||||
|
|
||||||
packet.getDoubles().write(0, loc.getX());
|
packet.getDoubles().write(0, loc.getX());
|
||||||
packet.getDoubles().write(1, loc.getY() + -0.175 + (0.28 * i));
|
packet.getDoubles().write(1, loc.getY() + height + (0.28 * i));
|
||||||
packet.getDoubles().write(2, loc.getZ());
|
packet.getDoubles().write(2, loc.getZ());
|
||||||
packets.add(packet);
|
packets.add(packet);
|
||||||
|
|
||||||
WrappedDataWatcher watcher = new WrappedDataWatcher();
|
WrappedDataWatcher watcher = new WrappedDataWatcher();
|
||||||
|
|
||||||
for (MetaIndex index : MetaIndex.getMetaIndexes(LivingWatcher.class)) {
|
for (MetaIndex index : MetaIndex.getMetaIndexes(ArmorStandWatcher.class)) {
|
||||||
Object val = index.getDefault();
|
Object val = index.getDefault();
|
||||||
|
|
||||||
if (index == MetaIndex.ENTITY_META) {
|
if (index == MetaIndex.ENTITY_META) {
|
||||||
val = (byte) 32;
|
val = (byte) 32;
|
||||||
} else if (index == MetaIndex.ARMORSTAND_META) {
|
} else if (index == MetaIndex.ARMORSTAND_META) {
|
||||||
val = (byte) 17;
|
val = (byte) 19;
|
||||||
} else if (index == MetaIndex.ENTITY_CUSTOM_NAME) {
|
} else if (index == MetaIndex.ENTITY_CUSTOM_NAME) {
|
||||||
val = Optional.of(WrappedChatComponent.fromText(newNames[i]));
|
val = Optional.of(WrappedChatComponent.fromText(newNames[i]));
|
||||||
} else if (index == MetaIndex.ENTITY_CUSTOM_NAME_OLD) {
|
} else if (index == MetaIndex.ENTITY_CUSTOM_NAME_OLD) {
|
||||||
@ -2387,7 +2389,7 @@ public class DisguiseUtilities {
|
|||||||
|
|
||||||
if (NmsVersion.v1_15.isSupported()) {
|
if (NmsVersion.v1_15.isSupported()) {
|
||||||
PacketContainer metaPacket = ProtocolLibrary.getProtocolManager()
|
PacketContainer metaPacket = ProtocolLibrary.getProtocolManager()
|
||||||
.createPacketConstructor(PacketType.Play.Server.ENTITY_METADATA, 0, watcher, true)
|
.createPacketConstructor(PacketType.Play.Server.ENTITY_METADATA, standIds[i], watcher, true)
|
||||||
.createPacket(standIds[i], watcher, true);
|
.createPacket(standIds[i], watcher, true);
|
||||||
|
|
||||||
packets.add(metaPacket);
|
packets.add(metaPacket);
|
||||||
|
@ -15,19 +15,12 @@ public class DisguiseValues {
|
|||||||
return values.get(type);
|
return values.get(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Class getNmsEntityClass(DisguiseType type) {
|
|
||||||
return getDisguiseValues(type).getNmsEntityClass();
|
|
||||||
}
|
|
||||||
|
|
||||||
private FakeBoundingBox adultBox;
|
private FakeBoundingBox adultBox;
|
||||||
private FakeBoundingBox babyBox;
|
private FakeBoundingBox babyBox;
|
||||||
private float[] entitySize;
|
private final double maxHealth;
|
||||||
private double maxHealth;
|
|
||||||
private Class nmsEntityClass;
|
|
||||||
|
|
||||||
public DisguiseValues(DisguiseType type, Class classType, double maxHealth) {
|
public DisguiseValues(DisguiseType type, double maxHealth) {
|
||||||
values.put(type, this);
|
values.put(type, this);
|
||||||
nmsEntityClass = classType;
|
|
||||||
this.maxHealth = maxHealth;
|
this.maxHealth = maxHealth;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -50,8 +43,4 @@ public class DisguiseValues {
|
|||||||
public double getMaxHealth() {
|
public double getMaxHealth() {
|
||||||
return maxHealth;
|
return maxHealth;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Class getNmsEntityClass() {
|
|
||||||
return nmsEntityClass;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -49,6 +49,7 @@ public class PacketHandlerMovement implements IPacketHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ArrayList<PacketContainer> toAdd = new ArrayList<>();
|
ArrayList<PacketContainer> toAdd = new ArrayList<>();
|
||||||
|
double height = disguise.getHeight();
|
||||||
|
|
||||||
for (PacketContainer packet : packets.getPackets()) {
|
for (PacketContainer packet : packets.getPackets()) {
|
||||||
for (int i = 0; i < len; i++) {
|
for (int i = 0; i < len; i++) {
|
||||||
@ -57,7 +58,7 @@ public class PacketHandlerMovement implements IPacketHandler {
|
|||||||
packet2.getIntegers().write(0, standId);
|
packet2.getIntegers().write(0, standId);
|
||||||
|
|
||||||
if (packet2.getType() == PacketType.Play.Server.ENTITY_TELEPORT) {
|
if (packet2.getType() == PacketType.Play.Server.ENTITY_TELEPORT) {
|
||||||
packet2.getDoubles().write(1, packet2.getDoubles().read(1) + -0.175 + (0.28 * i));
|
packet2.getDoubles().write(1, packet2.getDoubles().read(1) + height + (0.28 * i));
|
||||||
}
|
}
|
||||||
|
|
||||||
toAdd.add(packet2);
|
toAdd.add(packet2);
|
||||||
|
@ -48,8 +48,10 @@ public class DisguiseParser {
|
|||||||
disguise = new MiscDisguise(type);
|
disguise = new MiscDisguise(type);
|
||||||
} else if (type.isMob()) {
|
} else if (type.isMob()) {
|
||||||
disguise = new MobDisguise(type);
|
disguise = new MobDisguise(type);
|
||||||
} else {
|
} else if (type.isPlayer()) {
|
||||||
disguise = new PlayerDisguise("Foobar");
|
disguise = new PlayerDisguise("Foobar");
|
||||||
|
} else {
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
FlagWatcher watcher = type.getWatcherClass().getConstructor(Disguise.class).newInstance(disguise);
|
FlagWatcher watcher = type.getWatcherClass().getConstructor(Disguise.class).newInstance(disguise);
|
||||||
@ -217,15 +219,14 @@ public class DisguiseParser {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static void addWatcherDefault(Method setMethod, Method getMethod, Object object) {
|
private static void addWatcherDefault(Method setMethod, Method getMethod, Object object) {
|
||||||
|
|
||||||
if (defaultWatcherValues.containsKey(setMethod)) {
|
if (defaultWatcherValues.containsKey(setMethod)) {
|
||||||
Object dObj = defaultWatcherValues.get(setMethod).getValue();
|
Object dObj = defaultWatcherValues.get(setMethod).getValue();
|
||||||
|
|
||||||
if (!Objects.deepEquals(dObj, object)) {
|
if (!Objects.deepEquals(dObj, object)) {
|
||||||
throw new IllegalStateException(String.format(
|
throw new IllegalStateException(String.format(
|
||||||
"%s has conflicting values! This means it expected the same value again but received a " +
|
"%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,
|
"different value on a different disguise! %s is not the same as %s!",
|
||||||
dObj));
|
setMethod.getName(), object, dObj));
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
@ -1722,7 +1722,7 @@ public class ReflectionManager {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
if (disguiseType == DisguiseType.UNKNOWN || disguiseType.isCustom()) {
|
if (disguiseType == DisguiseType.UNKNOWN || disguiseType.isCustom()) {
|
||||||
DisguiseValues disguiseValues = new DisguiseValues(disguiseType, null, 0);
|
DisguiseValues disguiseValues = new DisguiseValues(disguiseType, 0);
|
||||||
|
|
||||||
disguiseValues.setAdultBox(new FakeBoundingBox(0, 0, 0));
|
disguiseValues.setAdultBox(new FakeBoundingBox(0, 0, 0));
|
||||||
|
|
||||||
@ -1763,7 +1763,7 @@ public class ReflectionManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DisguiseValues disguiseValues = new DisguiseValues(disguiseType, nmsEntity.getClass(),
|
DisguiseValues disguiseValues = new DisguiseValues(disguiseType,
|
||||||
bukkitEntity instanceof Damageable ? ((Damageable) bukkitEntity).getMaxHealth() : 0);
|
bukkitEntity instanceof Damageable ? ((Damageable) bukkitEntity).getMaxHealth() : 0);
|
||||||
|
|
||||||
WrappedDataWatcher watcher = WrappedDataWatcher.getEntityWatcher(bukkitEntity);
|
WrappedDataWatcher watcher = WrappedDataWatcher.getEntityWatcher(bukkitEntity);
|
||||||
@ -1841,9 +1841,11 @@ public class ReflectionManager {
|
|||||||
((Zombie) bukkitEntity).setBaby(true);
|
((Zombie) bukkitEntity).setBaby(true);
|
||||||
|
|
||||||
disguiseValues.setBabyBox(ReflectionManager.getBoundingBox(bukkitEntity));
|
disguiseValues.setBabyBox(ReflectionManager.getBoundingBox(bukkitEntity));
|
||||||
}
|
} else if (bukkitEntity instanceof ArmorStand) {
|
||||||
|
((ArmorStand) bukkitEntity).setSmall(true);
|
||||||
|
|
||||||
//disguiseValues.setEntitySize(ReflectionManager.getSize(bukkitEntity));
|
disguiseValues.setBabyBox(ReflectionManager.getBoundingBox(bukkitEntity));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (SecurityException | IllegalArgumentException | IllegalAccessException | FieldAccessException ex) {
|
catch (SecurityException | IllegalArgumentException | IllegalAccessException | FieldAccessException ex) {
|
||||||
DisguiseUtilities.getLogger()
|
DisguiseUtilities.getLogger()
|
||||||
|
@ -72,8 +72,10 @@ SaveDisguises:
|
|||||||
# EXTENDED - Names are limited to 48 chars but can't be changed without resending disguise
|
# EXTENDED - Names are limited to 48 chars but can't be changed without resending disguise
|
||||||
# ARMORSTANDS - Names are limited to 256 chars, uses a mix of armorstands and teams to do this. Slightly hacky.
|
# ARMORSTANDS - Names are limited to 256 chars, uses a mix of armorstands and teams to do this. Slightly hacky.
|
||||||
# Downside of armorstand names is that there's a chance of it becoming desynced from the player disguise
|
# Downside of armorstand names is that there's a chance of it becoming desynced from the player disguise
|
||||||
|
# And names will always display even if the entity is invisible using potion effects
|
||||||
PlayerNames: TEAMS
|
PlayerNames: TEAMS
|
||||||
# If doing armorstands, should CustomNames be overridden to use armorstands too?
|
# If doing ARMORSTANDS in the above option, should CustomNames be overridden to use armorstands too?
|
||||||
|
# This allows multiline names
|
||||||
OverrideCustomNames: true
|
OverrideCustomNames: true
|
||||||
|
|
||||||
# How many ticks before tab packet is sent to remove from tablist. This shouldn't need to be touched
|
# How many ticks before tab packet is sent to remove from tablist. This shouldn't need to be touched
|
||||||
|
Loading…
Reference in New Issue
Block a user