Add /ld logs, fix horse disguise riding not moving
This commit is contained in:
@@ -62,10 +62,8 @@ import org.bukkit.util.Vector;
|
||||
import java.io.*;
|
||||
import java.lang.reflect.*;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.nio.file.CopyOption;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.StandardCopyOption;
|
||||
import java.nio.file.StandardOpenOption;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.logging.Logger;
|
||||
@@ -260,6 +258,71 @@ public class DisguiseUtilities {
|
||||
}
|
||||
}
|
||||
|
||||
public static void removeInvisibleSlime(Player player) {
|
||||
PacketContainer container = new PacketContainer(Server.ENTITY_DESTROY);
|
||||
container.getIntegerArrays().write(0, new int[]{DisguiseAPI.getEntityAttachmentId()});
|
||||
|
||||
try {
|
||||
ProtocolLibrary.getProtocolManager().sendServerPacket(player, container, false);
|
||||
} catch (InvocationTargetException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public static void sendInvisibleSlime(Player player, int horseId) {
|
||||
PacketContainer packet =
|
||||
ProtocolLibrary.getProtocolManager().createPacketConstructor(Server.SPAWN_ENTITY_LIVING, player)
|
||||
.createPacket(player);
|
||||
|
||||
packet.getModifier().write(0, DisguiseAPI.getEntityAttachmentId());
|
||||
packet.getModifier().write(1, UUID.randomUUID());
|
||||
packet.getModifier().write(2, DisguiseType.SLIME.getTypeId());
|
||||
|
||||
WrappedDataWatcher watcher = new WrappedDataWatcher();
|
||||
|
||||
WrappedDataWatcher.WrappedDataWatcherObject obj =
|
||||
ReflectionManager.createDataWatcherObject(MetaIndex.SLIME_SIZE, 0);
|
||||
|
||||
watcher.setObject(obj, 0);
|
||||
|
||||
if (NmsVersion.v1_15.isSupported()) {
|
||||
PacketContainer metaPacket = ProtocolLibrary.getProtocolManager()
|
||||
.createPacketConstructor(PacketType.Play.Server.ENTITY_METADATA,
|
||||
DisguiseAPI.getEntityAttachmentId(), watcher, true)
|
||||
.createPacket(DisguiseAPI.getEntityAttachmentId(), watcher, true);
|
||||
|
||||
try {
|
||||
ProtocolLibrary.getProtocolManager().sendServerPacket(player, packet, false);
|
||||
ProtocolLibrary.getProtocolManager().sendServerPacket(player, metaPacket, false);
|
||||
} catch (InvocationTargetException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
} else {
|
||||
packet.getDataWatcherModifier().write(0, watcher);
|
||||
|
||||
try {
|
||||
ProtocolLibrary.getProtocolManager().sendServerPacket(player, packet, false);
|
||||
} catch (InvocationTargetException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
PacketContainer attachHorse = new PacketContainer(Server.MOUNT);
|
||||
attachHorse.getModifier().write(0, horseId);
|
||||
attachHorse.getModifier().write(1, new int[]{DisguiseAPI.getEntityAttachmentId()});
|
||||
|
||||
PacketContainer attachPlayer = new PacketContainer(Server.MOUNT);
|
||||
attachPlayer.getModifier().write(0, DisguiseAPI.getEntityAttachmentId());
|
||||
attachPlayer.getModifier().write(1, new int[]{player.getEntityId()});
|
||||
|
||||
try {
|
||||
ProtocolLibrary.getProtocolManager().sendServerPacket(player, attachHorse, false);
|
||||
ProtocolLibrary.getProtocolManager().sendServerPacket(player, attachPlayer, false);
|
||||
} catch (InvocationTargetException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public static void loadViewPreferences() {
|
||||
File viewPreferences = new File(LibsDisguises.getInstance().getDataFolder(), "preferences.json");
|
||||
|
||||
@@ -1152,8 +1215,8 @@ public class DisguiseUtilities {
|
||||
|
||||
cachedNames.addAll(Arrays.asList(profileCache.list()));
|
||||
|
||||
invalidFile =
|
||||
LibsDisguises.getInstance().getFile().getName().toLowerCase(Locale.ENGLISH).matches(".*((crack)|(null)|(leak)).*");
|
||||
invalidFile = LibsDisguises.getInstance().getFile().getName().toLowerCase(Locale.ENGLISH)
|
||||
.matches(".*((crack)|(null)|(leak)).*");
|
||||
|
||||
for (String key : savedDisguises.list()) {
|
||||
try {
|
||||
|
@@ -31,6 +31,7 @@ public class PacketsHandler {
|
||||
packetHandlers.add(new PacketHandlerCollect());
|
||||
packetHandlers.add(new PacketHandlerEntityStatus());
|
||||
packetHandlers.add(new PacketHandlerEquipment(this));
|
||||
packetHandlers.add(new PacketHandlerAttachEntity());
|
||||
|
||||
packetHandlers.add(new PacketHandlerHeadRotation());
|
||||
|
||||
@@ -72,8 +73,7 @@ public class PacketsHandler {
|
||||
}
|
||||
|
||||
packets.setUnhandled();
|
||||
}
|
||||
catch (Exception e) {
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
|
@@ -146,6 +146,7 @@ public class PacketsManager {
|
||||
packetsToListen.add(Server.ENTITY_TELEPORT);
|
||||
packetsToListen.add(Server.REL_ENTITY_MOVE);
|
||||
packetsToListen.add(Server.ENTITY_VELOCITY);
|
||||
packetsToListen.add(Server.MOUNT);
|
||||
}
|
||||
|
||||
// Add equipment packet
|
||||
|
@@ -0,0 +1,43 @@
|
||||
package me.libraryaddict.disguise.utilities.packets.packethandlers;
|
||||
|
||||
import com.comphenix.protocol.PacketType;
|
||||
import com.comphenix.protocol.events.PacketContainer;
|
||||
import me.libraryaddict.disguise.disguisetypes.Disguise;
|
||||
import me.libraryaddict.disguise.utilities.DisguiseUtilities;
|
||||
import me.libraryaddict.disguise.utilities.packets.IPacketHandler;
|
||||
import me.libraryaddict.disguise.utilities.packets.LibsPackets;
|
||||
import org.bukkit.entity.AbstractHorse;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
/**
|
||||
* Created by libraryaddict on 19/09/2020.
|
||||
*/
|
||||
public class PacketHandlerAttachEntity implements IPacketHandler {
|
||||
@Override
|
||||
public PacketType[] getHandledPackets() {
|
||||
return new PacketType[]{PacketType.Play.Server.MOUNT};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(Disguise disguise, PacketContainer sentPacket, LibsPackets packets, Player observer,
|
||||
Entity entity) {
|
||||
if (observer.getVehicle() == null) {
|
||||
DisguiseUtilities.removeInvisibleSlime(observer);
|
||||
return;
|
||||
}
|
||||
|
||||
if (observer.getVehicle() != entity ||
|
||||
!AbstractHorse.class.isAssignableFrom(disguise.getType().getEntityClass())) {
|
||||
return;
|
||||
}
|
||||
|
||||
int[] ints = sentPacket.getIntegerArrays().read(0);
|
||||
|
||||
if (ints.length > 0 && ints[0] == observer.getEntityId()) {
|
||||
packets.clear();
|
||||
|
||||
DisguiseUtilities.sendInvisibleSlime(observer, entity.getEntityId());
|
||||
}
|
||||
}
|
||||
}
|
@@ -3,6 +3,7 @@ package me.libraryaddict.disguise.utilities.packets.packethandlers;
|
||||
import com.comphenix.protocol.PacketType;
|
||||
import com.comphenix.protocol.events.PacketContainer;
|
||||
import com.comphenix.protocol.reflect.StructureModifier;
|
||||
import me.libraryaddict.disguise.DisguiseAPI;
|
||||
import me.libraryaddict.disguise.disguisetypes.Disguise;
|
||||
import me.libraryaddict.disguise.disguisetypes.DisguiseType;
|
||||
import me.libraryaddict.disguise.utilities.DisguiseUtilities;
|
||||
@@ -13,6 +14,8 @@ import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* Created by libraryaddict on 3/01/2019.
|
||||
*/
|
||||
@@ -27,9 +30,15 @@ public class PacketHandlerHeadRotation implements IPacketHandler {
|
||||
Entity entity) {
|
||||
Float pitchLock = disguise.getWatcher().getPitchLock();
|
||||
Float yawLock = disguise.getWatcher().getYawLock();
|
||||
boolean riding = observer.getVehicle() == entity;
|
||||
|
||||
if (pitchLock == null && yawLock == null &&
|
||||
(!disguise.getType().isPlayer() || entity.getType() == EntityType.PLAYER)) {
|
||||
if (riding) {
|
||||
sentPacket = sentPacket.shallowClone();
|
||||
sentPacket.getModifier().write(0, DisguiseAPI.getEntityAttachmentId());
|
||||
packets.addPacket(sentPacket);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -122,5 +131,13 @@ public class PacketHandlerHeadRotation implements IPacketHandler {
|
||||
|
||||
packets.addPacket(look);
|
||||
packets.addPacket(rotation);
|
||||
|
||||
if (riding) {
|
||||
for (PacketContainer c : new ArrayList<>(packets.getPackets())) {
|
||||
c = c.shallowClone();
|
||||
c.getModifier().write(0, DisguiseAPI.getEntityAttachmentId());
|
||||
packets.addPacket(c);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -3,6 +3,7 @@ package me.libraryaddict.disguise.utilities.packets.packethandlers;
|
||||
import com.comphenix.protocol.PacketType;
|
||||
import com.comphenix.protocol.events.PacketContainer;
|
||||
import com.comphenix.protocol.reflect.StructureModifier;
|
||||
import me.libraryaddict.disguise.DisguiseAPI;
|
||||
import me.libraryaddict.disguise.LibsDisguises;
|
||||
import me.libraryaddict.disguise.disguisetypes.Disguise;
|
||||
import me.libraryaddict.disguise.disguisetypes.DisguiseType;
|
||||
@@ -13,6 +14,7 @@ import me.libraryaddict.disguise.utilities.packets.IPacketHandler;
|
||||
import me.libraryaddict.disguise.utilities.packets.LibsPackets;
|
||||
import org.apache.commons.lang.math.RandomUtils;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.AbstractHorse;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.metadata.FixedMetadataValue;
|
||||
@@ -189,7 +191,12 @@ public class PacketHandlerMovement implements IPacketHandler {
|
||||
bytes.write(0, yawValue);
|
||||
bytes.write(1, pitchValue);
|
||||
|
||||
if (sentPacket.getType() == PacketType.Play.Server.ENTITY_TELEPORT &&
|
||||
if (entity == observer.getVehicle() &&
|
||||
AbstractHorse.class.isAssignableFrom(disguise.getType().getEntityClass())) {
|
||||
PacketContainer packet = movePacket.shallowClone();
|
||||
packet.getModifier().write(0, DisguiseAPI.getEntityAttachmentId());
|
||||
packets.addPacket(packet);
|
||||
} else if (sentPacket.getType() == PacketType.Play.Server.ENTITY_TELEPORT &&
|
||||
disguise.getType() == DisguiseType.ITEM_FRAME) {
|
||||
StructureModifier<Double> doubles = movePacket.getDoubles();
|
||||
|
||||
|
Reference in New Issue
Block a user