feat: add ExtendedSimplePositionWidget and MultiTabWrapperWidget
This commit is contained in:
4
Core/build.gradle
Normal file
4
Core/build.gradle
Normal file
@@ -0,0 +1,4 @@
|
||||
|
||||
loom {
|
||||
accessWidenerPath = file("src/main/resources/core.accesswidener")
|
||||
}
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
|
||||
}
|
||||
4
Core/src/main/resources/core.accesswidener
Normal file
4
Core/src/main/resources/core.accesswidener
Normal 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
|
||||
Reference in New Issue
Block a user