From af6a8fb2a886f3ab86606d50acd5f111c03b7443 Mon Sep 17 00:00:00 2001 From: amiralimollaei Date: Wed, 23 Sep 2026 12:57:42 +0330 Subject: [PATCH] fix: allow duplicate names in the config api --- .../config/api/page/VkPageOptionsBuilder.java | 18 ++++++++---------- .../config/api/page/VkPagesBuilder.java | 16 ++++++---------- 2 files changed, 14 insertions(+), 20 deletions(-) diff --git a/src/main/java/net/vulkanmod/config/api/page/VkPageOptionsBuilder.java b/src/main/java/net/vulkanmod/config/api/page/VkPageOptionsBuilder.java index 68bf684667..807efde9df 100644 --- a/src/main/java/net/vulkanmod/config/api/page/VkPageOptionsBuilder.java +++ b/src/main/java/net/vulkanmod/config/api/page/VkPageOptionsBuilder.java @@ -3,12 +3,13 @@ import net.vulkanmod.config.api.VkModSettingsEntryBuilder; import net.vulkanmod.config.gui.OptionBlock; -import java.util.LinkedHashMap; -import java.util.Map; +import java.util.ArrayList; +import java.util.List; +import java.util.function.Supplier; public class VkPageOptionsBuilder { private final VkModSettingsEntryBuilder parent; - private final Map optionBlockBuilders = new LinkedHashMap<>(); + private final List> optionBlockSuppliers = new ArrayList<>(); public VkPageOptionsBuilder(VkModSettingsEntryBuilder parent) { this.parent = parent; @@ -16,7 +17,7 @@ public VkPageOptionsBuilder(VkModSettingsEntryBuilder parent) { public VkOptionsBuilder withOptionBlock(String name) { VkOptionsBuilder builder = new VkOptionsBuilder(this); - optionBlockBuilders.put(name, builder); + optionBlockSuppliers.add(() -> new OptionBlock(name, builder.build())); return builder; } @@ -25,13 +26,10 @@ public VkModSettingsEntryBuilder finish() { } public OptionBlock[] build() { - final OptionBlock[] blocks = new OptionBlock[optionBlockBuilders.size()]; + final OptionBlock[] blocks = new OptionBlock[optionBlockSuppliers.size()]; int i = 0; - for (Map.Entry entry : optionBlockBuilders.entrySet()) { - blocks[i] = new OptionBlock( - entry.getKey(), - entry.getValue().build() - ); + for (Supplier optionBlockSupplier : optionBlockSuppliers) { + blocks[i] = optionBlockSupplier.get(); i++; } return blocks; diff --git a/src/main/java/net/vulkanmod/config/api/page/VkPagesBuilder.java b/src/main/java/net/vulkanmod/config/api/page/VkPagesBuilder.java index ffac98de28..e68bc33ab9 100644 --- a/src/main/java/net/vulkanmod/config/api/page/VkPagesBuilder.java +++ b/src/main/java/net/vulkanmod/config/api/page/VkPagesBuilder.java @@ -4,26 +4,22 @@ import net.vulkanmod.config.option.OptionPage; import java.util.ArrayList; -import java.util.LinkedHashMap; import java.util.List; -import java.util.Map; +import java.util.function.Supplier; public class VkPagesBuilder { - private final Map pageBuilders = new LinkedHashMap<>(); + private final List> pageSuppliers = new ArrayList<>(); public VkPageOptionsBuilder withPage(String name, VkModSettingsEntryBuilder parent) { VkPageOptionsBuilder builder = new VkPageOptionsBuilder(parent); - pageBuilders.put(name, builder); + pageSuppliers.add(() -> new OptionPage(name, builder.build())); return builder; } public List build() { - final List pages = new ArrayList<>(); - for (Map.Entry entry : pageBuilders.entrySet()) { - pages.add(new OptionPage( - entry.getKey(), - entry.getValue().build() - )); + final List pages = new ArrayList<>(pageSuppliers.size()); + for (Supplier pageSupplier : pageSuppliers) { + pages.add(pageSupplier.get()); } return pages; }