aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de
diff options
context:
space:
mode:
authorviciscat <51047087+viciscat@users.noreply.github.com>2024-07-02 02:22:34 +0200
committerviciscat <51047087+viciscat@users.noreply.github.com>2024-12-12 18:19:05 +0100
commitdffe1da305b3e18dab6777b70ee6954d63899490 (patch)
tree79328f105f8a90b5ca9e6509fefd306fc3d96688 /src/main/java/de
parentce246cfa2b15be67e10fbaf68970e5615a30dfe8 (diff)
downloadSkyblocker-dffe1da305b3e18dab6777b70ee6954d63899490.tar.gz
Skyblocker-dffe1da305b3e18dab6777b70ee6954d63899490.tar.bz2
Skyblocker-dffe1da305b3e18dab6777b70ee6954d63899490.zip
configurable default positioning and bug fix
Diffstat (limited to 'src/main/java/de')
-rw-r--r--src/main/java/de/hysky/skyblocker/config/categories/UIAndVisualsCategory.java9
-rw-r--r--src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java4
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/WidgetsOrderingTab.java5
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/ScreenBuilder.java5
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/pipeline/TopAlignedWidgetPositioner.java5
5 files changed, 21 insertions, 7 deletions
diff --git a/src/main/java/de/hysky/skyblocker/config/categories/UIAndVisualsCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/UIAndVisualsCategory.java
index d4f39346..97bf40a1 100644
--- a/src/main/java/de/hysky/skyblocker/config/categories/UIAndVisualsCategory.java
+++ b/src/main/java/de/hysky/skyblocker/config/categories/UIAndVisualsCategory.java
@@ -3,6 +3,7 @@ package de.hysky.skyblocker.config.categories;
import de.hysky.skyblocker.config.ConfigUtils;
import de.hysky.skyblocker.config.SkyblockerConfig;
import de.hysky.skyblocker.skyblock.fancybars.StatusBarsConfigScreen;
+import de.hysky.skyblocker.skyblock.tabhud.screenbuilder.ScreenBuilder;
import de.hysky.skyblocker.skyblock.waypoint.WaypointsScreen;
import de.hysky.skyblocker.utils.render.title.TitleContainerConfigScreen;
import de.hysky.skyblocker.config.configs.UIAndVisualsConfig;
@@ -201,6 +202,14 @@ public class UIAndVisualsCategory {
() -> config.uiAndVisuals.tabHud.effectsFromFooter,
newValue -> config.uiAndVisuals.tabHud.effectsFromFooter = newValue)
.build())
+ .option(Option.<ScreenBuilder.DefaultPositioner>createBuilder()
+ .name(Text.literal("Default positioning behavior"))
+ .binding(defaults.uiAndVisuals.tabHud.defaultPositioning,
+ () -> config.uiAndVisuals.tabHud.defaultPositioning,
+ newValue -> config.uiAndVisuals.tabHud.defaultPositioning = newValue)
+ .controller(ConfigUtils::createEnumCyclingListController)
+ .build()
+ )
// TODO Decide what to do with these options
.option(Option.<Boolean>createBuilder()
.name(Text.translatable("skyblocker.config.uiAndVisuals.tabHud.plainPlayerNames"))
diff --git a/src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java b/src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java
index 2982804b..95738542 100644
--- a/src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java
+++ b/src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java
@@ -1,5 +1,6 @@
package de.hysky.skyblocker.config.configs;
+import de.hysky.skyblocker.skyblock.tabhud.screenbuilder.ScreenBuilder;
import de.hysky.skyblocker.utils.waypoint.Waypoint;
import dev.isxander.yacl3.config.v2.api.SerialEntry;
import net.minecraft.client.resource.language.I18n;
@@ -168,6 +169,9 @@ public class UIAndVisualsConfig {
public boolean plainPlayerNames = false;
@SerialEntry
+ public ScreenBuilder.DefaultPositioner defaultPositioning = ScreenBuilder.DefaultPositioner.TOP;
+
+ @SerialEntry
public NameSorting nameSorting = NameSorting.DEFAULT;
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/WidgetsOrderingTab.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/WidgetsOrderingTab.java
index a1b50bd7..74943e23 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/WidgetsOrderingTab.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/WidgetsOrderingTab.java
@@ -2,6 +2,7 @@ package de.hysky.skyblocker.skyblock.tabhud.config;
import de.hysky.skyblocker.skyblock.tabhud.config.entries.*;
import de.hysky.skyblocker.utils.ItemUtils;
+import de.hysky.skyblocker.utils.scheduler.Scheduler;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.ScreenRect;
import net.minecraft.client.gui.tab.Tab;
@@ -13,9 +14,7 @@ import net.minecraft.item.Items;
import net.minecraft.screen.GenericContainerScreenHandler;
import net.minecraft.screen.slot.Slot;
import net.minecraft.screen.slot.SlotActionType;
-import net.minecraft.text.MutableText;
import net.minecraft.text.Text;
-import net.minecraft.util.Formatting;
import org.jetbrains.annotations.Nullable;
import java.util.List;
@@ -77,6 +76,8 @@ public class WidgetsOrderingTab implements Tab {
if (waitingForServer) return;
if (client.interactionManager == null || this.client.player == null) return;
client.interactionManager.clickSlot(handler.syncId, slot, button, SlotActionType.QUICK_MOVE, this.client.player);
+ // When moving a widget down it gets stuck sometimes
+ Scheduler.INSTANCE.schedule(() -> this.waitingForServer = false, 1);
waitingForServer = true;
}
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 163e9bec..2369d37f 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
@@ -5,6 +5,7 @@ import java.util.function.BiConsumer;
import java.util.function.BiFunction;
import com.google.gson.JsonObject;
+import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.skyblock.tabhud.screenbuilder.pipeline.*;
import de.hysky.skyblocker.skyblock.tabhud.util.PlayerListMgr;
import de.hysky.skyblocker.skyblock.tabhud.widget.*;
@@ -173,7 +174,7 @@ public class ScreenBuilder {
mainTabScreen.clear();
secondaryTabScreen.clear();
- WidgetPositioner newPositioner = DefaultPositioner.CENTERED.getNewPositioner(screenW, screenH);
+ WidgetPositioner newPositioner = SkyblockerConfigManager.get().uiAndVisuals.tabHud.defaultPositioning.getNewPositioner(screenW, screenH);
for (HudWidget widget : ScreenMaster.widgetInstances.values()) {
if (widget.shouldRender(location)) { // TabHudWidget has this at false
@@ -275,7 +276,7 @@ public class ScreenBuilder {
- private enum DefaultPositioner {
+ public enum DefaultPositioner {
TOP(TopAlignedWidgetPositioner::new),
CENTERED(CenteredWidgetPositioner::new);
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/pipeline/TopAlignedWidgetPositioner.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/pipeline/TopAlignedWidgetPositioner.java
index 8e033f2a..6c7452c1 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/pipeline/TopAlignedWidgetPositioner.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/pipeline/TopAlignedWidgetPositioner.java
@@ -8,7 +8,6 @@ import java.util.List;
public class TopAlignedWidgetPositioner extends WidgetPositioner {
- private static final int MAX_COLUMN_HEIGHT = 300;
private static final int START_Y = 20;
private int totalWidth = 0;
@@ -26,7 +25,7 @@ public class TopAlignedWidgetPositioner extends WidgetPositioner {
public void positionWidget(HudWidget hudWidget) {
widgets.add(hudWidget);
- if (currentY + hudWidget.getHeight() > MAX_COLUMN_HEIGHT) {
+ if (currentY + hudWidget.getHeight() > screenHeight * 0.75f) {
totalWidth += currentWidth + ScreenConst.WIDGET_PAD;
currentY = START_Y;
currentWidth = 0;
@@ -39,7 +38,7 @@ public class TopAlignedWidgetPositioner extends WidgetPositioner {
@Override
public void finalizePositioning() {
- int off = (screenWidth - totalWidth) / 2;
+ int off = (screenWidth - totalWidth - currentWidth) / 2;
for (HudWidget widget : widgets) {
widget.setX(widget.getX() + off);
}