HexCasting/Forge/src/main/java/at/petrak/hexcasting/forge/network/MsgColorizerUpdateAck.java

49 lines
1.5 KiB
Java

package at.petrak.hexcasting.forge.network;
import at.petrak.hexcasting.api.pigment.FrozenPigment;
import at.petrak.hexcasting.common.network.IMessage;
import at.petrak.hexcasting.xplat.IXplatAbstractions;
import io.netty.buffer.ByteBuf;
import net.minecraft.client.Minecraft;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.resources.ResourceLocation;
import static at.petrak.hexcasting.api.HexAPI.modLoc;
/**
* Sent server->client to synchronize the status of the sentinel.
*/
public record MsgColorizerUpdateAck(FrozenPigment update) implements IMessage {
public static final ResourceLocation ID = modLoc("color");
@Override
public ResourceLocation getFabricId() {
return ID;
}
public static MsgColorizerUpdateAck deserialize(ByteBuf buffer) {
var buf = new FriendlyByteBuf(buffer);
var tag = buf.readAnySizeNbt();
var colorizer = FrozenPigment.fromNBT(tag);
return new MsgColorizerUpdateAck(colorizer);
}
@Override
public void serialize(FriendlyByteBuf buf) {
buf.writeNbt(this.update.serializeToNBT());
}
public static void handle(MsgColorizerUpdateAck self) {
Minecraft.getInstance().execute(new Runnable() {
@Override
public void run() {
var player = Minecraft.getInstance().player;
if (player != null) {
IXplatAbstractions.INSTANCE.setColorizer(player, self.update());
}
}
});
}
}