Hopefully fix an invisibility issue
This commit is contained in:
parent
a20d0fbaed
commit
c7d54fa701
@ -6,6 +6,7 @@ import com.comphenix.protocol.ProtocolLibrary;
|
|||||||
import com.comphenix.protocol.events.PacketContainer;
|
import com.comphenix.protocol.events.PacketContainer;
|
||||||
import com.comphenix.protocol.reflect.StructureModifier;
|
import com.comphenix.protocol.reflect.StructureModifier;
|
||||||
import com.comphenix.protocol.wrappers.EnumWrappers;
|
import com.comphenix.protocol.wrappers.EnumWrappers;
|
||||||
|
import com.comphenix.protocol.wrappers.WrappedDataWatcher;
|
||||||
import com.google.common.cache.Cache;
|
import com.google.common.cache.Cache;
|
||||||
import com.google.common.cache.CacheBuilder;
|
import com.google.common.cache.CacheBuilder;
|
||||||
import com.google.common.cache.RemovalCause;
|
import com.google.common.cache.RemovalCause;
|
||||||
@ -21,6 +22,7 @@ import me.libraryaddict.disguise.events.UndisguiseEvent;
|
|||||||
import me.libraryaddict.disguise.utilities.DisguiseUtilities;
|
import me.libraryaddict.disguise.utilities.DisguiseUtilities;
|
||||||
import me.libraryaddict.disguise.utilities.packets.LibsPackets;
|
import me.libraryaddict.disguise.utilities.packets.LibsPackets;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
@ -229,6 +231,19 @@ public class PlayerSkinHandler implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void addMetadata(Player player, PlayerSkin skin) {
|
||||||
|
PlayerDisguise disguise = skin.getDisguise().get();
|
||||||
|
Entity entity = disguise.getEntity();
|
||||||
|
WrappedDataWatcher watcher = DisguiseUtilities
|
||||||
|
.createSanitizedDataWatcher(WrappedDataWatcher.getEntityWatcher(entity), disguise.getWatcher());
|
||||||
|
|
||||||
|
PacketContainer metaPacket = ProtocolLibrary.getProtocolManager()
|
||||||
|
.createPacketConstructor(PacketType.Play.Server.ENTITY_METADATA, entity.getEntityId(), watcher, true)
|
||||||
|
.createPacket(entity.getEntityId(), watcher, true);
|
||||||
|
|
||||||
|
skin.getSleptPackets().computeIfAbsent(4, (a) -> new ArrayList<>()).add(metaPacket);
|
||||||
|
}
|
||||||
|
|
||||||
private void addTeleport(Player player, PlayerSkin skin) {
|
private void addTeleport(Player player, PlayerSkin skin) {
|
||||||
PlayerDisguise disguise = skin.getDisguise().get();
|
PlayerDisguise disguise = skin.getDisguise().get();
|
||||||
|
|
||||||
@ -281,6 +296,7 @@ public class PlayerSkinHandler implements Listener {
|
|||||||
|
|
||||||
if (skin.isSleepPackets()) {
|
if (skin.isSleepPackets()) {
|
||||||
addTeleport(player, skin);
|
addTeleport(player, skin);
|
||||||
|
addMetadata(player, skin);
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -233,11 +233,7 @@ public class PacketHandlerSpawn implements IPacketHandler {
|
|||||||
|
|
||||||
packets.addPacket(spawnPlayer);
|
packets.addPacket(spawnPlayer);
|
||||||
|
|
||||||
WrappedDataWatcher dataWatcher = DisguiseUtilities
|
WrappedDataWatcher toSend;
|
||||||
.createSanitizedDataWatcher(WrappedDataWatcher.getEntityWatcher(disguisedEntity),
|
|
||||||
disguise.getWatcher());
|
|
||||||
|
|
||||||
WrappedDataWatcher toSend = dataWatcher;
|
|
||||||
|
|
||||||
if (!normalPlayerDisguise) {
|
if (!normalPlayerDisguise) {
|
||||||
toSend = new WrappedDataWatcher();
|
toSend = new WrappedDataWatcher();
|
||||||
@ -246,6 +242,10 @@ public class PacketHandlerSpawn implements IPacketHandler {
|
|||||||
|
|
||||||
// Set invis
|
// Set invis
|
||||||
toSend.setObject(obj, (byte) 32);
|
toSend.setObject(obj, (byte) 32);
|
||||||
|
} else {
|
||||||
|
toSend = DisguiseUtilities
|
||||||
|
.createSanitizedDataWatcher(WrappedDataWatcher.getEntityWatcher(disguisedEntity),
|
||||||
|
disguise.getWatcher());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (NmsVersion.v1_15.isSupported()) {
|
if (NmsVersion.v1_15.isSupported()) {
|
||||||
@ -257,14 +257,6 @@ public class PacketHandlerSpawn implements IPacketHandler {
|
|||||||
} else {
|
} else {
|
||||||
spawnPlayer.getDataWatcherModifier().write(0, toSend);
|
spawnPlayer.getDataWatcherModifier().write(0, toSend);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!normalPlayerDisguise) {
|
|
||||||
PacketContainer metaPacket = ProtocolLibrary.getProtocolManager()
|
|
||||||
.createPacketConstructor(PacketType.Play.Server.ENTITY_METADATA, entityId, dataWatcher, true)
|
|
||||||
.createPacket(entityId, dataWatcher, true);
|
|
||||||
|
|
||||||
skin.getSleptPackets().computeIfAbsent(4, (a) -> new ArrayList<>()).add(metaPacket);
|
|
||||||
}
|
|
||||||
} else if (disguise.isMobDisguise() || disguise.getType() == DisguiseType.ARMOR_STAND) {
|
} else if (disguise.isMobDisguise() || disguise.getType() == DisguiseType.ARMOR_STAND) {
|
||||||
Vector vec = disguisedEntity.getVelocity();
|
Vector vec = disguisedEntity.getVelocity();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user