- 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
Подскажите, как правильно мне трансформировать инвентарь игрока в ините класса инвентаря?