feat: add ExtendedSimplePositionWidget and MultiTabWrapperWidget
Some checks failed
Test and Deploy / build (17, ubuntu-latest) (push) Failing after 5m21s
Test and Deploy / deploy (17, ubuntu-latest) (push) Has been skipped

This commit is contained in:
2025-09-30 22:01:56 +02:00
parent d74fb27d30
commit a4733d073e
8 changed files with 88 additions and 7 deletions

4
Core/build.gradle Normal file
View File

@@ -0,0 +1,4 @@
loom {
accessWidenerPath = file("src/main/resources/core.accesswidener")
}

View File

@@ -0,0 +1,34 @@
package fr.altarik.toolbox.core.client.gui;
import net.minecraft.client.gui.widget.Positioner;
import net.minecraft.client.gui.widget.SimplePositioningWidget;
import net.minecraft.client.gui.widget.Widget;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
public abstract class ExtendedSimplePositionWidget extends SimplePositioningWidget {
private final List<Element> elements = new ArrayList<>();
public ExtendedSimplePositionWidget(int x, int y, int width, int height) {
super(x, y, width, height);
}
@Override
public <T extends Widget> T add(T widget, Positioner positioner) {
this.elements.add(new Element(widget, positioner));
return widget;
}
public <T extends Widget> void remove(T widget) {
this.elements.remove(new Element(widget, this.copyPositioner()));
}
@Override
public void forEachElement(Consumer<Widget> consumer) {
this.elements.forEach((element) -> consumer.accept(element.widget));
}
}

View File

@@ -0,0 +1,39 @@
package fr.altarik.toolbox.core.client.gui;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.widget.Widget;
import net.minecraft.client.gui.widget.WrapperWidget;
import java.util.function.Consumer;
public abstract class MultiTabWrapperWidget<A extends Enum<A>, B extends Widget> extends WrapperWidget {
protected final Screen parent;
protected A currentTab;
public MultiTabWrapperWidget(Screen parent) {
this(parent, 0, 0, 0, 0);
}
public MultiTabWrapperWidget(Screen parent, int x, int y, int width, int height) {
super(x, y, width, height);
this.parent = parent;
}
protected void setCurrentTab(A currentTab) {
this.currentTab = currentTab;
update();
}
protected abstract B getCurrentTab();
public abstract void update();
public abstract void remove();
@Override
public void forEachElement(Consumer<Widget> consumer) {
// ignore
}
}

View File

@@ -0,0 +1,4 @@
accessWidener v2 named
accessible class net/minecraft/client/gui/widget/SimplePositioningWidget$Element
accessible method net/minecraft/client/gui/widget/SimplePositioningWidget$Element <init> (Lnet/minecraft/client/gui/widget/Widget;Lnet/minecraft/client/gui/widget/Positioner;)V