From 692ede0aa1194f964a92bc9ab23ee319b8c21ef4 Mon Sep 17 00:00:00 2001 From: melontini <104443436+melontini@users.noreply.github.com> Date: Sat, 27 Apr 2024 22:34:15 +0700 Subject: [PATCH] ModifyArg stacks. --- .../commander/impl/mixin/AdvancementRewardsMixin.java | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/main/java/me/melontini/commander/impl/mixin/AdvancementRewardsMixin.java b/src/main/java/me/melontini/commander/impl/mixin/AdvancementRewardsMixin.java index 30f06b0..d1ad489 100644 --- a/src/main/java/me/melontini/commander/impl/mixin/AdvancementRewardsMixin.java +++ b/src/main/java/me/melontini/commander/impl/mixin/AdvancementRewardsMixin.java @@ -1,7 +1,5 @@ package me.melontini.commander.impl.mixin; -import com.llamalad7.mixinextras.injector.wrapoperation.Operation; -import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import com.mojang.datafixers.kinds.App; import com.mojang.serialization.Codec; import com.mojang.serialization.MapCodec; @@ -21,6 +19,7 @@ import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.ModifyArg; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import java.util.Collections; @@ -34,20 +33,18 @@ public class AdvancementRewardsMixin { @Unique private List commands; //https://gist.github.com/kvverti/dec17e824922e1974313b8beadc621c5 - //I wonder if WrapOperation actually helps with anything here. - @WrapOperation(at = @At(value = "INVOKE", target = "Lcom/mojang/serialization/codecs/RecordCodecBuilder;create(Ljava/util/function/Function;)Lcom/mojang/serialization/Codec;"), method = "") - private static Codec commander$modifyCodec(Function, ? extends App, AdvancementRewards>> builder, Operation> original) { + @ModifyArg(at = @At(value = "INVOKE", target = "Lcom/mojang/serialization/codecs/RecordCodecBuilder;create(Ljava/util/function/Function;)Lcom/mojang/serialization/Codec;"), index = 0, method = "") + private static Function, ? extends App, AdvancementRewards>> commander$modifyCodec(Function, ? extends App, AdvancementRewards>> builder) { MapCodec mapCodec = RecordCodecBuilder.mapCodec(builder); Codec> commanderCodec = ExtraCodecs.list(Command.CODEC.codec()); - Function, ? extends App, AdvancementRewards>> wrapped = data -> data.group( + return data -> data.group( mapCodec.forGetter(Function.identity()), ExtraCodecs.optional("commander:commands", commanderCodec, Collections.emptyList()).forGetter(object -> ((AdvancementRewardsMixin)(Object)object).commands) ).apply(data, (advancementRewards, commands) -> { ((AdvancementRewardsMixin) (Object) advancementRewards).commands = commands; return advancementRewards; }); - return original.call(wrapped); } @Inject(at = @At("TAIL"), method = "apply")