aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorviciscat <51047087+viciscat@users.noreply.github.com>2024-06-24 15:00:24 +0200
committerviciscat <51047087+viciscat@users.noreply.github.com>2024-12-12 18:19:05 +0100
commit0e250cec774b36cab3f099e45b0784d9a0b3a830 (patch)
tree68ee906f65d066633b75856c1cbb0b57962c8c81 /src/main/java
parent091e95564e4c48d2f6c394161d073e31643a4141 (diff)
downloadSkyblocker-0e250cec774b36cab3f099e45b0784d9a0b3a830.tar.gz
Skyblocker-0e250cec774b36cab3f099e45b0784d9a0b3a830.tar.bz2
Skyblocker-0e250cec774b36cab3f099e45b0784d9a0b3a830.zip
more things, dragging things around setting the anchor and parent
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/PreviewTab.java314
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/WidgetsConfigurationScreen.java12
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/ScreenBuilder.java22
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/HudWidget.java4
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/TabHudWidget.java5
5 files changed, 278 insertions, 79 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/PreviewTab.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/PreviewTab.java
index b1a4b6d5..d473d89e 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/PreviewTab.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/PreviewTab.java
@@ -33,13 +33,13 @@ import java.util.function.Consumer;
public class PreviewTab implements Tab {
- private static final int RIGHT_SIDE_WIDTH = 120;
+ public static final int RIGHT_SIDE_WIDTH = 120;
private final MinecraftClient client;
private final PreviewWidget previewWidget;
private final WidgetsConfigurationScreen parent;
private final WidgetOptionsScrollable widgetOptions;
- private ScreenBuilder.Layer currentLayer = ScreenBuilder.Layer.MAIN_TAB;
+ private ScreenBuilder.ScreenLayer currentScreenLayer = ScreenBuilder.ScreenLayer.MAIN_TAB;
private final ButtonWidget[] layerButtons;
public PreviewTab(MinecraftClient client, WidgetsConfigurationScreen parent) {
@@ -47,23 +47,22 @@ public class PreviewTab implements Tab {
this.parent = parent;
previewWidget = new PreviewWidget();
- previewWidget.setOnSelectedChanged(this::onHudWidgetSelected);
widgetOptions = new WidgetOptionsScrollable();
widgetOptions.setWidth(RIGHT_SIDE_WIDTH - 10);
- ScreenBuilder.Layer[] values = ScreenBuilder.Layer.values();
+ ScreenBuilder.ScreenLayer[] values = ScreenBuilder.ScreenLayer.values();
layerButtons = new ButtonWidget[values.length];
for (int i = 0; i < values.length; i++) {
- ScreenBuilder.Layer layer = values[i];
- layerButtons[i] = ButtonWidget.builder(Text.literal(layer.toString()), button -> {
- this.currentLayer = layer;
+ ScreenBuilder.ScreenLayer screenLayer = values[i];
+ layerButtons[i] = ButtonWidget.builder(Text.literal(screenLayer.toString()), button -> {
+ this.currentScreenLayer = screenLayer;
for (ButtonWidget layerButton : this.layerButtons) {
layerButton.active = !layerButton.equals(button);
}
})
.size(RIGHT_SIDE_WIDTH - 20, 15)
.build();
- if (layer == currentLayer) layerButtons[i].active = false;
+ if (screenLayer == currentScreenLayer) layerButtons[i].active = false;
}
}
@@ -122,8 +121,8 @@ public class PreviewTab implements Tab {
if (foundSquare.get()) {
lines.add(mutableText);
- System.out.println(mutableText.getString());
- System.out.println(mutableText);
+ //System.out.println(mutableText.getString());
+ //System.out.println(mutableText);
}
}
}
@@ -134,49 +133,67 @@ public class PreviewTab implements Tab {
widgetOptions.clearWidgets();
if (hudWidget == null) return;
ScreenBuilder screenBuilder = ScreenMaster.getScreenBuilder(parent.getCurrentLocation());
- if (screenBuilder.getPositionRule(hudWidget.getInternalID()) == null) {
+ PositionRule positionRule = screenBuilder.getPositionRule(hudWidget.getInternalID());
+ int width = widgetOptions.getWidth() - widgetOptions.getScrollerWidth();
+ if (positionRule == null) {
widgetOptions.addWidget(ButtonWidget.builder(Text.literal("Positioning: Auto"), button -> {
screenBuilder.setPositionRule(hudWidget.getInternalID(), PositionRule.DEFAULT);
- updatePlayerListFromPreview();
- screenBuilder.positionWidgets(parent.width, parent.height);
+ updateWidgets();
onHudWidgetSelected(hudWidget);
})
- .width(widgetOptions.getWidth() - widgetOptions.getScrollerWidth())
+ .width(width)
.build());
} else {
widgetOptions.addWidget(ButtonWidget.builder(Text.literal("Positioning: Custom"), button -> {
screenBuilder.setPositionRule(hudWidget.getInternalID(), null);
- updatePlayerListFromPreview();
- screenBuilder.positionWidgets(parent.width, parent.height);
+ updateWidgets();
onHudWidgetSelected(hudWidget);
})
- .width(widgetOptions.getWidth() - widgetOptions.getScrollerWidth())
+ .width(width)
.build());
+
+ String parentName = positionRule.parent().equals("screen") ? "Screen" : ScreenMaster.widgetInstances.get(positionRule.parent()).getNiceName();
+
+ widgetOptions.addWidget(ButtonWidget.builder(Text.literal("Parent: " + parentName), button -> {
+ this.previewWidget.pickParent = true;
+ button.setMessage(Text.literal("Click on a widget"));
+ }).width(width).build());
+
+ widgetOptions.addWidget(new AnchorSelectionWidget(width, Text.literal("This anchor"), false));
+ widgetOptions.addWidget(new AnchorSelectionWidget(width, Text.literal("Parent anchor"), true));
+
}
}
+ void updateWidgets() {
+ ScreenBuilder screenBuilder = ScreenMaster.getScreenBuilder(parent.getCurrentLocation());
+ updatePlayerListFromPreview();
+ screenBuilder.positionWidgets(parent.width, parent.height);
+ }
+
/**
* The preview widget that captures clicks and displays the current state of the widgets.
*/
public class PreviewWidget extends ClickableWidget {
private float ratio = 1f;
+ /**
+ * The widget the user is hovering with the mouse
+ */
private @Nullable HudWidget hoveredWidget = null;
+ /**
+ * The selected widget, settings for it show on the right, and it can be dragged around
+ */
private @Nullable HudWidget selectedWidget = null;
+ /**
+ * The original pos, of the selected widget, it is set when you click on it. So when it's done being dragged it can be compared.
+ * Effectively, if this ain't null, the user is dragging a widget around.
+ */
private @Nullable ScreenPos selectedOriginalPos = null;
-
- private @Nullable Consumer<@Nullable HudWidget> onSelectedChanged = null;
-
- public void setOnSelectedChanged(@Nullable Consumer<HudWidget> onSelectedChanged) {
- this.onSelectedChanged = onSelectedChanged;
- }
+ protected boolean pickParent = false;
public PreviewWidget() {
- this(0, 0, 0, 0, Text.literal("Preview widget"));
- }
-
- public PreviewWidget(int x, int y, int width, int height, Text message) {
- super(x, y, width, height, message);
+ super(0, 0, 0, 0, Text.literal("Preview widget"));
}
@Override
@@ -191,42 +208,64 @@ public class PreviewTab implements Tab {
matrices.translate(getX(), getY(), 0f);
matrices.scale(ratio, ratio, 1f);
- screenBuilder.renderWidgets(context, PreviewTab.this.currentLayer);
+ screenBuilder.renderWidgets(context, PreviewTab.this.currentScreenLayer);
float localMouseX = (mouseX - getX()) / ratio;
float localMouseY = (mouseY - getY()) / ratio;
context.drawBorder((int) localMouseX, (int) localMouseY, 2, 2, Colors.RED);
- for (HudWidget hudWidget : screenBuilder.getHudWidgets(PreviewTab.this.currentLayer)) {
- // SELECTED
- if (hudWidget.equals(selectedWidget)) {
- //noinspection DataFlowIssue
- context.drawBorder(
- hudWidget.getX() - 1,
- hudWidget.getY() - 1,
- hudWidget.getWidth() + 2,
- hudWidget.getHeight() + 2,
- Formatting.GREEN.getColorValue() | 0xFF000000);
-
- PositionRule rule = screenBuilder.getPositionRule(selectedWidget.getInternalID());
- if (rule != null) {
- int thisAnchorX = (int) (hudWidget.getX() + rule.thisPoint().horizontalPoint().getPercentage() * hudWidget.getWidth());
- int thisAnchorY = (int) (hudWidget.getY() + rule.thisPoint().verticalPoint().getPercentage() * hudWidget.getHeight());
-
- context.drawHorizontalLine(thisAnchorX - rule.relativeX(), thisAnchorX, thisAnchorY, Colors.LIGHT_RED);
- context.drawVerticalLine(thisAnchorX - rule.relativeX(), thisAnchorY - rule.relativeY(), thisAnchorY, Colors.LIGHT_RED);
- }
- }
- // HOVERED
- else if (hudWidget.isMouseOver(localMouseX, localMouseY) && hoveredWidget == null) {
- context.drawBorder(
- hudWidget.getX() - 1,
- hudWidget.getY() - 1,
- hudWidget.getWidth() + 2,
- hudWidget.getHeight() + 2,
- Colors.LIGHT_YELLOW);
+ for (HudWidget hudWidget : screenBuilder.getHudWidgets(PreviewTab.this.currentScreenLayer)) {
+ if (hudWidget.isMouseOver(localMouseX, localMouseY)) {
hoveredWidget = hudWidget;
+ break;
+ }
+ }
+
+ // Counter-attack the translation in the widgets
+ matrices.translate(0.f, 0.f, 350.f);
+
+ // HOVERED
+ if (hoveredWidget != null && !hoveredWidget.equals(selectedWidget)) {
+ context.drawBorder(
+ hoveredWidget.getX() - 1,
+ hoveredWidget.getY() - 1,
+ hoveredWidget.getWidth() + 2,
+ hoveredWidget.getHeight() + 2,
+ Colors.LIGHT_YELLOW);
+ }
+
+ // SELECTED
+ if (selectedWidget != null) {
+ //noinspection DataFlowIssue
+ context.drawBorder(
+ selectedWidget.getX() - 1,
+ selectedWidget.getY() - 1,
+ selectedWidget.getWidth() + 2,
+ selectedWidget.getHeight() + 2,
+ Formatting.GREEN.getColorValue() | 0xFF000000);
+
+ PositionRule rule = screenBuilder.getPositionRule(selectedWidget.getInternalID());
+ if (rule != null) {
+ // TODO: rename that maybe that's a bit wack
+ int relativeX = 0;
+ int relativeY = 0;
+ if (selectedOriginalPos != null) {
+ relativeX = selectedWidget.getX() - selectedOriginalPos.x();
+ relativeY = selectedWidget.getY() - selectedOriginalPos.y();
+ }
+ int thisAnchorX = (int) (selectedWidget.getX() + rule.thisPoint().horizontalPoint().getPercentage() * selectedWidget.getWidth());
+ int thisAnchorY = (int) (selectedWidget.getY() + rule.thisPoint().verticalPoint().getPercentage() * selectedWidget.getHeight());
+
+ context.drawCenteredTextWithShadow(client.textRenderer, String.valueOf(relativeX + rule.relativeX()), thisAnchorX - (relativeX + rule.relativeX()) / 2, thisAnchorY + 2, Colors.LIGHT_RED);
+ context.drawText(client.textRenderer, String.valueOf(rule.relativeY() + relativeY), thisAnchorX - rule.relativeX() - relativeX + 2, thisAnchorY - rule.relativeY() - relativeY + 2, Colors.LIGHT_RED, true);
+
+ context.drawHorizontalLine(thisAnchorX - rule.relativeX() - relativeX, thisAnchorX, thisAnchorY + 1, 0xAAAA0000);
+ context.drawVerticalLine(thisAnchorX - rule.relativeX() - relativeX + 1, thisAnchorY - rule.relativeY() - relativeY, thisAnchorY, 0xAAAA0000);
+
+
+ context.drawHorizontalLine(thisAnchorX - rule.relativeX() - relativeX, thisAnchorX, thisAnchorY, Colors.RED);
+ context.drawVerticalLine(thisAnchorX - rule.relativeX() - relativeX, thisAnchorY - rule.relativeY() - relativeY, thisAnchorY, Colors.RED);
}
}
@@ -238,12 +277,49 @@ public class PreviewTab implements Tab {
protected void appendClickableNarrations(NarrationMessageBuilder builder) {
}
+ private double bufferedDeltaX = 0;
+ private double bufferedDeltaY = 0;
+
+ @Override
+ protected void onDrag(double mouseX, double mouseY, double deltaX, double deltaY) {
+ double localDeltaX = deltaX / ratio + bufferedDeltaX;
+ double localDeltaY = deltaY / ratio + bufferedDeltaY;
+
+ bufferedDeltaX = localDeltaX - (int) localDeltaX;
+ bufferedDeltaY = localDeltaY - (int) localDeltaY;
+
+ if (selectedWidget != null && selectedOriginalPos != null) {
+ selectedWidget.setX(selectedWidget.getX() + (int) localDeltaX);
+ selectedWidget.setY(selectedWidget.getY() + (int) localDeltaY);
+ }
+ }
+
@Override
public void onRelease(double mouseX, double mouseY) {
- if (!Objects.equals(hoveredWidget, selectedWidget) && onSelectedChanged != null) {
- System.out.println("HEY!!!");
- onSelectedChanged.accept(hoveredWidget);
+ if (pickParent) {
+ pickParent = false;
+ return;
+ }
+ if (!Objects.equals(hoveredWidget, selectedWidget)) {
+ PreviewTab.this.onHudWidgetSelected(hoveredWidget);
+ }
+ // TODO releasing a widget outside of the area causes weird behavior, might wanna look into that
+ // Update positioning real
+ if (selectedWidget != null && selectedOriginalPos != null) {
+ ScreenBuilder screenBuilder = ScreenMaster.getScreenBuilder(parent.getCurrentLocation());
+ PositionRule oldRule = screenBuilder.getPositionRule(selectedWidget.getInternalID());
+ if (oldRule == null) oldRule = PositionRule.DEFAULT;
+ int relativeX = selectedWidget.getX() - selectedOriginalPos.x();
+ int relativeY = selectedWidget.getY() - selectedOriginalPos.y();
+ screenBuilder.setPositionRule(selectedWidget.getInternalID(), new PositionRule(
+ oldRule.parent(),
+ oldRule.parentPoint(),
+ oldRule.thisPoint(),
+ oldRule.relativeX() + relativeX,
+ oldRule.relativeY() + relativeY));
+ updateWidgets();
}
+
selectedWidget = hoveredWidget;
selectedOriginalPos = null;
super.onRelease(mouseX, mouseY);
@@ -251,7 +327,35 @@ public class PreviewTab implements Tab {
@Override
public boolean mouseClicked(double mouseX, double mouseY, int button) {
- if (selectedWidget != null) {
+ ScreenBuilder screenBuilder = ScreenMaster.getScreenBuilder(parent.getCurrentLocation());
+ if (pickParent && selectedWidget != null && !selectedWidget.equals(hoveredWidget)) {
+ PositionRule oldRule = screenBuilder.getPositionRule(selectedWidget.getInternalID());
+ if (oldRule == null) oldRule = PositionRule.DEFAULT;
+
+ int thisAnchorX = (int) (selectedWidget.getX() + oldRule.thisPoint().horizontalPoint().getPercentage() * selectedWidget.getWidth());
+ int thisAnchorY = (int) (selectedWidget.getY() + oldRule.thisPoint().verticalPoint().getPercentage() * selectedWidget.getHeight());
+
+ int otherAnchorX = hoveredWidget == null ? 0 : hoveredWidget.getX();
+ int otherAnchorY = hoveredWidget == null ? 0 : hoveredWidget.getY();
+
+ PositionRule newRule = new PositionRule(
+ hoveredWidget == null ? "screen" : hoveredWidget.getInternalID(),
+ PositionRule.Point.DEFAULT,
+ oldRule.thisPoint(),
+ thisAnchorX - otherAnchorX,
+ thisAnchorY - otherAnchorY
+ );
+ screenBuilder.setPositionRule(selectedWidget.getInternalID(), newRule);
+ updateWidgets();
+ PreviewTab.this.onHudWidgetSelected(selectedWidget);
+ return true;
+ }
+
+ double localMouseX = (mouseX - getX()) / ratio;
+ double localMouseY = (mouseY - getY()) / ratio;
+
+ if (selectedWidget != null && selectedWidget.isMouseOver(localMouseX, localMouseY) &&
+ screenBuilder.getPositionRule(selectedWidget.getInternalID()) != null) {
selectedOriginalPos = new ScreenPos(selectedWidget.getX(), selectedWidget.getY());
}
return this.active && this.visible && isMouseOver(mouseX, mouseY);
@@ -312,8 +416,92 @@ public class PreviewTab implements Tab {
widgets.clear();
}
- boolean addWidget(ClickableWidget clickableWidget) {
- return widgets.add(clickableWidget);
+ void addWidget(ClickableWidget clickableWidget) {
+ widgets.add(clickableWidget);
}
}
+
+ private class AnchorSelectionWidget extends ClickableWidget {
+
+ private final boolean other;
+ private @Nullable PositionRule.Point hoveredPoint = null;
+
+ public AnchorSelectionWidget(int width, Text text, boolean other) {
+ super(0, 0, width, 40, text);
+ this.other = other;
+ }
+
+ @Override
+ protected void renderWidget(DrawContext context, int mouseX, int mouseY, float delta) {
+ hoveredPoint = null;
+ context.drawText(client.textRenderer, getMessage(), getX(), getY(), Colors.WHITE, true);
+ context.getMatrices().push();
+ context.getMatrices().translate(getX(), getY() + 10, 0.f);
+ // Rectangle thing
+ int x = getWidth() / 6;
+ int w = (int) (4 * getWidth() / 6f);
+ int y = 5; // 30 / 6
+ int h = 20;
+
+ context.drawBorder(x, y + 1, w, h, Colors.WHITE);
+ for (int i = 0; i < 3; i++) {
+ for (int j = 0; j < 3; j++) {
+ int squareX = x + (i * getWidth()) / 3;
+ int squareY = y + (j * 30) / 3;
+ boolean selectedAnchor = false;
+ if (previewWidget.selectedWidget != null) {
+ String internalID = previewWidget.selectedWidget.getInternalID();
+ PositionRule positionRule = ScreenMaster.getScreenBuilder(parent.getCurrentLocation()).getPositionRule(internalID);
+ if (positionRule != null) {
+ PositionRule.Point point = other ? positionRule.parentPoint() : positionRule.thisPoint();
+ selectedAnchor = point.horizontalPoint().ordinal() == i && point.verticalPoint().ordinal() == j;
+ }
+ }
+
+ boolean hoveredAnchor = mouseX >= getX() + i * getWidth()/3 &&
+ mouseX < getX() + (i + 1) * getWidth() / 3 &&
+ mouseY >= getY() + 10 + j * 10 &&
+ mouseY < getY() + 10 + (j + 1) * 10;
+
+ if (hoveredAnchor) {
+ PositionRule.VerticalPoint[] verticalPoints = PositionRule.VerticalPoint.values();
+ PositionRule.HorizontalPoint[] horizontalPoints = PositionRule.HorizontalPoint.values();
+ hoveredPoint = new PositionRule.Point(verticalPoints[j], horizontalPoints[i]);
+ }
+
+ context.fill(squareX - 1, squareY - 1, squareX + 2, squareY + 2, hoveredAnchor ? Colors.RED : selectedAnchor ? Colors.YELLOW : Colors.WHITE);
+ }
+ }
+ context.getMatrices().pop();
+ }
+
+ @Override
+ public void onClick(double mouseX, double mouseY) {
+ if (hoveredPoint != null && previewWidget.selectedWidget != null) {
+ ScreenBuilder screenBuilder = ScreenMaster.getScreenBuilder(parent.getCurrentLocation());
+ String internalID = previewWidget.selectedWidget.getInternalID();
+ PositionRule oldRule = screenBuilder.getPositionRule(internalID);
+ if (oldRule == null) oldRule = PositionRule.DEFAULT;
+ if (other) {
+ screenBuilder.setPositionRule(internalID, new PositionRule(
+ oldRule.parent(),
+ hoveredPoint,
+ oldRule.thisPoint(),
+ oldRule.relativeX(),
+ oldRule.relativeY()));
+ } else {
+ screenBuilder.setPositionRule(internalID, new PositionRule(
+ oldRule.parent(),
+ oldRule.parentPoint(),
+ hoveredPoint,
+ oldRule.relativeX(),
+ oldRule.relativeY()));
+ }
+ }
+ updateWidgets();
+ }
+
+ @Override
+ protected void appendClickableNarrations(NarrationMessageBuilder builder) {}
+ }
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/WidgetsConfigurationScreen.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/WidgetsConfigurationScreen.java
index b9edcc5c..157be8fe 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/WidgetsConfigurationScreen.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/WidgetsConfigurationScreen.java
@@ -69,8 +69,9 @@ public class WidgetsConfigurationScreen extends Screen implements ScreenHandlerL
public WidgetsConfigurationScreen(GenericContainerScreenHandler handler, String titleLowercase) {
super(Text.literal("Widgets Configuration"));
this.handler = handler;
- handler.addListener(this);
this.titleLowercase = titleLowercase;
+ this.handler.addListener(this);
+ parseLocation();
}
@Override
@@ -102,6 +103,11 @@ public class WidgetsConfigurationScreen extends Screen implements ScreenHandlerL
handler = newHandler;
handler.addListener(this);
this.titleLowercase = titleLowercase;
+ parseLocation();
+ widgetsOrderingTab.updateHandler(handler);
+ }
+
+ private void parseLocation() {
String trim = this.titleLowercase
.replace("widgets in", "")
.replace("widgets on", "")
@@ -110,10 +116,10 @@ public class WidgetsConfigurationScreen extends Screen implements ScreenHandlerL
if (nameToLocation.containsKey(trim)) {
currentLocation = nameToLocation.get(trim);
} else {
- currentLocation = Utils.getLocation();
+ //currentLocation = Utils.getLocation();
LOGGER.warn("[Skyblocker] Couldn't find location for {} (trimmed: {})", this.titleLowercase, trim);
}
- widgetsOrderingTab.updateHandler(handler);
+ System.out.println("Curent location: " + currentLocation);
}
public GenericContainerScreenHandler getHandler() {
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/ScreenBuilder.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/ScreenBuilder.java
index c9ea084b..f4865cdd 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/ScreenBuilder.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/ScreenBuilder.java
@@ -6,17 +6,12 @@ import java.util.function.BiFunction;
import com.google.gson.JsonObject;
import de.hysky.skyblocker.skyblock.tabhud.screenbuilder.pipeline.*;
import de.hysky.skyblocker.skyblock.tabhud.util.PlayerListMgr;
-import de.hysky.skyblocker.skyblock.tabhud.util.ScreenConst;
import de.hysky.skyblocker.skyblock.tabhud.widget.*;
import de.hysky.skyblocker.utils.Location;
-import de.hysky.skyblocker.utils.Utils;
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
-import it.unimi.dsi.fastutil.objects.ObjectIntMutablePair;
-import it.unimi.dsi.fastutil.objects.ObjectIntPair;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.util.Colors;
-import net.minecraft.util.Identifier;
import org.jetbrains.annotations.Nullable;
public class ScreenBuilder {
@@ -179,7 +174,7 @@ public class ScreenBuilder {
WidgetPositioner newPositioner = DefaultPositioner.CENTERED.getNewPositioner(screenW, screenH);
for (HudWidget widget : ScreenMaster.widgetInstances.values()) {
- if (widget.shouldRender(location)) {
+ if (widget.shouldRender(location)) { // TabHudWidget has this at false
hudScreen.add(widget);
widget.update();
widget.setPositioned(false);
@@ -189,9 +184,10 @@ public class ScreenBuilder {
// TODO check things and stuff
mainTabScreen.addAll(PlayerListMgr.tabWidgetsToShow);
+ System.out.println(positioning);
// Auto positioning
for (HudWidget widget : mainTabScreen) {
- System.out.println(widget.getInternalID());
+
if (getPositionRule(widget.getInternalID()) != null) {
widget.setPositioned(false);
} else {
@@ -219,16 +215,16 @@ public class ScreenBuilder {
}
}
- public void renderWidgets(DrawContext context, Layer layer) {
- List<HudWidget> widgetsToRender = getHudWidgets(layer);
+ public void renderWidgets(DrawContext context, ScreenLayer screenLayer) {
+ List<HudWidget> widgetsToRender = getHudWidgets(screenLayer);
for (HudWidget widget : widgetsToRender) {
widget.render(context);
}
}
- public List<HudWidget> getHudWidgets(Layer layer) {
- return switch (layer) {
+ public List<HudWidget> getHudWidgets(ScreenLayer screenLayer) {
+ return switch (screenLayer) {
case MAIN_TAB -> mainTabScreen;
case SECONDARY_TAB -> secondaryTabScreen;
case HUD -> hudScreen;
@@ -253,10 +249,10 @@ public class ScreenBuilder {
System.out.println(location);
}
- renderWidgets(context, Layer.MAIN_TAB);
+ renderWidgets(context, ScreenLayer.MAIN_TAB);
}
- public enum Layer {
+ public enum ScreenLayer {
MAIN_TAB,
SECONDARY_TAB,
HUD
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/HudWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/HudWidget.java
index 3ce84f6f..1dde94c2 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/HudWidget.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/HudWidget.java
@@ -304,6 +304,10 @@ public abstract class HudWidget implements Element, Widget {
return internalID;
}
+ public String getNiceName() {
+ return getInternalID();
+ }
+
private boolean positioned = false;
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/TabHudWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/TabHudWidget.java
index dadfbcdd..ec05c843 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/TabHudWidget.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/TabHudWidget.java
@@ -23,6 +23,11 @@ public abstract class TabHudWidget extends HudWidget {
}
@Override
+ public String getNiceName() {
+ return getHypixelWidgetName();
+ }
+
+ @Override
public void updateContent() {
cachedComponents.forEach(super::addComponent);
}