diff options
Diffstat (limited to 'src/main/java/de/hysky')
6 files changed, 61 insertions, 1 deletions
diff --git a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java index 51c34343..7c80215c 100644 --- a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java +++ b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java @@ -621,6 +621,9 @@ public class SkyblockerConfig { @SerialEntry public SpidersDen spidersDen = new SpidersDen(); + + @SerialEntry + public Garden garden = new Garden(); } public static class Dungeons { @@ -1020,6 +1023,11 @@ public class SkyblockerConfig { public boolean highlightFoundRelics = true; } + public static class Garden { + @SerialEntry + public boolean dicerTitlePrevent = true; + } + public static class Slayer { @SerialEntry public EndermanSlayer endermanSlayer = new EndermanSlayer(); @@ -1116,6 +1124,9 @@ public class SkyblockerConfig { @SerialEntry public boolean hideMana = false; + + @SerialEntry + public ChatFilterResult hideDicer = ChatFilterResult.PASS; } public enum Info { diff --git a/src/main/java/de/hysky/skyblocker/config/categories/LocationsCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/LocationsCategory.java index 0b388d16..9bdcf2e9 100644 --- a/src/main/java/de/hysky/skyblocker/config/categories/LocationsCategory.java +++ b/src/main/java/de/hysky/skyblocker/config/categories/LocationsCategory.java @@ -98,6 +98,19 @@ public class LocationsCategory { .controller(ConfigUtils::createBooleanController) .build()) .build()) + + //Garden + .group(OptionGroup.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.garden")) + .collapsed(false) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.garden.dicerTitlePrevent")) + .binding(defaults.locations.garden.dicerTitlePrevent, + () -> config.locations.garden.dicerTitlePrevent, + newValue -> config.locations.garden.dicerTitlePrevent = newValue) + .controller(ConfigUtils::createBooleanController) + .build()) + .build()) .build(); } } diff --git a/src/main/java/de/hysky/skyblocker/config/categories/MessageFilterCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/MessageFilterCategory.java index ce349049..acdc8169 100644 --- a/src/main/java/de/hysky/skyblocker/config/categories/MessageFilterCategory.java +++ b/src/main/java/de/hysky/skyblocker/config/categories/MessageFilterCategory.java @@ -118,6 +118,14 @@ public class MessageFilterCategory { newValue -> config.messages.hideDeath = newValue) .controller(ConfigUtils::createEnumCyclingListController) .build()) + .option(Option.<ChatFilterResult>createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.messages.hideDicer")) + .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.messages.hideDicer.@Tooltip"))) + .binding(defaults.messages.hideDicer, + () -> config.messages.hideDicer, + newValue -> config.messages.hideDicer = newValue) + .controller(ConfigUtils::createEnumCyclingListController) + .build()) .build(); } } diff --git a/src/main/java/de/hysky/skyblocker/mixin/InGameHudMixin.java b/src/main/java/de/hysky/skyblocker/mixin/InGameHudMixin.java index c8f6f272..88be60cd 100644 --- a/src/main/java/de/hysky/skyblocker/mixin/InGameHudMixin.java +++ b/src/main/java/de/hysky/skyblocker/mixin/InGameHudMixin.java @@ -19,9 +19,11 @@ import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.hud.InGameHud; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; +import net.minecraft.text.Text; import net.minecraft.util.Identifier; import java.util.function.Supplier; +import java.util.regex.Pattern; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; @@ -37,6 +39,9 @@ public abstract class InGameHudMixin { @Unique private static final Supplier<Identifier> SLOT_LOCK_ICON = () -> SkyblockerConfigManager.get().general.itemProtection.slotLockStyle.tex; @Unique + private static final Pattern DICER_TITLE_BLACKLIST = Pattern.compile(".+? DROP!"); + + @Unique private final FancyStatusBars statusBars = new FancyStatusBars(); @Shadow @@ -101,4 +106,11 @@ public abstract class InGameHudMixin { return cooldownProgress; } + + @Inject(method = "setTitle", at = @At("HEAD"), cancellable = true) + private void skyblocker$dicerTitlePrevent(Text title, CallbackInfo ci) { + if (Utils.isOnSkyblock() && SkyblockerConfigManager.get().locations.garden.dicerTitlePrevent && title != null && DICER_TITLE_BLACKLIST.matcher(title.getString()).matches()) { + ci.cancel(); + } + } } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/filters/DicerFilter.java b/src/main/java/de/hysky/skyblocker/skyblock/filters/DicerFilter.java new file mode 100644 index 00000000..a3f78684 --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/skyblock/filters/DicerFilter.java @@ -0,0 +1,15 @@ +package de.hysky.skyblocker.skyblock.filters; + +import de.hysky.skyblocker.config.SkyblockerConfigManager; +import de.hysky.skyblocker.utils.chat.ChatFilterResult; + +public class DicerFilter extends SimpleChatFilter { + public DicerFilter() { + super("[A-Z]+ DROP! .*Dicer dropped [0-9]+x.+!$"); + } + + @Override + public ChatFilterResult state() { + return SkyblockerConfigManager.get().messages.hideDicer; + } +} diff --git a/src/main/java/de/hysky/skyblocker/utils/chat/ChatMessageListener.java b/src/main/java/de/hysky/skyblocker/utils/chat/ChatMessageListener.java index ee43bc4c..bdff2d94 100644 --- a/src/main/java/de/hysky/skyblocker/utils/chat/ChatMessageListener.java +++ b/src/main/java/de/hysky/skyblocker/utils/chat/ChatMessageListener.java @@ -56,7 +56,8 @@ public interface ChatMessageListener { new ShowOffFilter(), new ToggleSkyMallFilter(), new MimicFilter(), - new DeathFilter() + new DeathFilter(), + new DicerFilter() }; // Register all listeners to EVENT for (ChatMessageListener listener : listeners) { |