diff --git a/src/main/java/dev/micle/totemofreviving/network/UpdateRecipesPacket.java b/src/main/java/dev/micle/totemofreviving/network/UpdateRecipesPacket.java new file mode 100644 index 0000000..67667ac --- /dev/null +++ b/src/main/java/dev/micle/totemofreviving/network/UpdateRecipesPacket.java @@ -0,0 +1,37 @@ +package dev.micle.totemofreviving.network; + +import dev.micle.totemofreviving.event.UpdateRecipesEventHandler; +import net.minecraft.client.Minecraft; +import net.minecraft.network.PacketBuffer; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.fml.DistExecutor; +import net.minecraftforge.fml.network.NetworkEvent; + +import java.util.function.Supplier; + +public class UpdateRecipesPacket { + public UpdateRecipesPacket() {} + + public static void encode(final UpdateRecipesPacket packet, final PacketBuffer buffer) { + Network.writeVersionInfo(buffer); + } + + public static UpdateRecipesPacket decode(final PacketBuffer buffer) { + Network.checkVersion(buffer); + return new UpdateRecipesPacket(); + } + + public static void handle(final UpdateRecipesPacket packet, final Supplier contextSupplier) { + final NetworkEvent.Context context = contextSupplier.get(); + context.enqueueWork(() -> { + DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> ClientPacketHandler.handle(packet, contextSupplier)); + }); + context.setPacketHandled(true); + } + + private static class ClientPacketHandler { + private static void handle(UpdateRecipesPacket packet, Supplier contextSupplier) { + UpdateRecipesEventHandler.updateRecipeManager(Minecraft.getInstance().getConnection().getRecipeManager()); + } + } +}