package io.gitlab.jfronny.slyde.mixin; import net.minecraft.client.*; import net.minecraft.client.option.*; import org.spongepowered.asm.mixin.*; import org.spongepowered.asm.mixin.injection.*; import java.util.*; import java.util.function.*; @Mixin(targets = "net.minecraft.client.option.GameOptions$2") public class GameOptionsMixin { @Redirect(method = "accept", at = @At(value = "INVOKE", target = "Ljava/util/Optional;ifPresent(Ljava/util/function/Consumer;)V", ordinal = 1)) private void slyde$replaceSetter(Optional value, Consumer originalSetter, String key, SimpleOption option) { value.ifPresent(realValue -> { if (option.getCallbacks() instanceof SimpleOption.SliderCallbacks) { if (!MinecraftClient.getInstance().isRunning()) { option.value = realValue; return; } if (!Objects.equals(option.getValue(), realValue)) { option.value = realValue; option.changeCallback.accept(realValue); } return; } originalSetter.accept(realValue); }); } }