code style

This commit is contained in:
gnembon committed 2023-08-08 12:45:00 +02:00
1 parent cd572695b6
commit 40cb29cd6b
3 files changed
+143 -56

No files matched your search

+19 -8
View File
@@ -16,17 +16,20 @@ public class CarpetClient
{ {
public record CarpetPayload(CompoundTag data) implements CustomPacketPayload public record CarpetPayload(CompoundTag data) implements CustomPacketPayload
{ {
public CarpetPayload(FriendlyByteBuf input) { public CarpetPayload(FriendlyByteBuf input)
{
this(input.readNbt()); this(input.readNbt());
} }
@Override @Override
public void write(FriendlyByteBuf output) { public void write(FriendlyByteBuf output)
{
output.writeNbt(data); output.writeNbt(data);
} }
@Override @Override
public ResourceLocation id() { public ResourceLocation id()
{
return CARPET_CHANNEL; return CARPET_CHANNEL;
} }
} }
@@ -78,7 +81,10 @@ public class CarpetClient
public static boolean sendClientCommand(String command) public static boolean sendClientCommand(String command)
{ {
if (!isServerCarpet && CarpetServer.minecraft_server == null) return false; if (!isServerCarpet && CarpetServer.minecraft_server == null)
{
return false;
}
ClientNetworkHandler.clientCommand(command); ClientNetworkHandler.clientCommand(command);
return true; return true;
} }
@@ -86,15 +92,20 @@ public class CarpetClient
public static void onClientCommand(Tag t) public static void onClientCommand(Tag t)
{ {
CarpetSettings.LOG.info("Server Response:"); CarpetSettings.LOG.info("Server Response:");
CompoundTag tag = (CompoundTag)t; CompoundTag tag = (CompoundTag) t;
CarpetSettings.LOG.info(" - id: "+tag.getString("id")); CarpetSettings.LOG.info(" - id: " + tag.getString("id"));
CarpetSettings.LOG.info(" - code: "+tag.getInt("code")); CarpetSettings.LOG.info(" - code: " + tag.getInt("code"));
if (tag.contains("error")) CarpetSettings.LOG.warn(" - error: "+tag.getString("error")); if (tag.contains("error"))
{
CarpetSettings.LOG.warn(" - error: " + tag.getString("error"));
}
if (tag.contains("output")) if (tag.contains("output"))
{ {
ListTag outputTag = (ListTag) tag.get("output"); ListTag outputTag = (ListTag) tag.get("output");
for (int i = 0; i < outputTag.size(); i++) for (int i = 0; i < outputTag.size(); i++)
{
CarpetSettings.LOG.info(" - response: " + Component.Serializer.fromJson(outputTag.getString(i)).getString()); CarpetSettings.LOG.info(" - response: " + Component.Serializer.fromJson(outputTag.getString(i)).getString());
}
} }
} }
} }
@@ -8,9 +8,11 @@ import carpet.api.settings.InvalidRuleValueException;
import carpet.fakes.LevelInterface; import carpet.fakes.LevelInterface;
import carpet.helpers.TickRateManager; import carpet.helpers.TickRateManager;
import carpet.api.settings.SettingsManager; import carpet.api.settings.SettingsManager;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.function.BiConsumer; import java.util.function.BiConsumer;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
import net.minecraft.nbt.ByteTag; import net.minecraft.nbt.ByteTag;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
@@ -22,12 +24,13 @@ import net.minecraft.network.protocol.common.ServerboundCustomPayloadPacket;
public class ClientNetworkHandler public class ClientNetworkHandler
{ {
private static final Map<String, BiConsumer<LocalPlayer, Tag>> dataHandlers = new HashMap<String, BiConsumer<LocalPlayer, Tag>>(); private static final Map<String, BiConsumer<LocalPlayer, Tag>> dataHandlers = new HashMap<String, BiConsumer<LocalPlayer, Tag>>();
static static
{ {
dataHandlers.put(CarpetClient.HI, (p, t) -> onHi(t.getAsString())); dataHandlers.put(CarpetClient.HI, (p, t) -> onHi(t.getAsString()));
dataHandlers.put("Rules", (p, t) -> { dataHandlers.put("Rules", (p, t) -> {
CompoundTag ruleset = (CompoundTag)t; CompoundTag ruleset = (CompoundTag) t;
for (String ruleKey: ruleset.getAllKeys()) for (String ruleKey : ruleset.getAllKeys())
{ {
CompoundTag ruleNBT = (CompoundTag) ruleset.get(ruleKey); CompoundTag ruleNBT = (CompoundTag) ruleset.get(ruleKey);
SettingsManager manager = null; SettingsManager manager = null;
@@ -42,7 +45,8 @@ public class ClientNetworkHandler
} }
else else
{ {
for (CarpetExtension extension: CarpetServer.extensions) { for (CarpetExtension extension : CarpetServer.extensions)
{
SettingsManager eManager = extension.extensionSettingsManager(); SettingsManager eManager = extension.extensionSettingsManager();
if (eManager != null && managerName.equals(eManager.identifier())) if (eManager != null && managerName.equals(eManager.identifier()))
{ {
@@ -61,38 +65,46 @@ public class ClientNetworkHandler
if (rule != null) if (rule != null)
{ {
String value = ruleNBT.getString("Value"); String value = ruleNBT.getString("Value");
try { rule.set(null, value); } catch (InvalidRuleValueException ignored) { } try
{
rule.set(null, value);
}
catch (InvalidRuleValueException ignored)
{
}
} }
} }
}); });
dataHandlers.put("TickRate", (p, t) -> { dataHandlers.put("TickRate", (p, t) -> {
TickRateManager tickRateManager = ((LevelInterface)p.clientLevel).tickRateManager(); TickRateManager tickRateManager = ((LevelInterface) p.clientLevel).tickRateManager();
tickRateManager.setTickRate(((NumericTag) t).getAsFloat()); tickRateManager.setTickRate(((NumericTag) t).getAsFloat());
}); });
dataHandlers.put("TickingState", (p, t) -> { dataHandlers.put("TickingState", (p, t) -> {
CompoundTag tickingState = (CompoundTag)t; CompoundTag tickingState = (CompoundTag) t;
TickRateManager tickRateManager = ((LevelInterface)p.clientLevel).tickRateManager(); TickRateManager tickRateManager = ((LevelInterface) p.clientLevel).tickRateManager();
tickRateManager.setFrozenState(tickingState.getBoolean("is_paused"), tickingState.getBoolean("deepFreeze")); tickRateManager.setFrozenState(tickingState.getBoolean("is_paused"), tickingState.getBoolean("deepFreeze"));
}); });
dataHandlers.put("SuperHotState", (p, t) -> { dataHandlers.put("SuperHotState", (p, t) -> {
TickRateManager tickRateManager = ((LevelInterface)p.clientLevel).tickRateManager(); TickRateManager tickRateManager = ((LevelInterface) p.clientLevel).tickRateManager();
tickRateManager.setSuperHot(((ByteTag) t).equals(ByteTag.ONE)); tickRateManager.setSuperHot(t.equals(ByteTag.ONE));
}); });
dataHandlers.put("TickPlayerActiveTimeout", (p, t) -> { dataHandlers.put("TickPlayerActiveTimeout", (p, t) -> {
TickRateManager tickRateManager = ((LevelInterface)p.clientLevel).tickRateManager(); TickRateManager tickRateManager = ((LevelInterface) p.clientLevel).tickRateManager();
tickRateManager.setPlayerActiveTimeout(((NumericTag) t).getAsInt()); tickRateManager.setPlayerActiveTimeout(((NumericTag) t).getAsInt());
}); });
dataHandlers.put("scShape", (p, t) -> { // deprecated // and unused // should remove for 1.17 dataHandlers.put("scShape", (p, t) -> { // deprecated // and unused // should remove for 1.17
if (CarpetClient.shapes != null) if (CarpetClient.shapes != null)
CarpetClient.shapes.addShape((CompoundTag)t); {
CarpetClient.shapes.addShape((CompoundTag) t);
}
}); });
dataHandlers.put("scShapes", (p, t) -> { dataHandlers.put("scShapes", (p, t) -> {
if (CarpetClient.shapes != null) if (CarpetClient.shapes != null)
{
CarpetClient.shapes.addShapes((ListTag) t); CarpetClient.shapes.addShapes((ListTag) t);
}
}); });
dataHandlers.put("clientCommand", (p, t) -> { dataHandlers.put("clientCommand", (p, t) -> CarpetClient.onClientCommand(t));
CarpetClient.onClientCommand(t);
});
} }
// Ran on the Main Minecraft Thread // Ran on the Main Minecraft Thread
@@ -107,7 +119,7 @@ public class ClientNetworkHandler
} }
else else
{ {
CarpetSettings.LOG.warn("Joined carpet server with another carpet version: "+CarpetClient.serverCarpetVersion); CarpetSettings.LOG.warn("Joined carpet server with another carpet version: " + CarpetClient.serverCarpetVersion);
} }
// We can ensure that this packet is // We can ensure that this packet is
// processed AFTER the player has joined // processed AFTER the player has joined
@@ -125,19 +137,23 @@ public class ClientNetworkHandler
public static void onServerData(CompoundTag compound, LocalPlayer player) public static void onServerData(CompoundTag compound, LocalPlayer player)
{ {
for (String key: compound.getAllKeys()) for (String key : compound.getAllKeys())
{ {
if (dataHandlers.containsKey(key)) { if (dataHandlers.containsKey(key))
try { {
try
{
dataHandlers.get(key).accept(player, compound.get(key)); dataHandlers.get(key).accept(player, compound.get(key));
} }
catch (Exception exc) catch (Exception exc)
{ {
CarpetSettings.LOG.info("Corrupt carpet data for "+key); CarpetSettings.LOG.info("Corrupt carpet data for " + key);
} }
} }
else else
CarpetSettings.LOG.error("Unknown carpet data: "+key); {
CarpetSettings.LOG.error("Unknown carpet data: " + key);
}
} }
} }
@@ -34,12 +34,12 @@ public class ServerNetworkHandler
private static final Map<String, BiConsumer<ServerPlayer, Tag>> dataHandlers = Map.of( private static final Map<String, BiConsumer<ServerPlayer, Tag>> dataHandlers = Map.of(
CarpetClient.HELLO, (p, t) -> onHello(p, t.getAsString()), CarpetClient.HELLO, (p, t) -> onHello(p, t.getAsString()),
"clientCommand", (p, t) -> handleClientCommand(p, (CompoundTag)t) "clientCommand", (p, t) -> handleClientCommand(p, (CompoundTag) t)
); );
public static void onPlayerJoin(ServerPlayer playerEntity) public static void onPlayerJoin(ServerPlayer playerEntity)
{ {
if (!((ServerGamePacketListenerImplInterface)playerEntity.connection).getConnection().isMemoryConnection()) if (!((ServerGamePacketListenerImplInterface) playerEntity.connection).getConnection().isMemoryConnection())
{ {
CompoundTag data = new CompoundTag(); CompoundTag data = new CompoundTag();
data.putString(CarpetClient.HI, CarpetSettings.carpetVersion); data.putString(CarpetClient.HI, CarpetSettings.carpetVersion);
@@ -56,16 +56,24 @@ public class ServerNetworkHandler
validCarpetPlayers.add(playerEntity); validCarpetPlayers.add(playerEntity);
remoteCarpetPlayers.put(playerEntity, version); remoteCarpetPlayers.put(playerEntity, version);
if (version.equals(CarpetSettings.carpetVersion)) if (version.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
CarpetSettings.LOG.warn("Player "+playerEntity.getName().getString()+" joined with another carpet version: "+ version); {
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 DataBuilder data = DataBuilder.create(playerEntity.server); // tickrate related settings are sent on world change
CarpetServer.forEachManager(sm -> sm.getCarpetRules().forEach(data::withRule)); CarpetServer.forEachManager(sm -> sm.getCarpetRules().forEach(data::withRule));
playerEntity.connection.send(data.build()); playerEntity.connection.send(data.build());
} }
public static void sendPlayerLevelData(ServerPlayer player, ServerLevel level) { public static void sendPlayerLevelData(ServerPlayer player, ServerLevel level)
if (CarpetSettings.superSecretSetting || !validCarpetPlayers.contains(player)) return; {
if (CarpetSettings.superSecretSetting || !validCarpetPlayers.contains(player))
{
return;
}
DataBuilder data = DataBuilder.create(player.server).withTickRate().withFrozenState().withTickPlayerActiveTimeout(); // .withSuperHotState() DataBuilder data = DataBuilder.create(player.server).withTickRate().withFrozenState().withTickPlayerActiveTimeout(); // .withSuperHotState()
player.connection.send(data.build()); player.connection.send(data.build());
} }
@@ -90,28 +98,44 @@ public class ServerNetworkHandler
CompoundTag result = new CompoundTag(); CompoundTag result = new CompoundTag();
result.putString("id", id); result.putString("id", id);
result.putInt("code", resultCode); result.putInt("code", resultCode);
if (error[0] != null) result.putString("error", error[0].getContents().toString()); if (error[0] != null)
{
result.putString("error", error[0].getContents().toString());
}
ListTag outputResult = new ListTag(); ListTag outputResult = new ListTag();
for (Component line: output) outputResult.add(StringTag.valueOf(Component.Serializer.toJson(line))); for (Component line : output)
if (!output.isEmpty()) result.put("output", outputResult); {
outputResult.add(StringTag.valueOf(Component.Serializer.toJson(line)));
}
if (!output.isEmpty())
{
result.put("output", outputResult);
}
player.connection.send(DataBuilder.create(player.server).withCustomNbt("clientCommand", result).build()); player.connection.send(DataBuilder.create(player.server).withCustomNbt("clientCommand", result).build());
// run command plug to command output, // run command plug to command output,
} }
public static void onClientData(ServerPlayer player, CompoundTag compound) public static void onClientData(ServerPlayer player, CompoundTag compound)
{ {
for (String key: compound.getAllKeys()) for (String key : compound.getAllKeys())
{ {
if (dataHandlers.containsKey(key)) if (dataHandlers.containsKey(key))
{
dataHandlers.get(key).accept(player, compound.get(key)); dataHandlers.get(key).accept(player, compound.get(key));
}
else else
CarpetSettings.LOG.warn("Unknown carpet client data: "+key); {
CarpetSettings.LOG.warn("Unknown carpet client data: " + key);
}
} }
} }
public static void updateRuleWithConnectedClients(CarpetRule<?> rule) public static void updateRuleWithConnectedClients(CarpetRule<?> rule)
{ {
if (CarpetSettings.superSecretSetting) return; if (CarpetSettings.superSecretSetting)
{
return;
}
for (ServerPlayer player : remoteCarpetPlayers.keySet()) for (ServerPlayer player : remoteCarpetPlayers.keySet())
{ {
player.connection.send(DataBuilder.create(player.server).withRule(rule).build()); player.connection.send(DataBuilder.create(player.server).withRule(rule).build());
@@ -120,7 +144,10 @@ public class ServerNetworkHandler
public static void updateTickSpeedToConnectedPlayers(MinecraftServer server) public static void updateTickSpeedToConnectedPlayers(MinecraftServer server)
{ {
if (CarpetSettings.superSecretSetting) return; if (CarpetSettings.superSecretSetting)
{
return;
}
for (ServerPlayer player : validCarpetPlayers) for (ServerPlayer player : validCarpetPlayers)
{ {
player.connection.send(DataBuilder.create(player.server).withTickRate().build()); player.connection.send(DataBuilder.create(player.server).withTickRate().build());
@@ -129,7 +156,10 @@ public class ServerNetworkHandler
public static void updateFrozenStateToConnectedPlayers(MinecraftServer server) public static void updateFrozenStateToConnectedPlayers(MinecraftServer server)
{ {
if (CarpetSettings.superSecretSetting) return; if (CarpetSettings.superSecretSetting)
{
return;
}
for (ServerPlayer player : validCarpetPlayers) for (ServerPlayer player : validCarpetPlayers)
{ {
player.connection.send(DataBuilder.create(player.server).withFrozenState().build()); player.connection.send(DataBuilder.create(player.server).withFrozenState().build());
@@ -138,7 +168,10 @@ public class ServerNetworkHandler
public static void updateSuperHotStateToConnectedPlayers(MinecraftServer server) public static void updateSuperHotStateToConnectedPlayers(MinecraftServer server)
{ {
if(CarpetSettings.superSecretSetting) return; if (CarpetSettings.superSecretSetting)
{
return;
}
for (ServerPlayer player : validCarpetPlayers) for (ServerPlayer player : validCarpetPlayers)
{ {
player.connection.send(DataBuilder.create(player.server).withSuperHotState().build()); player.connection.send(DataBuilder.create(player.server).withSuperHotState().build());
@@ -147,7 +180,10 @@ public class ServerNetworkHandler
public static void updateTickPlayerActiveTimeoutToConnectedPlayers(MinecraftServer server) public static void updateTickPlayerActiveTimeoutToConnectedPlayers(MinecraftServer server)
{ {
if (CarpetSettings.superSecretSetting) return; if (CarpetSettings.superSecretSetting)
{
return;
}
for (ServerPlayer player : validCarpetPlayers) for (ServerPlayer player : validCarpetPlayers)
{ {
player.connection.send(DataBuilder.create(player.server).withTickPlayerActiveTimeout().build()); player.connection.send(DataBuilder.create(player.server).withTickPlayerActiveTimeout().build());
@@ -156,7 +192,10 @@ public class ServerNetworkHandler
public static void broadcastCustomCommand(String command, Tag data) public static void broadcastCustomCommand(String command, Tag data)
{ {
if (CarpetSettings.superSecretSetting) return; if (CarpetSettings.superSecretSetting)
{
return;
}
for (ServerPlayer player : validCarpetPlayers) for (ServerPlayer player : validCarpetPlayers)
{ {
player.connection.send(DataBuilder.create(player.server).withCustomNbt(command, data).build()); player.connection.send(DataBuilder.create(player.server).withCustomNbt(command, data).build());
@@ -174,8 +213,10 @@ public class ServerNetworkHandler
public static void onPlayerLoggedOut(ServerPlayer player) public static void onPlayerLoggedOut(ServerPlayer player)
{ {
validCarpetPlayers.remove(player); validCarpetPlayers.remove(player);
if (!((ServerGamePacketListenerImplInterface)player.connection).getConnection().isMemoryConnection()) if (!((ServerGamePacketListenerImplInterface) player.connection).getConnection().isMemoryConnection())
{
remoteCarpetPlayers.remove(player); remoteCarpetPlayers.remove(player);
}
} }
public static void close() public static void close()
@@ -186,15 +227,24 @@ public class ServerNetworkHandler
public static boolean isValidCarpetPlayer(ServerPlayer player) public static boolean isValidCarpetPlayer(ServerPlayer player)
{ {
if (CarpetSettings.superSecretSetting) return false; if (CarpetSettings.superSecretSetting)
{
return false;
}
return validCarpetPlayers.contains(player); return validCarpetPlayers.contains(player);
} }
public static String getPlayerStatus(ServerPlayer player) public static String getPlayerStatus(ServerPlayer player)
{ {
if (remoteCarpetPlayers.containsKey(player)) return "carpet "+remoteCarpetPlayers.get(player); if (remoteCarpetPlayers.containsKey(player))
if (validCarpetPlayers.contains(player)) return "carpet "+CarpetSettings.carpetVersion; {
return "carpet " + remoteCarpetPlayers.get(player);
}
if (validCarpetPlayers.contains(player))
{
return "carpet " + CarpetSettings.carpetVersion;
}
return "vanilla"; return "vanilla";
} }
@@ -202,42 +252,49 @@ public class ServerNetworkHandler
{ {
private CompoundTag tag; private CompoundTag tag;
private MinecraftServer server; private MinecraftServer server;
private static DataBuilder create(final MinecraftServer server) private static DataBuilder create(final MinecraftServer server)
{ {
return new DataBuilder(server); return new DataBuilder(server);
} }
private DataBuilder(MinecraftServer server) private DataBuilder(MinecraftServer server)
{ {
tag = new CompoundTag(); tag = new CompoundTag();
this.server = server; this.server = server;
} }
private DataBuilder withTickRate() private DataBuilder withTickRate()
{ {
ServerTickRateManager trm = ((MinecraftServerInterface)server).getTickRateManager(); ServerTickRateManager trm = ((MinecraftServerInterface) server).getTickRateManager();
tag.putFloat("TickRate", trm.tickrate()); tag.putFloat("TickRate", trm.tickrate());
return this; return this;
} }
private DataBuilder withFrozenState() private DataBuilder withFrozenState()
{ {
ServerTickRateManager trm = ((MinecraftServerInterface)server).getTickRateManager(); ServerTickRateManager trm = ((MinecraftServerInterface) server).getTickRateManager();
CompoundTag tickingState = new CompoundTag(); CompoundTag tickingState = new CompoundTag();
tickingState.putBoolean("is_paused", trm.gameIsPaused()); tickingState.putBoolean("is_paused", trm.gameIsPaused());
tickingState.putBoolean("deepFreeze", trm.deeplyFrozen()); tickingState.putBoolean("deepFreeze", trm.deeplyFrozen());
tag.put("TickingState", tickingState); tag.put("TickingState", tickingState);
return this; return this;
} }
private DataBuilder withSuperHotState() private DataBuilder withSuperHotState()
{ {
ServerTickRateManager trm = ((MinecraftServerInterface)server).getTickRateManager(); ServerTickRateManager trm = ((MinecraftServerInterface) server).getTickRateManager();
tag.putBoolean("SuperHotState", trm.isSuperHot()); tag.putBoolean("SuperHotState", trm.isSuperHot());
return this; return this;
} }
private DataBuilder withTickPlayerActiveTimeout() private DataBuilder withTickPlayerActiveTimeout()
{ {
ServerTickRateManager trm = ((MinecraftServerInterface)server).getTickRateManager(); ServerTickRateManager trm = ((MinecraftServerInterface) server).getTickRateManager();
tag.putInt("TickPlayerActiveTimeout", trm.getPlayerActiveTimeout()); tag.putInt("TickPlayerActiveTimeout", trm.getPlayerActiveTimeout());
return this; return this;
} }
private DataBuilder withRule(CarpetRule<?> rule) private DataBuilder withRule(CarpetRule<?> rule)
{ {
CompoundTag rules = (CompoundTag) tag.get("Rules"); CompoundTag rules = (CompoundTag) tag.get("Rules");
@@ -248,7 +305,10 @@ public class ServerNetworkHandler
} }
String identifier = rule.settingsManager().identifier(); String identifier = rule.settingsManager().identifier();
String key = rule.name(); String key = rule.name();
while (rules.contains(key)) { key = key+"2";} while (rules.contains(key))
{
key = key + "2";
}
CompoundTag ruleNBT = new CompoundTag(); CompoundTag ruleNBT = new CompoundTag();
ruleNBT.putString("Value", RuleHelper.toRuleString(rule.value())); ruleNBT.putString("Value", RuleHelper.toRuleString(rule.value()));
ruleNBT.putString("Manager", identifier); ruleNBT.putString("Manager", identifier);