Read desc
Now throws a error when disguising when the player logs in right away - Informational Packet 44 is now using the ProtocolLib accepted id.
This commit is contained in:
parent
f3f451a9c6
commit
fa9a350106
@ -39,6 +39,7 @@ import net.minecraft.server.v1_6_R2.WatchableObject;
|
|||||||
import net.minecraft.server.v1_6_R2.World;
|
import net.minecraft.server.v1_6_R2.World;
|
||||||
import net.minecraft.server.v1_6_R2.WorldServer;
|
import net.minecraft.server.v1_6_R2.WorldServer;
|
||||||
|
|
||||||
|
import org.apache.commons.lang.Validate;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.craftbukkit.v1_6_R2.entity.CraftEntity;
|
import org.bukkit.craftbukkit.v1_6_R2.entity.CraftEntity;
|
||||||
@ -49,7 +50,6 @@ import org.bukkit.entity.LivingEntity;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import com.comphenix.protocol.Packets;
|
import com.comphenix.protocol.Packets;
|
||||||
import com.comphenix.protocol.Packets.Server;
|
|
||||||
import com.comphenix.protocol.ProtocolLibrary;
|
import com.comphenix.protocol.ProtocolLibrary;
|
||||||
import com.comphenix.protocol.events.ConnectionSide;
|
import com.comphenix.protocol.events.ConnectionSide;
|
||||||
import com.comphenix.protocol.events.ListenerPriority;
|
import com.comphenix.protocol.events.ListenerPriority;
|
||||||
@ -66,7 +66,7 @@ public class DisguiseAPI {
|
|||||||
private static PacketListener packetListener;
|
private static PacketListener packetListener;
|
||||||
private static boolean sendVelocity;
|
private static boolean sendVelocity;
|
||||||
private static boolean soundsEnabled;
|
private static boolean soundsEnabled;
|
||||||
private static HashMap<Integer, Integer> values = new HashMap<Integer, Integer>();
|
private static HashMap<Integer, Integer> selfDisguisesIds = new HashMap<Integer, Integer>();
|
||||||
private static boolean viewDisguises;
|
private static boolean viewDisguises;
|
||||||
private static PacketListener viewDisguisesListener;
|
private static PacketListener viewDisguisesListener;
|
||||||
|
|
||||||
@ -147,8 +147,8 @@ public class DisguiseAPI {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static int getFakeDisguise(int id) {
|
public static int getFakeDisguise(int id) {
|
||||||
if (values.containsKey(id))
|
if (selfDisguisesIds.containsKey(id))
|
||||||
return values.get(id);
|
return selfDisguisesIds.get(id);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -321,18 +321,18 @@ public class DisguiseAPI {
|
|||||||
Packets.Server.REL_ENTITY_MOVE_LOOK, Packets.Server.ENTITY_LOOK, Packets.Server.ENTITY_TELEPORT,
|
Packets.Server.REL_ENTITY_MOVE_LOOK, Packets.Server.ENTITY_LOOK, Packets.Server.ENTITY_TELEPORT,
|
||||||
Packets.Server.ENTITY_HEAD_ROTATION, Packets.Server.ENTITY_METADATA, Packets.Server.ENTITY_EQUIPMENT,
|
Packets.Server.ENTITY_HEAD_ROTATION, Packets.Server.ENTITY_METADATA, Packets.Server.ENTITY_EQUIPMENT,
|
||||||
Packets.Server.ARM_ANIMATION, Packets.Server.ENTITY_LOCATION_ACTION, Packets.Server.MOB_EFFECT,
|
Packets.Server.ARM_ANIMATION, Packets.Server.ENTITY_LOCATION_ACTION, Packets.Server.MOB_EFFECT,
|
||||||
Packets.Server.ENTITY_STATUS, Packets.Server.ENTITY_VELOCITY, 44) {
|
Packets.Server.ENTITY_STATUS, Packets.Server.ENTITY_VELOCITY, Packets.Server.UPDATE_ATTRIBUTES) {
|
||||||
@Override
|
@Override
|
||||||
public void onPacketSending(PacketEvent event) {
|
public void onPacketSending(PacketEvent event) {
|
||||||
StructureModifier<Entity> entityModifer = event.getPacket().getEntityModifier(event.getPlayer().getWorld());
|
StructureModifier<Entity> entityModifer = event.getPacket().getEntityModifier(event.getPlayer().getWorld());
|
||||||
org.bukkit.entity.Entity entity = entityModifer.read(0);
|
org.bukkit.entity.Entity entity = entityModifer.read(0);
|
||||||
if (entity == event.getPlayer() && values.containsKey(entity.getEntityId())) {
|
if (entity == event.getPlayer() && selfDisguisesIds.containsKey(entity.getEntityId())) {
|
||||||
PacketContainer[] packets = libsDisguises.transformPacket(event.getPacket(), event.getPlayer());
|
PacketContainer[] packets = libsDisguises.transformPacket(event.getPacket(), event.getPlayer());
|
||||||
try {
|
try {
|
||||||
for (PacketContainer packet : packets) {
|
for (PacketContainer packet : packets) {
|
||||||
if (packet.equals(event.getPacket()))
|
if (packet.equals(event.getPacket()))
|
||||||
packet = packet.deepClone();
|
packet = packet.deepClone();
|
||||||
packet.getModifier().write(0, values.get(entity.getEntityId()));
|
packet.getModifier().write(0, selfDisguisesIds.get(entity.getEntityId()));
|
||||||
ProtocolLibrary.getProtocolManager().sendServerPacket(event.getPlayer(), packet, false);
|
ProtocolLibrary.getProtocolManager().sendServerPacket(event.getPlayer(), packet, false);
|
||||||
}
|
}
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
@ -386,8 +386,6 @@ public class DisguiseAPI {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (event.getPacketID() == Server.ENTITY_STATUS)
|
|
||||||
System.out.print(event.isCancelled());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -433,20 +431,22 @@ public class DisguiseAPI {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static void removeVisibleDisguise(Player player) {
|
private static void removeVisibleDisguise(Player player) {
|
||||||
if (values.containsKey(player.getEntityId())) {
|
if (selfDisguisesIds.containsKey(player.getEntityId())) {
|
||||||
PacketContainer packet = new PacketContainer(Packets.Server.DESTROY_ENTITY);
|
PacketContainer packet = new PacketContainer(Packets.Server.DESTROY_ENTITY);
|
||||||
packet.getModifier().write(0, new int[] { values.get(player.getEntityId()) });
|
packet.getModifier().write(0, new int[] { selfDisguisesIds.get(player.getEntityId()) });
|
||||||
try {
|
try {
|
||||||
ProtocolLibrary.getProtocolManager().sendServerPacket(player, packet);
|
ProtocolLibrary.getProtocolManager().sendServerPacket(player, packet);
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
ex.printStackTrace();
|
ex.printStackTrace();
|
||||||
}
|
}
|
||||||
values.remove(player.getEntityId());
|
selfDisguisesIds.remove(player.getEntityId());
|
||||||
}
|
}
|
||||||
EntityPlayer entityplayer = ((CraftPlayer) player).getHandle();
|
EntityPlayer entityplayer = ((CraftPlayer) player).getHandle();
|
||||||
EntityTrackerEntry tracker = (EntityTrackerEntry) ((WorldServer) entityplayer.world).tracker.trackedEntities.get(player
|
EntityTrackerEntry tracker = (EntityTrackerEntry) ((WorldServer) entityplayer.world).tracker.trackedEntities.get(player
|
||||||
.getEntityId());
|
.getEntityId());
|
||||||
tracker.trackedPlayers.remove(entityplayer);
|
if (tracker != null) {
|
||||||
|
tracker.trackedPlayers.remove(entityplayer);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void setupPlayer(Player player) {
|
private static void setupPlayer(Player player) {
|
||||||
@ -459,21 +459,23 @@ public class DisguiseAPI {
|
|||||||
field.setAccessible(true);
|
field.setAccessible(true);
|
||||||
id = field.getInt(null);
|
id = field.getInt(null);
|
||||||
field.set(null, id + 1);
|
field.set(null, id + 1);
|
||||||
values.put(player.getEntityId(), id);
|
selfDisguisesIds.put(player.getEntityId(), id);
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
ex.printStackTrace();
|
ex.printStackTrace();
|
||||||
}
|
}
|
||||||
EntityPlayer entityplayer = ((CraftPlayer) player).getHandle();
|
EntityPlayer entityplayer = ((CraftPlayer) player).getHandle();
|
||||||
EntityTrackerEntry tracker = (EntityTrackerEntry) ((WorldServer) entityplayer.world).tracker.trackedEntities.get(player
|
EntityTrackerEntry tracker = (EntityTrackerEntry) ((WorldServer) entityplayer.world).tracker.trackedEntities.get(player
|
||||||
.getEntityId());
|
.getEntityId());
|
||||||
|
Validate.notNull(tracker,
|
||||||
|
"If you are disguising as soon as they log in, please wait a tick or 2 for their EntityTracker to be constructed");
|
||||||
tracker.trackedPlayers.add(entityplayer);
|
tracker.trackedPlayers.add(entityplayer);
|
||||||
|
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
Packet20NamedEntitySpawn packet = new Packet20NamedEntitySpawn((EntityHuman) entityplayer);
|
Packet20NamedEntitySpawn packet = new Packet20NamedEntitySpawn((EntityHuman) entityplayer);
|
||||||
entityplayer.playerConnection.sendPacket(packet);
|
entityplayer.playerConnection.sendPacket(packet);
|
||||||
if (!tracker.tracker.getDataWatcher().d()) {
|
if (!tracker.tracker.getDataWatcher().d()) {
|
||||||
entityplayer.playerConnection.sendPacket(new Packet40EntityMetadata(player.getEntityId(), tracker.tracker.getDataWatcher(), true));
|
entityplayer.playerConnection.sendPacket(new Packet40EntityMetadata(player.getEntityId(), tracker.tracker
|
||||||
|
.getDataWatcher(), true));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tracker.tracker instanceof EntityLiving) {
|
if (tracker.tracker instanceof EntityLiving) {
|
||||||
@ -497,8 +499,8 @@ public class DisguiseAPI {
|
|||||||
ex.printStackTrace();
|
ex.printStackTrace();
|
||||||
}
|
}
|
||||||
if (isMoving) {
|
if (isMoving) {
|
||||||
entityplayer.playerConnection.sendPacket(new Packet28EntityVelocity(player.getEntityId(), tracker.tracker.motX, tracker.tracker.motY,
|
entityplayer.playerConnection.sendPacket(new Packet28EntityVelocity(player.getEntityId(), tracker.tracker.motX,
|
||||||
tracker.tracker.motZ));
|
tracker.tracker.motY, tracker.tracker.motZ));
|
||||||
}
|
}
|
||||||
|
|
||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
|
@ -84,7 +84,7 @@ public class LibsDisguises extends JavaPlugin {
|
|||||||
Packets.Server.NAMED_ENTITY_SPAWN, Packets.Server.ENTITY_METADATA, Packets.Server.ARM_ANIMATION,
|
Packets.Server.NAMED_ENTITY_SPAWN, Packets.Server.ENTITY_METADATA, Packets.Server.ARM_ANIMATION,
|
||||||
Packets.Server.REL_ENTITY_MOVE_LOOK, Packets.Server.ENTITY_LOOK, Packets.Server.ENTITY_TELEPORT,
|
Packets.Server.REL_ENTITY_MOVE_LOOK, Packets.Server.ENTITY_LOOK, Packets.Server.ENTITY_TELEPORT,
|
||||||
Packets.Server.ADD_EXP_ORB, Packets.Server.VEHICLE_SPAWN, Packets.Server.MOB_SPAWN,
|
Packets.Server.ADD_EXP_ORB, Packets.Server.VEHICLE_SPAWN, Packets.Server.MOB_SPAWN,
|
||||||
Packets.Server.ENTITY_PAINTING, Packets.Server.COLLECT, 44) {
|
Packets.Server.ENTITY_PAINTING, Packets.Server.COLLECT, Packets.Server.UPDATE_ATTRIBUTES) {
|
||||||
@Override
|
@Override
|
||||||
public void onPacketSending(PacketEvent event) {
|
public void onPacketSending(PacketEvent event) {
|
||||||
Player observer = event.getPlayer();
|
Player observer = event.getPlayer();
|
||||||
@ -314,7 +314,7 @@ public class LibsDisguises extends JavaPlugin {
|
|||||||
// This packet sends attributes
|
// This packet sends attributes
|
||||||
|
|
||||||
switch (sentPacket.getID()) {
|
switch (sentPacket.getID()) {
|
||||||
case 44:
|
case Packets.Server.UPDATE_ATTRIBUTES:
|
||||||
|
|
||||||
{
|
{
|
||||||
// Grab the values which are 'approved' to be sent for this entity
|
// Grab the values which are 'approved' to be sent for this entity
|
||||||
|
Loading…
Reference in New Issue
Block a user