Add new armorstand option for player disguise names, clean up config cos of the player name options
Added ability to set multiple names on a player disguise, also normal mob but that is untested and has no command accessibility Permission to do this is libsdisguises.multiname Renamed "Now disguised as a %s" to "Now disguised as %s" for messages
This commit is contained in:
@@ -25,6 +25,7 @@ public class PacketsManager {
|
||||
private static PacketListener viewDisguisesListener;
|
||||
private static boolean viewDisguisesListenerEnabled;
|
||||
private static PacketsHandler packetsHandler;
|
||||
private static PacketListener destroyListener;
|
||||
|
||||
public static void addPacketListeners() {
|
||||
// Add a client listener to cancel them interacting with uninteractable disguised entitys.
|
||||
@@ -160,8 +161,10 @@ public class PacketsManager {
|
||||
}
|
||||
|
||||
mainListener = new PacketListenerMain(LibsDisguises.getInstance(), packetsToListen);
|
||||
destroyListener = new PacketListenerDestroyEntity(LibsDisguises.getInstance());
|
||||
|
||||
ProtocolLibrary.getProtocolManager().addPacketListener(mainListener);
|
||||
ProtocolLibrary.getProtocolManager().addPacketListener(destroyListener);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -183,7 +186,7 @@ public class PacketsManager {
|
||||
if (enabled) {
|
||||
DisguiseUtilities.setupFakeDisguise(disguise);
|
||||
} else {
|
||||
DisguiseUtilities.removeSelfDisguise(player);
|
||||
DisguiseUtilities.removeSelfDisguise(disguise);
|
||||
}
|
||||
|
||||
if (inventoryModifierEnabled &&
|
||||
|
@@ -18,6 +18,8 @@ import org.bukkit.entity.Player;
|
||||
import org.bukkit.metadata.FixedMetadataValue;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* Created by libraryaddict on 3/01/2019.
|
||||
*/
|
||||
@@ -38,6 +40,36 @@ public class PacketHandlerMovement implements IPacketHandler {
|
||||
@Override
|
||||
public void handle(Disguise disguise, PacketContainer sentPacket, LibsPackets packets, Player observer,
|
||||
Entity entity) {
|
||||
handle2(disguise, sentPacket, packets, observer, entity);
|
||||
|
||||
int len = disguise.getMultiName().length;
|
||||
|
||||
if (len == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
ArrayList<PacketContainer> toAdd = new ArrayList<>();
|
||||
|
||||
for (PacketContainer packet : packets.getPackets()) {
|
||||
for (int i = 0; i < len; i++) {
|
||||
for (int standId : disguise.getArmorstandIds()) {
|
||||
PacketContainer packet2 = packet.shallowClone();
|
||||
packet2.getIntegers().write(0, standId);
|
||||
|
||||
if (packet2.getType() == PacketType.Play.Server.ENTITY_TELEPORT) {
|
||||
packet2.getDoubles().write(1, packet2.getDoubles().read(1) + -0.175 + (0.28 * i));
|
||||
}
|
||||
|
||||
toAdd.add(packet2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
packets.getPackets().addAll(toAdd);
|
||||
}
|
||||
|
||||
public void handle2(Disguise disguise, PacketContainer sentPacket, LibsPackets packets, Player observer,
|
||||
Entity entity) {
|
||||
if (invalid && RandomUtils.nextDouble() < 0.1) {
|
||||
packets.clear();
|
||||
return;
|
||||
|
@@ -151,7 +151,7 @@ public class PacketHandlerSpawn implements IPacketHandler {
|
||||
mods.write(5, pitch);
|
||||
} else if (disguise.getType().isPlayer()) {
|
||||
PlayerDisguise playerDisguise = (PlayerDisguise) disguise;
|
||||
boolean visibleOrNewCompat = playerDisguise.isNameVisible() || DisguiseConfig.isScoreboardDisguiseNames();
|
||||
boolean visibleOrNewCompat = playerDisguise.isNameVisible() || DisguiseConfig.isScoreboardNames();
|
||||
|
||||
WrappedGameProfile spawnProfile = visibleOrNewCompat ? playerDisguise.getGameProfile() : ReflectionManager
|
||||
.getGameProfileWithThisSkin(UUID.randomUUID(), visibleOrNewCompat ? playerDisguise.getName() : "",
|
||||
@@ -387,6 +387,8 @@ public class PacketHandlerSpawn implements IPacketHandler {
|
||||
packets.addPacket(newPacket);
|
||||
}
|
||||
|
||||
DisguiseUtilities.getNamePackets(disguise, new String[0]).forEach(packets::addPacket);
|
||||
|
||||
// If armor must be sent because its currently not displayed and would've been sent normally
|
||||
|
||||
// This sends the armor packets so that the player isn't naked.
|
||||
|
@@ -78,7 +78,8 @@ public class PacketListenerViewSelfDisguise extends PacketAdapter {
|
||||
}
|
||||
|
||||
for (PacketContainer newPacket : transformed.getPackets()) {
|
||||
if (newPacket.getType() != Server.PLAYER_INFO) {
|
||||
if (newPacket.getType() != Server.PLAYER_INFO &&
|
||||
newPacket.getIntegers().read(0) == observer.getEntityId()) {
|
||||
if (newPacket == packet) {
|
||||
newPacket = newPacket.shallowClone();
|
||||
}
|
||||
|
Reference in New Issue
Block a user