[1.6.4]ASM - InventoryPlayer

435
1
Изменяю игрока таким образом:
Код:
    private byte[] transformInventoryPlayer(byte[] bytecode, boolean obf) throws IOException {
        Logger.console("Transforming InventoryPlayer");
        ClassNode classNode = new ClassNode();
        ClassReader classReader = new ClassReader(bytecode);
        classReader.accept(classNode, 0);
        String className = obf?"Lud;":"Lnet.minecraft.entity.player.InventoryPlayer;";
        String initDescription = obf?"(Luf;)V":"(Lnet/minecraft/entity/player/EntityPlayer;)V";
        this.insertCall(classNode, "<init>", initDescription, "com/mrcreppo/artefact/src/asm/MethodsHelper", "initInventory", "("+className+")V", true, false, (Object)null, new int[]{0}, new int[]{25});
        ClassWriter writer = new ClassWriter(0);
        classNode.accept(writer);
        return writer.toByteArray();
    }

В итоге получаю краш:

Код:
2015-08-15 10:34:40 [INFO] [STDOUT] java.lang.NoClassDefFoundError: net/minecraft/entity/player/InventoryPlayer
2015-08-15 10:34:40 [INFO] [STDOUT]     at net.minecraft.entity.player.EntityPlayer.<init>(EntityPlayer.java:102)
2015-08-15 10:34:40 [INFO] [STDOUT]     at net.minecraft.entity.player.EntityPlayerMP.<init>(EntityPlayerMP.java:170)
2015-08-15 10:34:40 [INFO] [STDOUT]     at net.minecraft.server.management.ServerConfigurationManager.createPlayerForUser(ServerConfigurationManager.java:388)
2015-08-15 10:34:40 [INFO] [STDOUT]     at net.minecraft.server.integrated.IntegratedServerListenThread.networkTick(IntegratedServerListenThread.java:91)
2015-08-15 10:34:40 [INFO] [STDOUT]     at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:699)
2015-08-15 10:34:40 [INFO] [STDOUT]     at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:595)
2015-08-15 10:34:40 [INFO] [STDOUT]     at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:134)
2015-08-15 10:34:40 [INFO] [STDOUT]     at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:489)
2015-08-15 10:34:40 [INFO] [STDOUT]     at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16)
2015-08-15 10:34:40 [INFO] [STDOUT] Caused by: java.lang.ClassNotFoundException: net.minecraft.entity.player.InventoryPlayer
2015-08-15 10:34:40 [INFO] [STDOUT]     at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:186)
2015-08-15 10:34:40 [INFO] [STDOUT]     at java.lang.ClassLoader.loadClass(Unknown Source)
2015-08-15 10:34:40 [INFO] [STDOUT]     at java.lang.ClassLoader.loadClass(Unknown Source)
2015-08-15 10:34:40 [INFO] [STDOUT]     ... 9 more
2015-08-15 10:34:40 [INFO] [STDOUT] Caused by: java.lang.ClassFormatError: Class name contains illegal character '.' in descriptor in class file net/minecraft/entity/player/InventoryPlayer
2015-08-15 10:34:40 [INFO] [STDOUT]     at java.lang.ClassLoader.defineClass1(Native Method)
2015-08-15 10:34:40 [INFO] [STDOUT]     at java.lang.ClassLoader.defineClass(Unknown Source)
2015-08-15 10:34:40 [INFO] [STDOUT]     at java.security.SecureClassLoader.defineClass(Unknown Source)
2015-08-15 10:34:40 [INFO] [STDOUT]     at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:178)
2015-08-15 10:34:40 [INFO] [STDOUT]     ... 11 more

Подскажите, как правильно мне трансформировать инвентарь игрока в ините класса инвентаря?
 
Почитай текст экзепшена ещё раз. Особенно ту строку, что после "Caused by:".

И нафиг использовать мою говнокодистую и неудобную версию вставщика хуков, если я написал вариант в 10 раз удобнее?
 
Назад
Сверху