package io.gitlab.jfronny.breakme; import io.gitlab.jfronny.breakme.config.Cfg; import io.gitlab.jfronny.breakme.config.CrashMethod; import me.shedaniel.autoconfig.AutoConfig; import me.shedaniel.autoconfig.gui.registry.GuiRegistry; import me.shedaniel.autoconfig.gui.registry.api.GuiRegistryAccess; import me.shedaniel.clothconfig2.api.AbstractConfigListEntry; import me.shedaniel.clothconfig2.api.ConfigEntryBuilder; import net.fabricmc.api.ClientModInitializer; import net.minecraft.text.*; import java.lang.reflect.Field; import java.util.Collections; import java.util.List; import static me.shedaniel.autoconfig.util.Utils.getUnsafely; import static me.shedaniel.autoconfig.util.Utils.setUnsafely; public class BreakMeClient implements ClientModInitializer { ConfigEntryBuilder builder = ConfigEntryBuilder.create(); @Override public void onInitializeClient() { GuiRegistry registry = AutoConfig.getGuiRegistry(Cfg.class); registry.registerAnnotationProvider(this::get, CrashMethod.class); registry.registerTypeProvider(this::get, String.class); } private List get(String i13n, Field field, Object config, Object defaults, GuiRegistryAccess guiProvider) { return Collections.singletonList( builder.startSelector( Text.translatable(i13n), BreakMe.getProviders(), getUnsafely(field, config, getUnsafely(field, defaults)) ).setDefaultValue(() -> "None") .setSaveConsumer(newValue -> setUnsafely(field, config, newValue)) .build() ); } }