LibJF/libjf-config-network-v0/src/main/java/io/gitlab/jfronny/libjf/config/impl/network/packet/RequestPacket.java

37 lines
1.5 KiB
Java

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<RequestPacket> ID = new CustomPayload.Id<>(new Identifier(RequestRouter.MOD_ID, "request"));
public static final PacketCodec<PacketByteBuf, RequestPacket> 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<Long> parent, String name, PacketByteBuf aux) {
this(request, parent.orElse(null), name, aux);
}
private Optional<Long> optionalParent() {
return Optional.ofNullable(parent);
}
@Override
public Id<? extends CustomPayload> getId() {
return ID;
}
}