Skip to content

Commit

Permalink
Rename player list_name_only: don't respawn the player entity
Browse files Browse the repository at this point in the history
  • Loading branch information
mcmonkey4eva committed Jan 9, 2021
1 parent f3f1487 commit 641fd0d
Show file tree
Hide file tree
Showing 5 changed files with 28 additions and 22 deletions.
Expand Up @@ -64,7 +64,7 @@ public interface PacketHelper {

void forceSpectate(Player player, Entity entity);

default void sendRename(Player player, Entity entity, String name) {
default void sendRename(Player player, Entity entity, String name, boolean listMode) {
throw new UnsupportedOperationException();
}

Expand Down
Expand Up @@ -149,12 +149,12 @@ public void execute(final ScriptEntry scriptEntry) {
if (bukkitEntity.isCustomNameVisible()) {
if (players == null) {
for (Player player : NMSHandler.getEntityHelper().getPlayersThatSee(bukkitEntity)) {
NMSHandler.getPacketHelper().sendRename(player, bukkitEntity, bukkitEntity.getCustomName());
NMSHandler.getPacketHelper().sendRename(player, bukkitEntity, bukkitEntity.getCustomName(), false);
}
}
else {
for (PlayerTag player : players) {
NMSHandler.getPacketHelper().sendRename(player.getPlayerEntity(), bukkitEntity, bukkitEntity.getCustomName());
NMSHandler.getPacketHelper().sendRename(player.getPlayerEntity(), bukkitEntity, bukkitEntity.getCustomName(), false);
}
}
}
Expand Down Expand Up @@ -187,12 +187,12 @@ public void execute(final ScriptEntry scriptEntry) {
}
if (players == null) {
for (Player player : NMSHandler.getEntityHelper().getPlayersThatSee(bukkitEntity)) {
NMSHandler.getPacketHelper().sendRename(player, bukkitEntity, "");
NMSHandler.getPacketHelper().sendRename(player, bukkitEntity, "", renamer.listOnly);
}
}
else {
for (PlayerTag player : players) {
NMSHandler.getPacketHelper().sendRename(player.getPlayerEntity(), bukkitEntity, "");
NMSHandler.getPacketHelper().sendRename(player.getPlayerEntity(), bukkitEntity, "", renamer.listOnly);
}
}
}
Expand Down Expand Up @@ -273,11 +273,11 @@ public static void addDynamicRename(Entity bukkitEntity, Player forPlayer, Renam
playerToFuncMap.put(forPlayer == null ? null : forPlayer.getUniqueId(), rename);
if (forPlayer == null) {
for (Player player : NMSHandler.getEntityHelper().getPlayersThatSee(bukkitEntity)) {
NMSHandler.getPacketHelper().sendRename(player, bukkitEntity, "");
NMSHandler.getPacketHelper().sendRename(player, bukkitEntity, "", rename.listOnly);
}
}
else {
NMSHandler.getPacketHelper().sendRename(forPlayer, bukkitEntity, "");
NMSHandler.getPacketHelper().sendRename(forPlayer, bukkitEntity, "", rename.listOnly);
}
}

Expand Down
Expand Up @@ -265,7 +265,7 @@ public void forceSpectate(Player player, Entity entity) {
}

@Override
public void sendRename(Player player, Entity entity, String name) {
public void sendRename(Player player, Entity entity, String name, boolean listMode) {
try {
PacketPlayOutEntityMetadata packet = new PacketPlayOutEntityMetadata();
ENTITY_METADATA_EID_SETTER.invoke(packet, entity.getEntityId());
Expand Down
Expand Up @@ -259,7 +259,7 @@ public boolean showSignEditor(Player player, Location location) {
}

@Override
public void sendRename(Player player, Entity entity, String name) {
public void sendRename(Player player, Entity entity, String name, boolean listMode) {
try {
PacketPlayOutEntityMetadata packet = new PacketPlayOutEntityMetadata();
ENTITY_METADATA_EID_SETTER.invoke(packet, entity.getEntityId());
Expand Down
Expand Up @@ -281,21 +281,27 @@ public void forceSpectate(Player player, Entity entity) {
public static Field ENTITY_TRACKER_ENTRY_GETTER = ReflectionHelper.getFields(PlayerChunkMap.EntityTracker.class).get("trackerEntry");

@Override
public void sendRename(Player player, Entity entity, String name) {
public void sendRename(Player player, Entity entity, String name, boolean listMode) {
try {
if (entity.getType() == EntityType.PLAYER) { // For player entities, force a respawn packet and let the dynamic intercept correct the details
PlayerChunkMap tracker = ((WorldServer) ((CraftEntity) entity).getHandle().world).getChunkProvider().playerChunkMap;
PlayerChunkMap.EntityTracker entityTracker = tracker.trackedEntities.get(entity.getEntityId());
if (entityTracker != null) {
try {
EntityTrackerEntry entry = (EntityTrackerEntry) ENTITY_TRACKER_ENTRY_GETTER.get(entityTracker);
if (entry != null) {
entry.a(((CraftPlayer) player).getHandle());
entry.b(((CraftPlayer) player).getHandle());
if (entity.getType() == EntityType.PLAYER) {
if (listMode) {
sendPacket(player, new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.UPDATE_DISPLAY_NAME, ((CraftPlayer) player).getHandle()));
}
else {
// For player entities, force a respawn packet and let the dynamic intercept correct the details
PlayerChunkMap tracker = ((WorldServer) ((CraftEntity) entity).getHandle().world).getChunkProvider().playerChunkMap;
PlayerChunkMap.EntityTracker entityTracker = tracker.trackedEntities.get(entity.getEntityId());
if (entityTracker != null) {
try {
EntityTrackerEntry entry = (EntityTrackerEntry) ENTITY_TRACKER_ENTRY_GETTER.get(entityTracker);
if (entry != null) {
entry.a(((CraftPlayer) player).getHandle());
entry.b(((CraftPlayer) player).getHandle());
}
}
catch (Throwable ex) {
Debug.echoError(ex);
}
}
catch (Throwable ex) {
Debug.echoError(ex);
}
}
return;
Expand Down

0 comments on commit 641fd0d

Please sign in to comment.