BreakMe/src/main/java/io/gitlab/jfronny/breakme/BreakMeClient.java

41 lines
1.6 KiB
Java

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<AbstractConfigListEntry> 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()
);
}
}