Спавн Drivable из flan's mod

Версия Minecraft
1.7.10
214
11
59
Привет.

Я пишу мод, в котором задумывалось спавнить автомобили из фланса. Мне показалось, что проблем с этим не возникнет, но...

В общем, максимум, что получилось написать:
Java:
                PlaneType planeType = PlaneType.getPlane("Chinook");
                DriveableData driveableData = new DriveableData(new NBTTagCompound());
                for(DriveableType dt : DriveableType.types) {
                    if(dt.name.equals("Chinook")) {
                        planeType = (PlaneType) dt;
                    }
                }
                EntityPlane plane = new EntityPlane(player.worldObj, player.posX, 100, player.posZ, planeType, driveableData);
                player.worldObj.spawnEntityInWorld(plane);
Но этот код крашит игру.
Есть здесь знающие ребята, которые подсказали бы где копать или как заспавнить ?
 
3,005
192
592
214
11
59
Строка, на которую ругается.
Код:
                EntityPlane plane = new EntityPlane(player.worldObj, player.posX, 100,
                        player.posZ, planeType, driveableData);

Java:
 Couldn't process command: 'test'
java.lang.NullPointerException
    at com.flansmod.common.driveables.EntityDriveable.<init>(EntityDriveable.java:122) ~[EntityDriveable.class:?]
    at com.flansmod.common.driveables.EntityPlane.<init>(EntityPlane.java:48) ~[EntityPlane.class:?]
    at ru.utf.mod.command.CommandHandler$2.func_71515_b(CommandHandler.java:77) ~[CommandHandler$2.class:?]
    at net.minecraft.command.CommandHandler.func_71556_a(CommandHandler.java:99) [z.class:?]
    at org.bukkit.craftbukkit.v1_7_R4.command.CraftSimpleCommandMap.dispatch(CraftSimpleCommandMap.java:53) [CraftSimpleCommandMap.class:1.7.10-1614.58]
    at org.bukkit.craftbukkit.v1_7_R4.CraftServer.dispatchVanillaCommand(CraftServer.java:756) [CraftServer.class:1.7.10-1614.58]
    at net.minecraft.network.NetHandlerPlayServer.func_147361_d(NetHandlerPlayServer.java:1377) [nh.class:?]
    at net.minecraft.network.NetHandlerPlayServer.func_147354_a(NetHandlerPlayServer.java:1107) [nh.class:?]
    at net.minecraft.network.play.client.C01PacketChatMessage.func_148833_a(C01PacketChatMessage.java:38) [ir.class:?]
    at net.minecraft.network.play.client.C01PacketChatMessage.func_148833_a(C01PacketChatMessage.java:53) [ir.class:?]
    at net.minecraft.network.NetworkManager.func_74428_b(NetworkManager.java:245) [ej.class:?]
    at net.minecraft.network.NetworkSystem.func_151269_c(NetworkSystem.java:181) [nc.class:?]
    at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:1023) [MinecraftServer.class:?]
    at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:432) [lt.class:?]
    at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:841) [MinecraftServer.class:?]
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:693) [MinecraftServer.class:?]
    at java.lang.Thread.run(Thread.java:745) [?:1.8.0_91]
 
7,099
324
1,510
Код в этом месте посмотри
at com.flansmod.common.driveables.EntityDriveable.<init>(EntityDriveable.java:122) ~[EntityDriveable.class:?]
 
214
11
59
Нашел в ItemPlane метод spawnPlane(что мне и нужно), но он крашит, если вызывать с итемстаком из массива FlansMod.planeItems.

Код:
Java:
                ItemPlane item = null;
                for(ItemPlane itemPlane : FlansMod.planeItems) {
                    if (itemPlane.type.name.equals("Chinook")) {
                        item = itemPlane;
                        break;
                    }
                }
                item.spawnPlane(((EntityPlayer) sender).worldObj, ((EntityPlayer) sender).posX, ((EntityPlayer) sender).posY,
                        ((EntityPlayer) sender).posZ, new ItemStack(item));
Ошибка:
Код:
[23:23:58] [Server thread/ERROR]: Couldn't process command: 'test'
java.lang.NullPointerException
    at com.flansmod.common.driveables.ItemPlane.getTagCompound(ItemPlane.java:63) ~[ItemPlane.class:?]
    at com.flansmod.common.driveables.ItemPlane.getPlaneData(ItemPlane.java:164) ~[ItemPlane.class:?]
    at com.flansmod.common.driveables.ItemPlane.spawnPlane(ItemPlane.java:149) ~[ItemPlane.class:?]
    at ru.xlv.steviebg.command.CommandHandler$2.func_71515_b(CommandHandler.java:78) ~[CommandHandler$2.class:?]
    at net.minecraft.command.CommandHandler.func_71556_a(CommandHandler.java:99) [z.class:?]
    at org.bukkit.craftbukkit.v1_7_R4.command.CraftSimpleCommandMap.dispatch(CraftSimpleCommandMap.java:53) [CraftSimpleCommandMap.class:1.7.10-1614.58]
    at org.bukkit.craftbukkit.v1_7_R4.CraftServer.dispatchVanillaCommand(CraftServer.java:756) [CraftServer.class:1.7.10-1614.58]
    at net.minecraft.network.NetHandlerPlayServer.func_147361_d(NetHandlerPlayServer.java:1377) [nh.class:?]
    at net.minecraft.network.NetHandlerPlayServer.func_147354_a(NetHandlerPlayServer.java:1107) [nh.class:?]
    at net.minecraft.network.play.client.C01PacketChatMessage.func_148833_a(C01PacketChatMessage.java:38) [ir.class:?]
    at net.minecraft.network.play.client.C01PacketChatMessage.func_148833_a(C01PacketChatMessage.java:53) [ir.class:?]
    at net.minecraft.network.NetworkManager.func_74428_b(NetworkManager.java:245) [ej.class:?]
    at net.minecraft.network.NetworkSystem.func_151269_c(NetworkSystem.java:181) [nc.class:?]
    at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:1023) [MinecraftServer.class:?]
    at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:432) [lt.class:?]
    at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:841) [MinecraftServer.class:?]
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:693) [MinecraftServer.class:?]
    at java.lang.Thread.run(Thread.java:745) [?:1.8.0_91]
Метод, на который указывает лог:
Код:
    private NBTTagCompound getTagCompound(ItemStack stack, World world) {
        if (stack.field_77990_d == null) {
            if (!world.field_72995_K && stack.func_77960_j() != 0) {
                stack.field_77990_d = this.getOldTagCompound(stack, world);
            }

            if (stack.field_77990_d == null) {
                stack.field_77990_d = new NBTTagCompound();
                stack.field_77990_d.func_74778_a("Type", this.type.shortName);
                stack.field_77990_d.func_74778_a("Engine", ((PartType)PartType.defaultEngines.get(EnumType.plane)).shortName);
            }
        }

        return stack.field_77990_d;
    }
 
3,005
192
592
214
11
59
Решено. Проблема была в паке для фланса, который попросту криво собран. Рабочий код:

Java:
                ItemPlane item = null;
                for(ItemPlane itemPlane : FlansMod.planeItems) {
                    if (itemPlane.type.name.equals("Chinook")) {
                        item = itemPlane;
                        break;
                    }
                }
                item.spawnPlane(((EntityPlayer) sender).worldObj, ((EntityPlayer) sender).posX, ((EntityPlayer) sender).posY,
                        ((EntityPlayer) sender).posZ, new ItemStack(item));
Спасибо всем :giggle:
 
Сверху