diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/BlockMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/BlockMixin.java index b1efd3fd49..f16a371560 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/BlockMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/BlockMixin.java @@ -46,7 +46,7 @@ public float getSlipperiness(float original) { Slippy slippy = Modules.get().get(Slippy.class); Block block = (Block) (Object) this; - if (slippy.isActive() && !slippy.ignoredBlocks.get().contains(block)) { + if (slippy.isActive() && (slippy.listMode.get() == Slippy.ListMode.Whitelist ? slippy.allowedBlocks.get().contains(block) : !slippy.ignoredBlocks.get().contains(block))) { return slippy.friction.get().floatValue(); } diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Slippy.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Slippy.java index 7336664f28..18ee10e8d7 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Slippy.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Slippy.java @@ -5,10 +5,7 @@ package meteordevelopment.meteorclient.systems.modules.movement; -import meteordevelopment.meteorclient.settings.BlockListSetting; -import meteordevelopment.meteorclient.settings.DoubleSetting; -import meteordevelopment.meteorclient.settings.Setting; -import meteordevelopment.meteorclient.settings.SettingGroup; +import meteordevelopment.meteorclient.settings.*; import meteordevelopment.meteorclient.systems.modules.Categories; import meteordevelopment.meteorclient.systems.modules.Module; import net.minecraft.block.Block; @@ -27,13 +24,33 @@ public class Slippy extends Module { .build() ); + public final Setting listMode = sgGeneral.add(new EnumSetting.Builder() + .name("list-mode") + .description("The mode to select blocks.") + .defaultValue(ListMode.Blacklist) + .build() + ); + public final Setting> ignoredBlocks = sgGeneral.add(new BlockListSetting.Builder() .name("ignored-blocks") .description("Decide which blocks not to slip on") + .visible(() -> listMode.get() == ListMode.Blacklist) + .build() + ); + + public final Setting> allowedBlocks = sgGeneral.add(new BlockListSetting.Builder() + .name("allowed-blocks") + .description("Decide which blocks to slip on") + .visible(() -> listMode.get() == ListMode.Whitelist) .build() ); public Slippy() { super(Categories.Movement, "slippy", "Changes the base friction level of blocks."); } + + public enum ListMode { + Whitelist, + Blacklist + } }