From 92dd02ea85700adcbf51e8340977d2450a2abbe8 Mon Sep 17 00:00:00 2001 From: GaLicn <3096147684@qq.com> Date: Sat, 16 Aug 2025 00:35:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=BA=E6=A0=B7=E6=9D=BF=E7=BC=96=E7=A0=81?= =?UTF-8?q?=E7=BB=88=E7=AB=AF=E6=B7=BB=E5=8A=A0=E4=B8=8A=E4=BC=A0=E4=BE=9B?= =?UTF-8?q?=E5=BA=94=E5=99=A8=E9=80=89=E6=8B=A9=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/ui/ProviderSelectScreen.java | 155 +++++++++++ .../mixin/PatternEncodingTermScreenMixin.java | 63 +++++ .../extendedae_plus/network/ModNetwork.java | 19 ++ .../network/ProvidersListS2CPacket.java | 65 +++++ .../RequestProvidersListC2SPacket.java | 77 ++++++ ...loadEncodedPatternToProviderC2SPacket.java | 48 ++++ .../util/ExtendedAEPatternUploadUtil.java | 242 +++++++++++++++++- .../resources/extendedae_plus.mixins.json | 3 +- 8 files changed, 667 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/extendedae_plus/client/ui/ProviderSelectScreen.java create mode 100644 src/main/java/com/extendedae_plus/mixin/PatternEncodingTermScreenMixin.java create mode 100644 src/main/java/com/extendedae_plus/network/ProvidersListS2CPacket.java create mode 100644 src/main/java/com/extendedae_plus/network/RequestProvidersListC2SPacket.java create mode 100644 src/main/java/com/extendedae_plus/network/UploadEncodedPatternToProviderC2SPacket.java diff --git a/src/main/java/com/extendedae_plus/client/ui/ProviderSelectScreen.java b/src/main/java/com/extendedae_plus/client/ui/ProviderSelectScreen.java new file mode 100644 index 0000000..03a3a39 --- /dev/null +++ b/src/main/java/com/extendedae_plus/client/ui/ProviderSelectScreen.java @@ -0,0 +1,155 @@ +package com.extendedae_plus.client.ui; + +import com.extendedae_plus.network.ModNetwork; +import com.extendedae_plus.network.UploadEncodedPatternToProviderC2SPacket; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.components.Button; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.network.chat.Component; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +/** + * 简单的供应器选择弹窗。 + * 展示若干个可点击的供应器条目,点击后发送带 providerId 的上传请求。 + */ +public class ProviderSelectScreen extends Screen { + private final Screen parent; + // 原始数据 + private final List ids; + private final List names; + private final List emptySlots; + + // 分组后的数据(同名合并) + private final List gIds = new ArrayList<>(); // 代表条目使用的 providerId:选择空位数最多的那个 + private final List gNames = new ArrayList<>(); // 分组名(供应器名称) + private final List gTotalSlots = new ArrayList<>(); // 该名称下供应器空位总和 + private final List gCount = new ArrayList<>(); // 该名称下供应器数量 + + private int page = 0; + private static final int PAGE_SIZE = 6; + + private final List