diff options
| author | viciscat <51047087+viciscat@users.noreply.github.com> | 2024-07-30 20:37:03 +0200 |
|---|---|---|
| committer | viciscat <51047087+viciscat@users.noreply.github.com> | 2024-07-30 20:37:03 +0200 |
| commit | a0f0bfe5655434d440bb7cbaddd6765afef52e21 (patch) | |
| tree | 6cc8f1eb7a4ff8dc54b75fa19db0cedf3b9e8340 /src/main/java | |
| parent | b2387842f889bfc66dd2600171f01c8734aadbd2 (diff) | |
| download | Skyblocker-a0f0bfe5655434d440bb7cbaddd6765afef52e21.tar.gz Skyblocker-a0f0bfe5655434d440bb7cbaddd6765afef52e21.tar.bz2 Skyblocker-a0f0bfe5655434d440bb7cbaddd6765afef52e21.zip | |
wow so crazy
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java | 59 |
1 files changed, 32 insertions, 27 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java b/src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java index 5cab28e7..861bf0c4 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java @@ -51,18 +51,24 @@ public class ChestValue { String titleString = title.getString(); if (DUNGEON_CHESTS.contains(titleString)) { if (SkyblockerConfigManager.get().dungeons.dungeonChestProfit.enableProfitCalculator) { - Text dungeonChestProfit = getDungeonChestProfit(genericContainerScreen.getScreenHandler()); - if (dungeonChestProfit != null) addValueToContainer(genericContainerScreen, dungeonChestProfit, title); + ScreenEvents.afterTick(screen).register(ignored -> { + Text dungeonChestProfit = getDungeonChestProfit(genericContainerScreen.getScreenHandler()); + if (dungeonChestProfit != null) + addValueToContainer(genericContainerScreen, dungeonChestProfit, title); + }); } } else if (SkyblockerConfigManager.get().uiAndVisuals.chestValue.enableChestValue && !titleString.equals("SkyBlock Menu")) { boolean minion = MINION_PATTERN.matcher(title.getString().trim()).find(); Screens.getButtons(screen).add(ButtonWidget .builder(Text.literal("$"), buttonWidget -> { Screens.getButtons(screen).remove(buttonWidget); + ScreenEvents.afterTick(screen).register(ignored -> { Text chestValue = getChestValue(genericContainerScreen.getScreenHandler(), minion); - if (chestValue != null) { - addValueToContainer(genericContainerScreen, chestValue, title); - } + if (chestValue != null) { + addValueToContainer(genericContainerScreen, chestValue, title); + } + }); + }) .dimensions(((HandledScreenAccessor) genericContainerScreen).getX() + ((HandledScreenAccessor) genericContainerScreen).getBackgroundWidth() - 16, ((HandledScreenAccessor) genericContainerScreen).getY() + 4, 12, 12) .tooltip(minion ? Tooltip.of(Text.translatable("skyblocker.config.general.minionValue.@Tooltip")) : Tooltip.of(Text.translatable("skyblocker.config.general.chestValue.@Tooltip"))) @@ -73,24 +79,6 @@ public class ChestValue { }); } - private static void addValueToContainer(GenericContainerScreen genericContainerScreen, Text chestValue, Text title) { - int backgroundWidth = ((HandledScreenAccessor) genericContainerScreen).getBackgroundWidth(); - int y = ((HandledScreenAccessor) genericContainerScreen).getY(); - int x = ((HandledScreenAccessor) genericContainerScreen).getX(); - ((ScreenAccessor) genericContainerScreen).setTitle(Text.empty()); - TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer; - int chestValueWidth = Math.min(textRenderer.getWidth(chestValue), Math.max((backgroundWidth - 8) / 2 - 2, backgroundWidth - 8 - textRenderer.getWidth(title))); - - TextWidget chestValueWidget = new ScrollingTextWidget(chestValueWidth, textRenderer.fontHeight, chestValue, textRenderer); - chestValueWidget.setPosition(x + backgroundWidth - chestValueWidget.getWidth() - 4, y + 6); - Screens.getButtons(genericContainerScreen).add(chestValueWidget); - - ScrollingTextWidget chestTitleWidget = new ScrollingTextWidget(backgroundWidth - 8 - chestValueWidth - 2, textRenderer.fontHeight, title.copy().fillStyle(Style.EMPTY.withColor(4210752)), textRenderer); - chestTitleWidget.shadow = false; - chestTitleWidget.setPosition(x + 8, y + 6); - Screens.getButtons(genericContainerScreen).add(chestTitleWidget); - } - private static @Nullable Text getDungeonChestProfit(GenericContainerScreenHandler handler) { try { double profit = 0; @@ -245,13 +233,30 @@ public class ChestValue { return Text.literal(' ' + FORMATTER.format(value) + " Coins").formatted(hasIncompleteData ? config.incompleteColor : config.color); } + private static void addValueToContainer(GenericContainerScreen genericContainerScreen, Text chestValue, Text title) { + Screens.getButtons(genericContainerScreen).removeIf(clickableWidget -> clickableWidget instanceof ChestValueTextWidget); + int backgroundWidth = ((HandledScreenAccessor) genericContainerScreen).getBackgroundWidth(); + int y = ((HandledScreenAccessor) genericContainerScreen).getY(); + int x = ((HandledScreenAccessor) genericContainerScreen).getX(); + ((ScreenAccessor) genericContainerScreen).setTitle(Text.empty()); + TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer; + int chestValueWidth = Math.min(textRenderer.getWidth(chestValue), Math.max((backgroundWidth - 8) / 2 - 2, backgroundWidth - 8 - textRenderer.getWidth(title))); + TextWidget chestValueWidget = new ChestValueTextWidget(chestValueWidth, textRenderer.fontHeight, chestValue, textRenderer); + chestValueWidget.setPosition(x + backgroundWidth - chestValueWidget.getWidth() - 4, y + 6); + Screens.getButtons(genericContainerScreen).add(chestValueWidget); + + ChestValueTextWidget chestTitleWidget = new ChestValueTextWidget(backgroundWidth - 8 - chestValueWidth - 2, textRenderer.fontHeight, title.copy().fillStyle(Style.EMPTY.withColor(4210752)), textRenderer); + chestTitleWidget.shadow = false; + chestTitleWidget.setPosition(x + 8, y + 6); + Screens.getButtons(genericContainerScreen).add(chestTitleWidget); + } - private static class ScrollingTextWidget extends TextWidget { + private static class ChestValueTextWidget extends TextWidget { public boolean shadow = true; - public ScrollingTextWidget(int width, int height, Text message, TextRenderer textRenderer) { + public ChestValueTextWidget(int width, int height, Text message, TextRenderer textRenderer) { super(width, height, message, textRenderer); alignLeft(); } @@ -270,11 +275,11 @@ public class ChestValue { if (i > k) { int l = i - k; double d = (double) Util.getMeasuringTimeMs() / 600.0; - double e = Math.max((double)l * 0.5, 3.0); + double e = Math.max((double) l * 0.5, 3.0); double f = Math.sin((Math.PI / 2) * Math.cos((Math.PI * 2) * d / e)) / 2.0 + 0.5; double g = MathHelper.lerp(f, 0.0, l); context.enableScissor(startX, getY(), endX, getY() + textRenderer.fontHeight); - context.drawText(textRenderer, text, startX - (int)g, getY(), -1, shadow); + context.drawText(textRenderer, text, startX - (int) g, getY(), -1, shadow); context.disableScissor(); } else { context.drawText(textRenderer, text, startX, getY(), -1, shadow); |
