diff options
Diffstat (limited to 'src/main/java')
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; |
