Skip to content
This repository has been archived by the owner on Dec 15, 2024. It is now read-only.

Commit

Permalink
fix up the packet unwrappers
Browse files Browse the repository at this point in the history
  • Loading branch information
BasiqueEvangelist committed Jul 15, 2024
1 parent bb2b325 commit bc605ec
Show file tree
Hide file tree
Showing 12 changed files with 267 additions and 312 deletions.
160 changes: 115 additions & 45 deletions src/main/java/io/wispforest/gadget/dump/read/handler/FapiSupport.java
Original file line number Diff line number Diff line change
@@ -1,64 +1,134 @@
package io.wispforest.gadget.dump.read.handler;

import io.wispforest.gadget.dump.read.unwrapped.FieldsUnwrappedPacket;
import io.wispforest.gadget.dump.read.unwrapped.LinesUnwrappedPacket;
import io.wispforest.gadget.util.ErrorSink;
import net.minecraft.network.PacketByteBuf;
import io.wispforest.gadget.util.NetworkUtil;
import net.fabricmc.fabric.impl.networking.CommonRegisterPayload;
import net.fabricmc.fabric.impl.networking.CommonVersionPayload;
import net.fabricmc.fabric.impl.networking.RegistrationPayload;
import net.fabricmc.fabric.impl.recipe.ingredient.CustomIngredientPayloadC2S;
import net.fabricmc.fabric.impl.recipe.ingredient.CustomIngredientPayloadS2C;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
import net.minecraft.util.Identifier;
import org.jetbrains.annotations.Nullable;

import java.util.List;
import java.util.Objects;
import java.util.Arrays;
import java.util.function.Consumer;
import java.util.stream.Collectors;

@SuppressWarnings("UnstableApiUsage")
public final class FapiSupport {
// public static final Identifier EARLY_REGISTRATION_CHANNEL = new Identifier("fabric-networking-api-v1", "early_registration");

private FapiSupport() {

}

public static void init() {
// PacketUnwrapper.EVENT.register((packet, errSink) -> {
// PacketType<?> type = FabricPacketHacks.getForId(packet.channelId());
//
// if (type == null) return null;
//
// PacketByteBuf buf = packet.wrappedBuf();
// Object unwrapped = type.read(buf);
//
// return new FabricObjectPacket(unwrapped);
// });
//
// PacketUnwrapper.EVENT.register((packet, errSink) -> {
// if (!Objects.equals(packet.channelId(), EARLY_REGISTRATION_CHANNEL)) return null;
//
// PacketByteBuf buf = packet.wrappedBuf();
// List<Identifier> channels = buf.readList(PacketByteBuf::readIdentifier);
//
// return new EarlyRegisterPacket(channels);
// });
PacketUnwrapper.EVENT.register((packet, errSink) -> {
if (!(NetworkUtil.unwrapCustom(packet.packet()) instanceof RegistrationPayload payload)) return null;

return new MinecraftRegisterPacket(payload);
});

PacketUnwrapper.EVENT.register((packet, errSink) -> {
if (!(NetworkUtil.unwrapCustom(packet.packet()) instanceof CommonVersionPayload payload)) return null;

return new CommonVersionPacket(payload);
});

PacketUnwrapper.EVENT.register((packet, errSink) -> {
if (!(NetworkUtil.unwrapCustom(packet.packet()) instanceof CommonRegisterPayload payload)) return null;

return new CommonRegisterPacket(payload);
});

PacketUnwrapper.EVENT.register((packet, errSink) -> {
if (!(NetworkUtil.unwrapCustom(packet.packet()) instanceof CustomIngredientPayloadS2C payload)) return null;

return new CustomIngredientS2CPacket(payload);
});

PacketUnwrapper.EVENT.register((packet, errSink) -> {
if (!(NetworkUtil.unwrapCustom(packet.packet()) instanceof CustomIngredientPayloadC2S payload)) return null;

return new CustomIngredientC2SPacket(payload);
});
}

// public record FabricObjectPacket(Object unwrapped) implements FieldsUnwrappedPacket {
// @Override
// public @Nullable Object rawFieldsObject() {
// return unwrapped;
// }
// }
//
// public record EarlyRegisterPacket(List<Identifier> channels) implements LinesUnwrappedPacket {
// @Override
// public void render(Consumer<Text> out, ErrorSink errSink) {
// for (Identifier channel : channels) {
// out.accept(
// Text.literal("+ ")
// .formatted(Formatting.GREEN)
// .append(Text.literal(channel.toString())
// .formatted(Formatting.GRAY)));
// }
// }
// }
public record MinecraftRegisterPacket(RegistrationPayload payload) implements LinesUnwrappedPacket {
@Override
public void render(Consumer<Text> out, ErrorSink errSink) {
Text header = !(payload.id() == RegistrationPayload.UNREGISTER)
? Text.literal("+ ")
.formatted(Formatting.GREEN)
: Text.literal("- ")
.formatted(Formatting.RED);

for (Identifier channel : payload.channels()) {
out.accept(
Text.literal("")
.append(header)
.append(Text.literal(channel.toString())
.formatted(Formatting.GRAY)));
}
}
}

public record CommonVersionPacket(CommonVersionPayload payload) implements LinesUnwrappedPacket {
@Override
public void render(Consumer<Text> out, ErrorSink errSink) {
out.accept(
Text.literal("versions")
.append(Text.literal(" = " + Arrays.stream(payload.versions())
.mapToObj(Integer::toString)
.collect(Collectors.joining(", ")))
.formatted(Formatting.GRAY)));
}
}

public record CommonRegisterPacket(CommonRegisterPayload payload) implements LinesUnwrappedPacket {
@Override
public void render(Consumer<Text> out, ErrorSink errSink) {
out.accept(Text.literal("version")
.append(Text.literal(" = " + payload.version())
.formatted(Formatting.GRAY)));

out.accept(Text.literal("phase")
.append(Text.literal(" = " + payload.phase())
.formatted(Formatting.GRAY)));

for (Identifier channel : payload.channels()) {
out.accept(
Text.literal("+ ")
.formatted(Formatting.GREEN)
.append(Text.literal(channel.toString())
.formatted(Formatting.GRAY)));
}
}
}

public record CustomIngredientS2CPacket(CustomIngredientPayloadS2C payload) implements LinesUnwrappedPacket {
@Override
public void render(Consumer<Text> out, ErrorSink errSink) {
out.accept(Text.literal("protocolVersion")
.append(Text.literal(" = " + payload.protocolVersion())
.formatted(Formatting.GRAY)));
}
}

public record CustomIngredientC2SPacket(CustomIngredientPayloadC2S payload) implements LinesUnwrappedPacket {
@Override
public void render(Consumer<Text> out, ErrorSink errSink) {
out.accept(Text.literal("protocolVersion")
.append(Text.literal(" = " + payload.protocolVersion())
.formatted(Formatting.GRAY)));

for (Identifier serializer : payload.registeredSerializers()) {
out.accept(
Text.literal("+ ")
.formatted(Formatting.GREEN)
.append(Text.literal(serializer.toString())
.formatted(Formatting.GRAY)));
}
}
}
}

This file was deleted.

Loading

0 comments on commit bc605ec

Please sign in to comment.