Freezing Scarpet

And the client
This commit is contained in:
altrisi committed 2020-12-21 00:14:20 +01:00
1 parent c6529c3d3c
commit 33347baaf7
10 files changed
+87 -5

No files matched your search

@@ -65,6 +65,13 @@ public class ClientNetworkHandler
}
});
dataHandlers.put("TickRate", (p, t) -> TickSpeed.tickrate(((AbstractNumberTag)t).getFloat(), false));
dataHandlers.put("TickingState", (p, t) -> {
CompoundTag tickingState = (CompoundTag)t;
TickSpeed.is_paused = tickingState.getBoolean("is_paused");
TickSpeed.deepFreeze = tickingState.getBoolean("deepFreeze");
TickSpeed.is_superHot = tickingState.getBoolean("is_superHot");
});
dataHandlers.put("TickPlayerActiveTimeout", (p, t) -> TickSpeed.player_active_timeout = ((AbstractNumberTag)t).getInt());
dataHandlers.put("scShape", (p, t) -> { // deprecated
if (CarpetClient.shapes != null)
CarpetClient.shapes.addShape((CompoundTag)t);
@@ -77,7 +77,7 @@ 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().withTickRate();
DataBuilder data = DataBuilder.create().withTickRate().withTickingState().withTickPlayerActiveTimeout();
CarpetServer.settingsManager.getRules().forEach(data::withRule);
CarpetServer.extensions.forEach(e -> {
SettingsManager eManager = e.customSettingsManager();
@@ -173,6 +173,30 @@ public class ServerNetworkHandler
}
}
public static void updateTickingStateToConnectedPlayers()
{
if (CarpetSettings.superSecretSetting) return;
for (ServerPlayerEntity player : remoteCarpetPlayers.keySet())
{
player.networkHandler.sendPacket(new CustomPayloadS2CPacket(
CarpetClient.CARPET_CHANNEL,
DataBuilder.create().withTickingState().build()
));
}
}
public static void updateTickPlayerActiveTimeoutToConnectedPlayers()
{
if (CarpetSettings.superSecretSetting) return;
for (ServerPlayerEntity player : remoteCarpetPlayers.keySet())
{
player.networkHandler.sendPacket(new CustomPayloadS2CPacket(
CarpetClient.CARPET_CHANNEL,
DataBuilder.create().withTickPlayerActiveTimeout().build()
));
}
}
public static void broadcastCustomCommand(String command, Tag data)
{
if (CarpetSettings.superSecretSetting) return;
@@ -240,6 +264,20 @@ public class ServerNetworkHandler
tag.putFloat("TickRate", TickSpeed.tickrate);
return this;
}
private DataBuilder withTickingState()
{
CompoundTag tickingState = new CompoundTag();
tickingState.putBoolean("is_paused", TickSpeed.is_paused);
tickingState.putBoolean("deepFreeze", TickSpeed.deepFreeze);
tickingState.putBoolean("is_superhot", TickSpeed.is_superHot);
tag.put("TickingState", tickingState);
return this;
}
private DataBuilder withTickPlayerActiveTimeout()
{
tag.putInt("TickPlayerActiveTimeout", TickSpeed.player_active_timeout);
return this;
}
private DataBuilder withRule(ParsedRule<?> rule)
{
CompoundTag rules = (CompoundTag) tag.get("Rules");