Skip to content

Commit

Permalink
add my todo changes
Browse files Browse the repository at this point in the history
  • Loading branch information
Jab125 committed Dec 31, 2024
1 parent b9a7848 commit 890e1d6
Show file tree
Hide file tree
Showing 3 changed files with 167 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ public SettingEntry(final Tweak tweak) {
settingsButton = Button.builder(Component.translatable("lt.main.settings"), button -> {
// // https://www.minecraftforum.net/forums/archive/alpha/alpha-survival-single-player/798878-dohasdoshih-analysis-of-glitched-chunks
// LegacyTweaks.LOGGER.info("DOHASDOSHIH!");
Minecraft.getInstance().setScreen(new LTScreen(LTScreen.this, tweak));
Minecraft.getInstance().setScreen(new SettingsScreen(LTScreen.this, tweak));
}).size(20, 20).build();
if (toggleButton != null) this.children.add(toggleButton);
this.children.add(settingsButton);
Expand Down
102 changes: 101 additions & 1 deletion src/main/java/xyz/violaflower/legacy_tweaks/gui/SettingsScreen.java
Original file line number Diff line number Diff line change
@@ -1,4 +1,104 @@
package xyz.violaflower.legacy_tweaks.gui;

public class SettingsScreen {
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.gui.components.AbstractSliderButton;
import net.minecraft.client.gui.components.Button;
import net.minecraft.client.gui.components.ContainerObjectSelectionList;
import net.minecraft.client.gui.components.events.GuiEventListener;
import net.minecraft.client.gui.layouts.HeaderAndFooterLayout;
import net.minecraft.client.gui.layouts.LinearLayout;
import net.minecraft.client.gui.narration.NarratableEntry;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.network.chat.CommonComponents;
import net.minecraft.network.chat.Component;
import org.jetbrains.annotations.Nullable;
import xyz.violaflower.legacy_tweaks.tweaks.Tweak;

import java.util.ArrayList;
import java.util.List;

public class SettingsScreen extends Screen {

private final Screen parent;
private final HeaderAndFooterLayout layout = new HeaderAndFooterLayout(this);
private final Tweak tweak;
private SettingList settingList;

public SettingsScreen(Screen parent, Tweak tweak) {
super(Component.empty());
this.parent = parent;
this.tweak = tweak;
}

@Override
protected void init() {
this.layout.addTitleHeader(getTitle(), font);
this.settingList = this.layout.addToContents(new SettingList(tweak));
LinearLayout linearLayout = this.layout.addToFooter(LinearLayout.horizontal().spacing(8));
linearLayout.addChild(Button.builder(CommonComponents.GUI_DONE, button -> this.minecraft.setScreen(parent)).build());
this.layout.visitWidgets(this::addRenderableWidget);
this.repositionElements();
}

@Override
protected void repositionElements() {
this.layout.arrangeElements();
if (this.settingList != null) {
this.settingList.updateSize(this.width, this.layout);
}
}

@Override
public void onClose() {
this.minecraft.setScreen(parent);
}

@Override
public void render(GuiGraphics guiGraphics, int i, int j, float f) {
super.render(guiGraphics, i, j, f);
//guiGraphics.drawCenteredString(font, "Tweak Settings", width / 2, 5, 0xffffffff);
}

class SettingList extends ContainerObjectSelectionList<SettingList.SettingEntry> {
private static final int ITEM_HEIGHT = 40;
private Tweak tweak;
public SettingList(Tweak option) {
super(
SettingsScreen.this.minecraft,
SettingsScreen.this.width,
SettingsScreen.this.layout.getContentHeight(),
SettingsScreen.this.layout.getHeaderHeight(),
ITEM_HEIGHT
);
this.tweak = option;
tweak.getOptions().forEach(option1 -> this.addEntry(new SettingEntry(option1)));
}

class SettingEntry extends ContainerObjectSelectionList.Entry<SettingList.SettingEntry> {
private @Nullable Tweak.Option<?> option;
private final ArrayList<? extends GuiEventListener> children = new ArrayList<>();
public SettingEntry(@Nullable Tweak.Option<?> option) {
this.option = option;
if (option instanceof Tweak.SliderOption<?> sliderOption) {

}
}
@Override
public List<? extends NarratableEntry> narratables() {
return children;
}

@Override
public void render(GuiGraphics guiGraphics, int index, int top, int left, int width, int height, int mouseX, int mouseY, boolean hovering, float partialTick) {
guiGraphics.drawString(font, option.getName(), left, top + 5, 0xffffffff);
//guiGraphics.fill(left, top, left+width, top+height, 0xffffffff);
}

@Override
public List<? extends GuiEventListener> children() {
return children;
}
}
}
}
72 changes: 65 additions & 7 deletions src/main/java/xyz/violaflower/legacy_tweaks/tweaks/Tweak.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
import xyz.violaflower.legacy_tweaks.LegacyTweaks;

import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

Expand Down Expand Up @@ -130,23 +130,81 @@ public Map<String, Tweak> getSubTweaks() {
}

public BooleanOption addBooleanOption(String name) {
return new BooleanOption();
return new BooleanOption(name);
}

public SliderOption addSliderOption(String name, double min, double max) {
return new SliderOption();
public DoubleSliderOption addSliderOption(String name, double min, double max) {
return new DoubleSliderOption(name) {
@Override
public Double getMin() {
return min;
}

@Override
public Double getMax() {
return max;
}
};
}

public List<Option<?>> getOptions() {
return List.of(addSliderOption("LOL", 0, 1),addSliderOption("LOL", 0, 1));
}

// TODO get this saved to a file and vice versa
public static class BooleanOption {
public static class BooleanOption extends Option<Boolean> {
public BooleanOption(String name) {
super(name);
}

public boolean isOn() {
return true;
}

@Override
public Boolean get() {
return isOn();
}
}

public abstract class SliderOption<T extends Number> extends Option<T> {
public SliderOption(String name) {
super(name);
}

public abstract T getMin();
public abstract T getMax();
}

public static class SliderOption {
public double get() {
public class DoubleSliderOption extends SliderOption<Double> {
public DoubleSliderOption(String name) {
super(name);
}

@Override
public Double get() {
return 0.0;
}

@Override
public Double getMax() {
return 1.0;
}

@Override
public Double getMin() {
return 0.0;
}
}

public abstract static class Option<T> {
private final String name;
public Option(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public abstract T get();
}
}

0 comments on commit 890e1d6

Please sign in to comment.