aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorviciscat <51047087+viciscat@users.noreply.github.com>2024-05-09 23:56:54 +0200
committerviciscat <51047087+viciscat@users.noreply.github.com>2024-12-12 18:19:04 +0100
commitac73162054a4aba93c96b4039f2cf71b1ce4dc79 (patch)
tree31f0dabeb81659eec7a884f8bf0fe9ba0ad96b77 /src/main/java
parent3133b406b743d07fdd42ecf428a22125d1437770 (diff)
downloadSkyblocker-ac73162054a4aba93c96b4039f2cf71b1ce4dc79.tar.gz
Skyblocker-ac73162054a4aba93c96b4039f2cf71b1ce4dc79.tar.bz2
Skyblocker-ac73162054a4aba93c96b4039f2cf71b1ce4dc79.zip
made it work!
yes I deleted a lot of files also created the config screen class or whatever
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/de/hysky/skyblocker/mixins/GenericContainerScreenHandlerMixin.java1
-rw-r--r--src/main/java/de/hysky/skyblocker/mixins/PlayerListHudMixin.java2
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/auction/AuctionHouseScreenHandler.java1
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/end/EndHudWidget.java2
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/garden/FarmingHudWidget.java2
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/WidgetsConfiguration.java29
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/ScreenBuilder.java95
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/ScreenMaster.java41
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/util/PlayerListMgr.java62
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/ElectionWidget.java29
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/GardenSkillsWidget.java108
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/GardenVisitorsWidget.java31
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/GuestServerWidget.java30
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/IslandGuestsWidget.java47
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/IslandOwnersWidget.java66
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/IslandSelfWidget.java43
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/IslandServerWidget.java32
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/JacobsContestWidget.java45
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/MinionWidget.java2
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/PlayerListWidget.java71
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/PowderWidget.java20
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/ProfileWidget.java24
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/QuestWidget.java33
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/ReputationWidget.java69
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/ServerWidget.java1
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/SpidersDenServerWidget.java87
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/TabHudWidget.java2
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/TrapperWidget.java25
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/UpgradeWidget.java51
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/VolcanoWidget.java59
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/hud/HudCommsWidget.java2
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/hud/HudPowderWidget.java2
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/rift/AdvertisementWidget.java35
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/rift/GoodToKnowWidget.java69
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/rift/RiftProfileWidget.java21
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/rift/RiftProgressWidget.java119
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/rift/RiftServerInfoWidget.java27
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/rift/RiftStatsWidget.java43
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/rift/ShenWidget.java22
39 files changed, 251 insertions, 1199 deletions
diff --git a/src/main/java/de/hysky/skyblocker/mixins/GenericContainerScreenHandlerMixin.java b/src/main/java/de/hysky/skyblocker/mixins/GenericContainerScreenHandlerMixin.java
index d3a24308..e671406a 100644
--- a/src/main/java/de/hysky/skyblocker/mixins/GenericContainerScreenHandlerMixin.java
+++ b/src/main/java/de/hysky/skyblocker/mixins/GenericContainerScreenHandlerMixin.java
@@ -42,6 +42,7 @@ public abstract class GenericContainerScreenHandlerMixin extends ScreenHandler {
}
case null, default -> {}
}
+ onContentChanged(slots.get(slot).inventory); // this should be default behavior
}
@Override
diff --git a/src/main/java/de/hysky/skyblocker/mixins/PlayerListHudMixin.java b/src/main/java/de/hysky/skyblocker/mixins/PlayerListHudMixin.java
index 2c7fde47..ce04268a 100644
--- a/src/main/java/de/hysky/skyblocker/mixins/PlayerListHudMixin.java
+++ b/src/main/java/de/hysky/skyblocker/mixins/PlayerListHudMixin.java
@@ -29,7 +29,7 @@ public class PlayerListHudMixin {
@Inject(at = @At("HEAD"), method = "render", cancellable = true)
public void skyblocker$renderTabHud(CallbackInfo info, @Local(argsOnly = true) DrawContext context, @Local(argsOnly = true) int w) {
- if (!Utils.isInDungeons() || !SkyblockerConfigManager.get().uiAndVisuals.tabHud.tabHudEnabled || TabHud.defaultTgl.isPressed()) {
+ if (!Utils.isOnSkyblock() || !SkyblockerConfigManager.get().uiAndVisuals.tabHud.tabHudEnabled || TabHud.defaultTgl.isPressed()) {
return;
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/auction/AuctionHouseScreenHandler.java b/src/main/java/de/hysky/skyblocker/skyblock/auction/AuctionHouseScreenHandler.java
index 4c4e1c0f..cad56cfa 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/auction/AuctionHouseScreenHandler.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/auction/AuctionHouseScreenHandler.java
@@ -53,6 +53,5 @@ public class AuctionHouseScreenHandler extends GenericContainerScreenHandler {
@Override
public void setStackInSlot(int slot, int revision, ItemStack stack) {
super.setStackInSlot(slot, revision, stack);
- onContentChanged(slots.get(slot).inventory);
}
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/end/EndHudWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/end/EndHudWidget.java
index 56a41e3d..33a2980d 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/end/EndHudWidget.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/end/EndHudWidget.java
@@ -37,7 +37,7 @@ public class EndHudWidget extends HudWidget {
}
public EndHudWidget(MutableText title, Integer colorValue) {
- super(title, colorValue);
+ super(title, colorValue, "hud_end");
this.setX(5);
this.setY(5);
this.update();
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/garden/FarmingHudWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/garden/FarmingHudWidget.java
index 1fdcdac1..3bf72336 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/garden/FarmingHudWidget.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/garden/FarmingHudWidget.java
@@ -51,7 +51,7 @@ public class FarmingHudWidget extends HudWidget {
private final MinecraftClient client = MinecraftClient.getInstance();
public FarmingHudWidget() {
- super(TITLE, Formatting.YELLOW.getColorValue());
+ super(TITLE, Formatting.YELLOW.getColorValue(), "hud_farming");
setX(SkyblockerConfigManager.get().farming.garden.farmingHud.x);
setY(SkyblockerConfigManager.get().farming.garden.farmingHud.y);
update();
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/WidgetsConfiguration.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/WidgetsConfiguration.java
new file mode 100644
index 00000000..5fcde767
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/WidgetsConfiguration.java
@@ -0,0 +1,29 @@
+package de.hysky.skyblocker.skyblock.tabhud.config;
+
+import net.minecraft.client.gui.screen.Screen;
+import net.minecraft.item.ItemStack;
+import net.minecraft.screen.GenericContainerScreenHandler;
+import net.minecraft.screen.ScreenHandler;
+import net.minecraft.screen.ScreenHandlerListener;
+import net.minecraft.text.Text;
+
+public class WidgetsConfiguration extends Screen implements ScreenHandlerListener {
+
+ private GenericContainerScreenHandler handler;
+
+ protected WidgetsConfiguration(GenericContainerScreenHandler handler) {
+ super(Text.literal("Widgets Configuration"));
+ this.handler = handler;
+ }
+
+ public void updateHandler(GenericContainerScreenHandler newHandler) {
+ handler = newHandler;
+ }
+
+ @Override
+ public void onSlotUpdate(ScreenHandler handler, int slotId, ItemStack stack) {
+ }
+
+ @Override
+ public void onPropertyUpdate(ScreenHandler handler, int property, int value) {}
+}
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 78118e4c..7290ecea 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
@@ -3,10 +3,7 @@ package de.hysky.skyblocker.skyblock.tabhud.screenbuilder;
import java.io.BufferedReader;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.NoSuchElementException;
+import java.util.*;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
@@ -22,9 +19,12 @@ import de.hysky.skyblocker.skyblock.tabhud.screenbuilder.pipeline.PipelineStage;
import de.hysky.skyblocker.skyblock.tabhud.screenbuilder.pipeline.PlaceStage;
import de.hysky.skyblocker.skyblock.tabhud.screenbuilder.pipeline.StackStage;
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.client.util.math.MatrixStack;
+import net.minecraft.util.Colors;
import net.minecraft.util.Identifier;
public class ScreenBuilder {
@@ -85,9 +85,6 @@ public class ScreenBuilder {
// do widgets that require args the normal way
JsonElement arg;
switch (name) {
- case "EventWidget" -> {
- return new EventWidget(widget.get("inGarden").getAsBoolean());
- }
case "DungeonPlayerWidget" -> {
return new DungeonPlayerWidget(widget.get("player").getAsInt());
}
@@ -168,15 +165,11 @@ public class ScreenBuilder {
private static int totalWidth = 0;
- /**
- * Run the pipeline to build a Screen
- */
- public void run(DrawContext context, int screenW, int screenH) {
-
+ private void topAligned(MatrixStack matrices, int screenW, int screenH) {
if (positionsNeedsUpdating) {
positionsNeedsUpdating = false;
- final int maxY = 200;
+ final int maxY = 300;
final int startY = 20;
totalWidth = 0;
@@ -185,6 +178,7 @@ public class ScreenBuilder {
int currentY = startY;
for (TabHudWidget tabHudWidget : PlayerListMgr.widgetsToShow) {
if (positioning.getOrDefault(tabHudWidget.getInternalID(), false)) continue;
+ tabHudWidget.update();
if (currentY + tabHudWidget.getHeight() > maxY) {
totalWidth += currentWidth + ScreenConst.WIDGET_PAD;
currentY = startY;
@@ -196,11 +190,82 @@ public class ScreenBuilder {
}
totalWidth += currentWidth;
}
+ matrices.translate((float) (screenW - totalWidth)/2, 0, 0);
+ }
+
+ private void centered(MatrixStack matrices, int screenW, int screenH) {
+ if (positionsNeedsUpdating) {
+ positionsNeedsUpdating = false;
+ totalWidth = 0;
+
+ final int maxY = Math.min(400, (int) (screenH*0.9f));
+ // each column is a pair of a list of widgets for the rows and an int for the width of the column
+ List<ObjectIntPair<List<TabHudWidget>>> columns = new ArrayList<>();
+ columns.add(new ObjectIntMutablePair<>(new ArrayList<>(), 0));
+
+ int currentY = 0;
+ int currentWidth = 0;
+
+ for (TabHudWidget tabHudWidget : PlayerListMgr.widgetsToShow) {
+ if (positioning.getOrDefault(tabHudWidget.getInternalID(), false)) continue;
+ tabHudWidget.update();
+ if (currentY + tabHudWidget.getHeight() > maxY) {
+ currentY = 0;
+ currentWidth = 0;
+ columns.add(new ObjectIntMutablePair<>(new ArrayList<>(), 0));
+ }
+ tabHudWidget.setY(currentY);
+ currentY += tabHudWidget.getHeight() + ScreenConst.WIDGET_PAD;
+ currentWidth = Math.max(currentWidth, tabHudWidget.getWidth());
+ columns.getLast().right(currentWidth);
+ columns.getLast().left().add(tabHudWidget);
+ }
+ for (int i = 0; i < columns.size(); i++) {
+ ObjectIntPair<List<TabHudWidget>> listObjectIntPair = columns.get(i);
+ int columnWidth = listObjectIntPair.rightInt();
+ List<TabHudWidget> column = listObjectIntPair.left();
+
+ // calculate the height of the column
+ int height = (column.size() - 1) * ScreenConst.WIDGET_PAD;
+ for (TabHudWidget tabHudWidget : column) {
+ height += tabHudWidget.getHeight();
+ }
+ // set x and y of the widgets!
+ int offset = (screenH - height) / 2;
+ for (TabHudWidget tabHudWidget : column) {
+ tabHudWidget.setY(tabHudWidget.getY() + offset);
+ if (i < columns.size() / 2) {
+ tabHudWidget.setX(totalWidth + columnWidth - tabHudWidget.getWidth());
+ } else {
+ tabHudWidget.setX(totalWidth);
+ }
+ }
+ totalWidth += columnWidth + ScreenConst.WIDGET_PAD;
+ }
+ }
+
+ matrices.translate((float) (screenW - totalWidth)/2, 0, 0);
+ }
+
+ /**
+ * Run the pipeline to build a Screen
+ */
+ public void run(DrawContext context, int screenW, int screenH) {
+
+ int i = 0;
+ for (TabHudWidget value : PlayerListMgr.widgetInstances.values()) {
+ context.drawText(MinecraftClient.getInstance().textRenderer, value.getHypixelWidgetName(), 0, i, PlayerListMgr.widgetsToShow.contains(value) ? Colors.LIGHT_YELLOW : -1, true);
+ i+=9;
+ }
+
+
MatrixStack matrices = context.getMatrices();
matrices.push();
- matrices.translate((float) (screenW - totalWidth)/2, 0, 0);
- for (HudWidget w : instances) {
+
+ centered(matrices, screenW, screenH);
+
+ for (HudWidget w : PlayerListMgr.widgetsToShow) {
w.render(context);
}
matrices.pop();
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/ScreenMaster.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/ScreenMaster.java
index 5591ea37..258a831e 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/ScreenMaster.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/ScreenMaster.java
@@ -10,11 +10,13 @@ import de.hysky.skyblocker.skyblock.tabhud.util.PlayerListMgr;
import de.hysky.skyblocker.skyblock.tabhud.util.PlayerLocator;
import de.hysky.skyblocker.skyblock.tabhud.widget.HudWidget;
import de.hysky.skyblocker.skyblock.tabhud.widget.TabHudWidget;
+import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientLifecycleEvents;
import net.fabricmc.fabric.api.resource.ResourceManagerHelper;
import net.fabricmc.fabric.api.resource.ResourcePackActivationType;
import net.fabricmc.fabric.api.resource.SimpleSynchronousResourceReloadListener;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.DrawContext;
+import net.minecraft.client.main.Main;
import net.minecraft.resource.Resource;
import net.minecraft.resource.ResourceManager;
import net.minecraft.resource.ResourceType;
@@ -86,21 +88,25 @@ public class ScreenMaster {
@Init
public static void init() {
- try {
- ClassPath.from(TabHudWidget.class.getClassLoader()).getTopLevelClasses("de.hysky.skyblocker.skyblock.tabhud.widget").iterator().forEachRemaining(classInfo -> {
- Class<?> load = classInfo.load();
- if (!load.getSuperclass().equals(TabHudWidget.class)) return;
- try {
- TabHudWidget tabHudWidget = (TabHudWidget) load.getDeclaredConstructor().newInstance();
- PlayerListMgr.widgetInstances.put(tabHudWidget.getHypixelWidgetName(), tabHudWidget);
- } catch (NoSuchMethodException | InvocationTargetException | InstantiationException | IllegalAccessException e) {
- LOGGER.error("[Skyblocker] Failed to load {} hud widget", classInfo.getName(), e);
- }
-
- });
- } catch (Exception e) {
- LOGGER.error("[Skyblocker] Failed to get instances of hud widgets", e);
- }
+ ClientLifecycleEvents.CLIENT_STARTED.register(client -> {
+ System.out.println(Object.class);
+ try {
+ ClassPath.from(TabHudWidget.class.getClassLoader()).getTopLevelClasses("de.hysky.skyblocker.skyblock.tabhud.widget").iterator().forEachRemaining(classInfo -> {
+ try {
+ Class<?> load = Class.forName(classInfo.getName());
+ if (!load.getSuperclass().equals(TabHudWidget.class)) return;
+ TabHudWidget tabHudWidget = (TabHudWidget) load.getDeclaredConstructor().newInstance();
+ PlayerListMgr.widgetInstances.put(tabHudWidget.getHypixelWidgetName(), tabHudWidget);
+ } catch (NoSuchMethodException | InvocationTargetException | InstantiationException | IllegalAccessException | ClassNotFoundException e) {
+ LOGGER.error("[Skyblocker] Failed to load {} hud widget", classInfo.getName(), e);
+ }
+
+ });
+ } catch (Exception e) {
+ LOGGER.error("[Skyblocker] Failed to get instances of hud widgets", e);
+ }
+ });
+
// WHY MUST IT ALWAYS BE SUCH NESTED GARBAGE MINECRAFT KEEP THAT IN DFU FFS
@@ -139,8 +145,7 @@ public class ScreenMaster {
}
} catch (Exception ex) {
- throw new IllegalStateException(
- "Rejected this resource pack. Reason: " + ex.getMessage());
+ LOGGER.error("it borked", ex);
}
}
@@ -156,7 +161,7 @@ public class ScreenMaster {
}
}
if (excnt > 0) {
- throw new IllegalStateException("This screen definition isn't valid, see above");
+ LOGGER.warn("shit went down");
}
}
});
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/util/PlayerListMgr.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/util/PlayerListMgr.java
index b8f0cc42..8832e6f0 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/util/PlayerListMgr.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/util/PlayerListMgr.java
@@ -10,7 +10,9 @@ import it.unimi.dsi.fastutil.Pair;
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import it.unimi.dsi.fastutil.objects.ObjectObjectMutablePair;
+import net.minecraft.text.OrderedText;
import net.minecraft.text.Style;
+import net.minecraft.util.Formatting;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -38,8 +40,8 @@ import java.util.regex.Pattern;
public class PlayerListMgr {
public static final Logger LOGGER = LoggerFactory.getLogger("Skyblocker Regex");
- private static final Pattern PLAYERS_COLUMN_PATTERN = Pattern.compile("(^|\\s)(Players \\(\\d+\\)|Island)(\\s|$)");
- private static final Pattern INFO_COLUMN_PATTERN = Pattern.compile("(^|\\s)Info(\\s|$)");
+ private static final Pattern PLAYERS_COLUMN_PATTERN = Pattern.compile("(^|\\s*)(Players \\(\\d+\\)|Island)(\\s*|$)");
+ private static final Pattern INFO_COLUMN_PATTERN = Pattern.compile("(^|\\s*)Info(\\s*|$)");
/**
* The player list in tab.
@@ -82,8 +84,9 @@ public class PlayerListMgr {
if (displayName == null) continue;
String string = displayName.getString();
- if (!playersDone) {
- // check if Players (number)
+ if (string.isBlank()) continue;
+ if (!playersDone) {
+ // check if Players (number)
if (playersColumnPredicate.test(string)) {
if (!doingPlayers) {
doingPlayers = true;
@@ -98,35 +101,54 @@ public class PlayerListMgr {
contents.clear();
continue;
}
- // add player to contents
- contents.add(displayName); // Players don't have the silly space
} else {
- if (string.isBlank()) continue;
- if (infoColumnPredicate.test(string)) continue;
+ if (infoColumnPredicate.test(string)) continue;
+ // New widget alert!!!!
if (!string.startsWith(" ")) {
if (!contents.isEmpty()) widgetsToShow.add(getTabHudWidget(hypixelWidgetName, contents));
contents.clear();
Pair<String, ? extends Text> nameAndInfo = getNameAndInfo(displayName);
hypixelWidgetName = nameAndInfo.left();
- if (!nameAndInfo.right().getString().isBlank()) contents.add(nameAndInfo.right());
+ if (!nameAndInfo.right().getString().isBlank()) contents.add(trim(nameAndInfo.right()));
continue;
}
- contents.add(removeSpace(displayName)); // remove the silly space
- }
- }
+ }
+ // Add the line to the content
+ contents.add(trim(displayName));
+ }
+ if (!contents.isEmpty()) widgetsToShow.add(getTabHudWidget(hypixelWidgetName, contents));
ScreenBuilder.positionsNeedsUpdating = true;
}
- private static Text removeSpace(Text text) {
- AtomicBoolean removed = new AtomicBoolean(false);
- MutableText out = Text.empty();
+ private static Text trim(Text text) {
+ List<Text> trimmedParts = new ArrayList<>();
+ AtomicBoolean leadingSpaceFound = new AtomicBoolean(false);
+
+ // leading spaces
text.visit((style, asString) -> {
- if (!removed.get()) {
- out.append(Text.literal(asString.substring(1)).fillStyle(style));
- removed.set(true);
- } else out.append(Text.literal(asString).fillStyle(style));
+ String trimmed = asString;
+ if (!leadingSpaceFound.get()) {
+ trimmed = trimmed.stripLeading();
+ if (!trimmed.isBlank()) leadingSpaceFound.set(true);
+ else return Optional.empty();
+ }
+ trimmedParts.add(Text.literal(trimmed).setStyle(style));
return Optional.empty();
}, Style.EMPTY);
+
+ // trailing spaces
+ for (int i = 0; i < trimmedParts.size(); i++) {
+ Text last = trimmedParts.removeLast();
+ String trimmed = last.getString().stripTrailing();
+ if (!trimmed.isBlank()) {
+ trimmedParts.add(Text.literal(trimmed).setStyle(last.getStyle()));
+ break;
+ }
+ }
+
+ MutableText out = Text.empty();
+ trimmedParts.forEach(out::append);
+
return out;
}
@@ -136,7 +158,7 @@ public class PlayerListMgr {
tabHudWidget.updateFromTab(lines);
return tabHudWidget;
} else {
- DefaultTabHudWidget defaultTabHudWidget = new DefaultTabHudWidget(hypixelWidgetName, Text.literal(hypixelWidgetName));
+ DefaultTabHudWidget defaultTabHudWidget = new DefaultTabHudWidget(hypixelWidgetName, Text.literal(hypixelWidgetName).formatted(Formatting.BOLD));
widgetInstances.put(defaultTabHudWidget.getHypixelWidgetName(), defaultTabHudWidget);
defaultTabHudWidget.updateFromTab(lines);
return defaultTabHudWidget;
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/ElectionWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/ElectionWidget.java
index 68635ee6..6aedded7 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/ElectionWidget.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/ElectionWidget.java
@@ -8,6 +8,7 @@ import java.util.regex.Pattern;
import de.hysky.skyblocker.skyblock.tabhud.util.Ico;
import de.hysky.skyblocker.skyblock.tabhud.util.PlayerListMgr;
import de.hysky.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent;
+import de.hysky.skyblocker.skyblock.tabhud.widget.component.PlainTextComponent;
import de.hysky.skyblocker.skyblock.tabhud.widget.component.ProgressComponent;
import net.minecraft.item.ItemStack;
import net.minecraft.text.MutableText;
@@ -53,7 +54,7 @@ public class ElectionWidget extends TabHudWidget {
@Override
public void updateContent(List<Text> lines) {
- String status = PlayerListMgr.strAt(76);
+ String status = lines.getFirst().getString();
if (status == null) {
this.addComponent(new IcoTextComponent());
this.addComponent(new IcoTextComponent());
@@ -67,7 +68,11 @@ public class ElectionWidget extends TabHudWidget {
IcoTextComponent over = new IcoTextComponent(Ico.BARRIER, EL_OVER);
this.addComponent(over);
- String win = PlayerListMgr.strAt(77);
+ for (int i = 1; i < lines.size(); i++) {
+ this.addComponent(new PlainTextComponent(lines.get(i)));
+ }
+
+ /*String win = PlayerListMgr.strAt(77);
if (win == null || !win.contains(": ")) {
this.addComponent(new IcoTextComponent());
} else {
@@ -78,26 +83,24 @@ public class ElectionWidget extends TabHudWidget {
}
this.addSimpleIcoText(Ico.PLAYER, "Participants:", Formatting.AQUA, 78);
- this.addSimpleIcoText(Ico.SIGN, "Year:", Formatting.LIGHT_PURPLE, 79);
+ this.addSimpleIcoText(Ico.SIGN, "Year:", Formatting.LIGHT_PURPLE, 79);*/