From e140a5ddb02da864d77bbba6eb284ef0a7e7238e Mon Sep 17 00:00:00 2001 From: gnembon <41132274+gnembon@users.noreply.github.com> Date: Fri, 19 May 2023 00:45:27 +0200 Subject: [PATCH] send tick info with client level data --- .../java/carpet/mixins/PlayerList_coreMixin.java | 8 ++++++++ .../java/carpet/network/ServerNetworkHandler.java | 13 ++++++++++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/main/java/carpet/mixins/PlayerList_coreMixin.java b/src/main/java/carpet/mixins/PlayerList_coreMixin.java index e547f6b6..e689d153 100644 --- a/src/main/java/carpet/mixins/PlayerList_coreMixin.java +++ b/src/main/java/carpet/mixins/PlayerList_coreMixin.java @@ -1,7 +1,9 @@ package carpet.mixins; import carpet.CarpetServer; +import carpet.network.ServerNetworkHandler; import net.minecraft.network.Connection; +import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.players.PlayerList; import org.spongepowered.asm.mixin.Mixin; @@ -18,4 +20,10 @@ public class PlayerList_coreMixin { CarpetServer.onPlayerLoggedIn(player); } + + @Inject(method = "sendLevelInfo", at = @At("RETURN")) + private void onLevelChanged(final ServerPlayer serverPlayer, final ServerLevel serverLevel, final CallbackInfo ci) + { + ServerNetworkHandler.sendPlayerLevelData(serverPlayer, serverLevel); + } } diff --git a/src/main/java/carpet/network/ServerNetworkHandler.java b/src/main/java/carpet/network/ServerNetworkHandler.java index 3a0a0ee8..c216f003 100644 --- a/src/main/java/carpet/network/ServerNetworkHandler.java +++ b/src/main/java/carpet/network/ServerNetworkHandler.java @@ -25,6 +25,7 @@ import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.chat.Component; import net.minecraft.network.protocol.game.ClientboundCustomPayloadPacket; import net.minecraft.server.MinecraftServer; +import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; public class ServerNetworkHandler @@ -70,7 +71,6 @@ public class ServerNetworkHandler public static void onHello(ServerPlayer playerEntity, FriendlyByteBuf packetData) { - validCarpetPlayers.add(playerEntity); String clientVersion = packetData.readUtf(64); remoteCarpetPlayers.put(playerEntity, clientVersion); @@ -78,7 +78,8 @@ public class ServerNetworkHandler CarpetSettings.LOG.info("Player "+playerEntity.getName().getString()+" joined with a matching carpet client"); else CarpetSettings.LOG.warn("Player "+playerEntity.getName().getString()+" joined with another carpet version: "+clientVersion); - DataBuilder data = DataBuilder.create(playerEntity.server).withTickRate().withFrozenState().withTickPlayerActiveTimeout(); // .withSuperHotState() + + DataBuilder data = DataBuilder.create(playerEntity.server);//;.withTickRate().withFrozenState().withTickPlayerActiveTimeout(); // .withSuperHotState() CarpetServer.settingsManager.getCarpetRules().forEach(data::withRule); CarpetServer.extensions.forEach(e -> { SettingsManager eManager = e.extensionSettingsManager(); @@ -86,7 +87,13 @@ public class ServerNetworkHandler eManager.getCarpetRules().forEach(data::withRule); } }); - playerEntity.connection.send(new ClientboundCustomPayloadPacket(CarpetClient.CARPET_CHANNEL, data.build() )); + playerEntity.connection.send(new ClientboundCustomPayloadPacket(CarpetClient.CARPET_CHANNEL, data.build())); + } + + public static void sendPlayerLevelData(ServerPlayer player, ServerLevel level) { + DataBuilder data = DataBuilder.create(player.server).withTickRate().withFrozenState().withTickPlayerActiveTimeout(); // .withSuperHotState() + player.connection.send(new ClientboundCustomPayloadPacket(CarpetClient.CARPET_CHANNEL, data.build() )); + } private static void handleClientCommand(ServerPlayer player, CompoundTag commandData)