From 7ecd9c630b64286a84dd207c3a13d6c3b921557b Mon Sep 17 00:00:00 2001 From: Aaron <51387595+AzureAaron@users.noreply.github.com> Date: Fri, 27 Jun 2025 15:07:34 -0400 Subject: Add Hunting Mobs features --- .../config/categories/HuntingCategory.java | 43 +++++++++++++++++----- .../skyblocker/config/configs/HuntingConfig.java | 11 ++++++ .../hysky/skyblocker/mixins/ClientWorldMixin.java | 9 +++++ .../hysky/skyblocker/skyblock/entity/MobGlow.java | 9 +++++ .../resources/assets/skyblocker/lang/en_us.json | 8 +++- 5 files changed, 68 insertions(+), 12 deletions(-) diff --git a/src/main/java/de/hysky/skyblocker/config/categories/HuntingCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/HuntingCategory.java index dbd45f12..a8352c45 100644 --- a/src/main/java/de/hysky/skyblocker/config/categories/HuntingCategory.java +++ b/src/main/java/de/hysky/skyblocker/config/categories/HuntingCategory.java @@ -5,21 +5,44 @@ import de.hysky.skyblocker.config.SkyblockerConfig; import dev.isxander.yacl3.api.ConfigCategory; import dev.isxander.yacl3.api.Option; import dev.isxander.yacl3.api.OptionDescription; +import dev.isxander.yacl3.api.OptionGroup; import net.minecraft.text.Text; public class HuntingCategory { public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) { return ConfigCategory.createBuilder() - .name(Text.translatable("skyblocker.config.hunting")) - .option(Option.createBuilder() - .name(Text.translatable("skyblocker.config.hunting.huntingBoxHelper")) - .binding(defaults.hunting.huntingBox.enabled, - () -> config.hunting.huntingBox.enabled, - value -> config.hunting.huntingBox.enabled = value) - .controller(ConfigUtils::createBooleanController) - .description(OptionDescription.of(Text.translatable("skyblocker.config.hunting.huntingBoxHelper.@Tooltip"))) - .build()) - .build(); + .name(Text.translatable("skyblocker.config.hunting")) + .option(Option.createBuilder() + .name(Text.translatable("skyblocker.config.hunting.huntingBoxHelper")) + .binding(defaults.hunting.huntingBox.enabled, + () -> config.hunting.huntingBox.enabled, + value -> config.hunting.huntingBox.enabled = value) + .controller(ConfigUtils::createBooleanController) + .description(OptionDescription.of(Text.translatable("skyblocker.config.hunting.huntingBoxHelper.@Tooltip"))) + .build()) + + //Hunting Mob Features + .group(OptionGroup.createBuilder() + .name(Text.translatable("skyblocker.config.hunting.huntingMobs")) + .collapsed(false) + .option(Option.createBuilder() + .name(Text.translatable("skyblocker.config.hunting.huntingMobs.silencePhantoms")) + .description(OptionDescription.of(Text.translatable("skyblocker.config.hunting.huntingMobs.silencePhantoms.@Tooltip"))) + .binding(defaults.hunting.huntingMobs.silencePhantoms, + () -> config.hunting.huntingMobs.silencePhantoms, + newValue -> config.hunting.huntingMobs.silencePhantoms = newValue) + .controller(ConfigUtils::createBooleanController) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("skyblocker.config.hunting.huntingMobs.highlightHideongift")) + .description(OptionDescription.of(Text.translatable("skyblocker.config.hunting.huntingMobs.highlightHideongift.@Tooltip"))) + .binding(defaults.hunting.huntingMobs.highlightHideongift, + () -> config.hunting.huntingMobs.highlightHideongift, + newValue -> config.hunting.huntingMobs.highlightHideongift = newValue) + .controller(ConfigUtils::createBooleanController) + .build()) + .build()) + .build(); } } diff --git a/src/main/java/de/hysky/skyblocker/config/configs/HuntingConfig.java b/src/main/java/de/hysky/skyblocker/config/configs/HuntingConfig.java index c152a057..4b5455e4 100644 --- a/src/main/java/de/hysky/skyblocker/config/configs/HuntingConfig.java +++ b/src/main/java/de/hysky/skyblocker/config/configs/HuntingConfig.java @@ -6,8 +6,19 @@ public class HuntingConfig { @SerialEntry public HuntingBox huntingBox = new HuntingBox(); + @SerialEntry + public HuntingMobs huntingMobs = new HuntingMobs(); + public static class HuntingBox { @SerialEntry public boolean enabled = true; } + + public static class HuntingMobs { + @SerialEntry + public boolean silencePhantoms = true; + + @SerialEntry + public boolean highlightHideongift = true; + } } diff --git a/src/main/java/de/hysky/skyblocker/mixins/ClientWorldMixin.java b/src/main/java/de/hysky/skyblocker/mixins/ClientWorldMixin.java index f3987bc1..a9f210c4 100644 --- a/src/main/java/de/hysky/skyblocker/mixins/ClientWorldMixin.java +++ b/src/main/java/de/hysky/skyblocker/mixins/ClientWorldMixin.java @@ -1,5 +1,6 @@ package de.hysky.skyblocker.mixins; +import de.hysky.skyblocker.config.SkyblockerConfigManager; import de.hysky.skyblocker.skyblock.crimson.dojo.DojoManager; import de.hysky.skyblocker.skyblock.dungeon.device.SimonSays; import de.hysky.skyblocker.skyblock.dwarven.CrystalsChestHighlighter; @@ -11,6 +12,7 @@ import de.hysky.skyblocker.utils.Utils; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.client.world.ClientWorld; +import net.minecraft.sound.SoundEvent; import net.minecraft.util.math.BlockPos; import net.minecraft.world.BlockView; @@ -54,4 +56,11 @@ public abstract class ClientWorldMixin implements BlockView { SimonSays.onBlockUpdate(pos, state, oldState.get()); } + + @Inject(method = "playSound(DDDLnet/minecraft/sound/SoundEvent;Lnet/minecraft/sound/SoundCategory;FFZJ)V", at = @At("HEAD"), cancellable = true) + private void skyblocker$silencePhantoms(CallbackInfo ci, @Local(argsOnly = true) SoundEvent soundEvent) { + if (SkyblockerConfigManager.get().hunting.huntingMobs.silencePhantoms && soundEvent.id().getPath().startsWith("entity.phantom")) { + ci.cancel(); + } + } } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/entity/MobGlow.java b/src/main/java/de/hysky/skyblocker/skyblock/entity/MobGlow.java index 1f34f91e..221d4116 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/entity/MobGlow.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/entity/MobGlow.java @@ -28,6 +28,7 @@ import net.minecraft.entity.mob.*; import net.minecraft.entity.passive.BatEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.predicate.entity.EntityPredicates; +import net.minecraft.util.DyeColor; import net.minecraft.util.Formatting; import net.minecraft.util.math.Box; import net.minecraft.world.World; @@ -149,6 +150,14 @@ public class MobGlow { }; } + if (Utils.isInGalatea()) { + return switch (entity) { + case ShulkerEntity shulker when shulker.getColor() == DyeColor.GREEN && SkyblockerConfigManager.get().hunting.huntingMobs.highlightHideongift -> DyeColor.YELLOW.getSignColor(); + + default -> NO_GLOW; + }; + } + return switch (entity) { // Rift Blobbercyst case PlayerEntity p when SkyblockerConfigManager.get().otherLocations.rift.blobbercystGlow && Utils.isInTheRift() && name.equals("Blobbercyst ") -> Formatting.GREEN.getColorValue(); diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json index 8bd849d1..64fbe93a 100644 --- a/src/main/resources/assets/skyblocker/lang/en_us.json +++ b/src/main/resources/assets/skyblocker/lang/en_us.json @@ -287,8 +287,6 @@ "skyblocker.config.foraging.galatea.solveForestTemplePuzzle": "Solve Forest Temple Puzzle", "skyblocker.config.foraging.galatea.solveForestTemplePuzzle.@Tooltip": "Displays the amount of times you need to rotate the terracotta blocks. For positive rotations you right click while for negative rotations you left click.", - "skyblocker.config.foraging.hunting": "Hunting", - "skyblocker.config.general": "General", "skyblocker.config.general.chestValue.@Tooltip": "Calculate the value of this container.", @@ -523,6 +521,12 @@ "skyblocker.config.hunting.huntingBoxHelper": "Enable Hunting Box Helper", "skyblocker.config.hunting.huntingBoxHelper.@Tooltip": "Highlights shards that you have enough of to syphon and reach the next tier of the attribute in the Hunting Box. Also displays the sell price of shards in the tooltip.", + "skyblocker.config.hunting.huntingMobs": "Hunting Mobs", + "skyblocker.config.hunting.huntingMobs.silencePhantoms": "Silence Phantoms", + "skyblocker.config.hunting.huntingMobs.silencePhantoms.@Tooltip": "Mutes all sounds related to Phantoms while on Galatea.", + "skyblocker.config.hunting.huntingMobs.highlightHideongift": "Highlight Hideongift", + "skyblocker.config.hunting.huntingMobs.highlightHideongift.@Tooltip": "Highlights Hideongifts in yellow to make them easier to see.", + "skyblocker.config.chat": "Chat", "skyblocker.config.chat.chatRules": "Custom Chat Rules", -- cgit