diff options
| author | viciscat <51047087+viciscat@users.noreply.github.com> | 2024-05-11 14:09:16 +0200 |
|---|---|---|
| committer | viciscat <51047087+viciscat@users.noreply.github.com> | 2024-12-12 18:19:04 +0100 |
| commit | 49cb5e05a35072939f76a90921b72962c478a73b (patch) | |
| tree | 9be41316f73b4b5bd3c4b7951dfa5abd2c8a5bbb /src | |
| parent | ac73162054a4aba93c96b4039f2cf71b1ce4dc79 (diff) | |
| download | Skyblocker-49cb5e05a35072939f76a90921b72962c478a73b.tar.gz Skyblocker-49cb5e05a35072939f76a90921b72962c478a73b.tar.bz2 Skyblocker-49cb5e05a35072939f76a90921b72962c478a73b.zip | |
rebase config and widgets screen progress
Diffstat (limited to 'src')
12 files changed, 513 insertions, 59 deletions
diff --git a/src/main/java/de/hysky/skyblocker/mixins/HandledScreenProviderMixin.java b/src/main/java/de/hysky/skyblocker/mixins/HandledScreenProviderMixin.java index fb292269..ac81bfec 100644 --- a/src/main/java/de/hysky/skyblocker/mixins/HandledScreenProviderMixin.java +++ b/src/main/java/de/hysky/skyblocker/mixins/HandledScreenProviderMixin.java @@ -8,6 +8,7 @@ import de.hysky.skyblocker.skyblock.auction.AuctionViewScreen; import de.hysky.skyblocker.skyblock.dungeon.partyfinder.PartyFinderScreen; import de.hysky.skyblocker.skyblock.item.SkyblockCraftingTableScreenHandler; import de.hysky.skyblocker.skyblock.item.SkyblockCraftingTableScreen; +import de.hysky.skyblocker.skyblock.tabhud.config.WidgetsConfigurationScreen; import de.hysky.skyblocker.utils.Utils; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.ingame.HandledScreens; @@ -30,7 +31,7 @@ public interface HandledScreenProviderMixin<T extends ScreenHandler> { if (player == null) return; if (!Utils.isOnSkyblock()) return; T screenHandler = type.create(id, player.getInventory()); - String nameLowercase = name.getString().toLowerCase(); + String nameLowercase = name.getString().trim().toLowerCase(); switch (screenHandler) { // Better party finder @@ -93,6 +94,16 @@ public interface HandledScreenProviderMixin<T extends ScreenHandler> { ci.cancel(); } + // Excessive widgets config + case GenericContainerScreenHandler containerScreenHandler when SkyblockerConfigManager.get().uiAndVisuals.tabHud.tabHudEnabled && (nameLowercase.startsWith("widgets in") || nameLowercase.startsWith("widgets on") || nameLowercase.equals("tablist widgets")) -> { + client.player.currentScreenHandler = containerScreenHandler; + switch (client.currentScreen) { + case WidgetsConfigurationScreen screen -> screen.updateHandler(containerScreenHandler); + case null, default -> client.setScreen(new WidgetsConfigurationScreen(containerScreenHandler)); + } + ci.cancel(); + } + case null, default -> {} } } 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 deleted file mode 100644 index 5fcde767..00000000 --- a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/WidgetsConfiguration.java +++ /dev/null @@ -1,29 +0,0 @@ -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/config/WidgetsConfigurationScreen.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/WidgetsConfigurationScreen.java new file mode 100644 index 00000000..2b76bef6 --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/WidgetsConfigurationScreen.java @@ -0,0 +1,120 @@ +package de.hysky.skyblocker.skyblock.tabhud.config; + +import de.hysky.skyblocker.utils.ItemUtils; +import net.minecraft.client.gui.ScreenRect; +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.gui.screen.world.CreateWorldScreen; +import net.minecraft.client.gui.tab.TabManager; +import net.minecraft.client.gui.widget.TabNavigationWidget; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.screen.GenericContainerScreenHandler; +import net.minecraft.screen.ScreenHandler; +import net.minecraft.screen.ScreenHandlerListener; +import net.minecraft.text.Text; +import org.jetbrains.annotations.Nullable; + +import java.util.List; + +public class WidgetsConfigurationScreen extends Screen implements ScreenHandlerListener { + + private GenericContainerScreenHandler handler; + + // Tabs and stuff + private final TabManager tabManager = new TabManager(this::addDrawableChild, this::remove); + @Nullable + private TabNavigationWidget tabNavigation; + private WidgetsOrderingTab widgetsOrderingTab; + + private boolean switchingToPopup = false; + + public WidgetsConfigurationScreen(GenericContainerScreenHandler handler) { + super(Text.literal("Widgets Configuration")); + this.handler = handler; + handler.addListener(this); + } + + @Override + protected void init() { + widgetsOrderingTab = new WidgetsOrderingTab(this.client, this.handler); + this.tabNavigation = TabNavigationWidget.builder(this.tabManager, this.width) + .tabs(this.widgetsOrderingTab) + .build(); + this.tabNavigation.selectTab(0, false); + this.addDrawableChild(tabNavigation); + switchingToPopup = false; + this.initTabNavigation(); + } + + @Override + protected void initTabNavigation() { + if (this.tabNavigation != null) { + this.tabNavigation.setWidth(this.width); + this.tabNavigation.init(); + int i = this.tabNavigation.getNavigationFocus().getBottom(); + ScreenRect screenRect = new ScreenRect(0, i, this.width, this.height - i - 20 /* A bit of a footer */); + this.tabManager.setTabArea(screenRect); + } + } + + public void updateHandler(GenericContainerScreenHandler newHandler) { + handler.removeListener(this); + handler = newHandler; + handler.addListener(this); + widgetsOrderingTab.updateHandler(handler); + } + + private @Nullable ItemStack slotThirteenBacklog = null; + + @Override + public void onSlotUpdate(ScreenHandler handler, int slotId, ItemStack stack) { + if (widgetsOrderingTab == null) { + if (slotId == 13) slotThirteenBacklog = stack.copy(); + return; + } + if (slotId == 13) { + if (stack.isOf(Items.HOPPER)) { + widgetsOrderingTab.hopper(ItemUtils.getLore(stack)); + } else { + widgetsOrderingTab.hopper(null); + } + } + if (slotId > 9 && slotId < this.handler.getRows() * 9 - 9) { + widgetsOrderingTab.updateEntries(); + } + } + + @Override + public void tick() { + super.tick(); + if (slotThirteenBacklog != null && widgetsOrderingTab != null) { + widgetsOrderingTab.hopper(ItemUtils.getLore(slotThirteenBacklog)); + slotThirteenBacklog = null; + } + if (!this.client.player.isAlive() || this.client.player.isRemoved()) { + this.client.player.closeHandledScreen(); + } + } + + @Override + public void close() { + this.client.player.closeHandledScreen(); + super.close(); + } + + @Override + public void onPropertyUpdate(ScreenHandler handler, int property, int value) {} + + @Override + public void removed() { + if (!switchingToPopup && this.client != null && this.client.player != null) { + this.handler.onClosed(this.client.player); + } + handler.removeListener(this); + } + + @Override + public boolean shouldPause() { + return false; + } +} diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/WidgetsElementList.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/WidgetsElementList.java new file mode 100644 index 00000000..8836e8ba --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/WidgetsElementList.java @@ -0,0 +1,87 @@ +package de.hysky.skyblocker.skyblock.tabhud.config; + +import de.hysky.skyblocker.skyblock.tabhud.config.entries.WidgetsListEntry; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.gui.widget.ElementListWidget; +import net.minecraft.util.Identifier; +import org.lwjgl.glfw.GLFW; + +import java.util.Objects; + +public class WidgetsElementList extends ElementListWidget<WidgetsListEntry> { + + static final Identifier MOVE_UP_HIGHLIGHTED_TEXTURE = new Identifier("transferable_list/move_up_highlighted"); + static final Identifier MOVE_UP_TEXTURE = new Identifier("transferable_list/move_up"); + static final Identifier MOVE_DOWN_HIGHLIGHTED_TEXTURE = new Identifier("transferable_list/move_down_highlighted"); + static final Identifier MOVE_DOWN_TEXTURE = new Identifier("transferable_list/move_down"); + private final WidgetsOrderingTab parent; + + private int editingPosition = - 1; + + public WidgetsElementList(WidgetsOrderingTab parent, MinecraftClient minecraftClient, int width, int height, int y) { + super(minecraftClient, width, height, y, 32); + this.parent = parent; + } + + + @Override + public void clearEntries() { + super.clearEntries(); + } + + @Override + public int addEntry(WidgetsListEntry entry) { + return super.addEntry(entry); + } + + private int x, y, entryWidth, entryHeight; + + @Override + protected void renderList(DrawContext context, int mouseX, int mouseY, float delta) { + super.renderList(context, mouseX, mouseY, delta); + WidgetsListEntry hoveredEntry = getHoveredEntry(); + if (hoveredEntry != null) hoveredEntry.renderTooltip(context, x, y, entryWidth, entryHeight, mouseX, mouseY); + } + + @Override + protected void renderEntry(DrawContext context, int mouseX, int mouseY, float delta, int index, int x, int y, int entryWidth, int entryHeight) { + super.renderEntry(context, mouseX, mouseY, delta, index, x, y, entryWidth, entryHeight); + if (index == editingPosition) { + context.drawGuiTexture(MOVE_UP_TEXTURE, getRowRight() - 16, y, 32, 32); + context.drawGuiTexture(MOVE_DOWN_TEXTURE, getRowRight() - 16, y, 32, 32); + } + if (Objects.equals(getHoveredEntry(), getEntry(index))) { + this.x = x; + this.y = y; + this.entryWidth = entryWidth; + this.entryHeight = entryHeight; + } + } + + @Override + protected int getScrollbarX() { + return super.getScrollbarX() + (editingPosition != -1 ? 15 : 0); + } + + @Override + public int getRowWidth() { + return 280; + } + + public void setEditingPosition(int editingPosition) { + this.editingPosition = editingPosition; + } + + @Override + public boolean keyPressed(int keyCode, int scanCode, int modifiers) { + if (keyCode == GLFW.GLFW_KEY_UP && editingPosition != -1) { + parent.clickAndWaitForServer(13, 1); + return true; + } else if (keyCode == GLFW.GLFW_KEY_DOWN && editingPosition != -1) { + parent.clickAndWaitForServer(13, 0); + return true; + } + return super.keyPressed(keyCode, scanCode, modifiers); + } +} 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 new file mode 100644 index 00000000..258b5c68 --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/WidgetsOrderingTab.java @@ -0,0 +1,101 @@ +package de.hysky.skyblocker.skyblock.tabhud.config; + +import de.hysky.skyblocker.skyblock.tabhud.config.entries.IslandEntry; +import de.hysky.skyblocker.skyblock.tabhud.config.entries.WidgetEntry; +import de.hysky.skyblocker.utils.ItemUtils; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.ScreenRect; +import net.minecraft.client.gui.tab.Tab; +import net.minecraft.client.gui.widget.ButtonWidget; +import net.minecraft.client.gui.widget.ClickableWidget; +import net.minecraft.item.ItemStack; +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.Text; +import org.jetbrains.annotations.Nullable; + +import java.util.List; +import java.util.function.Consumer; + +public class WidgetsOrderingTab implements Tab { + + private final WidgetsElementList widgetsElementList; + private final ButtonWidget back; + private GenericContainerScreenHandler handler; + private final MinecraftClient client; + + public WidgetsOrderingTab(MinecraftClient client, GenericContainerScreenHandler handler) { + widgetsElementList = new WidgetsElementList(this, client, 0, 0, 0); + this.client = client; + this.handler = handler; + back = ButtonWidget.builder(Text.literal("Back"), button -> clickAndWaitForServer(48, 0)) + .size(64, 12) + .build(); + } + + @Override + public Text getTitle() { + return Text.literal("Widgets"); + } + + @Override + public void forEachChild(Consumer<ClickableWidget> consumer) { + consumer.accept(back); + consumer.accept(widgetsElementList); + } + + public void clickAndWaitForServer(int slot, int button) { + if (client.interactionManager == null || this.client.player == null) return; + client.interactionManager.clickSlot(handler.syncId, slot, button, SlotActionType.PICKUP, this.client.player); + } + + public void updateHandler(GenericContainerScreenHandler newHandler) { + this.handler = newHandler; + } + + public void hopper(@Nullable List<Text> hopperTooltip) { + if (hopperTooltip == null) { + widgetsElementList.setEditingPosition(-1); + return; + } + int start = -1; + int editing = 1; + for (int i = 0; i < hopperTooltip.size(); i++) { + Text text = hopperTooltip.get(i); + String string = text.getString(); + System.out.println(string); + if (start == -1 && string.contains("▶")) { + start = i; + } + if (string.contains("(EDITING)")) { + editing = i; + break; + } + } + widgetsElementList.setEditingPosition(editing - start); + } + + public void updateEntries() { + widgetsElementList.clearEntries(); + for (int i = 9; i < handler.getRows() * 9 - 9; i++) { + Slot slot = handler.getSlot(i); + ItemStack stack = slot.getStack(); + if (stack.isEmpty() || stack.isOf(Items.BLACK_STAINED_GLASS)) continue; + String lowerCase = stack.getName().getString().trim().toLowerCase(); + if (lowerCase.startsWith("widgets on") || lowerCase.startsWith("widgets in")) { + widgetsElementList.addEntry(new IslandEntry(this, i, stack)); + } else if (lowerCase.endsWith("widget")) { + widgetsElementList.addEntry(new WidgetEntry(this, i, stack)); + } + } + } + + @Override + public void refreshGrid(ScreenRect tabArea) { + back.setPosition(16, tabArea.getTop() + 4); + widgetsElementList.setY(tabArea.getTop()); + widgetsElementList.setDimensions(tabArea.width(), tabArea.height()); + } +} diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/entries/IslandEntry.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/entries/IslandEntry.java new file mode 100644 index 00000000..8ca1248b --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/entries/IslandEntry.java @@ -0,0 +1,54 @@ +package de.hysky.skyblocker.skyblock.tabhud.config.entries; + +import de.hysky.skyblocker.skyblock.tabhud.config.WidgetsOrderingTab; +import de.hysky.skyblocker.utils.ItemUtils; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.font.TextRenderer; +import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.gui.Element; +import net.minecraft.client.gui.widget.ButtonWidget; +import net.minecraft.item.ItemStack; +import net.minecraft.text.Text; +import net.minecraft.util.Colors; + +import java.util.List; + +public class IslandEntry extends WidgetsListEntry { + + private final ButtonWidget editButton; + private final boolean locked; + + public IslandEntry(WidgetsOrderingTab parent, int slotId, ItemStack icon) { + super(parent, slotId, icon); + editButton = ButtonWidget.builder(Text.literal("EDIT"), button -> this.parent.clickAndWaitForServer(this.slotId, 0)) + .size(32, 12) + .build(); + this.locked = ItemUtils.getLoreLineIf(icon, s -> s.startsWith("Click to edit")) == null; + } + + @Override + public void renderTooltip(DrawContext context, int x, int y, int entryWidth, int entryHeight, int mouseX, int mouseY) { + if (mouseX >= x && mouseX <= x + entryWidth - 50 && mouseY >= y && mouseY <= y + entryHeight) { + List<Text> lore = ItemUtils.getLore(icon); + context.drawTooltip(MinecraftClient.getInstance().textRenderer, locked ? lore : lore.subList(0, lore.size() - 2), mouseX, mouseY); + } + } + + @Override + public List<? extends Element> children() { + return List.of(editButton); + } + + @Override + public void render(DrawContext context, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta) { + int textY = y + (entryHeight - 9) / 2; + TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer; + renderIconAndText(context, y, x, entryHeight); + if (locked) { + context.drawText(textRenderer, "LOCKED", x + entryWidth - 50, textY, Colors.RED, true); + } else { + editButton.setPosition(x + entryWidth - 40, y + (entryHeight - 12) / 2); + editButton.render(context, mouseX, mouseY, tickDelta); + } + } +} diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/entries/WidgetEntry.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/entries/WidgetEntry.java new file mode 100644 index 00000000..b2835008 --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/entries/WidgetEntry.java @@ -0,0 +1,79 @@ +package de.hysky.skyblocker.skyblock.tabhud.config.entries; + +import de.hysky.skyblocker.skyblock.tabhud.config.WidgetsOrderingTab; +import de.hysky.skyblocker.utils.ItemUtils; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.font.TextRenderer; +import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.gui.Element; +import net.minecraft.client.gui.widget.ButtonWidget; +import net.minecraft.item.ItemStack; +import net.minecraft.text.Text; +import net.minecraft.util.Colors; +import net.minecraft.util.Formatting; + +import java.util.List; + +public class WidgetEntry extends WidgetsListEntry { + + private static final Text ENABLED = Text.literal("ENABLED").formatted(Formatting.GREEN); + private static final Text DISABLED = Text.literal("DISABLED").formatted(Formatting.RED); + + private final ButtonWidget editButton; + private final State state; + private final ButtonWidget enableButton; + + public WidgetEntry(WidgetsOrderingTab parent, int slotId, ItemStack icon) { + super(parent, slotId, icon); + editButton = ButtonWidget.builder(Text.literal("EDIT"), button -> this.parent.clickAndWaitForServer(this.slotId, 1)) + .size(32, 12) + .build(); + + String string = icon.getName().getString().trim(); + if (string.startsWith("✔")) { + state = State.ENABLED; + } else if (string.startsWith("✖")) { + state = State.DISABLED; + } else state = State.LOCKED; + enableButton = ButtonWidget.builder(state.equals(State.ENABLED) ? ENABLED : DISABLED, button -> this.parent.clickAndWaitForServer(this.slotId, 0)) + .size(64, 12) + .build(); + + } + + + @Override + public void renderTooltip(DrawContext context, int x, int y, int entryWidth, int entryHeight, int mouseX, int mouseY) { + if (mouseX >= x && mouseX <= x + entryWidth - 50 && mouseY >= y && mouseY <= y + entryHeight) { + List<Text> lore = ItemUtils.getLore(icon); + context.drawTooltip(MinecraftClient.getInstance().textRenderer, state == State.LOCKED ? lore : lore.subList(0, lore.size() - 3), mouseX, mouseY); + } + } + + @Override + public List<? extends Element> children() { + return List.of(editButton, enableButton); + } + + @Override + public void render(DrawContext context, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta) { + int textY = y + (entryHeight - 9) / 2; + TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer; + renderIconAndText(context, y, x, entryHeight); + if (state != State.LOCKED) { + editButton.setPosition(x + entryWidth - 40, y + (entryHeight - 12) / 2); + editButton.render(context, mouseX, mouseY, tickDelta); + + enableButton.setPosition(x + entryWidth - 110, y + (entryHeight - 12) / 2); + enableButton.render(context, mouseX, mouseY, tickDelta); + } else { + context.drawText(textRenderer, "LOCKED", x + entryWidth - 50, textY, Colors.RED, true); + } + } + + enum State { + ENABLED, + DISABLED, + LOCKED + } +} diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/entries/WidgetsListEntry.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/entries/WidgetsListEntry.java new file mode 100644 index 00000000..1765e3f6 --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/entries/WidgetsListEntry.java @@ -0,0 +1,42 @@ +package de.hysky.skyblocker.skyblock.tabhud.config.entries; + +import de.hysky.skyblocker.skyblock.tabhud.config.WidgetsOrderingTab; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.font.TextRenderer; +import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.gui.Selectable; +import net.minecraft.client.gui.widget.ElementListWidget; +import net.minecraft.item.ItemStack; +import net.minecraft.util.Colors; + +import java.util.List; + +public abstract class WidgetsListEntry extends ElementListWidget.Entry<WidgetsListEntry> { + + protected final int slotId; + protected final WidgetsOrderingTab parent; + protected final ItemStack icon; + + public WidgetsListEntry(WidgetsOrderingTab parent, int slotId, ItemStack icon) { + this.parent = parent; + this.slotId = slotId; + this.icon = icon; + } + @Override + public List<? extends Selectable> selectableChildren() { + return List.of(); + } + + public abstract void renderTooltip(DrawContext context, int x, int y, int entryWidth, int entryHeight, int mouseX, int mouseY); + + @Override + public void drawBorder(DrawContext context, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta) { + if (hovered) context.drawBorder(x, y, entryWidth, entryHeight, -1); + } + + protected void renderIconAndText(DrawContext context, int y, int x, int entryHeight) { + TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer; + context.drawItem(icon, x + 2, y + (entryHeight - 16) / 2); + context.drawText(textRenderer, icon.getName(), x + 20, y + (entryHeight - 9) / 2, Colors.WHITE, true); + } +} diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/FireSaleWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/FireSaleWidget.java index 7624c3cf..2b0bb0a0 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/FireSaleWidget.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/FireSaleWidget.java @@ -34,34 +34,23 @@ public class FireSaleWidget extends TabHudWidget { // TODO make it work (waiting for a fire sale to see the widget) @Override - public void updateContent(List<Text> ignore) { - Text event = PlayerListMgr.textAt(46); - - if (event == null) { - this.addComponent(new PlainTextComponent(Text.literal("No Fire Sales!").formatted(Formatting.GRAY))); - return; - } - - String text = event.getString(); - - //We're keeping both cases as it might have something to do with having multiple fire sales at once vs having only one - if (text.contains("starting in") || text.contains("Starts in")) { - this.addComponent(new IcoTextComponent(Ico.CLOCK, event)); - return; - } - - for (int i = 46;; i++) { - Matcher m = PlayerListMgr.regexAt(i, FIRE_PATTERN); - if (m == null) { - break; + public void updateContent(List<Text> lines) { + for (int i = 1; i < lines.size(); i++) { + Text text = lines.get(i); + Matcher m = FIRE_PATTERN.matcher(text.getString()); + if (m.matches()) { + String avail = m.group("avail"); + Text itemTxt = Text.literal(m.group("item")); + float total = Float.parseFloat(m.group("total")) * 1000; + Text prgressTxt = Text.literal(String.format("%s/%.0f", avail, total)); + float pcnt = (Float.parseFloat(avail) / (total)) * 100f; + ProgressComponent pc = new ProgressComponent(Ico.GOLD, itemTxt, prgressTxt, pcnt, Colors.pcntToCol(pcnt)); + this.addComponent(pc); + } else if (text.getString().toLowerCase() instanceof String s && (s.contains("starts") || s.contains("starting"))) { + this.addComponent(new IcoTextComponent(Ico.CLOCK, text)); + } else { + this.addComponent(new PlainTextComponent(text)); } - String avail = m.group("avail"); - Text itemTxt = Text.literal(m.group("item")); - float total = Float.parseFloat(m.group("total")) * 1000; - Text prgressTxt = Text.literal(String.format("%s/%.0f", avail, total)); - float pcnt = (Float.parseFloat(avail) / (total)) * 100f; - ProgressComponent pc = new ProgressComponent(Ico.GOLD, itemTxt, prgressTxt, pcnt, Colors.pcntToCol(pcnt)); - this.addComponent(pc); } } } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/GardenServerWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/GardenServerWidget.java deleted file mode 100644 index e69de29b..00000000 --- a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/GardenServerWidget.java +++ /dev/null diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/PlayerListWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/PlayerListWidget.java deleted file mode 100644 index e69de29b..00000000 --- a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/PlayerListWidget.java +++ /dev/null diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/ServerWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/ServerWidget.java index 78a833b1..756cbe0e 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/ServerWidget.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/ServerWidget.java @@ -26,12 +26,12 @@ public class ServerWidget extends TabHudWidget { @Override public void updateContent(List<Text> lines) { - this.addComponent(new IcoTextComponent(Ico.MAP, Text.literal("Area:").append(lines.getFirst().copy().formatted(Formatting.DARK_AQUA)))); + this.addComponent(new IcoTextComponent(Ico.MAP, Text.literal("Area: ").append(lines.getFirst().copy().formatted(Formatting.DARK_AQUA)))); for (int i = 1; i < lines.size(); i++) { Text text = lines.get(i); String string = text.getString(); switch (string.toLowerCase()) { - case String s when s.contains("server") -> this.addSimpleIcoText(Ico.NTAG, "Server ID:", Formatting.GRAY, string); + case String s when s.contains("server") -> this.addSimpleIcoText(Ico.NTAG, "Server ID:", Formatting.GRAY, string.split(":", 2)[1]); case String s when s.contains("gems") -> this.addComponent(new IcoTextComponent(Ico.EMERALD, text)); case String s when s.contains("crystals") -> this.addComponent(new IcoTextComponent(Ico.EMERALD, text)); case String s when s.contains("copper") -> this.addComponent(new IcoTextComponent(Ico.COPPER, text)); |
