Thanks for all the help guys, praise be the internet!
If you're curious, I created a new message & registered it. Here's the handler for said message:
public static void handle(WeatherPedestalUpdateMessage message, Supplier<NetworkEvent.Context> context) {
NetworkEvent.Context ctx = context.get();
ctx.enqueueWork(() -> {
ServerPlayerEntity player = ctx.getSender();
TileEntity tile = player.level.getBlockEntity(message.pos);
if(tile == null || !player.level.isLoaded(message.pos) || !(tile instanceof WeatherPedestalTileEntity))
return;
WeatherPedestalTileEntity pedestal = (WeatherPedestalTileEntity) tile;
pedestal.setRaining(message.rain);
pedestal.setThundering(message.thunder);
pedestal.setClear(message.clear);
player.level.sendBlockUpdated(message.pos, pedestal.getBlockState(), pedestal.getBlockState(), Constants.BlockFlags.BLOCK_UPDATE);
});
ctx.setPacketHandled(true);
}
I also removed half of my update() method in WeatherPedestalScreen, and replaced it with this single line:
NuggetMod.CHANNEL.sendToServer(new WeatherPedestalUpdateMessage(this.pos, rain, thunder, clear));