Update for 1.19
This commit is contained in:
parent
3b838996be
commit
078010a0ca
|
@ -1,3 +1,5 @@
|
|||
Slyde allow setting values for options that were not intended by mojang (for example: ridiculous fov effects, gamma, render distance)
|
||||
|
||||
This will (obviously) break things if you are not careful (for example: changing the target resolution outside its slider will cause a crash)
|
||||
This will (obviously) break things if you are not careful (for example: changing the target resolution outside its slider will cause a crash)
|
||||
|
||||
To achieve this result, Slyde not only modifies the widgets, but also the relevant options code using a solution based on [FiveOneFourOneEight by apple502j](https://github.com/apple502j/FiveOneFourOneEight)
|
16
build.gradle
16
build.gradle
|
@ -1,21 +1,21 @@
|
|||
apply from: "https://jfmods.gitlab.io/scripts/jfmod.gradle"
|
||||
|
||||
loom {
|
||||
accessWidenerPath = file("src/main/resources/slyde.accesswidener")
|
||||
}
|
||||
|
||||
repositories {
|
||||
maven { url 'https://api.modrinth.com/maven' }
|
||||
}
|
||||
|
||||
dependencies {
|
||||
// For testing in dev environment
|
||||
modRuntimeOnly "net.fabricmc.fabric-api:fabric-api:0.47.8+1.18.2"
|
||||
modRuntimeOnly "net.fabricmc.fabric-api:fabric-api:0.55.1+1.19"
|
||||
|
||||
modRuntimeOnly modCompileOnly("maven.modrinth:sodium:mc1.18.2-0.4.1")
|
||||
modCompileOnly("maven.modrinth:sodium:mc1.19-0.4.2")
|
||||
|
||||
include modImplementation("io.gitlab.jfronny.libjf:libjf-config-v0:${project.jfapi_version}")
|
||||
include("io.gitlab.jfronny.libjf:libjf-unsafe-v0:${project.jfapi_version}")
|
||||
include("io.gitlab.jfronny.libjf:libjf-base:${project.jfapi_version}")
|
||||
modImplementation("io.gitlab.jfronny.libjf:libjf-config-v0:${project.jfapi_version}")
|
||||
modRuntimeOnly("io.gitlab.jfronny.libjf:libjf-devutil-v0:${project.jfapi_version}")
|
||||
|
||||
modImplementation "com.terraformersmc:modmenu:3.1.0"
|
||||
|
||||
include modRuntimeOnly('io.gitlab.jfronny:gson:2.9.0.2022.4.2.19.45.43') // Dependency of LibJF 2.7.0
|
||||
modImplementation "com.terraformersmc:modmenu:4.0.0-beta.4"
|
||||
}
|
||||
|
|
|
@ -1,13 +1,15 @@
|
|||
# https://fabricmc.net/develop/
|
||||
minecraft_version=1.18.2
|
||||
yarn_mappings=build.2
|
||||
loader_version=0.13.3
|
||||
minecraft_version=1.19
|
||||
yarn_mappings=build.1
|
||||
loader_version=0.14.6
|
||||
maven_group=io.gitlab.jfronny
|
||||
archives_base_name=Slyde
|
||||
|
||||
jfapi_version=2.7.1
|
||||
jfapi_version=2.9.1
|
||||
|
||||
modrinth_id=diCZrsch
|
||||
modrinth_required_dependencies=WKwQAwke
|
||||
modrinth_optional_dependencies=mOgUt4GM
|
||||
curseforge_id=411386
|
||||
curseforge_required_dependencies=libjf
|
||||
curseforge_optional_dependencies=modmenu
|
||||
|
|
|
@ -1,24 +0,0 @@
|
|||
package io.gitlab.jfronny.slyde.mixin;
|
||||
|
||||
import net.minecraft.client.option.DoubleOption;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||
|
||||
@Mixin(DoubleOption.class)
|
||||
public class DoubleOptionMixin {
|
||||
@Redirect(method = "getRatio(D)D", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/math/MathHelper;clamp(DDD)D"))
|
||||
private double getRatioClamp(double value, double min, double max) {
|
||||
return value;
|
||||
}
|
||||
|
||||
@Redirect(method = "getValue(D)D", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/math/MathHelper;clamp(DDD)D"))
|
||||
private double getValueClamp(double value, double min, double max) {
|
||||
return value;
|
||||
}
|
||||
|
||||
@Redirect(method = "adjust(D)D", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/math/MathHelper;clamp(DDD)D"))
|
||||
private double adjustClamp(double value, double min, double max) {
|
||||
return value;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
package io.gitlab.jfronny.slyde.mixin;
|
||||
|
||||
import com.mojang.serialization.*;
|
||||
import net.minecraft.client.option.*;
|
||||
import org.spongepowered.asm.mixin.*;
|
||||
import org.spongepowered.asm.mixin.injection.*;
|
||||
import org.spongepowered.asm.mixin.injection.callback.*;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
@Mixin(SimpleOption.DoubleSliderCallbacks.class)
|
||||
public class DoubleSliderCallbacksMixin {
|
||||
@Redirect(method = "codec", at = @At(value = "INVOKE", target = "Lcom/mojang/serialization/Codec;doubleRange(DD)Lcom/mojang/serialization/Codec;", remap = false))
|
||||
private Codec<Double> slyde$returnRangelessCodec(double minInclusive, double maxInclusive) {
|
||||
return Codec.DOUBLE;
|
||||
}
|
||||
|
||||
@Inject(method = "validate(Ljava/lang/Double;)Ljava/util/Optional;", at = @At("HEAD"), cancellable = true)
|
||||
private void slyde$skipValidate(Double double_, CallbackInfoReturnable<Optional<Double>> cir) {
|
||||
cir.setReturnValue(Optional.of(double_));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
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);
|
||||
});
|
||||
}
|
||||
}
|
|
@ -10,7 +10,7 @@ import org.spongepowered.asm.mixin.injection.Redirect;
|
|||
@Mixin(SliderWidget.class)
|
||||
public abstract class SliderWidgetMixin {
|
||||
@Redirect(method = "setValue(D)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/math/MathHelper;clamp(DDD)D"))
|
||||
private double adjustClamp(double value, double min, double max) {
|
||||
private double slyde$adjustClamp(double value, double min, double max) {
|
||||
return Slyde.isActive() ? value : MathHelper.clamp(value, min, max);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@ import org.spongepowered.asm.mixin.injection.Redirect;
|
|||
@Mixin(targets = "me.jellysquid.mods.sodium.client.gui.options.control.SliderControl$Button")
|
||||
public abstract class SodiumSliderControlMixin {
|
||||
@Redirect(method = "setValue(D)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/math/MathHelper;clamp(DDD)D"))
|
||||
private double adjustClamp(double value, double min, double max) {
|
||||
private double slyde$adjustClamp(double value, double min, double max) {
|
||||
return Slyde.isActive() ? value : MathHelper.clamp(value, min, max);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
package io.gitlab.jfronny.slyde.mixin;
|
||||
|
||||
import com.mojang.serialization.*;
|
||||
import net.minecraft.client.option.*;
|
||||
import org.spongepowered.asm.mixin.*;
|
||||
import org.spongepowered.asm.mixin.injection.*;
|
||||
import org.spongepowered.asm.mixin.injection.callback.*;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
@Mixin(SimpleOption.ValidatingIntSliderCallbacks.class)
|
||||
public class ValidatingIntSliderCallbacksMixin {
|
||||
@Inject(method = "codec()Lcom/mojang/serialization/Codec;", at = @At("HEAD"), cancellable = true)
|
||||
private void slyde$returnRangelessCodec(CallbackInfoReturnable<Codec<Integer>> cir) {
|
||||
cir.setReturnValue(Codec.INT);
|
||||
}
|
||||
|
||||
@Inject(method = "validate(Ljava/lang/Integer;)Ljava/util/Optional;", at = @At("HEAD"), cancellable = true)
|
||||
private void slyde$skipValidate(Integer integer, CallbackInfoReturnable<Optional<Integer>> cir) {
|
||||
cir.setReturnValue(Optional.of(integer));
|
||||
}
|
||||
}
|
|
@ -15,13 +15,12 @@
|
|||
"license": "MIT",
|
||||
"environment": "*",
|
||||
"entrypoints": {
|
||||
"libjf:config": [
|
||||
"io.gitlab.jfronny.slyde.Cfg"
|
||||
]
|
||||
"libjf:config": ["io.gitlab.jfronny.slyde.Cfg"]
|
||||
},
|
||||
"mixins": [
|
||||
"slyde.mixins.json"
|
||||
],
|
||||
"accessWidener": "slyde.accesswidener",
|
||||
"depends": {
|
||||
"fabricloader": ">=0.12.0",
|
||||
"minecraft": "*",
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
accessWidener v2 named
|
||||
|
||||
accessible class net/minecraft/client/option/SimpleOption$SliderCallbacks
|
||||
|
||||
accessible field net/minecraft/client/option/SimpleOption value Ljava/lang/Object;
|
||||
accessible field net/minecraft/client/option/SimpleOption changeCallback Ljava/util/function/Consumer;
|
|
@ -2,14 +2,14 @@
|
|||
"required": true,
|
||||
"minVersion": "0.8",
|
||||
"package": "io.gitlab.jfronny.slyde.mixin",
|
||||
"compatibilityLevel": "JAVA_14",
|
||||
"compatibilityLevel": "JAVA_17",
|
||||
"plugin": "io.gitlab.jfronny.slyde.Plugin",
|
||||
"mixins": [
|
||||
],
|
||||
"client": [
|
||||
"DoubleOptionMixin",
|
||||
"DoubleSliderCallbacksMixin",
|
||||
"GameOptionsMixin",
|
||||
"SliderWidgetMixin",
|
||||
"SodiumSliderControlMixin"
|
||||
"SodiumSliderControlMixin",
|
||||
"ValidatingIntSliderCallbacksMixin"
|
||||
],
|
||||
"injectors": {
|
||||
"defaultRequire": 1
|
||||
|
|
Loading…
Reference in New Issue