diff options
Diffstat (limited to 'src/main/java/de')
4 files changed, 73 insertions, 1 deletions
diff --git a/src/main/java/de/hysky/skyblocker/config/categories/UIAndVisualsCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/UIAndVisualsCategory.java index 5f8bdd3e..658c00bb 100644 --- a/src/main/java/de/hysky/skyblocker/config/categories/UIAndVisualsCategory.java +++ b/src/main/java/de/hysky/skyblocker/config/categories/UIAndVisualsCategory.java @@ -27,9 +27,17 @@ import java.awt.*; public class UIAndVisualsCategory { public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) { return ConfigCategory.createBuilder() - .name(Text.translatable("skyblocker.config.uiAndVisuals")) + .name(Text.translatable("skyblocker.config.uiAndVisuals")) //Ungrouped Options + .option(Option.<Integer>createBuilder() + .name(Text.translatable("skyblocker.config.uiAndVisuals.nightVisionStrength")) + .description(OptionDescription.of(Text.translatable("skyblocker.config.uiAndVisuals.nightVisionStrength.@Tooltip"))) + .binding(defaults.uiAndVisuals.nightVisionStrength, + () -> config.uiAndVisuals.nightVisionStrength, + newValue -> config.uiAndVisuals.nightVisionStrength = newValue) + .controller(opt -> IntegerSliderControllerBuilder.create(opt).range(0, 100).step(1)) + .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("skyblocker.config.uiAndVisuals.compactorDeletorPreview")) .binding(defaults.uiAndVisuals.compactorDeletorPreview, diff --git a/src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java b/src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java index 1d4301e0..55ec5094 100644 --- a/src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java +++ b/src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java @@ -11,6 +11,9 @@ import java.util.ArrayList; import java.util.List; public class UIAndVisualsConfig { + @SerialEntry + public int nightVisionStrength = 100; + @SerialEntry public boolean compactorDeletorPreview = true; diff --git a/src/main/java/de/hysky/skyblocker/mixins/GameRendererMixin.java b/src/main/java/de/hysky/skyblocker/mixins/GameRendererMixin.java new file mode 100644 index 00000000..36c76c44 --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/mixins/GameRendererMixin.java @@ -0,0 +1,21 @@ +package de.hysky.skyblocker.mixins; + +import com.llamalad7.mixinextras.injector.ModifyReturnValue; +import de.hysky.skyblocker.config.SkyblockerConfigManager; +import de.hysky.skyblocker.utils.Utils; +import net.minecraft.client.render.GameRenderer; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(GameRenderer.class) +public class GameRendererMixin { + + @ModifyReturnValue(method = "getNightVisionStrength", at = @At("RETURN")) + private static float onGetNightVisionStrength(float original) { + if (original == 1.0F && Utils.isOnSkyblock()) { + var strength = SkyblockerConfigManager.get().uiAndVisuals.nightVisionStrength; + return Math.clamp(strength / 100.0F, 0, 100); + } + return original; + } +} diff --git a/src/main/java/de/hysky/skyblocker/skyblock/NightVisionCommand.java b/src/main/java/de/hysky/skyblocker/skyblock/NightVisionCommand.java new file mode 100644 index 00000000..7fa9d780 --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/skyblock/NightVisionCommand.java @@ -0,0 +1,40 @@ +package de.hysky.skyblocker.skyblock; + +import com.mojang.brigadier.CommandDispatcher; +import com.mojang.brigadier.arguments.IntegerArgumentType; +import com.mojang.brigadier.context.CommandContext; +import de.hysky.skyblocker.SkyblockerMod; +import de.hysky.skyblocker.annotations.Init; +import de.hysky.skyblocker.config.SkyblockerConfig; +import de.hysky.skyblocker.config.SkyblockerConfigManager; +import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; +import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource; +import net.minecraft.command.CommandRegistryAccess; +import net.minecraft.text.Text; + +import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.argument; +import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.literal; + +public class NightVisionCommand { + + @Init + public static void init() { + ClientCommandRegistrationCallback.EVENT.register(NightVisionCommand::register); + } + + private static void register(CommandDispatcher<FabricClientCommandSource> dispatcher, CommandRegistryAccess access) { + dispatcher.register(literal(SkyblockerMod.NAMESPACE) + .then(literal("nightVision") + .then(argument("strength", IntegerArgumentType.integer(0, 100)) + .executes(context -> NightVisionCommand.writeStrength(context, IntegerArgumentType.getInteger(context, "strength")))) + .then(literal("off").executes(context -> NightVisionCommand.writeStrength(context, 0))) + .then(literal("full").executes(context -> NightVisionCommand.writeStrength(context, 100))))); + } + + private static int writeStrength(CommandContext<FabricClientCommandSource> context, int strength) { + SkyblockerConfigManager.get().uiAndVisuals.nightVisionStrength = strength; + context.getSource().sendFeedback(Text.translatable("skyblocker.nightVision.success", strength)); + SkyblockerConfigManager.save(); + return 1; + } +} |
