12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- var transformerName = "Font Renderer Transformer";
- var ASMAPI = Java.type('net.minecraftforge.coremod.api.ASMAPI');
- var Opcodes = Java.type('org.objectweb.asm.Opcodes');
- var MethodInsnNode = Java.type("org.objectweb.asm.tree.MethodInsnNode");
- var FieldInsnNode = Java.type("org.objectweb.asm.tree.FieldInsnNode");
- function initializeCoreMod() {
- return {
- transformerName: {
- 'target': {
- 'type': 'CLASS',
- 'name': 'net.minecraft.client.gui.FontRenderer'
- },
- 'transformer': function (classNode) {
- var methods = classNode.methods;
-
- var targetMethodName = ASMAPI.mapMethod("func_228081_c_"); // renderStringAtPos
- var targetMethodDesc = "(Ljava/lang/String;FFIZLnet/minecraft/client/renderer/Matrix4f;Lnet/minecraft/client/renderer/IRenderTypeBuffer;ZII)F";
- for (var i in methods) {
- var method = methods[i];
- if (method.name.equals(targetMethodName) && method.desc.equals(targetMethodDesc)) {
- print(method.name + " " + method.desc);
- transform(method);
- break;
- }
- }
- return classNode;
- }
- }
- };
- }
- function transform(method) {
- var instrList = method.instructions;
-
- for (var i = 0; i < instrList.size(); ++i) {
- var instr = instrList.get(i);
- if(instr instanceof MethodInsnNode && instr.owner.equals("net/minecraft/util/text/TextFormatting")) {
- instrList.remove(instr);
- instrList.insert(instrList.get(i - 1), new MethodInsnNode(instr.getOpcode(), "me/ktcm/ModTextFormatting",
- ASMAPI.mapMethod(instr.name), instr.desc.replace("net/minecraft/util/text/TextFormatting", "me/ktcm/ModTextFormatting"), false));
- } else if(instr instanceof FieldInsnNode && instr.owner.equals("net/minecraft/util/text/TextFormatting")) {
- instrList.remove(instr);
- instrList.insert(instrList.get(i - 1), new FieldInsnNode(instr.getOpcode(), "me/ktcm/ModTextFormatting",
- ASMAPI.mapField(instr.name), instr.desc.replace("net/minecraft/util/text/TextFormatting", "me/ktcm/ModTextFormatting")));
- }
- }
- }
|