49 lines
1.5 KiB
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());
|
|
}
|
|
}
|
|
});
|
|
}
|
|
}
|