keeping versions of connected clients

This commit is contained in:
gnembon committed 2020-06-04 12:52:36 -03:00
1 parent 2e8ebc402e
commit 1c3d017e01
1 file changed
+8 -5
@@ -11,12 +11,14 @@ import net.minecraft.network.packet.s2c.play.CustomPayloadS2CPacket;
import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.util.PacketByteBuf; import net.minecraft.util.PacketByteBuf;
import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.Map;
import java.util.Set; import java.util.Set;
public class ServerNetworkHandler public class ServerNetworkHandler
{ {
public static Set<ServerPlayerEntity> remoteCarpetPlayers = new HashSet<>(); public static Map<ServerPlayerEntity, String> remoteCarpetPlayers = new HashMap<>();
public static Set<ServerPlayerEntity> validCarpetPlayers = new HashSet<>(); public static Set<ServerPlayerEntity> validCarpetPlayers = new HashSet<>();
public static void handleData(PacketByteBuf data, ServerPlayerEntity player) public static void handleData(PacketByteBuf data, ServerPlayerEntity player)
@@ -46,9 +48,10 @@ public class ServerNetworkHandler
public static void onHello(ServerPlayerEntity playerEntity, PacketByteBuf packetData) public static void onHello(ServerPlayerEntity playerEntity, PacketByteBuf packetData)
{ {
remoteCarpetPlayers.add(playerEntity);
validCarpetPlayers.add(playerEntity); validCarpetPlayers.add(playerEntity);
String clientVersion = packetData.readString(64); String clientVersion = packetData.readString(64);
remoteCarpetPlayers.put(playerEntity, clientVersion);
if (clientVersion.equals(CarpetSettings.carpetVersion)) if (clientVersion.equals(CarpetSettings.carpetVersion))
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
@@ -60,7 +63,7 @@ public class ServerNetworkHandler
public static void updateRuleWithConnectedClients(ParsedRule<?> rule) public static void updateRuleWithConnectedClients(ParsedRule<?> rule)
{ {
for (ServerPlayerEntity player : remoteCarpetPlayers) for (ServerPlayerEntity player : remoteCarpetPlayers.keySet())
{ {
player.networkHandler.sendPacket(new CustomPayloadS2CPacket( player.networkHandler.sendPacket(new CustomPayloadS2CPacket(
CarpetClient.CARPET_CHANNEL, CarpetClient.CARPET_CHANNEL,
@@ -71,7 +74,7 @@ public class ServerNetworkHandler
public static void updateTickSpeedToConnectedPlayers() public static void updateTickSpeedToConnectedPlayers()
{ {
for (ServerPlayerEntity player : remoteCarpetPlayers) for (ServerPlayerEntity player : remoteCarpetPlayers.keySet())
{ {
player.networkHandler.sendPacket(new CustomPayloadS2CPacket( player.networkHandler.sendPacket(new CustomPayloadS2CPacket(
CarpetClient.CARPET_CHANNEL, CarpetClient.CARPET_CHANNEL,
@@ -80,7 +83,7 @@ public class ServerNetworkHandler
} }
} }
public static void sendCustomCommand(String command, Tag data) public static void broadcastCustomCommand(String command, Tag data)
{ {
for (ServerPlayerEntity player : validCarpetPlayers) for (ServerPlayerEntity player : validCarpetPlayers)
{ {