diff --git a/platforms/fabric-121/src/main/java/gg/modl/minecraft/fabric/v1_21_1/handler/FabricStaffModeHandler.java b/platforms/fabric-121/src/main/java/gg/modl/minecraft/fabric/v1_21_1/handler/FabricStaffModeHandler.java index 33c1ba31..5978bbcc 100644 --- a/platforms/fabric-121/src/main/java/gg/modl/minecraft/fabric/v1_21_1/handler/FabricStaffModeHandler.java +++ b/platforms/fabric-121/src/main/java/gg/modl/minecraft/fabric/v1_21_1/handler/FabricStaffModeHandler.java @@ -21,6 +21,8 @@ import net.minecraft.text.Text; import net.minecraft.util.Identifier; import net.minecraft.world.GameMode; +import net.minecraft.network.packet.s2c.play.PlayerListS2CPacket; +import net.minecraft.server.network.EntityTrackerEntry; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @@ -186,47 +188,22 @@ private void hidePlayerFrom(ServerPlayerEntity toHide, ServerPlayerEntity viewer } private void showPlayerTo(ServerPlayerEntity toShow, ServerPlayerEntity viewer) { - var peApi = PacketEvents.getAPI(); - if (peApi == null) return; - - com.mojang.authlib.GameProfile mojangProfile = toShow.getGameProfile(); - List textureProperties = new ArrayList<>(); - for (com.mojang.authlib.properties.Property prop : mojangProfile.getProperties().get("textures")) { - textureProperties.add(new TextureProperty("textures", prop.value(), prop.signature())); + if (toShow == null || viewer == null || toShow == viewer) { + return; } - UserProfile profile = new UserProfile(toShow.getUuid(), mojangProfile.getName(), textureProperties); - com.github.retrooper.packetevents.protocol.player.GameMode peGameMode = - com.github.retrooper.packetevents.protocol.player.GameMode.values()[toShow.interactionManager.getGameMode().ordinal()]; + viewer.networkHandler.sendPacket(PlayerListS2CPacket.entryFromPlayer(List.of(toShow))); - WrapperPlayServerPlayerInfoUpdate.PlayerInfo info = new WrapperPlayServerPlayerInfoUpdate.PlayerInfo( - profile, true, toShow.networkHandler.getLatency(), peGameMode, - net.kyori.adventure.text.Component.text(toShow.getName().getString()), null + EntityTrackerEntry trackerEntry = new EntityTrackerEntry( + toShow.getServerWorld(), + toShow, + toShow.getType().getTrackTickInterval(), + toShow.getType().alwaysUpdateVelocity(), + packet -> { + } ); - peApi.getPlayerManager().sendPacket(viewer, - new WrapperPlayServerPlayerInfoUpdate( - EnumSet.of( - WrapperPlayServerPlayerInfoUpdate.Action.ADD_PLAYER, - WrapperPlayServerPlayerInfoUpdate.Action.UPDATE_LISTED, - WrapperPlayServerPlayerInfoUpdate.Action.UPDATE_LATENCY, - WrapperPlayServerPlayerInfoUpdate.Action.UPDATE_GAME_MODE - ), - info - )); - - peApi.getPlayerManager().sendPacket(viewer, - new WrapperPlayServerSpawnEntity( - toShow.getId(), - Optional.of(toShow.getUuid()), - EntityTypes.PLAYER, - new Vector3d(toShow.getX(), toShow.getY(), toShow.getZ()), - toShow.getPitch(), - toShow.getYaw(), - toShow.getYaw(), - 0, - Optional.of(new Vector3d(0, 0, 0)) - )); + trackerEntry.sendPackets(viewer, packet -> viewer.networkHandler.sendPacket(packet)); } private void updateVanishHotbarItem(ServerPlayerEntity player, boolean isVanished) { diff --git a/platforms/fabric-12111/src/main/java/gg/modl/minecraft/fabric/v1_21_11/handler/FabricStaffModeHandler.java b/platforms/fabric-12111/src/main/java/gg/modl/minecraft/fabric/v1_21_11/handler/FabricStaffModeHandler.java index ea01e4b6..d1c3ac8c 100644 --- a/platforms/fabric-12111/src/main/java/gg/modl/minecraft/fabric/v1_21_11/handler/FabricStaffModeHandler.java +++ b/platforms/fabric-12111/src/main/java/gg/modl/minecraft/fabric/v1_21_11/handler/FabricStaffModeHandler.java @@ -15,8 +15,12 @@ import net.kyori.adventure.text.Component; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; +import net.minecraft.network.listener.ClientPlayPacketListener; +import net.minecraft.network.packet.Packet; +import net.minecraft.network.packet.s2c.play.PlayerListS2CPacket; import net.minecraft.registry.Registries; import net.minecraft.server.MinecraftServer; +import net.minecraft.server.network.EntityTrackerEntry; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.text.Text; import net.minecraft.util.Identifier; @@ -26,6 +30,7 @@ import java.time.format.DateTimeFormatter; import java.util.*; import java.util.concurrent.*; +import java.util.function.Predicate; import java.util.stream.Collectors; import static gg.modl.minecraft.core.util.Java8Collections.*; @@ -184,47 +189,36 @@ private void hidePlayerFrom(ServerPlayerEntity toHide, ServerPlayerEntity viewer } private void showPlayerTo(ServerPlayerEntity toShow, ServerPlayerEntity viewer) { - var peApi = PacketEvents.getAPI(); - if (peApi == null) return; - - com.mojang.authlib.GameProfile mojangProfile = toShow.getGameProfile(); - List textureProperties = new ArrayList<>(); - for (com.mojang.authlib.properties.Property prop : mojangProfile.properties().get("textures")) { - textureProperties.add(new TextureProperty("textures", prop.value(), prop.signature())); + if (toShow == null || viewer == null || toShow == viewer) { + return; } - UserProfile profile = new UserProfile(toShow.getUuid(), mojangProfile.name(), textureProperties); - com.github.retrooper.packetevents.protocol.player.GameMode peGameMode = - com.github.retrooper.packetevents.protocol.player.GameMode.values()[toShow.interactionManager.getGameMode().ordinal()]; + viewer.networkHandler.sendPacket(PlayerListS2CPacket.entryFromPlayer(List.of(toShow))); - WrapperPlayServerPlayerInfoUpdate.PlayerInfo info = new WrapperPlayServerPlayerInfoUpdate.PlayerInfo( - profile, true, toShow.networkHandler.getLatency(), peGameMode, - net.kyori.adventure.text.Component.text(toShow.getName().getString()), null - ); + EntityTrackerEntry trackerEntry = new EntityTrackerEntry( + toShow.getEntityWorld(), + toShow, + toShow.getType().getTrackTickInterval(), + toShow.getType().alwaysUpdateVelocity(), + new EntityTrackerEntry.TrackerPacketSender() { + @Override + public void sendToListeners(Packet packet) { + } - peApi.getPlayerManager().sendPacket(viewer, - new WrapperPlayServerPlayerInfoUpdate( - EnumSet.of( - WrapperPlayServerPlayerInfoUpdate.Action.ADD_PLAYER, - WrapperPlayServerPlayerInfoUpdate.Action.UPDATE_LISTED, - WrapperPlayServerPlayerInfoUpdate.Action.UPDATE_LATENCY, - WrapperPlayServerPlayerInfoUpdate.Action.UPDATE_GAME_MODE - ), - info - )); + @Override + public void sendToSelfAndListeners(Packet packet) { + } - peApi.getPlayerManager().sendPacket(viewer, - new WrapperPlayServerSpawnEntity( - toShow.getId(), - Optional.of(toShow.getUuid()), - EntityTypes.PLAYER, - new Vector3d(toShow.getX(), toShow.getY(), toShow.getZ()), - toShow.getPitch(), - toShow.getYaw(), - toShow.getYaw(), - 0, - Optional.of(new Vector3d(0, 0, 0)) - )); + @Override + public void sendToListenersIf( + Packet packet, + Predicate predicate + ) { + } + } + ); + + trackerEntry.sendPackets(viewer, packet -> viewer.networkHandler.sendPacket(packet)); } private void updateVanishHotbarItem(ServerPlayerEntity player, boolean isVanished) { diff --git a/platforms/fabric-1214/src/main/java/gg/modl/minecraft/fabric/v1_21_4/handler/FabricStaffModeHandler.java b/platforms/fabric-1214/src/main/java/gg/modl/minecraft/fabric/v1_21_4/handler/FabricStaffModeHandler.java index f0671fa7..5e3ac3c0 100644 --- a/platforms/fabric-1214/src/main/java/gg/modl/minecraft/fabric/v1_21_4/handler/FabricStaffModeHandler.java +++ b/platforms/fabric-1214/src/main/java/gg/modl/minecraft/fabric/v1_21_4/handler/FabricStaffModeHandler.java @@ -15,8 +15,10 @@ import net.kyori.adventure.text.Component; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; +import net.minecraft.network.packet.s2c.play.PlayerListS2CPacket; import net.minecraft.registry.Registries; import net.minecraft.server.MinecraftServer; +import net.minecraft.server.network.EntityTrackerEntry; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.text.Text; import net.minecraft.util.Identifier; @@ -183,48 +185,24 @@ private void hidePlayerFrom(ServerPlayerEntity toHide, ServerPlayerEntity viewer new WrapperPlayServerDestroyEntities(toHide.getId())); } - private void showPlayerTo(ServerPlayerEntity toShow, ServerPlayerEntity viewer) { - var peApi = PacketEvents.getAPI(); - if (peApi == null) return; - com.mojang.authlib.GameProfile mojangProfile = toShow.getGameProfile(); - List textureProperties = new ArrayList<>(); - for (com.mojang.authlib.properties.Property prop : mojangProfile.getProperties().get("textures")) { - textureProperties.add(new TextureProperty("textures", prop.value(), prop.signature())); + private void showPlayerTo(ServerPlayerEntity toShow, ServerPlayerEntity viewer) { + if (toShow == null || viewer == null || toShow == viewer) { + return; } - UserProfile profile = new UserProfile(toShow.getUuid(), mojangProfile.getName(), textureProperties); - com.github.retrooper.packetevents.protocol.player.GameMode peGameMode = - com.github.retrooper.packetevents.protocol.player.GameMode.values()[toShow.interactionManager.getGameMode().ordinal()]; + viewer.networkHandler.sendPacket(PlayerListS2CPacket.entryFromPlayer(List.of(toShow))); - WrapperPlayServerPlayerInfoUpdate.PlayerInfo info = new WrapperPlayServerPlayerInfoUpdate.PlayerInfo( - profile, true, toShow.networkHandler.getLatency(), peGameMode, - net.kyori.adventure.text.Component.text(toShow.getName().getString()), null + EntityTrackerEntry trackerEntry = new EntityTrackerEntry( + toShow.getServerWorld(), + toShow, + toShow.getType().getTrackTickInterval(), + toShow.getType().alwaysUpdateVelocity(), + packet -> { + } ); - peApi.getPlayerManager().sendPacket(viewer, - new WrapperPlayServerPlayerInfoUpdate( - EnumSet.of( - WrapperPlayServerPlayerInfoUpdate.Action.ADD_PLAYER, - WrapperPlayServerPlayerInfoUpdate.Action.UPDATE_LISTED, - WrapperPlayServerPlayerInfoUpdate.Action.UPDATE_LATENCY, - WrapperPlayServerPlayerInfoUpdate.Action.UPDATE_GAME_MODE - ), - info - )); - - peApi.getPlayerManager().sendPacket(viewer, - new WrapperPlayServerSpawnEntity( - toShow.getId(), - Optional.of(toShow.getUuid()), - EntityTypes.PLAYER, - new Vector3d(toShow.getX(), toShow.getY(), toShow.getZ()), - toShow.getPitch(), - toShow.getYaw(), - toShow.getYaw(), - 0, - Optional.of(new Vector3d(0, 0, 0)) - )); + trackerEntry.sendPackets(viewer, packet -> viewer.networkHandler.sendPacket(packet)); } private void updateVanishHotbarItem(ServerPlayerEntity player, boolean isVanished) { diff --git a/platforms/fabric-1218/src/main/java/gg/modl/minecraft/fabric/v1_21_8/handler/FabricStaffModeHandler.java b/platforms/fabric-1218/src/main/java/gg/modl/minecraft/fabric/v1_21_8/handler/FabricStaffModeHandler.java index 49988656..94ac7b73 100644 --- a/platforms/fabric-1218/src/main/java/gg/modl/minecraft/fabric/v1_21_8/handler/FabricStaffModeHandler.java +++ b/platforms/fabric-1218/src/main/java/gg/modl/minecraft/fabric/v1_21_8/handler/FabricStaffModeHandler.java @@ -15,8 +15,10 @@ import net.kyori.adventure.text.Component; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; +import net.minecraft.network.packet.s2c.play.PlayerListS2CPacket; import net.minecraft.registry.Registries; import net.minecraft.server.MinecraftServer; +import net.minecraft.server.network.EntityTrackerEntry; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.text.Text; import net.minecraft.util.Identifier; @@ -183,49 +185,72 @@ private void hidePlayerFrom(ServerPlayerEntity toHide, ServerPlayerEntity viewer new WrapperPlayServerDestroyEntities(toHide.getId())); } - private void showPlayerTo(ServerPlayerEntity toShow, ServerPlayerEntity viewer) { - var peApi = PacketEvents.getAPI(); - if (peApi == null) return; - com.mojang.authlib.GameProfile mojangProfile = toShow.getGameProfile(); - List textureProperties = new ArrayList<>(); - for (com.mojang.authlib.properties.Property prop : mojangProfile.getProperties().get("textures")) { - textureProperties.add(new TextureProperty("textures", prop.value(), prop.signature())); + + private void showPlayerTo(ServerPlayerEntity toShow, ServerPlayerEntity viewer) { + if (toShow == null || viewer == null || toShow == viewer) { + return; } - UserProfile profile = new UserProfile(toShow.getUuid(), mojangProfile.getName(), textureProperties); - com.github.retrooper.packetevents.protocol.player.GameMode peGameMode = - com.github.retrooper.packetevents.protocol.player.GameMode.values()[toShow.interactionManager.getGameMode().ordinal()]; + viewer.networkHandler.sendPacket(PlayerListS2CPacket.entryFromPlayer(List.of(toShow))); - WrapperPlayServerPlayerInfoUpdate.PlayerInfo info = new WrapperPlayServerPlayerInfoUpdate.PlayerInfo( - profile, true, toShow.networkHandler.getLatency(), peGameMode, - net.kyori.adventure.text.Component.text(toShow.getName().getString()), null - ); + EntityTrackerEntry trackerEntry = new EntityTrackerEntry( + toShow.getWorld(), + toShow, + toShow.getType().getTrackTickInterval(), + toShow.getType().alwaysUpdateVelocity(), + packet -> {}, + (packet, excludedPlayers) -> { - peApi.getPlayerManager().sendPacket(viewer, - new WrapperPlayServerPlayerInfoUpdate( - EnumSet.of( - WrapperPlayServerPlayerInfoUpdate.Action.ADD_PLAYER, - WrapperPlayServerPlayerInfoUpdate.Action.UPDATE_LISTED, - WrapperPlayServerPlayerInfoUpdate.Action.UPDATE_LATENCY, - WrapperPlayServerPlayerInfoUpdate.Action.UPDATE_GAME_MODE - ), - info - )); + } + ); - peApi.getPlayerManager().sendPacket(viewer, - new WrapperPlayServerSpawnEntity( - toShow.getId(), - Optional.of(toShow.getUuid()), - EntityTypes.PLAYER, - new Vector3d(toShow.getX(), toShow.getY(), toShow.getZ()), - toShow.getPitch(), - toShow.getYaw(), - toShow.getYaw(), - 0, - Optional.of(new Vector3d(0, 0, 0)) - )); - } + trackerEntry.sendPackets(viewer, packet -> viewer.networkHandler.sendPacket(packet)); + } + +// private void showPlayerTo(ServerPlayerEntity toShow, ServerPlayerEntity viewer) { +// var peApi = PacketEvents.getAPI(); +// if (peApi == null) return; +// +// com.mojang.authlib.GameProfile mojangProfile = toShow.getGameProfile(); +// List textureProperties = new ArrayList<>(); +// for (com.mojang.authlib.properties.Property prop : mojangProfile.getProperties().get("textures")) { +// textureProperties.add(new TextureProperty("textures", prop.value(), prop.signature())); +// } +// UserProfile profile = new UserProfile(toShow.getUuid(), mojangProfile.getName(), textureProperties); +// +// com.github.retrooper.packetevents.protocol.player.GameMode peGameMode = +// com.github.retrooper.packetevents.protocol.player.GameMode.values()[toShow.interactionManager.getGameMode().ordinal()]; +// +// WrapperPlayServerPlayerInfoUpdate.PlayerInfo info = new WrapperPlayServerPlayerInfoUpdate.PlayerInfo( +// profile, true, toShow.networkHandler.getLatency(), peGameMode, +// net.kyori.adventure.text.Component.text(toShow.getName().getString()), null +// ); +// +// peApi.getPlayerManager().sendPacket(viewer, +// new WrapperPlayServerPlayerInfoUpdate( +// EnumSet.of( +// WrapperPlayServerPlayerInfoUpdate.Action.ADD_PLAYER, +// WrapperPlayServerPlayerInfoUpdate.Action.UPDATE_LISTED, +// WrapperPlayServerPlayerInfoUpdate.Action.UPDATE_LATENCY, +// WrapperPlayServerPlayerInfoUpdate.Action.UPDATE_GAME_MODE +// ), +// info +// )); +// +// peApi.getPlayerManager().sendPacket(viewer, +// new WrapperPlayServerSpawnEntity( +// toShow.getId(), +// Optional.of(toShow.getUuid()), +// EntityTypes.PLAYER, +// new Vector3d(toShow.getX(), toShow.getY(), toShow.getZ()), +// toShow.getPitch(), +// toShow.getYaw(), +// toShow.getYaw(), +// 0, +// Optional.of(new Vector3d(0, 0, 0)) +// )); +// } private void updateVanishHotbarItem(ServerPlayerEntity player, boolean isVanished) { Map hotbar = getActiveHotbar(player.getUuid()); diff --git a/platforms/fabric-26/src/main/java/gg/modl/minecraft/fabric/v26/handler/FabricStaffModeHandler.java b/platforms/fabric-26/src/main/java/gg/modl/minecraft/fabric/v26/handler/FabricStaffModeHandler.java index ea548978..530bb941 100644 --- a/platforms/fabric-26/src/main/java/gg/modl/minecraft/fabric/v26/handler/FabricStaffModeHandler.java +++ b/platforms/fabric-26/src/main/java/gg/modl/minecraft/fabric/v26/handler/FabricStaffModeHandler.java @@ -22,8 +22,12 @@ import net.minecraft.core.component.DataComponents; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.network.chat.Component; +import net.minecraft.network.protocol.Packet; +import net.minecraft.network.protocol.game.ClientGamePacketListener; +import net.minecraft.network.protocol.game.ClientboundPlayerInfoUpdatePacket; import net.minecraft.resources.Identifier; import net.minecraft.server.MinecraftServer; +import net.minecraft.server.level.ServerEntity; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.Container; @@ -54,6 +58,7 @@ import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.TimeUnit; +import java.util.function.Predicate; import java.util.stream.Collectors; import static gg.modl.minecraft.core.util.Java8Collections.mapOf; @@ -215,51 +220,41 @@ private void hidePlayerFrom(ServerPlayer toHide, ServerPlayer viewer) { } private void showPlayerTo(ServerPlayer toShow, ServerPlayer viewer) { - var peApi = PacketEvents.getAPI(); - if (peApi == null) { + if (toShow == null || viewer == null || toShow == viewer) { return; } - com.mojang.authlib.GameProfile mojangProfile = toShow.getGameProfile(); - List textureProperties = new ArrayList<>(); - for (com.mojang.authlib.properties.Property property : mojangProfile.properties().get("textures")) { - textureProperties.add(new TextureProperty("textures", property.value(), property.signature())); - } - UserProfile profile = new UserProfile(toShow.getUUID(), mojangProfile.name(), textureProperties); - - com.github.retrooper.packetevents.protocol.player.GameMode peGameMode = - com.github.retrooper.packetevents.protocol.player.GameMode.values()[ - toShow.gameMode.getGameModeForPlayer().ordinal()]; - - WrapperPlayServerPlayerInfoUpdate.PlayerInfo info = - new WrapperPlayServerPlayerInfoUpdate.PlayerInfo( - profile, true, toShow.connection.latency(), peGameMode, - net.kyori.adventure.text.Component.text(toShow.getName().getString()), null - ); - - peApi.getPlayerManager().sendPacket(viewer, - new WrapperPlayServerPlayerInfoUpdate( - EnumSet.of( - WrapperPlayServerPlayerInfoUpdate.Action.ADD_PLAYER, - WrapperPlayServerPlayerInfoUpdate.Action.UPDATE_LISTED, - WrapperPlayServerPlayerInfoUpdate.Action.UPDATE_LATENCY, - WrapperPlayServerPlayerInfoUpdate.Action.UPDATE_GAME_MODE - ), - info - )); + viewer.connection.send( - peApi.getPlayerManager().sendPacket(viewer, - new WrapperPlayServerSpawnEntity( - toShow.getId(), - Optional.of(toShow.getUUID()), - EntityTypes.PLAYER, - new Vector3d(toShow.getX(), toShow.getY(), toShow.getZ()), - toShow.getXRot(), - toShow.getYRot(), - toShow.getYRot(), - 0, - Optional.of(new Vector3d(0, 0, 0)) - )); + ClientboundPlayerInfoUpdatePacket.createPlayerInitializing(List.of(toShow)) + ); + + ServerEntity trackerEntry = new ServerEntity( + toShow.level(), + toShow, + toShow.getType().updateInterval(), + toShow.getType().trackDeltas(), + new ServerEntity.Synchronizer() { + @Override + public void sendToTrackingPlayers(Packet packet) { + } + + @Override + public void sendToTrackingPlayersAndSelf(Packet packet) { + } + + + @Override + public void sendToTrackingPlayersFiltered( + Packet packet, + Predicate predicate + ) { + } + } + ); + + trackerEntry.sendPairingData(viewer,packet -> viewer.connection.send(packet) + ); } private void updateVanishHotbarItem(ServerPlayer player, boolean isVanished) {