Port to 1.19.4 and overwrite Codec.checkRange to support new options
This commit is contained in:
parent
a9f5c66c86
commit
fc8f14e851
|
@ -13,13 +13,13 @@ repositories {
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
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")}")
|
modImplementation("io.gitlab.jfronny.libjf:libjf-config-core-v1:${prop("libjf_version")}")
|
||||||
|
|
||||||
// For testing in dev environment
|
// 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-devutil:${prop("libjf_version")}")
|
||||||
modLocalRuntime("io.gitlab.jfronny.libjf:libjf-config-ui-tiny-v1:${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")
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# https://fabricmc.net/develop/
|
# https://fabricmc.net/develop/
|
||||||
minecraft_version=1.19.3
|
minecraft_version=1.19.4
|
||||||
yarn_mappings=build.5
|
yarn_mappings=build.1
|
||||||
loader_version=0.14.12
|
loader_version=0.14.17
|
||||||
|
|
||||||
maven_group=io.gitlab.jfronny
|
maven_group=io.gitlab.jfronny
|
||||||
archives_base_name=slyde
|
archives_base_name=slyde
|
||||||
|
@ -13,4 +13,4 @@ curseforge_id=411386
|
||||||
curseforge_required_dependencies=libjf
|
curseforge_required_dependencies=libjf
|
||||||
curseforge_optional_dependencies=modmenu
|
curseforge_optional_dependencies=modmenu
|
||||||
|
|
||||||
libjf_version=3.4.1
|
libjf_version=3.6.0
|
||||||
|
|
|
@ -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 <T> JoeException(String key, SimpleOption<T> option, CallbackInfo ci, DataResult<JsonElement> dataResult) {
|
||||||
|
}
|
||||||
|
}
|
|
@ -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 <N extends Number & Comparable<N>> Function<N, DataResult<N>> checkRange(final N minInclusive, final N maxInclusive) {
|
||||||
|
return DataResult::success;
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,5 +1,6 @@
|
||||||
package io.gitlab.jfronny.slyde.mixin;
|
package io.gitlab.jfronny.slyde.mixin;
|
||||||
|
|
||||||
|
import com.mojang.datafixers.util.Either;
|
||||||
import com.mojang.serialization.*;
|
import com.mojang.serialization.*;
|
||||||
import net.minecraft.client.option.*;
|
import net.minecraft.client.option.*;
|
||||||
import org.spongepowered.asm.mixin.*;
|
import org.spongepowered.asm.mixin.*;
|
||||||
|
@ -12,7 +13,8 @@ import java.util.*;
|
||||||
public class DoubleSliderCallbacksMixin {
|
public class DoubleSliderCallbacksMixin {
|
||||||
@Redirect(method = "codec", at = @At(value = "INVOKE", target = "Lcom/mojang/serialization/Codec;doubleRange(DD)Lcom/mojang/serialization/Codec;", remap = false))
|
@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) {
|
private Codec<Double> 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)
|
@Inject(method = "validate(Ljava/lang/Double;)Ljava/util/Optional;", at = @At("HEAD"), cancellable = true)
|
||||||
|
|
|
@ -12,7 +12,7 @@ import java.util.function.*;
|
||||||
public class GameOptionsMixin {
|
public class GameOptionsMixin {
|
||||||
@Redirect(method = "accept", at = @At(value = "INVOKE", target = "Ljava/util/Optional;ifPresent(Ljava/util/function/Consumer;)V", ordinal = 1))
|
@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) {
|
private <T> void slyde$replaceSetter(Optional<T> value, Consumer<T> originalSetter, String key, SimpleOption<T> option) {
|
||||||
value.ifPresent((realValue) -> {
|
value.ifPresent(realValue -> {
|
||||||
if (option.getCallbacks() instanceof SimpleOption.SliderCallbacks) {
|
if (option.getCallbacks() instanceof SimpleOption.SliderCallbacks) {
|
||||||
if (!MinecraftClient.getInstance().isRunning()) {
|
if (!MinecraftClient.getInstance().isRunning()) {
|
||||||
option.value = realValue;
|
option.value = realValue;
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
"compatibilityLevel": "JAVA_17",
|
"compatibilityLevel": "JAVA_17",
|
||||||
"plugin": "io.gitlab.jfronny.slyde.Plugin",
|
"plugin": "io.gitlab.jfronny.slyde.Plugin",
|
||||||
"client": [
|
"client": [
|
||||||
|
"CodecMixin",
|
||||||
"DoubleSliderCallbacksMixin",
|
"DoubleSliderCallbacksMixin",
|
||||||
"GameOptionsMixin",
|
"GameOptionsMixin",
|
||||||
"SliderWidgetMixin",
|
"SliderWidgetMixin",
|
||||||
|
|
Loading…
Reference in New Issue