aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorAaron <51387595+AzureAaron@users.noreply.github.com>2024-07-10 01:04:06 -0400
committerGitHub <noreply@github.com>2024-07-10 01:04:06 -0400
commitef2ed5687455d6cdce2499108f0e65d8a8291273 (patch)
treea1064359beb95bd073c33b43549e693772ac5bc8 /src/main
parent3b6d106a19e066f64e305db507aadc48d5aa30c6 (diff)
parentb4a4c0dc1969e9d589521eb464cd7eabd4a2d0b9 (diff)
downloadSkyblocker-ef2ed5687455d6cdce2499108f0e65d8a8291273.tar.gz
Skyblocker-ef2ed5687455d6cdce2499108f0e65d8a8291273.tar.bz2
Skyblocker-ef2ed5687455d6cdce2499108f0e65d8a8291273.zip
Merge pull request #828 from viciscat/choco-ding-ding
Repeated ding when a stray rabbit appears
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/de/hysky/skyblocker/config/categories/HelperCategory.java8
-rw-r--r--src/main/java/de/hysky/skyblocker/config/configs/HelperConfig.java3
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/chocolatefactory/ChocolateFactorySolver.java26
-rw-r--r--src/main/resources/assets/skyblocker/lang/en_us.json3
4 files changed, 39 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 1518dfe7..56dbca94 100644
--- a/src/main/java/de/hysky/skyblocker/config/categories/HelperCategory.java
+++ b/src/main/java/de/hysky/skyblocker/config/categories/HelperCategory.java
@@ -196,6 +196,14 @@ public class HelperCategory {
newValue -> config.helpers.chocolateFactory.enableTimeTowerReminder = newValue)
.controller(ConfigUtils::createBooleanController)
.build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.helpers.chocolateFactory.straySound"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.helpers.chocolateFactory.straySound.@Tooltip")))
+ .binding(defaults.helpers.chocolateFactory.straySound,
+ () -> config.helpers.chocolateFactory.straySound,
+ newValue -> config.helpers.chocolateFactory.straySound = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
.build())
.build();
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 33047f1c..636d76da 100644
--- a/src/main/java/de/hysky/skyblocker/config/configs/HelperConfig.java
+++ b/src/main/java/de/hysky/skyblocker/config/configs/HelperConfig.java
@@ -90,5 +90,8 @@ public class HelperConfig {
@SerialEntry
public boolean enableTimeTowerReminder = true;
+
+ @SerialEntry
+ public boolean straySound = true;
}
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/chocolatefactory/ChocolateFactorySolver.java b/src/main/java/de/hysky/skyblocker/skyblock/chocolatefactory/ChocolateFactorySolver.java
index f984d751..db81382c 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/chocolatefactory/ChocolateFactorySolver.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/chocolatefactory/ChocolateFactorySolver.java
@@ -9,9 +9,13 @@ import de.hysky.skyblocker.utils.render.gui.ColorHighlight;
import de.hysky.skyblocker.utils.render.gui.ContainerSolver;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
+import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
+import net.minecraft.client.MinecraftClient;
+import net.minecraft.client.sound.PositionedSoundInstance;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.screen.slot.Slot;
+import net.minecraft.sound.SoundEvents;
import net.minecraft.text.MutableText;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
@@ -49,6 +53,7 @@ public class ChocolateFactorySolver extends ContainerSolver {
private static boolean isTimeTowerActive = false;
private static int bestUpgrade = -1;
private static int bestAffordableUpgrade = -1;
+ private static StraySound ding = StraySound.NONE;
private static final DecimalFormat DECIMAL_FORMAT = new DecimalFormat("#,###.#", DecimalFormatSymbols.getInstance(Locale.ENGLISH));
@Override
@@ -65,6 +70,7 @@ public class ChocolateFactorySolver extends ContainerSolver {
isTimeTowerActive = false;
bestUpgrade = -1;
bestAffordableUpgrade = -1;
+ ding = StraySound.NONE;
}
//Slots, for ease of maintenance rather than using magic numbers everywhere.
@@ -78,8 +84,20 @@ public class ChocolateFactorySolver extends ContainerSolver {
private static final byte STRAY_RABBIT_START = 0;
private static final byte STRAY_RABBIT_END = 26;
+ private static int dingTick = 0;
+
public ChocolateFactorySolver() {
super("^Chocolate Factory$"); //There are multiple screens that fit the pattern `^Chocolate Factory`, so the $ is required
+ ClientTickEvents.START_CLIENT_TICK.register(ChocolateFactorySolver::onTick);
+ }
+
+ private static void onTick(MinecraftClient client) {
+ if (ding != StraySound.NONE) {
+ dingTick = (++dingTick) % (ding == StraySound.NORMAL ? 5 : 3);
+ if (dingTick == 0) {
+ client.getSoundManager().play(PositionedSoundInstance.master(ding == StraySound.NORMAL ? SoundEvents.BLOCK_NOTE_BLOCK_PLING.value() : SoundEvents.BLOCK_NOTE_BLOCK_HARP.value(), 1.f, 1.f));
+ }
+ }
}
@Override
@@ -239,12 +257,14 @@ public class ChocolateFactorySolver extends ContainerSolver {
}
private static List<ColorHighlight> getStrayRabbitHighlight(Int2ObjectMap<ItemStack> slots) {
+ ding = StraySound.NONE;
final List<ColorHighlight> highlights = new ArrayList<>();
for (byte i = STRAY_RABBIT_START; i <= STRAY_RABBIT_END; i++) {
ItemStack item = slots.get(i);
if (!item.isOf(Items.PLAYER_HEAD)) continue;
String name = item.getName().getString();
if (name.equals("CLICK ME!") || name.startsWith("Golden Rabbit - ")) {
+ if (SkyblockerConfigManager.get().helpers.chocolateFactory.straySound) ding = name.startsWith("Golden") ? StraySound.GOLDEN : StraySound.NORMAL;
highlights.add(ColorHighlight.green(i));
}
}
@@ -253,6 +273,12 @@ public class ChocolateFactorySolver extends ContainerSolver {
private record Rabbit(double cpsIncrease, long cost, int slot) { }
+ private enum StraySound {
+ NONE,
+ NORMAL,
+ GOLDEN
+ }
+
public static final class Tooltip extends TooltipAdder {
public Tooltip() {
super("^Chocolate Factory$", 0); //The priority doesn't really matter here as this is the only tooltip adder for the Chocolate Factory.
diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json
index 6c2fa6cf..bf154048 100644
--- a/src/main/resources/assets/skyblocker/lang/en_us.json
+++ b/src/main/resources/assets/skyblocker/lang/en_us.json
@@ -228,7 +228,6 @@
"skyblocker.config.general.itemTooltip.avg.BOTH": "Both",
"skyblocker.config.general.itemTooltip.avg.ONE_DAY": "1 day price",
"skyblocker.config.general.itemTooltip.avg.THREE_DAY": "3 day price",
- "skyblocker.config.general.itemTooltip.avg": "Average Type",
"skyblocker.config.general.itemTooltip.dungeonQuality": "Dungeon Quality",
"skyblocker.config.general.itemTooltip.dungeonQuality.@Tooltip": "Displays quality and tier of dungeon drops from mobs.\n\n\nReminder:\nTier 1-3 dropped from F1-F3\nTier 4-7 dropped from F4-F7 or M1-M4\nTier 8-10 are dropped only from M5-M7",
"skyblocker.config.general.itemTooltip.enableAccessoriesHelper": "Enable Accessories Helper",
@@ -295,6 +294,8 @@
"skyblocker.config.helpers.chocolateFactory.enableTimeTowerReminder.@Tooltip": "Sends a message in chat when your Time Tower deactivates.",
"skyblocker.config.helpers.chocolateFactory.sendEggFoundMessages": "Send Egg Found Messages",
"skyblocker.config.helpers.chocolateFactory.sendEggFoundMessages.@Tooltip": "Sends a message in chat when an egg is found in the current island.",
+ "skyblocker.config.helpers.chocolateFactory.straySound": "Stray Rabbit Sound",
+ "skyblocker.config.helpers.chocolateFactory.straySound.@Tooltip": "Repeatedly plays a ding while a stray rabbit is present. If it is golden, the sound will be more frequent and different.",
"skyblocker.config.helpers.chocolateFactory.waypointType": "Egg Waypoint Type",
"skyblocker.config.helpers.chocolateFactory.waypointType.@Tooltip": "Waypoint: Displays a highlight and a beacon beam.\n\nOutlined Waypoint: Displays both a waypoint and an outline.\n\nHighlight: Only displays a highlight.\n\nOutlined Highlight: Displays both a highlight and an outline.\n\nOutline: Only displays an outline.",