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 {
|
||||
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")
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
||||
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<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)
|
||||
|
|
|
@ -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 <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 (!MinecraftClient.getInstance().isRunning()) {
|
||||
option.value = realValue;
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
"compatibilityLevel": "JAVA_17",
|
||||
"plugin": "io.gitlab.jfronny.slyde.Plugin",
|
||||
"client": [
|
||||
"CodecMixin",
|
||||
"DoubleSliderCallbacksMixin",
|
||||
"GameOptionsMixin",
|
||||
"SliderWidgetMixin",
|
||||
|
|
Loading…
Reference in New Issue