From 0da0967d8a516e3ab365b99f80898cf369ab18f0 Mon Sep 17 00:00:00 2001 From: amyavi <144570677+amyavi@users.noreply.github.com> Date: Sun, 26 Jan 2025 02:29:15 -0300 Subject: [PATCH] refactor: cleanup mixins TextSerializerMixin was completely unused TextMixin was a fix for an exploit that no longer works on the latest version truncateChat/stripTextFormat were already handled in CustomChat mixin --- .../chipmunkmod/commands/UsernameCommand.java | 2 +- .../mixin/MinecraftClientAccessor.java | 6 +- .../chipmunkmod/mixin/StringHelperMixin.java | 10 --- .../chipmunk/chipmunkmod/mixin/TextMixin.java | 26 -------- .../mixin/TextSerializerMixin.java | 62 ------------------- src/main/resources/chipmunkmod.mixins.json | 2 - 6 files changed, 3 insertions(+), 105 deletions(-) delete mode 100644 src/main/java/land/chipmunk/chipmunkmod/mixin/TextMixin.java delete mode 100644 src/main/java/land/chipmunk/chipmunkmod/mixin/TextSerializerMixin.java diff --git a/src/main/java/land/chipmunk/chipmunkmod/commands/UsernameCommand.java b/src/main/java/land/chipmunk/chipmunkmod/commands/UsernameCommand.java index feecd37..6a506ac 100644 --- a/src/main/java/land/chipmunk/chipmunkmod/commands/UsernameCommand.java +++ b/src/main/java/land/chipmunk/chipmunkmod/commands/UsernameCommand.java @@ -23,7 +23,7 @@ import java.util.UUID; import land.chipmunk.chipmunkmod.mixin.MinecraftClientAccessor; public class UsernameCommand { - private static final Session ORIGINAL_SESSION = ((MinecraftClientAccessor) MinecraftClient.getInstance()).session(); + private static final Session ORIGINAL_SESSION = MinecraftClient.getInstance().getSession(); private static final SimpleCommandExceptionType USERNAME_TOO_LONG = new SimpleCommandExceptionType(Text.translatable("The specified username is longer than 16 characters")); public static void register (CommandDispatcher dispatcher) { diff --git a/src/main/java/land/chipmunk/chipmunkmod/mixin/MinecraftClientAccessor.java b/src/main/java/land/chipmunk/chipmunkmod/mixin/MinecraftClientAccessor.java index 04f2cb8..dad746f 100644 --- a/src/main/java/land/chipmunk/chipmunkmod/mixin/MinecraftClientAccessor.java +++ b/src/main/java/land/chipmunk/chipmunkmod/mixin/MinecraftClientAccessor.java @@ -1,15 +1,13 @@ package land.chipmunk.chipmunkmod.mixin; +import net.minecraft.client.MinecraftClient; import net.minecraft.client.session.Session; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mutable; import org.spongepowered.asm.mixin.gen.Accessor; -@Mixin(net.minecraft.client.MinecraftClient.class) +@Mixin(MinecraftClient.class) public interface MinecraftClientAccessor { - @Accessor("session") - Session session (); - @Mutable @Accessor("session") void session (Session session); diff --git a/src/main/java/land/chipmunk/chipmunkmod/mixin/StringHelperMixin.java b/src/main/java/land/chipmunk/chipmunkmod/mixin/StringHelperMixin.java index df42151..cc5a76a 100644 --- a/src/main/java/land/chipmunk/chipmunkmod/mixin/StringHelperMixin.java +++ b/src/main/java/land/chipmunk/chipmunkmod/mixin/StringHelperMixin.java @@ -8,16 +8,6 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(StringHelper.class) public class StringHelperMixin { - @Inject(method = "truncateChat", at = @At("HEAD"), cancellable = true) - private static void truncateChat (String text, CallbackInfoReturnable cir) { - cir.setReturnValue(text); - } - - @Inject(method = "stripTextFormat", at = @At("HEAD"), cancellable = true) - private static void stripTextFormat(String text, CallbackInfoReturnable cir) { - cir.setReturnValue(text); - } - @Inject(method = "isValidChar", at = @At("HEAD"), cancellable = true) private static void isValidChar (char chr, CallbackInfoReturnable cir) { cir.setReturnValue(chr >= ' ' && chr != '\u007f'); diff --git a/src/main/java/land/chipmunk/chipmunkmod/mixin/TextMixin.java b/src/main/java/land/chipmunk/chipmunkmod/mixin/TextMixin.java deleted file mode 100644 index c5e1d08..0000000 --- a/src/main/java/land/chipmunk/chipmunkmod/mixin/TextMixin.java +++ /dev/null @@ -1,26 +0,0 @@ -package land.chipmunk.chipmunkmod.mixin; - -import net.minecraft.text.StringVisitable; -import net.minecraft.text.Style; -import net.minecraft.text.Text; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import org.spongepowered.asm.mixin.injection.callback.LocalCapture; - -import java.util.Iterator; -import java.util.Optional; - -@Mixin(Text.class) -public interface TextMixin { - @Inject(method = "visit(Lnet/minecraft/text/StringVisitable$StyledVisitor;Lnet/minecraft/text/Style;)Ljava/util/Optional;", at = @At(value = "INVOKE", target = "Lnet/minecraft/text/Text;visit(Lnet/minecraft/text/StringVisitable$StyledVisitor;Lnet/minecraft/text/Style;)Ljava/util/Optional;"), cancellable = true, locals = LocalCapture.CAPTURE_FAILHARD) - private void visit (StringVisitable.StyledVisitor styledVisitor, Style style, CallbackInfoReturnable> cir, Style style2, Optional optional, Iterator var5, Text text) { - if (text == null) cir.setReturnValue(Optional.empty()); - } - - @Inject(method = "visit(Lnet/minecraft/text/StringVisitable$Visitor;)Ljava/util/Optional;", at = @At(value = "INVOKE", target = "Lnet/minecraft/text/Text;visit(Lnet/minecraft/text/StringVisitable$Visitor;)Ljava/util/Optional;"), cancellable = true, locals = LocalCapture.CAPTURE_FAILHARD) - private void visit (StringVisitable.Visitor visitor, CallbackInfoReturnable> cir, Optional optional, Iterator var3, Text text) { - if (text == null) cir.setReturnValue(Optional.empty()); - } -} diff --git a/src/main/java/land/chipmunk/chipmunkmod/mixin/TextSerializerMixin.java b/src/main/java/land/chipmunk/chipmunkmod/mixin/TextSerializerMixin.java deleted file mode 100644 index 0dd85e0..0000000 --- a/src/main/java/land/chipmunk/chipmunkmod/mixin/TextSerializerMixin.java +++ /dev/null @@ -1,62 +0,0 @@ -package land.chipmunk.chipmunkmod.mixin; - -import com.google.gson.JsonArray; -import com.google.gson.JsonDeserializationContext; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import net.minecraft.text.MutableText; -import net.minecraft.text.Text; -import net.minecraft.util.Formatting; -import org.spongepowered.asm.mixin.Mixin; -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.callback.CallbackInfoReturnable; - -import java.lang.reflect.Type; - -@Mixin(Text.Serializer.class) -public class TextSerializerMixin { - @Unique private static final int LIMIT = 8; - - @Unique private int i; - - @Unique - private boolean checkDepth (JsonElement element) { - if (element.isJsonPrimitive()) return false; - else if (i >= LIMIT) return true; - - if (element.isJsonArray()) { - i++; - - for (JsonElement item : element.getAsJsonArray()) if (checkDepth(item)) return true; - } else if (element.isJsonObject()) { - final JsonObject object = element.getAsJsonObject(); - - JsonArray array; - - if (object.has("extra")) array = object.get("extra").getAsJsonArray(); - else if (object.has("with")) array = object.get("with").getAsJsonArray(); - else return false; - - i++; - - for (JsonElement member : array) if (checkDepth(member)) return true; - } - - return false; - } - - @Inject(method = "deserialize(Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/text/MutableText;", at = @At("HEAD"), cancellable = true) - private void deserialize (JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext, CallbackInfoReturnable cir) { - i = 0; // better way to do this? - - final boolean overLimit = checkDepth(jsonElement); - - if (!overLimit) return; - - cir.setReturnValue(Text.empty()); // just ignores it - - cir.cancel(); - } -} diff --git a/src/main/resources/chipmunkmod.mixins.json b/src/main/resources/chipmunkmod.mixins.json index 56ea828..6a09716 100644 --- a/src/main/resources/chipmunkmod.mixins.json +++ b/src/main/resources/chipmunkmod.mixins.json @@ -12,8 +12,6 @@ "MinecraftClientAccessor", "StringHelperMixin", "ElderGuardianAppearanceParticleMixin", - "TextMixin", - "TextSerializerMixin", "SoundSystemMixin", "TextFieldWidgetMixin" ],