- 2,955
- 12
Кто то говорил что я не умею юзать ASM. Так вот, он глубоко ошибся.
public class RecordTransformer implements IClassTransformer {
@Override
public byte[] transform(String name, String transformedName, byte[] bytes) {
if ("net.minecraft.item.Item".equals(name))
{
ClassReader cr = new ClassReader(bytes);
ClassNode cn = new ClassNode(Opcodes.ASM4);
cr.accept(cn, ClassReader.EXPAND_FRAMES);
for(FieldNode field : cn.fields) {
if(field.name.equals("recordCat")) {
try {
field.value = ItemRecord.class.getConstructor(Integer.class, String.class).newInstance(2001, "lol");
} catch(Exception e) {
e.printStackTrace();
} } }
ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES | ClassWriter.COMPUTE_MAXS);
cn.accept(cw);
return cw.toByteArray();
}
return bytes;
}
}
@Override
public byte[] transform(String name, String transformedName, byte[] bytes) {
if ("net.minecraft.item.Item".equals(name))
{
ClassReader cr = new ClassReader(bytes);
ClassNode cn = new ClassNode(Opcodes.ASM4);
cr.accept(cn, ClassReader.EXPAND_FRAMES);
for(FieldNode field : cn.fields) {
if(field.name.equals("recordCat")) {
try {
field.value = ItemRecord.class.getConstructor(Integer.class, String.class).newInstance(2001, "lol");
} catch(Exception e) {
e.printStackTrace();
} } }
ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES | ClassWriter.COMPUTE_MAXS);
cn.accept(cw);
return cw.toByteArray();
}
return bytes;
}
}