From fc8f14e851b38a41d878982cd33e90dded946f26 Mon Sep 17 00:00:00 2001 From: JFronny Date: Tue, 14 Mar 2023 19:31:01 +0100 Subject: [PATCH] Port to 1.19.4 and overwrite Codec.checkRange to support new options --- build.gradle.kts | 6 +++--- gradle.properties | 8 ++++---- .../io/gitlab/jfronny/slyde/JoeException.java | 11 ++++++++++ .../jfronny/slyde/mixin/CodecMixin.java | 20 +++++++++++++++++++ .../mixin/DoubleSliderCallbacksMixin.java | 4 +++- .../jfronny/slyde/mixin/GameOptionsMixin.java | 2 +- src/client/resources/slyde.mixins.json | 1 + 7 files changed, 43 insertions(+), 9 deletions(-) create mode 100644 src/client/java/io/gitlab/jfronny/slyde/JoeException.java create mode 100644 src/client/java/io/gitlab/jfronny/slyde/mixin/CodecMixin.java diff --git a/build.gradle.kts b/build.gradle.kts index 70724d6..5125dde 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -13,13 +13,13 @@ repositories { } dependencies { - modCompileOnly("maven.modrinth:sodium:mc1.19.3-0.4.6") + modCompileOnly("maven.modrinth:sodium:mc1.19.4-0.4.10") modImplementation("io.gitlab.jfronny.libjf:libjf-config-core-v1:${prop("libjf_version")}") // For testing in dev environment - modLocalRuntime("net.fabricmc.fabric-api:fabric-api:0.70.0+1.19.3") + modLocalRuntime("net.fabricmc.fabric-api:fabric-api:0.75.3+1.19.4") modLocalRuntime("io.gitlab.jfronny.libjf:libjf-devutil:${prop("libjf_version")}") modLocalRuntime("io.gitlab.jfronny.libjf:libjf-config-ui-tiny-v1:${prop("libjf_version")}") - modLocalRuntime("com.terraformersmc:modmenu:5.0.2") + modLocalRuntime("com.terraformersmc:modmenu:6.1.0-rc.1") } diff --git a/gradle.properties b/gradle.properties index a3d6c5e..c9d0d50 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ # https://fabricmc.net/develop/ -minecraft_version=1.19.3 -yarn_mappings=build.5 -loader_version=0.14.12 +minecraft_version=1.19.4 +yarn_mappings=build.1 +loader_version=0.14.17 maven_group=io.gitlab.jfronny archives_base_name=slyde @@ -13,4 +13,4 @@ curseforge_id=411386 curseforge_required_dependencies=libjf curseforge_optional_dependencies=modmenu -libjf_version=3.4.1 +libjf_version=3.6.0 diff --git a/src/client/java/io/gitlab/jfronny/slyde/JoeException.java b/src/client/java/io/gitlab/jfronny/slyde/JoeException.java new file mode 100644 index 0000000..fb4ad61 --- /dev/null +++ b/src/client/java/io/gitlab/jfronny/slyde/JoeException.java @@ -0,0 +1,11 @@ +package io.gitlab.jfronny.slyde; + +import com.google.gson.JsonElement; +import com.mojang.serialization.DataResult; +import net.minecraft.client.option.SimpleOption; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +public class JoeException extends RuntimeException { + public JoeException(String key, SimpleOption option, CallbackInfo ci, DataResult dataResult) { + } +} diff --git a/src/client/java/io/gitlab/jfronny/slyde/mixin/CodecMixin.java b/src/client/java/io/gitlab/jfronny/slyde/mixin/CodecMixin.java new file mode 100644 index 0000000..e35a3bc --- /dev/null +++ b/src/client/java/io/gitlab/jfronny/slyde/mixin/CodecMixin.java @@ -0,0 +1,20 @@ +package io.gitlab.jfronny.slyde.mixin; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.DataResult; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; + +import java.util.function.Function; + +@Mixin(Codec.class) +public interface CodecMixin { + /** + * @author JFronny + * @reason No, don't check anything + */ + @Overwrite(remap = false) + static > Function> checkRange(final N minInclusive, final N maxInclusive) { + return DataResult::success; + } +} diff --git a/src/client/java/io/gitlab/jfronny/slyde/mixin/DoubleSliderCallbacksMixin.java b/src/client/java/io/gitlab/jfronny/slyde/mixin/DoubleSliderCallbacksMixin.java index 60a3d3a..e7e0771 100644 --- a/src/client/java/io/gitlab/jfronny/slyde/mixin/DoubleSliderCallbacksMixin.java +++ b/src/client/java/io/gitlab/jfronny/slyde/mixin/DoubleSliderCallbacksMixin.java @@ -1,5 +1,6 @@ package io.gitlab.jfronny.slyde.mixin; +import com.mojang.datafixers.util.Either; import com.mojang.serialization.*; import net.minecraft.client.option.*; import org.spongepowered.asm.mixin.*; @@ -12,7 +13,8 @@ import java.util.*; 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 slyde$returnRangelessCodec(double minInclusive, double maxInclusive) { - return Codec.DOUBLE; + return Codec.either(Codec.DOUBLE, Codec.BOOL) + .xmap(either -> either.map(value -> value, value -> value ? 1.0 : 0.0), Either::left); } @Inject(method = "validate(Ljava/lang/Double;)Ljava/util/Optional;", at = @At("HEAD"), cancellable = true) diff --git a/src/client/java/io/gitlab/jfronny/slyde/mixin/GameOptionsMixin.java b/src/client/java/io/gitlab/jfronny/slyde/mixin/GameOptionsMixin.java index a9f6f44..2ec139a 100644 --- a/src/client/java/io/gitlab/jfronny/slyde/mixin/GameOptionsMixin.java +++ b/src/client/java/io/gitlab/jfronny/slyde/mixin/GameOptionsMixin.java @@ -12,7 +12,7 @@ import java.util.function.*; 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) -> { + value.ifPresent(realValue -> { if (option.getCallbacks() instanceof SimpleOption.SliderCallbacks) { if (!MinecraftClient.getInstance().isRunning()) { option.value = realValue; diff --git a/src/client/resources/slyde.mixins.json b/src/client/resources/slyde.mixins.json index 5a714c4..1289192 100644 --- a/src/client/resources/slyde.mixins.json +++ b/src/client/resources/slyde.mixins.json @@ -5,6 +5,7 @@ "compatibilityLevel": "JAVA_17", "plugin": "io.gitlab.jfronny.slyde.Plugin", "client": [ + "CodecMixin", "DoubleSliderCallbacksMixin", "GameOptionsMixin", "SliderWidgetMixin",