import java.lang.instrument.ClassFileTransformer; import java.lang.instrument.Instrumentation; import java.security.ProtectionDomain; import java.util.HashSet; import java.util.Set; import jdk.internal.org.objectweb.asm.*; /** Log the exception vanilla 1.19 discards when player saving fails. */ public final class PlayerSaveDiagnostics { public static void premain(String args, Instrumentation instrumentation) { instrumentation.addTransformer(new ClassFileTransformer() { public byte[] transform(ClassLoader loader, String name, Class type, ProtectionDomain domain, byte[] bytes) { if (!"net/minecraft/class_29".equals(name)) return null; try { ClassReader reader = new ClassReader(bytes); ClassWriter writer = new ClassWriter(reader, ClassWriter.COMPUTE_MAXS); int[] injected = {0}; reader.accept(new ClassVisitor(Opcodes.ASM8, writer) { public MethodVisitor visitMethod(int access, String method, String desc, String signature, String[] exceptions) { MethodVisitor delegate = super.visitMethod(access, method, desc, signature, exceptions); if (!"method_262".equals(method)) return delegate; return new MethodVisitor(Opcodes.ASM8, delegate) { final Set