add file sync

This commit is contained in:
2025-11-07 11:21:15 +01:00
parent 5230e11f20
commit 8bc465bb8f
11 changed files with 148 additions and 26 deletions

View File

@@ -1,8 +1,8 @@
package com.kasetoatz.dumbassconfig.ui;
import com.kasetoatz.dumbassconfig.options.ButtonOption;
import com.kasetoatz.dumbassconfig.options.InputOption;
import com.kasetoatz.dumbassconfig.options.Option;
import com.kasetoatz.dumbassconfig.options.AbstractButtonOption;
import com.kasetoatz.dumbassconfig.options.AbstractInputOption;
import com.kasetoatz.dumbassconfig.options.AbstractOption;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.widget.*;
@@ -51,15 +51,15 @@ public class ConfigEntryList extends ElementListWidget<ConfigEntry>
super.renderWidget(context, mouseX, mouseY, delta);
}
public void add(Option<?> option)
public void add(AbstractOption<?> option)
{
ConfigEntry entry = new ConfigEntry();
entry.add(new TextWidget(option.getText(), this.client.textRenderer));
if (option instanceof ButtonOption<?> buttonOption)
if (option instanceof AbstractButtonOption<?> buttonOption)
{
entry.add(ButtonWidget.builder(buttonOption.getButtonText(), buttonOption::onClick).build());
}
else if (option instanceof InputOption<?> inputOption)
else if (option instanceof AbstractInputOption<?> inputOption)
{
inputOption.textField = new InputField(this.client.textRenderer, inputOption.getText());
inputOption.textField.setText(inputOption.getValue().toString());

View File

@@ -1,6 +1,6 @@
package com.kasetoatz.dumbassconfig.ui;
import com.kasetoatz.dumbassconfig.options.Option;
import com.kasetoatz.dumbassconfig.options.AbstractOption;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.widget.ButtonWidget;
import net.minecraft.client.gui.widget.ThreePartsLayoutWidget;
@@ -15,11 +15,12 @@ import static com.kasetoatz.dumbassconfig.DumbassConfig.ENTRY_HEIGHT;
public class ConfigScreen extends Screen
{
private Screen parent;
private final List<Option<?>> options;
private final List<AbstractOption<?>> options;
private final ThreePartsLayoutWidget layout = new ThreePartsLayoutWidget(this);
private ConfigEntryList body;
private Runnable saveCallback;
public ConfigScreen(Text title, List<Option<?>> options)
public ConfigScreen(Text title, List<AbstractOption<?>> options)
{
super(title);
this.options = options;
@@ -30,12 +31,17 @@ public class ConfigScreen extends Screen
this.parent = parent;
}
public void setSaveCallback(Runnable callback)
{
this.saveCallback = callback;
}
@Override
protected void init()
{
this.layout.addHeader(this.title, this.textRenderer);
this.body = new ConfigEntryList(this.client, this.layout.getWidth(), this.layout.getContentHeight(), this.layout.getHeaderHeight(), ENTRY_HEIGHT);
for (Option<?> option : this.options)
for (AbstractOption<?> option : this.options)
{
this.body.add(option);
}
@@ -58,6 +64,7 @@ public class ConfigScreen extends Screen
@Override
public void close()
{
this.saveCallback.run();
if (this.client != null)
{
this.client.setScreen(this.parent);