send tick info with client level data

This commit is contained in:
gnembon committed 2023-05-19 00:45:27 +02:00
1 parent b744956777
commit e140a5ddb0
2 files changed
+18 -3

No files matched your search

@@ -1,7 +1,9 @@
package carpet.mixins; package carpet.mixins;
import carpet.CarpetServer; import carpet.CarpetServer;
import carpet.network.ServerNetworkHandler;
import net.minecraft.network.Connection; import net.minecraft.network.Connection;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.level.ServerPlayer;
import net.minecraft.server.players.PlayerList; import net.minecraft.server.players.PlayerList;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
@@ -18,4 +20,10 @@ public class PlayerList_coreMixin
{ {
CarpetServer.onPlayerLoggedIn(player); 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);
}
} }
@@ -25,6 +25,7 @@ import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Component;
import net.minecraft.network.protocol.game.ClientboundCustomPayloadPacket; import net.minecraft.network.protocol.game.ClientboundCustomPayloadPacket;
import net.minecraft.server.MinecraftServer; import net.minecraft.server.MinecraftServer;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.level.ServerPlayer;
public class ServerNetworkHandler public class ServerNetworkHandler
@@ -70,7 +71,6 @@ public class ServerNetworkHandler
public static void onHello(ServerPlayer playerEntity, FriendlyByteBuf packetData) public static void onHello(ServerPlayer playerEntity, FriendlyByteBuf packetData)
{ {
validCarpetPlayers.add(playerEntity); validCarpetPlayers.add(playerEntity);
String clientVersion = packetData.readUtf(64); String clientVersion = packetData.readUtf(64);
remoteCarpetPlayers.put(playerEntity, clientVersion); remoteCarpetPlayers.put(playerEntity, clientVersion);
@@ -78,7 +78,8 @@ public class ServerNetworkHandler
CarpetSettings.LOG.info("Player "+playerEntity.getName().getString()+" joined with a matching carpet client"); CarpetSettings.LOG.info("Player "+playerEntity.getName().getString()+" joined with a matching carpet client");
else else
CarpetSettings.LOG.warn("Player "+playerEntity.getName().getString()+" joined with another carpet version: "+clientVersion); 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.settingsManager.getCarpetRules().forEach(data::withRule);
CarpetServer.extensions.forEach(e -> { CarpetServer.extensions.forEach(e -> {
SettingsManager eManager = e.extensionSettingsManager(); SettingsManager eManager = e.extensionSettingsManager();
@@ -86,7 +87,13 @@ public class ServerNetworkHandler
eManager.getCarpetRules().forEach(data::withRule); 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) private static void handleClientCommand(ServerPlayer player, CompoundTag commandData)