package io.gitlab.jfronny.libjf.config.impl.network.packet; import io.gitlab.jfronny.libjf.config.impl.network.RequestRouter; import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; import net.minecraft.network.PacketByteBuf; import net.minecraft.network.codec.PacketCodec; import net.minecraft.network.codec.PacketCodecs; import net.minecraft.network.packet.CustomPayload; import net.minecraft.util.Identifier; import org.jetbrains.annotations.Nullable; import java.util.Optional; import java.util.function.Function; public record RequestPacket(long request, @Nullable Long parent, String name, PacketByteBuf aux) implements CustomPayload { public static final Id ID = new CustomPayload.Id<>(new Identifier(RequestRouter.MOD_ID, "request")); public static final PacketCodec CODEC = PacketCodec.tuple( PacketCodecs.VAR_LONG, RequestPacket::request, PacketCodecs.optional(PacketCodecs.VAR_LONG), RequestPacket::optionalParent, PacketCodecs.STRING, RequestPacket::name, PacketCodec.of(PacketByteBuf::writeBytes, PacketByteBufs::copy), RequestPacket::aux, RequestPacket::new); private RequestPacket(long request, Optional parent, String name, PacketByteBuf aux) { this(request, parent.orElse(null), name, aux); } private Optional optionalParent() { return Optional.ofNullable(parent); } @Override public Id getId() { return ID; } }