diff --git a/spotbugs.xml b/spotbugs.xml
new file mode 100644
index 0000000..73cc232
--- /dev/null
+++ b/spotbugs.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/me/melontini/flightpanel/api/generators/ElementGenerator.java b/src/main/java/me/melontini/flightpanel/api/generators/ElementGenerator.java
deleted file mode 100644
index afcc5fc..0000000
--- a/src/main/java/me/melontini/flightpanel/api/generators/ElementGenerator.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package me.melontini.flightpanel.api.generators;
-
-import com.google.common.collect.ImmutableList;
-import lombok.NonNull;
-import me.melontini.flightpanel.api.builders.elements.BaseElementBuilder;
-import me.melontini.flightpanel.api.builders.elements.CollapsibleObjectBuilder;
-import me.melontini.flightpanel.api.generators.context.ProviderContext;
-import me.melontini.flightpanel.impl.generators.CollapsibleObjectProviderFactory;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Unmodifiable;
-
-import java.util.List;
-import java.util.Optional;
-import java.util.function.Supplier;
-
-public class ElementGenerator {
-
- public static @Unmodifiable @NotNull List> generateForObject(String i18n, @NonNull T obj, Supplier<@NotNull T> defSupplier, Optional reg) {
- GuiRegistry registry = reg.orElseGet(GuiRegistry::withDefaults);
- if (i18n.endsWith(".")) i18n = i18n.substring(0, i18n.length() - 1);
-
- var entryContext = new ProviderContext(i18n, false, registry);
- var factory = CollapsibleObjectProviderFactory.forAnyObject(registry, (Class) obj.getClass());
- return ImmutableList.copyOf(factory.provideGui(obj, defSupplier, entryContext).dataOrThrow(CollapsibleObjectBuilder.ELEMENTS));
- }
-}
diff --git a/src/main/java/me/melontini/flightpanel/api/generators/GuiRegistry.java b/src/main/java/me/melontini/flightpanel/api/generators/GuiRegistry.java
index 79afb85..fd45c4a 100644
--- a/src/main/java/me/melontini/flightpanel/api/generators/GuiRegistry.java
+++ b/src/main/java/me/melontini/flightpanel/api/generators/GuiRegistry.java
@@ -1,16 +1,22 @@
package me.melontini.flightpanel.api.generators;
+import com.google.common.collect.ImmutableList;
import lombok.NonNull;
import me.melontini.dark_matter.api.base.util.Result;
import me.melontini.flightpanel.api.builders.elements.BaseElementBuilder;
+import me.melontini.flightpanel.api.builders.elements.CollapsibleObjectBuilder;
import me.melontini.flightpanel.api.elements.AbstractConfigElement;
import me.melontini.flightpanel.api.generators.context.FactoryContext;
import me.melontini.flightpanel.api.generators.context.ProviderContext;
+import me.melontini.flightpanel.impl.generators.CollapsibleObjectProviderFactory;
import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Unmodifiable;
import java.lang.reflect.Field;
import java.util.LinkedHashSet;
+import java.util.List;
import java.util.Set;
+import java.util.function.Supplier;
public class GuiRegistry implements GuiProviderFactory, GuiFieldTransformer {
@@ -35,6 +41,14 @@ public class GuiRegistry implements GuiProviderFactory, GuiFieldTransformer {
private GuiRegistry() {}
+ public @Unmodifiable @NotNull List> generateForObject(String i18n, @NonNull T obj, Supplier<@NotNull T> defSupplier) {
+ if (i18n.endsWith(".")) i18n = i18n.substring(0, i18n.length() - 1);
+
+ var entryContext = new ProviderContext(i18n, false, this);
+ var factory = CollapsibleObjectProviderFactory.forAnyObject(this, (Class) obj.getClass());
+ return ImmutableList.copyOf(factory.provideGui(obj, defSupplier, entryContext).dataOrThrow(CollapsibleObjectBuilder.ELEMENTS));
+ }
+
public void registerProviderFactory(@NonNull GuiProviderFactory factory) {
this.factories.add(factory);
}
diff --git a/src/main/java/me/melontini/flightpanel/api/generators/context/FactoryContext.java b/src/main/java/me/melontini/flightpanel/api/generators/context/FactoryContext.java
index 4c55301..d51a6aa 100644
--- a/src/main/java/me/melontini/flightpanel/api/generators/context/FactoryContext.java
+++ b/src/main/java/me/melontini/flightpanel/api/generators/context/FactoryContext.java
@@ -2,7 +2,6 @@ package me.melontini.flightpanel.api.generators.context;
import lombok.NonNull;
import lombok.With;
-import me.melontini.flightpanel.api.generators.HierarchyAccessor;
@With
public record FactoryContext(TypeContext types, HierarchyAccessor accessor) {
diff --git a/src/main/java/me/melontini/flightpanel/api/generators/HierarchyAccessor.java b/src/main/java/me/melontini/flightpanel/api/generators/context/HierarchyAccessor.java
similarity index 95%
rename from src/main/java/me/melontini/flightpanel/api/generators/HierarchyAccessor.java
rename to src/main/java/me/melontini/flightpanel/api/generators/context/HierarchyAccessor.java
index 76692d6..77648ca 100644
--- a/src/main/java/me/melontini/flightpanel/api/generators/HierarchyAccessor.java
+++ b/src/main/java/me/melontini/flightpanel/api/generators/context/HierarchyAccessor.java
@@ -1,4 +1,4 @@
-package me.melontini.flightpanel.api.generators;
+package me.melontini.flightpanel.api.generators.context;
import lombok.With;
diff --git a/src/main/java/me/melontini/flightpanel/impl/TestInit.java b/src/main/java/me/melontini/flightpanel/impl/TestInit.java
index a88db8e..9e2dedf 100644
--- a/src/main/java/me/melontini/flightpanel/impl/TestInit.java
+++ b/src/main/java/me/melontini/flightpanel/impl/TestInit.java
@@ -5,7 +5,7 @@ import lombok.EqualsAndHashCode;
import lombok.ToString;
import me.melontini.flightpanel.api.builders.ConfigScreenBuilder;
import me.melontini.flightpanel.api.builders.elements.BaseElementBuilder;
-import me.melontini.flightpanel.api.generators.ElementGenerator;
+import me.melontini.flightpanel.api.generators.GuiRegistry;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents;
import net.minecraft.client.gui.screen.Screen;
@@ -13,7 +13,6 @@ import net.minecraft.client.gui.screen.option.OptionsScreen;
import net.minecraft.text.Text;
import java.util.List;
-import java.util.Optional;
import static me.melontini.flightpanel.api.generators.Transformations.*;
@@ -29,7 +28,7 @@ public class TestInit implements ClientModInitializer {
.title(Text.literal("NEVER GONNA GIVE YOU UP"))
.saveFunction(() -> System.out.println(CONFIG));
- List>> partition = Lists.partition(ElementGenerator.generateForObject("test.flight-panel.config.", CONFIG, RealConfig::new, Optional.empty()), 5);
+ List>> partition = Lists.partition(GuiRegistry.withDefaults().generateForObject("test.flight-panel.config.", CONFIG, RealConfig::new), 5);
for (int i = 0; i < partition.size(); i++) {
List> builders = partition.get(i);
sb.category(Text.literal("default " + i)).addAll(builders);
diff --git a/src/main/java/me/melontini/flightpanel/impl/generators/CollapsibleObjectProviderFactory.java b/src/main/java/me/melontini/flightpanel/impl/generators/CollapsibleObjectProviderFactory.java
index 1257eb0..f6d46ed 100644
--- a/src/main/java/me/melontini/flightpanel/impl/generators/CollapsibleObjectProviderFactory.java
+++ b/src/main/java/me/melontini/flightpanel/impl/generators/CollapsibleObjectProviderFactory.java
@@ -5,8 +5,12 @@ import me.melontini.flightpanel.api.builders.elements.BaseElementBuilder;
import me.melontini.flightpanel.api.builders.elements.CollapsibleObjectBuilder;
import me.melontini.flightpanel.api.builders.elements.ValuedElementBuilder;
import me.melontini.flightpanel.api.elements.AbstractConfigElement;
-import me.melontini.flightpanel.api.generators.*;
+import me.melontini.flightpanel.api.generators.GuiProvider;
+import me.melontini.flightpanel.api.generators.GuiProviderFactory;
+import me.melontini.flightpanel.api.generators.GuiRegistry;
+import me.melontini.flightpanel.api.generators.Transformations;
import me.melontini.flightpanel.api.generators.context.FactoryContext;
+import me.melontini.flightpanel.api.generators.context.HierarchyAccessor;
import me.melontini.flightpanel.api.generators.context.ProviderContext;
import me.melontini.flightpanel.api.generators.context.TypeContext;
import me.melontini.flightpanel.impl.elements.CollapsibleObjectElement;