Slyde/src/client/java/io/gitlab/jfronny/slyde/mixin/GameOptionsMixin.java

31 lines
1.2 KiB
Java

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 <T> void slyde$replaceSetter(Optional<T> value, Consumer<T> originalSetter, String key, SimpleOption<T> 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);
});
}
}