From 36c09e3c884cdf38a91c1963d17753dc381a5058 Mon Sep 17 00:00:00 2001 From: gnembon <41132274+gnembon@users.noreply.github.com> Date: Tue, 8 Aug 2023 12:28:55 +0200 Subject: [PATCH] move handshake to data --- .../java/carpet/network/CarpetClient.java | 4 ++-- .../carpet/network/ClientNetworkHandler.java | 17 +++++--------- .../carpet/network/ServerNetworkHandler.java | 23 +++++++------------ 3 files changed, 16 insertions(+), 28 deletions(-) diff --git a/src/main/java/carpet/network/CarpetClient.java b/src/main/java/carpet/network/CarpetClient.java index 9a2c4114..762f2102 100644 --- a/src/main/java/carpet/network/CarpetClient.java +++ b/src/main/java/carpet/network/CarpetClient.java @@ -32,8 +32,8 @@ public class CarpetClient } } - public static final int HI = 69; - public static final int HELLO = 420; + public static final String HI = "69"; + public static final String HELLO = "420"; public static final int DATA = 1; public static ShapesRenderer shapes = null; diff --git a/src/main/java/carpet/network/ClientNetworkHandler.java b/src/main/java/carpet/network/ClientNetworkHandler.java index 960463b0..cb621f92 100644 --- a/src/main/java/carpet/network/ClientNetworkHandler.java +++ b/src/main/java/carpet/network/ClientNetworkHandler.java @@ -8,7 +8,6 @@ import carpet.api.settings.InvalidRuleValueException; import carpet.fakes.LevelInterface; import carpet.helpers.TickRateManager; import carpet.api.settings.SettingsManager; -import io.netty.buffer.Unpooled; import java.util.HashMap; import java.util.Map; import java.util.function.BiConsumer; @@ -18,16 +17,14 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; import net.minecraft.nbt.NumericTag; import net.minecraft.nbt.Tag; -import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.protocol.common.ServerboundCustomPayloadPacket; -import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; public class ClientNetworkHandler { private static final Map> dataHandlers = new HashMap>(); static { + dataHandlers.put(CarpetClient.HI, (p, t) -> onHi(t.getAsString())); dataHandlers.put("Rules", (p, t) -> { CompoundTag ruleset = (CompoundTag)t; for (String ruleKey: ruleset.getAllKeys()) @@ -96,21 +93,19 @@ public class ClientNetworkHandler dataHandlers.put("clientCommand", (p, t) -> { CarpetClient.onClientCommand(t); }); - }; + } // Ran on the Main Minecraft Thread public static void handleData(CarpetClient.CarpetPayload data, LocalPlayer player) { - if (data.command() == CarpetClient.HI) - onHi(data.data()); if (data.command() == CarpetClient.DATA) onSyncData(data.data(), player); } - private static void onHi(CompoundTag data) + private static void onHi(String version) { CarpetClient.setCarpet(); - CarpetClient.serverCarpetVersion = data.getString("version"); + CarpetClient.serverCarpetVersion = version; if (CarpetSettings.carpetVersion.equals(CarpetClient.serverCarpetVersion)) { CarpetSettings.LOG.info("Joined carpet server with matching carpet version"); @@ -127,9 +122,9 @@ public class ClientNetworkHandler public static void respondHello() { CompoundTag data = new CompoundTag(); - data.putString("version", CarpetSettings.carpetVersion); + data.putString(CarpetClient.HELLO, CarpetSettings.carpetVersion); CarpetClient.getPlayer().connection.send(new ServerboundCustomPayloadPacket( - new CarpetClient.CarpetPayload(CarpetClient.HELLO, data) + new CarpetClient.CarpetPayload(CarpetClient.DATA, data) )); } diff --git a/src/main/java/carpet/network/ServerNetworkHandler.java b/src/main/java/carpet/network/ServerNetworkHandler.java index d707281b..d82f4501 100644 --- a/src/main/java/carpet/network/ServerNetworkHandler.java +++ b/src/main/java/carpet/network/ServerNetworkHandler.java @@ -21,11 +21,8 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; import net.minecraft.nbt.StringTag; import net.minecraft.nbt.Tag; -import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.chat.Component; import net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket; -import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; @@ -36,16 +33,13 @@ public class ServerNetworkHandler private static final Set validCarpetPlayers = new HashSet<>(); private static final Map> dataHandlers = Map.of( - "clientCommand", (p, t) -> { - handleClientCommand(p, (CompoundTag)t); - } + CarpetClient.HELLO, (p, t) -> onHello(p, t.getAsString()), + "clientCommand", (p, t) -> handleClientCommand(p, (CompoundTag)t) ); public static void handleData(CarpetClient.CarpetPayload data, ServerPlayer player) { int id = data.command(); - if (id == CarpetClient.HELLO) - onHello(player, data.data()); if (id == CarpetClient.DATA) onClientData(player, data.data()); } @@ -64,8 +58,8 @@ public class ServerNetworkHandler if (!((ServerGamePacketListenerImplInterface)playerEntity.connection).getConnection().isMemoryConnection()) { CompoundTag data = new CompoundTag(); - data.putString("version", CarpetSettings.carpetVersion); - playerEntity.connection.send( make( CarpetClient.HI, data)); + data.putString(CarpetClient.HI, CarpetSettings.carpetVersion); + playerEntity.connection.send( make( CarpetClient.DATA, data)); } else { @@ -73,15 +67,14 @@ public class ServerNetworkHandler } } - public static void onHello(ServerPlayer playerEntity, CompoundTag packetData) + public static void onHello(ServerPlayer playerEntity, String version) { validCarpetPlayers.add(playerEntity); - String clientVersion = packetData.getString("version"); - remoteCarpetPlayers.put(playerEntity, clientVersion); - if (clientVersion.equals(CarpetSettings.carpetVersion)) + remoteCarpetPlayers.put(playerEntity, version); + if (version.equals(CarpetSettings.carpetVersion)) 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); + CarpetSettings.LOG.warn("Player "+playerEntity.getName().getString()+" joined with another carpet version: "+ version); DataBuilder data = DataBuilder.create(playerEntity.server); // tickrate related settings are sent on world change CarpetServer.forEachManager(sm -> sm.getCarpetRules().forEach(data::withRule)); playerEntity.connection.send(make(data));