aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de
diff options
context:
space:
mode:
authorPeyton Brown <81496880+PeytonBrown@users.noreply.github.com>2025-06-27 00:29:19 -0400
committerGitHub <noreply@github.com>2025-06-27 00:29:19 -0400
commit13fb72006f2d59d21534be087541d112a7a8ef31 (patch)
tree80cd49f76c549ea7a721db899e4ae0b9bd5cbbb7 /src/main/java/de
parenta3cb1c28fb7d8cd8c22f528aae7d6ca4ba523513 (diff)
downloadSkyblocker-13fb72006f2d59d21534be087541d112a7a8ef31.tar.gz
Skyblocker-13fb72006f2d59d21534be087541d112a7a8ef31.tar.bz2
Skyblocker-13fb72006f2d59d21534be087541d112a7a8ef31.zip
Copy Underbid Price to Clipboard (#1370)
* Initial Implementation * default to false * make text translatable
Diffstat (limited to 'src/main/java/de')
-rw-r--r--src/main/java/de/hysky/skyblocker/config/categories/HelperCategory.java10
-rw-r--r--src/main/java/de/hysky/skyblocker/config/configs/HelperConfig.java3
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/auction/CopyUnderbidPrice.java87
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/container/ContainerSolverManager.java3
4 files changed, 102 insertions, 1 deletions
diff --git a/src/main/java/de/hysky/skyblocker/config/categories/HelperCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/HelperCategory.java
index 27e5318b..ba61207a 100644
--- a/src/main/java/de/hysky/skyblocker/config/categories/HelperCategory.java
+++ b/src/main/java/de/hysky/skyblocker/config/categories/HelperCategory.java
@@ -58,7 +58,15 @@ public class HelperCategory {
newValue -> config.helpers.enableDateCalculator = newValue)
.controller(ConfigUtils::createBooleanController)
.build())
-
+ // Copy Underbid Price
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.helpers.enableCopyUnderbidPrice"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.helpers.enableCopyUnderbidPrice.@Tooltip")))
+ .binding(defaults.helpers.enableCopyUnderbidPrice,
+ () -> config.helpers.enableCopyUnderbidPrice,
+ newValue -> config.helpers.enableCopyUnderbidPrice = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
//Mythological Ritual
.group(OptionGroup.createBuilder()
.name(Text.translatable("skyblocker.config.helpers.mythologicalRitual"))
diff --git a/src/main/java/de/hysky/skyblocker/config/configs/HelperConfig.java b/src/main/java/de/hysky/skyblocker/config/configs/HelperConfig.java
index 73673a67..91c596c5 100644
--- a/src/main/java/de/hysky/skyblocker/config/configs/HelperConfig.java
+++ b/src/main/java/de/hysky/skyblocker/config/configs/HelperConfig.java
@@ -23,6 +23,9 @@ public class HelperConfig {
@SerialEntry
public boolean enableDateCalculator = true;
+ @SerialEntry
+ public boolean enableCopyUnderbidPrice = false;
+
@SerialEntry
public MythologicalRitual mythologicalRitual = new MythologicalRitual();
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/auction/CopyUnderbidPrice.java b/src/main/java/de/hysky/skyblocker/skyblock/auction/CopyUnderbidPrice.java
new file mode 100644
index 00000000..866d9269
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/skyblock/auction/CopyUnderbidPrice.java
@@ -0,0 +1,87 @@
+package de.hysky.skyblocker.skyblock.auction;
+
+import de.hysky.skyblocker.config.SkyblockerConfigManager;
+import de.hysky.skyblocker.utils.Constants;
+import de.hysky.skyblocker.utils.ItemUtils;
+import de.hysky.skyblocker.utils.Formatters;
+import de.hysky.skyblocker.utils.container.SimpleContainerSolver;
+import de.hysky.skyblocker.utils.render.gui.ColorHighlight;
+import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
+import net.minecraft.client.MinecraftClient;
+import net.minecraft.client.gui.screen.ingame.GenericContainerScreen;
+import net.minecraft.item.ItemStack;
+import net.minecraft.text.Text;
+import net.minecraft.util.Formatting;
+
+import java.util.List;
+
+/**
+ * Container solver that copies the lowest BIN price minus one coin
+ * to the clipboard once the item is placed in the Create BIN Auction screen.
+ */
+public class CopyUnderbidPrice extends SimpleContainerSolver {
+ private boolean copied;
+ private ItemStack previousItem = ItemStack.EMPTY;
+
+ public CopyUnderbidPrice() {
+ super("^Create BIN Auction$");
+ }
+
+ @Override
+ public boolean isEnabled() {
+ return SkyblockerConfigManager.get().helpers.enableCopyUnderbidPrice;
+ }
+
+
+ @Override
+ public void start(GenericContainerScreen screen) {
+ copied = false;
+ previousItem = ItemStack.EMPTY;
+ }
+
+ @Override
+ public void markDirty() {
+ MinecraftClient client = MinecraftClient.getInstance();
+ if (!(client.currentScreen instanceof GenericContainerScreen screen)) return;
+
+ ItemStack stack = screen.getScreenHandler().getSlot(13).getStack();
+
+ if (stack.isEmpty()) {
+ copied = false;
+ previousItem = ItemStack.EMPTY;
+ return;
+ }
+
+ if (!ItemStack.areEqual(stack, previousItem)) {
+ copied = false;
+ previousItem = stack.copy();
+ }
+
+ if (copied) return;
+
+ double price = ItemUtils.getItemPrice(stack).leftDouble();
+ if (price <= 1) return;
+
+ long underbid = (long) price - 1;
+ client.keyboard.setClipboard(String.valueOf(underbid));
+
+ if (client.player != null) {
+ Text priceText = Text.literal(Formatters.INTEGER_NUMBERS.format(underbid)).formatted(Formatting.GOLD);
+ client.player.sendMessage(Constants.PREFIX.get()
+ .append(Text.translatable("skyblocker.copyUnderbidPrice.copied", priceText).formatted(Formatting.GRAY)), false);
+ }
+
+ copied = true;
+ }
+
+ @Override
+ public void reset() {
+ copied = false;
+ previousItem = ItemStack.EMPTY;
+ }
+
+ @Override
+ public List<ColorHighlight> getColors(Int2ObjectMap<ItemStack> slots) {
+ return List.of();
+ }
+}
diff --git a/src/main/java/de/hysky/skyblocker/utils/container/ContainerSolverManager.java b/src/main/java/de/hysky/skyblocker/utils/container/ContainerSolverManager.java
index 5e4970d5..580e9d29 100644
--- a/src/main/java/de/hysky/skyblocker/utils/container/ContainerSolverManager.java
+++ b/src/main/java/de/hysky/skyblocker/utils/container/ContainerSolverManager.java
@@ -5,6 +5,7 @@ import de.hysky.skyblocker.mixins.accessors.HandledScreenAccessor;
import de.hysky.skyblocker.skyblock.RaffleTaskHighlight;
import de.hysky.skyblocker.skyblock.accessories.newyearcakes.NewYearCakeBagHelper;
import de.hysky.skyblocker.skyblock.accessories.newyearcakes.NewYearCakesHelper;
+import de.hysky.skyblocker.skyblock.auction.CopyUnderbidPrice;
import de.hysky.skyblocker.skyblock.bazaar.ReorderHelper;
import de.hysky.skyblocker.skyblock.chocolatefactory.ChocolateFactorySolver;
import de.hysky.skyblocker.skyblock.dungeon.CroesusHelper;
@@ -58,7 +59,9 @@ public class ContainerSolverManager {
BitsHelper.INSTANCE,
new RaffleTaskHighlight(),
new FossilSolver(),
+ new CopyUnderbidPrice(),
new HuntingBoxHelper()
+
};
private static ContainerSolver currentSolver = null;
private static List<ColorHighlight> highlights;