Fixed falling block grid lock, improved player disguises skins a ton
This commit is contained in:
parent
bea34b18c2
commit
dff3e23821
@ -52,7 +52,7 @@ public class LibsDisguises extends JavaPlugin {
|
|||||||
@Getter
|
@Getter
|
||||||
private final UpdateChecker updateChecker = new UpdateChecker();
|
private final UpdateChecker updateChecker = new UpdateChecker();
|
||||||
@Getter
|
@Getter
|
||||||
private final PlayerSkinHandler skinHandler = new PlayerSkinHandler();
|
private PlayerSkinHandler skinHandler;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLoad() {
|
public void onLoad() {
|
||||||
@ -178,6 +178,7 @@ public class LibsDisguises extends JavaPlugin {
|
|||||||
PacketsManager.addPacketListeners();
|
PacketsManager.addPacketListeners();
|
||||||
|
|
||||||
listener = new DisguiseListener(this);
|
listener = new DisguiseListener(this);
|
||||||
|
skinHandler = new PlayerSkinHandler();
|
||||||
|
|
||||||
Bukkit.getPluginManager().registerEvents(getSkinHandler(), LibsDisguises.getInstance());
|
Bukkit.getPluginManager().registerEvents(getSkinHandler(), LibsDisguises.getInstance());
|
||||||
|
|
||||||
|
@ -3025,7 +3025,8 @@ public class DisguiseUtilities {
|
|||||||
/**
|
/**
|
||||||
* Get the Y level to add to the disguise for realism.
|
* Get the Y level to add to the disguise for realism.
|
||||||
*/
|
*/
|
||||||
public static double getYModifier(Entity entity, Disguise disguise) {
|
public static double getYModifier(Disguise disguise) {
|
||||||
|
Entity entity = disguise.getEntity();
|
||||||
double yMod = 0;
|
double yMod = 0;
|
||||||
|
|
||||||
if (disguise.getType() != DisguiseType.PLAYER && entity.getType() == EntityType.DROPPED_ITEM) {
|
if (disguise.getType() != DisguiseType.PLAYER && entity.getType() == EntityType.DROPPED_ITEM) {
|
||||||
|
@ -4,6 +4,7 @@ import com.comphenix.protocol.PacketType;
|
|||||||
import com.comphenix.protocol.PacketType.Play.Server;
|
import com.comphenix.protocol.PacketType.Play.Server;
|
||||||
import com.comphenix.protocol.ProtocolLibrary;
|
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.wrappers.EnumWrappers;
|
import com.comphenix.protocol.wrappers.EnumWrappers;
|
||||||
import com.google.common.cache.Cache;
|
import com.google.common.cache.Cache;
|
||||||
import com.google.common.cache.CacheBuilder;
|
import com.google.common.cache.CacheBuilder;
|
||||||
@ -11,12 +12,15 @@ import com.google.common.cache.RemovalCause;
|
|||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
import me.libraryaddict.disguise.DisguiseAPI;
|
||||||
import me.libraryaddict.disguise.DisguiseConfig;
|
import me.libraryaddict.disguise.DisguiseConfig;
|
||||||
import me.libraryaddict.disguise.LibsDisguises;
|
import me.libraryaddict.disguise.LibsDisguises;
|
||||||
|
import me.libraryaddict.disguise.disguisetypes.DisguiseType;
|
||||||
import me.libraryaddict.disguise.disguisetypes.PlayerDisguise;
|
import me.libraryaddict.disguise.disguisetypes.PlayerDisguise;
|
||||||
import me.libraryaddict.disguise.events.UndisguiseEvent;
|
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.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;
|
||||||
@ -84,6 +88,15 @@ public class PlayerSkinHandler implements Listener {
|
|||||||
skins.clear();
|
skins.clear();
|
||||||
}).build();
|
}).build();
|
||||||
|
|
||||||
|
public PlayerSkinHandler() {
|
||||||
|
new BukkitRunnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
getCache().asMap().forEach((key, value) -> doTeleport(key, value));
|
||||||
|
}
|
||||||
|
}.runTaskTimer(LibsDisguises.getInstance(), 1, 1);
|
||||||
|
}
|
||||||
|
|
||||||
public PlayerSkin addPlayerSkin(Player player, PlayerDisguise disguise) {
|
public PlayerSkin addPlayerSkin(Player player, PlayerDisguise disguise) {
|
||||||
tryProcess(player, false);
|
tryProcess(player, false);
|
||||||
|
|
||||||
@ -101,7 +114,53 @@ public class PlayerSkinHandler implements Listener {
|
|||||||
return toReturn;
|
return toReturn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void doTeleport(Player player, List<PlayerSkin> value) {
|
||||||
|
if (player == null || !player.isOnline()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Location loc = player.getLocation();
|
||||||
|
loc.add(loc.getDirection().normalize().multiply(10));
|
||||||
|
|
||||||
|
PacketContainer packet = new PacketContainer(Server.ENTITY_TELEPORT);
|
||||||
|
packet.getModifier().write(1, loc.getX());
|
||||||
|
packet.getModifier().write(2, loc.getY());
|
||||||
|
packet.getModifier().write(3, loc.getZ());
|
||||||
|
|
||||||
|
for (PlayerSkin skin : value) {
|
||||||
|
if (!skin.isSleepPackets()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
PlayerDisguise disguise = skin.getDisguise().get();
|
||||||
|
|
||||||
|
if (disguise == null || !disguise.isDisguiseInUse()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
packet = packet.shallowClone();
|
||||||
|
|
||||||
|
int id = disguise.getEntity().getEntityId();
|
||||||
|
|
||||||
|
if (id == player.getEntityId()) {
|
||||||
|
id = DisguiseAPI.getSelfDisguiseId();
|
||||||
|
}
|
||||||
|
|
||||||
|
packet.getModifier().write(0, id);
|
||||||
|
|
||||||
|
try {
|
||||||
|
ProtocolLibrary.getProtocolManager().sendServerPacket(player, packet, false);
|
||||||
|
} catch (InvocationTargetException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void handlePackets(Player player, PlayerDisguise disguise, LibsPackets packets) {
|
public void handlePackets(Player player, PlayerDisguise disguise, LibsPackets packets) {
|
||||||
|
if (packets.getPackets().stream().anyMatch(p -> p.getType() == Server.NAMED_ENTITY_SPAWN)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
List<PlayerSkin> skins = getCache().getIfPresent(player);
|
List<PlayerSkin> skins = getCache().getIfPresent(player);
|
||||||
|
|
||||||
if (skins == null) {
|
if (skins == null) {
|
||||||
@ -170,6 +229,49 @@ public class PlayerSkinHandler implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void addTeleport(Player player, PlayerSkin skin) {
|
||||||
|
PlayerDisguise disguise = skin.getDisguise().get();
|
||||||
|
|
||||||
|
PacketContainer teleport = new PacketContainer(PacketType.Play.Server.ENTITY_TELEPORT);
|
||||||
|
|
||||||
|
StructureModifier<Object> mods = teleport.getModifier();
|
||||||
|
Location loc = disguise.getEntity().getLocation();
|
||||||
|
|
||||||
|
Float pitchLock = DisguiseConfig.isMovementPacketsEnabled() ? disguise.getWatcher().getPitchLock() : null;
|
||||||
|
Float yawLock = DisguiseConfig.isMovementPacketsEnabled() ? disguise.getWatcher().getYawLock() : null;
|
||||||
|
|
||||||
|
byte yaw = (byte) (int) ((yawLock == null ? loc.getYaw() : yawLock) * 256.0F / 360.0F);
|
||||||
|
byte pitch = (byte) (int) ((pitchLock == null ? loc.getPitch() : pitchLock) * 256.0F / 360.0F);
|
||||||
|
|
||||||
|
if (DisguiseConfig.isMovementPacketsEnabled()) {
|
||||||
|
if (yawLock == null) {
|
||||||
|
yaw = DisguiseUtilities.getYaw(DisguiseType.getType(disguise.getEntity().getType()), yaw);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pitchLock == null) {
|
||||||
|
pitch = DisguiseUtilities.getPitch(DisguiseType.getType(disguise.getEntity().getType()), pitch);
|
||||||
|
}
|
||||||
|
|
||||||
|
yaw = DisguiseUtilities.getYaw(disguise.getType(), yaw);
|
||||||
|
pitch = DisguiseUtilities.getPitch(disguise.getType(), pitch);
|
||||||
|
}
|
||||||
|
|
||||||
|
int id = disguise.getEntity().getEntityId();
|
||||||
|
|
||||||
|
if (id == player.getEntityId()) {
|
||||||
|
id = DisguiseAPI.getSelfDisguiseId();
|
||||||
|
}
|
||||||
|
|
||||||
|
mods.write(0, id);
|
||||||
|
mods.write(1, loc.getX());
|
||||||
|
mods.write(2, loc.getY() + DisguiseUtilities.getYModifier(disguise));
|
||||||
|
mods.write(3, loc.getZ());
|
||||||
|
mods.write(4, yaw);
|
||||||
|
mods.write(5, pitch);
|
||||||
|
|
||||||
|
skin.getSleptPackets().computeIfAbsent(0, (a) -> new ArrayList<>()).add(teleport);
|
||||||
|
}
|
||||||
|
|
||||||
private void doPacketRemoval(Player player, PlayerSkin skin) {
|
private void doPacketRemoval(Player player, PlayerSkin skin) {
|
||||||
PlayerDisguise disguise = skin.getDisguise().get();
|
PlayerDisguise disguise = skin.getDisguise().get();
|
||||||
|
|
||||||
@ -177,6 +279,10 @@ public class PlayerSkinHandler implements Listener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (skin.isSleepPackets()) {
|
||||||
|
addTeleport(player, skin);
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
for (Map.Entry<Integer, ArrayList<PacketContainer>> entry : skin.getSleptPackets().entrySet()) {
|
for (Map.Entry<Integer, ArrayList<PacketContainer>> entry : skin.getSleptPackets().entrySet()) {
|
||||||
if (entry.getKey() == 0) {
|
if (entry.getKey() == 0) {
|
||||||
|
@ -19,7 +19,10 @@ import org.bukkit.inventory.EquipmentSlot;
|
|||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by libraryaddict on 3/01/2019.
|
* Created by libraryaddict on 3/01/2019.
|
||||||
|
@ -28,6 +28,11 @@ public class PacketHandlerHeadRotation implements IPacketHandler {
|
|||||||
@Override
|
@Override
|
||||||
public void handle(Disguise disguise, PacketContainer sentPacket, LibsPackets packets, Player observer,
|
public void handle(Disguise disguise, PacketContainer sentPacket, LibsPackets packets, Player observer,
|
||||||
Entity entity) {
|
Entity entity) {
|
||||||
|
if (disguise.getType() == DisguiseType.FALLING_BLOCK) {
|
||||||
|
packets.clear();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Float pitchLock = disguise.getWatcher().getPitchLock();
|
Float pitchLock = disguise.getWatcher().getPitchLock();
|
||||||
Float yawLock = disguise.getWatcher().getYawLock();
|
Float yawLock = disguise.getWatcher().getYawLock();
|
||||||
boolean riding = observer.getVehicle() == entity;
|
boolean riding = observer.getVehicle() == entity;
|
||||||
|
@ -82,15 +82,31 @@ public class PacketHandlerMovement implements IPacketHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// If falling block should be appearing in center of blocks
|
// If falling block should be appearing in center of blocks
|
||||||
if (sentPacket.getType() != PacketType.Play.Server.ENTITY_LOOK &&
|
if (disguise.getType() == DisguiseType.FALLING_BLOCK &&
|
||||||
disguise.getType() == DisguiseType.FALLING_BLOCK &&
|
|
||||||
((FallingBlockWatcher) disguise.getWatcher()).isGridLocked()) {
|
((FallingBlockWatcher) disguise.getWatcher()).isGridLocked()) {
|
||||||
packets.clear();
|
packets.clear();
|
||||||
|
|
||||||
|
if (sentPacket.getType() == PacketType.Play.Server.ENTITY_LOOK) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
PacketContainer movePacket = sentPacket.shallowClone();
|
PacketContainer movePacket = sentPacket.shallowClone();
|
||||||
|
|
||||||
// If relational movement
|
// If not relational movement
|
||||||
if (sentPacket.getType() != PacketType.Play.Server.ENTITY_TELEPORT) {
|
if (movePacket.getType() == PacketType.Play.Server.ENTITY_TELEPORT) {
|
||||||
|
Location loc = entity.getLocation();
|
||||||
|
|
||||||
|
StructureModifier<Double> doubles = movePacket.getDoubles();
|
||||||
|
// Center the block
|
||||||
|
doubles.write(0, loc.getBlockX() + 0.5);
|
||||||
|
|
||||||
|
double y = loc.getBlockY();
|
||||||
|
|
||||||
|
y += (loc.getY() % 1 >= 0.85 ? 1 : loc.getY() % 1 >= 0.35 ? .5 : 0);
|
||||||
|
|
||||||
|
doubles.write(1, y);
|
||||||
|
doubles.write(2, loc.getBlockZ() + 0.5);
|
||||||
|
} else {
|
||||||
StructureModifier<Short> shorts = movePacket.getShorts();
|
StructureModifier<Short> shorts = movePacket.getShorts();
|
||||||
|
|
||||||
Location origLoc = entity.getLocation();
|
Location origLoc = entity.getLocation();
|
||||||
@ -112,22 +128,10 @@ public class PacketHandlerMovement implements IPacketHandler {
|
|||||||
shorts.write(1, conRel(origY, newY));
|
shorts.write(1, conRel(origY, newY));
|
||||||
shorts.write(2, conRel(origLoc.getBlockZ(), newLoc.getBlockZ()));
|
shorts.write(2, conRel(origLoc.getBlockZ(), newLoc.getBlockZ()));
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
Location loc = entity.getLocation();
|
|
||||||
|
|
||||||
StructureModifier<Double> doubles = movePacket.getDoubles();
|
|
||||||
// Center the block
|
|
||||||
doubles.write(0, loc.getBlockX() + 0.5);
|
|
||||||
|
|
||||||
double y = loc.getBlockY();
|
|
||||||
|
|
||||||
y += (loc.getY() % 1 >= 0.85 ? 1 : loc.getY() % 1 >= 0.35 ? .5 : 0);
|
|
||||||
|
|
||||||
doubles.write(1, y);
|
|
||||||
doubles.write(2, loc.getBlockZ() + 0.5);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
packets.addPacket(movePacket);
|
packets.addPacket(movePacket);
|
||||||
|
return;
|
||||||
} else if (disguise.getType() == DisguiseType.RABBIT &&
|
} else if (disguise.getType() == DisguiseType.RABBIT &&
|
||||||
(sentPacket.getType() == PacketType.Play.Server.REL_ENTITY_MOVE ||
|
(sentPacket.getType() == PacketType.Play.Server.REL_ENTITY_MOVE ||
|
||||||
sentPacket.getType() == PacketType.Play.Server.REL_ENTITY_MOVE_LOOK)) {
|
sentPacket.getType() == PacketType.Play.Server.REL_ENTITY_MOVE_LOOK)) {
|
||||||
@ -220,7 +224,7 @@ public class PacketHandlerMovement implements IPacketHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
double y = DisguiseUtilities.getYModifier(entity, disguise);
|
double y = DisguiseUtilities.getYModifier(disguise);
|
||||||
|
|
||||||
if (y != 0) {
|
if (y != 0) {
|
||||||
doubles.write(2, doubles.read(2) + y);
|
doubles.write(2, doubles.read(2) + y);
|
||||||
|
@ -103,8 +103,7 @@ public class PacketHandlerSpawn implements IPacketHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Location loc = disguisedEntity.getLocation().clone()
|
Location loc = disguisedEntity.getLocation().clone().add(0, DisguiseUtilities.getYModifier(disguise), 0);
|
||||||
.add(0, DisguiseUtilities.getYModifier(disguisedEntity, disguise), 0);
|
|
||||||
|
|
||||||
Float pitchLock = DisguiseConfig.isMovementPacketsEnabled() ? disguise.getWatcher().getPitchLock() : null;
|
Float pitchLock = DisguiseConfig.isMovementPacketsEnabled() ? disguise.getWatcher().getPitchLock() : null;
|
||||||
Float yawLock = DisguiseConfig.isMovementPacketsEnabled() ? disguise.getWatcher().getYawLock() : null;
|
Float yawLock = DisguiseConfig.isMovementPacketsEnabled() ? disguise.getWatcher().getYawLock() : null;
|
||||||
@ -123,7 +122,6 @@ public class PacketHandlerSpawn implements IPacketHandler {
|
|||||||
|
|
||||||
yaw = DisguiseUtilities.getYaw(disguise.getType(), yaw);
|
yaw = DisguiseUtilities.getYaw(disguise.getType(), yaw);
|
||||||
pitch = DisguiseUtilities.getPitch(disguise.getType(), pitch);
|
pitch = DisguiseUtilities.getPitch(disguise.getType(), pitch);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (disguise.getType() == DisguiseType.EXPERIENCE_ORB) {
|
if (disguise.getType() == DisguiseType.EXPERIENCE_ORB) {
|
||||||
@ -213,14 +211,14 @@ public class PacketHandlerSpawn implements IPacketHandler {
|
|||||||
double dist = observer.getLocation().distanceSquared(disguisedEntity.getLocation());
|
double dist = observer.getLocation().distanceSquared(disguisedEntity.getLocation());
|
||||||
|
|
||||||
// If self disguise, or further than 50 blocks, or not in front of entity
|
// If self disguise, or further than 50 blocks, or not in front of entity
|
||||||
boolean spawnFarAway = observer == disguisedEntity || dist > (50 * 50) ||
|
boolean normalPlayerDisguise = observer == disguisedEntity || dist > (50 * 50) ||
|
||||||
(observer.getLocation().add(observer.getLocation().getDirection().normalize())
|
(observer.getLocation().add(observer.getLocation().getDirection().normalize())
|
||||||
.distanceSquared(disguisedEntity.getLocation()) - dist) < 0.3;
|
.distanceSquared(disguisedEntity.getLocation()) - dist) < 0.3;
|
||||||
|
|
||||||
skin.setSleepPackets(!spawnFarAway);
|
skin.setSleepPackets(!normalPlayerDisguise);
|
||||||
|
|
||||||
Location spawnAt = spawnFarAway ? disguisedEntity.getLocation() :
|
Location spawnAt = normalPlayerDisguise ? disguisedEntity.getLocation() :
|
||||||
observer.getLocation().add(observer.getLocation().getDirection().normalize().multiply(50));
|
observer.getLocation().add(observer.getLocation().getDirection().normalize().multiply(10));
|
||||||
|
|
||||||
// Spawn him in front of the observer
|
// Spawn him in front of the observer
|
||||||
StructureModifier<Double> doubles = spawnPlayer.getDoubles();
|
StructureModifier<Double> doubles = spawnPlayer.getDoubles();
|
||||||
@ -240,7 +238,7 @@ public class PacketHandlerSpawn implements IPacketHandler {
|
|||||||
|
|
||||||
WrappedDataWatcher toSend = dataWatcher;
|
WrappedDataWatcher toSend = dataWatcher;
|
||||||
|
|
||||||
if (!spawnFarAway) {
|
if (!normalPlayerDisguise) {
|
||||||
toSend = new WrappedDataWatcher();
|
toSend = new WrappedDataWatcher();
|
||||||
WrappedDataWatcher.WrappedDataWatcherObject obj =
|
WrappedDataWatcher.WrappedDataWatcherObject obj =
|
||||||
ReflectionManager.createDataWatcherObject(MetaIndex.ENTITY_META, (byte) 32);
|
ReflectionManager.createDataWatcherObject(MetaIndex.ENTITY_META, (byte) 32);
|
||||||
@ -259,23 +257,11 @@ public class PacketHandlerSpawn implements IPacketHandler {
|
|||||||
spawnPlayer.getDataWatcherModifier().write(0, toSend);
|
spawnPlayer.getDataWatcherModifier().write(0, toSend);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!spawnFarAway) {
|
if (!normalPlayerDisguise) {
|
||||||
PacketContainer metaPacket = ProtocolLibrary.getProtocolManager()
|
PacketContainer metaPacket = ProtocolLibrary.getProtocolManager()
|
||||||
.createPacketConstructor(PacketType.Play.Server.ENTITY_METADATA, entityId, dataWatcher, true)
|
.createPacketConstructor(PacketType.Play.Server.ENTITY_METADATA, entityId, dataWatcher, true)
|
||||||
.createPacket(entityId, dataWatcher, true);
|
.createPacket(entityId, dataWatcher, true);
|
||||||
|
|
||||||
PacketContainer teleport = new PacketContainer(PacketType.Play.Server.ENTITY_TELEPORT);
|
|
||||||
|
|
||||||
StructureModifier<Object> mods = teleport.getModifier();
|
|
||||||
|
|
||||||
mods.write(0, disguisedEntity.getEntityId());
|
|
||||||
mods.write(1, loc.getX());
|
|
||||||
mods.write(2, loc.getY());
|
|
||||||
mods.write(3, loc.getZ());
|
|
||||||
mods.write(4, yaw);
|
|
||||||
mods.write(5, pitch);
|
|
||||||
|
|
||||||
skin.getSleptPackets().computeIfAbsent(0, (a) -> new ArrayList<>()).add(teleport);
|
|
||||||
skin.getSleptPackets().computeIfAbsent(4, (a) -> new ArrayList<>()).add(metaPacket);
|
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) {
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package me.libraryaddict.disguise.utilities.packets.packetlisteners;
|
package me.libraryaddict.disguise.utilities.packets.packetlisteners;
|
||||||
|
|
||||||
import com.comphenix.protocol.PacketType;
|
|
||||||
import com.comphenix.protocol.PacketType.Play.Server;
|
import com.comphenix.protocol.PacketType.Play.Server;
|
||||||
import com.comphenix.protocol.ProtocolLibrary;
|
import com.comphenix.protocol.ProtocolLibrary;
|
||||||
import com.comphenix.protocol.events.ListenerPriority;
|
import com.comphenix.protocol.events.ListenerPriority;
|
||||||
@ -19,7 +18,6 @@ import me.libraryaddict.disguise.utilities.LibsPremium;
|
|||||||
import me.libraryaddict.disguise.utilities.packets.LibsPackets;
|
import me.libraryaddict.disguise.utilities.packets.LibsPackets;
|
||||||
import me.libraryaddict.disguise.utilities.packets.PacketsManager;
|
import me.libraryaddict.disguise.utilities.packets.PacketsManager;
|
||||||
import me.libraryaddict.disguise.utilities.reflection.ReflectionManager;
|
import me.libraryaddict.disguise.utilities.reflection.ReflectionManager;
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
|
Loading…
Reference in New Issue
Block a user