chore(config-network): align packet serialization with recommendations in blog post
ci/woodpecker/push/docs Pipeline was successful Details
ci/woodpecker/push/jfmod Pipeline was successful Details

This commit is contained in:
Johannes Frohnmeyer 2024-04-25 09:53:04 +02:00
parent 1109f9e610
commit 00929dd17a
Signed by: Johannes
GPG Key ID: E76429612C2929F4
4 changed files with 33 additions and 41 deletions

View File

@ -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() {

View File

@ -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

View File

@ -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() {

View File

@ -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