package com.thebrokenrail.reliccraft.packet; import com.thebrokenrail.reliccraft.RelicCraft; import com.thebrokenrail.reliccraft.item.TimeDilaterItem; import io.netty.buffer.Unpooled; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.network.PacketContext; import net.fabricmc.fabric.api.network.ServerSidePacketRegistry; import net.minecraft.client.MinecraftClient; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.network.Packet; import net.minecraft.network.PacketByteBuf; import net.minecraft.network.packet.s2c.play.CustomPayloadS2CPacket; import net.minecraft.util.Identifier; import net.minecraft.world.World; @SuppressWarnings("unused") public class UpdateTimeDilationS2CPacket { public static void send(World world, TimeDilaterItem.TimeSpeed speed) { PacketByteBuf buf = new PacketByteBuf(Unpooled.buffer()); buf.writeString(speed.name()); Packet packet = new CustomPayloadS2CPacket(new Identifier(RelicCraft.NAMESPACE, "update_time_dilation"), buf); for (PlayerEntity player : world.getPlayers()) { ServerSidePacketRegistry.INSTANCE.sendToPlayer(player, packet); } } @Environment(EnvType.CLIENT) public static void handle(PacketContext context, PacketByteBuf buf) { TimeDilaterItem.TimeSpeed speed = TimeDilaterItem.TimeSpeed.valueOf(buf.readString()); MinecraftClient client = MinecraftClient.getInstance(); if (client.world != null) { ((TimeDilaterItem.DilatedWorld) client.world).setTimeSpeed(speed); } } }