[config] Minor API additions for respackopts
This commit is contained in:
parent
e413d5f47e
commit
2943149f58
@ -12,6 +12,7 @@ import java.util.function.Consumer;
|
||||
public interface ConfigBuilder<Builder extends ConfigBuilder<Builder>> extends CategoryBuilder<Builder> {
|
||||
Builder setLoadMethod(Consumer<ConfigInstance> load);
|
||||
Builder setWriteMethod(Consumer<ConfigInstance> write);
|
||||
Builder executeAfterWrite(Consumer<ConfigInstance> method);
|
||||
Builder setPath(Path path);
|
||||
|
||||
ConfigInstance build();
|
||||
|
@ -107,6 +107,13 @@ public class ConfigBuilderImpl extends CategoryBuilderImpl<ConfigBuilderImpl> im
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ConfigBuilderImpl executeAfterWrite(Consumer<ConfigInstance> method) {
|
||||
checkBuilt();
|
||||
this.write = this.write.andThen(method);
|
||||
return null;
|
||||
}
|
||||
|
||||
public ConfigBuilderImpl setPath(Path path) {
|
||||
checkBuilt();
|
||||
this.path = path;
|
||||
|
@ -2,33 +2,45 @@ package io.gitlab.jfronny.libjf.config.impl.ui.tiny;
|
||||
|
||||
import io.gitlab.jfronny.commons.throwable.Try;
|
||||
import io.gitlab.jfronny.libjf.LibJf;
|
||||
import io.gitlab.jfronny.libjf.config.api.v1.ui.tiny.WidgetFactory;
|
||||
import io.gitlab.jfronny.libjf.config.api.v1.ConfigCategory;
|
||||
import io.gitlab.jfronny.libjf.config.api.v1.ConfigInstance;
|
||||
import io.gitlab.jfronny.libjf.config.api.v1.ui.tiny.WidgetFactory;
|
||||
import io.gitlab.jfronny.libjf.config.impl.entrypoint.JfConfigSafe;
|
||||
import io.gitlab.jfronny.libjf.config.impl.ui.tiny.entry.EntryInfoWidgetBuilder;
|
||||
import io.gitlab.jfronny.libjf.config.impl.ui.tiny.entry.EntryListWidget;
|
||||
import io.gitlab.jfronny.libjf.config.impl.ui.tiny.presets.PresetsScreen;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.minecraft.client.MinecraftClient;
|
||||
import net.minecraft.client.gui.screen.Screen;
|
||||
import net.minecraft.client.gui.widget.ButtonWidget;
|
||||
import net.minecraft.client.resource.language.I18n;
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
import net.minecraft.screen.*;
|
||||
import net.minecraft.text.*;
|
||||
import net.minecraft.screen.ScreenTexts;
|
||||
import net.minecraft.text.MutableText;
|
||||
import net.minecraft.text.Text;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
@Environment(EnvType.CLIENT)
|
||||
public class TinyConfigScreen extends Screen {
|
||||
public TinyConfigScreen(ConfigCategory config, Screen parent) {
|
||||
super(Text.translatable(config.getTranslationPrefix() + "title"));
|
||||
super(getTitle(config.getTranslationPrefix()));
|
||||
this.parent = parent;
|
||||
this.config = config;
|
||||
this.widgets = EntryInfoWidgetBuilder.buildWidgets(config);
|
||||
this.translationPrefix = config.getTranslationPrefix();
|
||||
}
|
||||
public static Text getTitle(String categoryPath) {
|
||||
final String titlePath = categoryPath + "title";
|
||||
if (JfConfigSafe.TRANSLATION_SUPPLIER.apply(titlePath) != null) {
|
||||
return Text.translatable(titlePath);
|
||||
}
|
||||
final String alternatePath = categoryPath.length() == 0 ? "" : categoryPath.substring(0, categoryPath.length() - 1);
|
||||
if (JfConfigSafe.TRANSLATION_SUPPLIER.apply(alternatePath) != null) {
|
||||
return Text.translatable(alternatePath);
|
||||
}
|
||||
return Text.translatable(titlePath);
|
||||
}
|
||||
private final String translationPrefix;
|
||||
private final Screen parent;
|
||||
private final ConfigCategory config;
|
||||
@ -66,7 +78,7 @@ public class TinyConfigScreen extends Screen {
|
||||
this.addSelectableChild(this.list);
|
||||
for (Map.Entry<String, ConfigCategory> entry : config.getCategories().entrySet()) {
|
||||
this.list.addReference(width / 2,
|
||||
Text.translatable(entry.getValue().getTranslationPrefix() + "title"),
|
||||
getTitle(entry.getValue().getTranslationPrefix()),
|
||||
() -> new TinyConfigScreen(entry.getValue(), this));
|
||||
}
|
||||
for (WidgetState<?> info : widgets) {
|
||||
@ -85,7 +97,7 @@ public class TinyConfigScreen extends Screen {
|
||||
for (ConfigInstance ci : config.getReferencedConfigs()) {
|
||||
if (ci != null) {
|
||||
this.list.addReference(width / 2,
|
||||
Text.translatable("libjf-config-v1.see-also", Text.translatable(ci.getTranslationPrefix() + "title")),
|
||||
Text.translatable("libjf-config-v1.see-also", getTitle(ci.getTranslationPrefix())),
|
||||
() -> new TinyConfigScreen(ci, this));
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user