aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de
diff options
context:
space:
mode:
authorviciscat <51047087+viciscat@users.noreply.github.com>2024-07-22 21:59:05 +0200
committerviciscat <51047087+viciscat@users.noreply.github.com>2024-07-22 21:59:05 +0200
commitb2387842f889bfc66dd2600171f01c8734aadbd2 (patch)
tree532cd79ad05e429dcc8e710e660dfcd66cd418ca /src/main/java/de
parent95a14c80563a248ea302d3bcd112fc6a4b8d1e42 (diff)
downloadSkyblocker-b2387842f889bfc66dd2600171f01c8734aadbd2.tar.gz
Skyblocker-b2387842f889bfc66dd2600171f01c8734aadbd2.tar.bz2
Skyblocker-b2387842f889bfc66dd2600171f01c8734aadbd2.zip
minion held coins and fix stupid
Diffstat (limited to 'src/main/java/de')
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java36
1 files changed, 21 insertions, 15 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java b/src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java
index 7d91ef2c..5cab28e7 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java
@@ -18,6 +18,7 @@ import net.minecraft.client.gui.tooltip.Tooltip;
import net.minecraft.client.gui.widget.ButtonWidget;
import net.minecraft.client.gui.widget.TextWidget;
import net.minecraft.item.ItemStack;
+import net.minecraft.item.Items;
import net.minecraft.screen.GenericContainerScreenHandler;
import net.minecraft.screen.slot.Slot;
import net.minecraft.text.Style;
@@ -30,6 +31,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.text.DecimalFormat;
+import java.text.ParseException;
import java.util.List;
import java.util.Set;
import java.util.regex.Matcher;
@@ -49,26 +51,18 @@ public class ChestValue {
String titleString = title.getString();
if (DUNGEON_CHESTS.contains(titleString)) {
if (SkyblockerConfigManager.get().dungeons.dungeonChestProfit.enableProfitCalculator) {
- ScreenEvents.afterTick(screen).register(screen_ ->
- {
- Text dungeonChestProfit = getDungeonChestProfit(genericContainerScreen.getScreenHandler());
- if (dungeonChestProfit != null) addValueToContainer(genericContainerScreen, dungeonChestProfit, title);
- }
- );
+ 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(screen_ -> {
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")))
@@ -80,8 +74,6 @@ public class ChestValue {
}
private static void addValueToContainer(GenericContainerScreen genericContainerScreen, Text chestValue, Text title) {
- // If the contents get updated the widgets get added again, I have no idea why and I don't feel like debugging this.
- Screens.getButtons(genericContainerScreen).removeIf(clickableWidget -> clickableWidget instanceof ScrollingTextWidget);
int backgroundWidth = ((HandledScreenAccessor) genericContainerScreen).getBackgroundWidth();
int y = ((HandledScreenAccessor) genericContainerScreen).getY();
int x = ((HandledScreenAccessor) genericContainerScreen).getX();
@@ -193,6 +185,20 @@ public class ChestValue {
int y = slot.id / 9;
return x > 2 && x < 8 && y > 1 && y < 5;
}).toList();
+ ItemStack stack;
+ String coinsLine;
+ if (handler.slots.size() > 28 &&
+ (stack = handler.slots.get(28).getStack()).isOf(Items.HOPPER) &&
+ (coinsLine = ItemUtils.getLoreLineIf(stack, s -> s.contains("Held Coins:"))) != null) {
+
+ String source = coinsLine.split(":")[1];
+ try {
+ value += DecimalFormat.getNumberInstance(java.util.Locale.US).parse(source.trim()).doubleValue();
+ } catch (ParseException e) {
+ LOGGER.warn("[Skyblocker] Failed to parse {}", source);
+ }
+
+ }
} else {
slots = handler.slots.subList(0, handler.getRows() * 9);
}