Files
fabric-carpet/src/main/java/carpet/helpers/ClientNetworkHandler.java
T
DeadlyMC 2522884da3 Client-server syncing (#295)
* Sync carpet settings

* Sync tick rate
2020-05-27 16:23:52 -03:00

60 lines
1.8 KiB
Java

package carpet.helpers;
import carpet.CarpetServer;
import carpet.CarpetSettings;
import carpet.settings.ParsedRule;
import net.minecraft.client.MinecraftClient;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.ListTag;
import net.minecraft.nbt.Tag;
import net.minecraft.util.Identifier;
import net.minecraft.util.PacketByteBuf;
public class ClientNetworkHandler
{
public static void handleData(Identifier channel, PacketByteBuf data)
{
if (CarpetServer.CARPET_CHANNEL.equals(channel) && data != null)
{
int id = data.readVarInt();
if (id == 1)
setOnJoinInfo(data);
else if (id == 2)
updateRule(data);
else if (id == 3)
updateTickRateClient(data);
}
}
private static void setOnJoinInfo(PacketByteBuf data)
{
CompoundTag compound = data.readCompoundTag();
if (compound == null) return;
TickSpeed.tickrate(compound.getFloat("Tickrate"));
ListTag rulesList = compound.getList("rules", 10);
for (Tag tag : rulesList)
{
CompoundTag ruleNBT = (CompoundTag) tag;
String rule = ruleNBT.getString("rule");
String value = ruleNBT.getString("value");
CarpetServer.settingsManager.getRule(rule).set(null, value);
}
}
private static void updateRule(PacketByteBuf data)
{
String rule = data.readString();
String newValue = data.readString();
CarpetServer.settingsManager.getRule(rule).set(null, newValue);
}
private static void updateTickRateClient(PacketByteBuf data)
{
float rate = data.readFloat();
TickSpeed.tickrate(rate);
}
}