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