chore(config-network): align packet serialization with recommendations in blog post
This commit is contained in:
parent
1109f9e610
commit
00929dd17a
|
@ -4,19 +4,11 @@ import io.gitlab.jfronny.libjf.config.impl.network.RequestRouter;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
import net.minecraft.network.codec.PacketCodec;
|
import net.minecraft.network.codec.PacketCodec;
|
||||||
import net.minecraft.network.packet.CustomPayload;
|
import net.minecraft.network.packet.CustomPayload;
|
||||||
|
import net.minecraft.util.Identifier;
|
||||||
|
|
||||||
public record ConfigurationCompletePacket() implements CustomPayload {
|
public record ConfigurationCompletePacket() implements CustomPayload {
|
||||||
public static final CustomPayload.Id<ConfigurationCompletePacket> ID = CustomPayload.id(RequestRouter.MOD_ID + ":handshake_complete");
|
public static final CustomPayload.Id<ConfigurationCompletePacket> ID = new CustomPayload.Id<>(new Identifier(RequestRouter.MOD_ID, "handshake_complete"));
|
||||||
public static final PacketCodec<ByteBuf, ConfigurationCompletePacket> CODEC = new PacketCodec<>() {
|
public static final PacketCodec<ByteBuf, ConfigurationCompletePacket> CODEC = PacketCodec.unit(new ConfigurationCompletePacket());
|
||||||
@Override
|
|
||||||
public ConfigurationCompletePacket decode(ByteBuf buf) {
|
|
||||||
return new ConfigurationCompletePacket();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void encode(ByteBuf buf, ConfigurationCompletePacket value) {
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Id<? extends CustomPayload> getId() {
|
public Id<? extends CustomPayload> getId() {
|
||||||
|
|
|
@ -5,9 +5,10 @@ import io.netty.buffer.ByteBuf;
|
||||||
import net.minecraft.network.codec.PacketCodec;
|
import net.minecraft.network.codec.PacketCodec;
|
||||||
import net.minecraft.network.codec.PacketCodecs;
|
import net.minecraft.network.codec.PacketCodecs;
|
||||||
import net.minecraft.network.packet.CustomPayload;
|
import net.minecraft.network.packet.CustomPayload;
|
||||||
|
import net.minecraft.util.Identifier;
|
||||||
|
|
||||||
public record ConfigurationPacket(int version) implements CustomPayload {
|
public record ConfigurationPacket(int version) implements CustomPayload {
|
||||||
public static final CustomPayload.Id<ConfigurationPacket> ID = CustomPayload.id(RequestRouter.MOD_ID + ":handshake");
|
public static final CustomPayload.Id<ConfigurationPacket> ID = new CustomPayload.Id<>(new Identifier(RequestRouter.MOD_ID, "handshake"));
|
||||||
public static final PacketCodec<ByteBuf, ConfigurationPacket> CODEC = PacketCodecs.INTEGER.xmap(ConfigurationPacket::new, ConfigurationPacket::version);
|
public static final PacketCodec<ByteBuf, ConfigurationPacket> CODEC = PacketCodecs.INTEGER.xmap(ConfigurationPacket::new, ConfigurationPacket::version);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -4,27 +4,30 @@ import io.gitlab.jfronny.libjf.config.impl.network.RequestRouter;
|
||||||
import net.fabricmc.fabric.api.networking.v1.PacketByteBufs;
|
import net.fabricmc.fabric.api.networking.v1.PacketByteBufs;
|
||||||
import net.minecraft.network.PacketByteBuf;
|
import net.minecraft.network.PacketByteBuf;
|
||||||
import net.minecraft.network.codec.PacketCodec;
|
import net.minecraft.network.codec.PacketCodec;
|
||||||
|
import net.minecraft.network.codec.PacketCodecs;
|
||||||
import net.minecraft.network.packet.CustomPayload;
|
import net.minecraft.network.packet.CustomPayload;
|
||||||
|
import net.minecraft.util.Identifier;
|
||||||
import org.jetbrains.annotations.Nullable;
|
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 record RequestPacket(long request, @Nullable Long parent, String name, PacketByteBuf aux) implements CustomPayload {
|
||||||
public static final Id<RequestPacket> ID = CustomPayload.id(RequestRouter.MOD_ID + ":request");
|
public static final Id<RequestPacket> ID = new CustomPayload.Id<>(new Identifier(RequestRouter.MOD_ID, "request"));
|
||||||
public static final PacketCodec<PacketByteBuf, RequestPacket> CODEC = PacketCodec.of(
|
public static final PacketCodec<PacketByteBuf, RequestPacket> CODEC = PacketCodec.tuple(
|
||||||
(value, buf) -> {
|
PacketCodecs.VAR_LONG, RequestPacket::request,
|
||||||
buf.writeLong(value.request);
|
PacketCodecs.optional(PacketCodecs.VAR_LONG), RequestPacket::optionalParent,
|
||||||
buf.writeBoolean(value.parent != null);
|
PacketCodecs.STRING, RequestPacket::name,
|
||||||
if (value.parent != null) buf.writeLong(value.parent);
|
PacketCodec.of(PacketByteBuf::writeBytes, PacketByteBufs::copy), RequestPacket::aux,
|
||||||
buf.writeString(value.name);
|
RequestPacket::new);
|
||||||
buf.writeBytes(value.aux);
|
|
||||||
},
|
private RequestPacket(long request, Optional<Long> parent, String name, PacketByteBuf aux) {
|
||||||
buf -> {
|
this(request, parent.orElse(null), name, aux);
|
||||||
long request = buf.readLong();
|
}
|
||||||
Long parent = buf.readBoolean() ? buf.readLong() : null;
|
|
||||||
String name = buf.readString();
|
private Optional<Long> optionalParent() {
|
||||||
PacketByteBuf aux = PacketByteBufs.copy(buf);
|
return Optional.ofNullable(parent);
|
||||||
return new RequestPacket(request, parent, name, aux);
|
}
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Id<? extends CustomPayload> getId() {
|
public Id<? extends CustomPayload> getId() {
|
||||||
|
|
|
@ -4,21 +4,17 @@ import io.gitlab.jfronny.libjf.config.impl.network.RequestRouter;
|
||||||
import net.fabricmc.fabric.api.networking.v1.PacketByteBufs;
|
import net.fabricmc.fabric.api.networking.v1.PacketByteBufs;
|
||||||
import net.minecraft.network.PacketByteBuf;
|
import net.minecraft.network.PacketByteBuf;
|
||||||
import net.minecraft.network.codec.PacketCodec;
|
import net.minecraft.network.codec.PacketCodec;
|
||||||
|
import net.minecraft.network.codec.PacketCodecs;
|
||||||
import net.minecraft.network.packet.CustomPayload;
|
import net.minecraft.network.packet.CustomPayload;
|
||||||
|
import net.minecraft.util.Identifier;
|
||||||
|
|
||||||
public record ResponsePacket(long request, int status, PacketByteBuf aux) implements CustomPayload {
|
public record ResponsePacket(long request, int status, PacketByteBuf aux) implements CustomPayload {
|
||||||
public static final CustomPayload.Id<ResponsePacket> ID = CustomPayload.id(RequestRouter.MOD_ID + ":response");
|
public static final CustomPayload.Id<ResponsePacket> ID = new CustomPayload.Id<>(new Identifier(RequestRouter.MOD_ID, "response"));
|
||||||
public static final PacketCodec<PacketByteBuf, ResponsePacket> CODEC = PacketCodec.of(
|
public static final PacketCodec<PacketByteBuf, ResponsePacket> CODEC = PacketCodec.tuple(
|
||||||
(value, buf) -> {
|
PacketCodecs.VAR_LONG, ResponsePacket::request,
|
||||||
buf.writeLong(value.request());
|
PacketCodecs.INTEGER, ResponsePacket::status,
|
||||||
buf.writeInt(value.status());
|
PacketCodec.of(PacketByteBuf::writeBytes, PacketByteBufs::copy), ResponsePacket::aux,
|
||||||
buf.writeBytes(value.aux());
|
ResponsePacket::new
|
||||||
},
|
|
||||||
buf -> {
|
|
||||||
long request = buf.readLong();
|
|
||||||
int status = buf.readInt();
|
|
||||||
return new ResponsePacket(request, status, PacketByteBufs.copy(buf));
|
|
||||||
}
|
|
||||||
);
|
);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Reference in New Issue