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;