From dc96717d5cbae4f6c2cfb2fe3491971f0592568e Mon Sep 17 00:00:00 2001 From: GaLicn <133291877+GaLicn@users.noreply.github.com> Date: Sun, 7 Sep 2025 13:37:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=8D=A2=E8=B4=B4=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 4 +- ...adInventoryPatternToProviderC2SPacket.java | 46 +++++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/extendedae_plus/network/UploadInventoryPatternToProviderC2SPacket.java diff --git a/.gitignore b/.gitignore index 31d2550..9b070cd 100644 --- a/.gitignore +++ b/.gitignore @@ -23,4 +23,6 @@ run runs run-data -repo \ No newline at end of file +repo + +othermods \ No newline at end of file diff --git a/src/main/java/com/extendedae_plus/network/UploadInventoryPatternToProviderC2SPacket.java b/src/main/java/com/extendedae_plus/network/UploadInventoryPatternToProviderC2SPacket.java new file mode 100644 index 0000000..3f2b9b1 --- /dev/null +++ b/src/main/java/com/extendedae_plus/network/UploadInventoryPatternToProviderC2SPacket.java @@ -0,0 +1,46 @@ +package com.extendedae_plus.network; + +import com.extendedae_plus.util.ExtendedAEPatternUploadUtil; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerPlayer; +import net.neoforged.neoforge.network.handling.IPayloadContext; + +/** + * C2S: 从样板访问终端上传玩家背包中的编码样板到指定的样板供应器。 + * 适用于 ExtendedAE 的 GuiExPatternTerminal 或 AE2 的 PatternAccessTermScreen。 + */ +public class UploadInventoryPatternToProviderC2SPacket implements CustomPacketPayload { + public static final Type TYPE = new Type<>( + ResourceLocation.fromNamespaceAndPath(com.extendedae_plus.ExtendedAEPlus.MODID, "upload_inventory_pattern_to_provider")); + + public static final StreamCodec STREAM_CODEC = StreamCodec.of( + (buf, pkt) -> { + buf.writeVarInt(pkt.playerSlotIndex); + buf.writeLong(pkt.providerId); + }, + buf -> new UploadInventoryPatternToProviderC2SPacket(buf.readVarInt(), buf.readLong()) + ); + + private final int playerSlotIndex; + private final long providerId; + + public UploadInventoryPatternToProviderC2SPacket(int playerSlotIndex, long providerId) { + this.playerSlotIndex = playerSlotIndex; + this.providerId = providerId; + } + + @Override + public Type type() { + return TYPE; + } + + public static void handle(final UploadInventoryPatternToProviderC2SPacket msg, final IPayloadContext ctx) { + ctx.enqueueWork(() -> { + if (!(ctx.player() instanceof ServerPlayer player)) return; + ExtendedAEPatternUploadUtil.uploadPatternToProvider(player, msg.playerSlotIndex, msg.providerId); + }); + } +}