Здоровье у энтити

Сообщения
814
Лучшие ответы
19
Реакции
156
Версия Minecraft
1.12.2
У меня есть Entity и мне надо сделать ей хпшки и для этого я сказала что оная теперь EntityLiving, но дебагер сказал мне что не может ставить ей хп(NPE). И сразу это не мой мод - я его модифицирую и не претедную на Авторские права. Кода очень много - говорите что надо я скину.
 
Краш-лог
[10:12:36] [Server thread/ERROR] [FML]: Encountered an exception while constructing entity 'astikorcarts:cotopult'
java.lang.reflect.InvocationTargetException: null
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_231]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:1.8.0_231]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.8.0_231]
at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[?:1.8.0_231]
at net.minecraftforge.fml.common.registry.EntityEntryBuilder$ConstructorFactory.apply(EntityEntryBuilder.java:306) [EntityEntryBuilder$ConstructorFactory.class:?]
at net.minecraftforge.fml.common.registry.EntityEntryBuilder$ConstructorFactory.apply(EntityEntryBuilder.java:292) [EntityEntryBuilder$ConstructorFactory.class:?]
at net.minecraftforge.fml.common.registry.EntityEntry.newInstance(EntityEntry.java:68) [EntityEntry.class:?]
at net.minecraft.entity.EntityList.createEntityByIDFromName(EntityList.java:244) [EntityList.class:?]
at net.minecraft.entity.EntityList.createEntityFromNBT(EntityList.java:258) [EntityList.class:?]
at net.minecraft.world.chunk.storage.AnvilChunkLoader.createEntityFromNBT(AnvilChunkLoader.java:637) [AnvilChunkLoader.class:?]
at net.minecraft.world.chunk.storage.AnvilChunkLoader.readWorldEntityPos(AnvilChunkLoader.java:596) [AnvilChunkLoader.class:?]
at net.minecraft.command.server.CommandSummon.execute(CommandSummon.java:109) [CommandSummon.class:?]
at net.minecraft.command.CommandHandler.tryExecute(CommandHandler.java:126) [CommandHandler.class:?]
at net.minecraft.command.CommandHandler.executeCommand(CommandHandler.java:98) [CommandHandler.class:?]
at net.minecraft.network.NetHandlerPlayServer.handleSlashCommand(NetHandlerPlayServer.java:1003) [NetHandlerPlayServer.class:?]
at net.minecraft.network.NetHandlerPlayServer.processChatMessage(NetHandlerPlayServer.java:979) [NetHandlerPlayServer.class:?]
at net.minecraft.network.play.client.CPacketChatMessage.processPacket(CPacketChatMessage.java:47) [CPacketChatMessage.class:?]
at net.minecraft.network.play.client.CPacketChatMessage.processPacket(CPacketChatMessage.java:8) [CPacketChatMessage.class:?]
at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) [PacketThreadUtil$1.class:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_231]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_231]
at net.minecraft.util.Util.runTask(Util.java:53) [Util.class:?]
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:798) [MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:743) [MinecraftServer.class:?]
at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:192) [IntegratedServer.class:?]
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:592) [MinecraftServer.class:?]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_231]
Caused by: java.lang.NullPointerException
at net.minecraft.network.datasync.EntityDataManager.set(EntityDataManager.java:156) ~[EntityDataManager.class:?]
at net.minecraft.entity.EntityLivingBase.setHealth(EntityLivingBase.java:955) ~[EntityLivingBase.class:?]
at net.minecraft.entity.EntityLivingBase.<init>(EntityLivingBase.java:216) ~[EntityLivingBase.class:?]
at de.mennomax.astikorcarts.entity.AbstractDrawn.<init>(AbstractDrawn.java:64) ~[AbstractDrawn.class:?]
at de.mennomax.astikorcarts.entity.EntityCotopult.<init>(EntityCotopult.java:32) ~[EntityCotopult.class:?]
... 27 more
Сообщения
2,916
Лучшие ответы
187
Реакции
542
Сообщения
814
Лучшие ответы
19
Реакции
156
Java:
    @Override
    protected void applyEntityAttributes()
    {
        super.applyEntityAttributes();
        this.getEntityAttribute(SharedMonsterAttributes.MAX_HEALTH).setBaseValue(50F);
    }
 

tox1cozZ

aka Agravaine
Модератор
Сообщения
6,839
Лучшие ответы
414
Реакции
1,935
Вроде надо же от EntityLivingBase наследовать
 
Сообщения
814
Лучшие ответы
19
Реакции
156
Может, но лог не изменился.
 
Сообщения
257
Лучшие ответы
6
Реакции
48
Попробуй наследовать существо от EntityCreature.
Edit: Если убрать эту строчку, то ошибка исчезнет? А то не похоже, что проблемы только из-за неё.
И да, можешь скинуть конструкторы вот этих классов EntityCotopult и AbstractDrawn и если есть метод applyEntityAttributes из AbstractDrawn.
 
Последнее редактирование:
Сообщения
814
Лучшие ответы
19
Реакции
156
Edit: Если убрать эту строчку, то ошибка исчезнет?
Исчезнет если наследоваться от Entity, а не от ливинга.
Java:
    public EntityCotopult(World worldIn)
    {
        super(worldIn);
        setSize(2, 2);
    }
Java:
    public AbstractDrawn(World worldIn)
    {
        super(worldIn);
        this.stepHeight = 1.2F;
        if(worldIn.isRemote)
        {
            this.firstPullingId = -1;
        }
    }
Java:
    @Override
    protected void applyEntityAttributes()
    {
        super.applyEntityAttributes();
        this.getEntityAttribute(SharedMonsterAttributes.MAX_HEALTH).setBaseValue(50F);
    }
Если наследовтаься от EntityCreature то в логе появляется строка и все:
Java:
[22:49:52] [Server thread/ERROR] [FML]: Encountered an exception while constructing entity 'astikorcarts:cotopult'
java.lang.reflect.InvocationTargetException: null
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_231]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:1.8.0_231]
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.8.0_231]
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[?:1.8.0_231]
    at net.minecraftforge.fml.common.registry.EntityEntryBuilder$ConstructorFactory.apply(EntityEntryBuilder.java:306) [EntityEntryBuilder$ConstructorFactory.class:?]
    at net.minecraftforge.fml.common.registry.EntityEntryBuilder$ConstructorFactory.apply(EntityEntryBuilder.java:292) [EntityEntryBuilder$ConstructorFactory.class:?]
    at net.minecraftforge.fml.common.registry.EntityEntry.newInstance(EntityEntry.java:68) [EntityEntry.class:?]
    at net.minecraft.entity.EntityList.createEntityByIDFromName(EntityList.java:244) [EntityList.class:?]
    at net.minecraft.entity.EntityList.createEntityFromNBT(EntityList.java:258) [EntityList.class:?]
    at net.minecraft.world.chunk.storage.AnvilChunkLoader.createEntityFromNBT(AnvilChunkLoader.java:637) [AnvilChunkLoader.class:?]
    at net.minecraft.world.chunk.storage.AnvilChunkLoader.readWorldEntityPos(AnvilChunkLoader.java:596) [AnvilChunkLoader.class:?]
    at net.minecraft.command.server.CommandSummon.execute(CommandSummon.java:109) [CommandSummon.class:?]
    at net.minecraft.command.CommandHandler.tryExecute(CommandHandler.java:126) [CommandHandler.class:?]
    at net.minecraft.command.CommandHandler.executeCommand(CommandHandler.java:98) [CommandHandler.class:?]
    at net.minecraft.network.NetHandlerPlayServer.handleSlashCommand(NetHandlerPlayServer.java:1003) [NetHandlerPlayServer.class:?]
    at net.minecraft.network.NetHandlerPlayServer.processChatMessage(NetHandlerPlayServer.java:979) [NetHandlerPlayServer.class:?]
    at net.minecraft.network.play.client.CPacketChatMessage.processPacket(CPacketChatMessage.java:47) [CPacketChatMessage.class:?]
    at net.minecraft.network.play.client.CPacketChatMessage.processPacket(CPacketChatMessage.java:8) [CPacketChatMessage.class:?]
    at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) [PacketThreadUtil$1.class:?]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_231]
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_231]
    at net.minecraft.util.Util.runTask(Util.java:53) [Util.class:?]
    at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:798) [MinecraftServer.class:?]
    at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:743) [MinecraftServer.class:?]
    at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:192) [IntegratedServer.class:?]
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:592) [MinecraftServer.class:?]
    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_231]
Caused by: java.lang.NullPointerException
    at net.minecraft.network.datasync.EntityDataManager.set(EntityDataManager.java:156) ~[EntityDataManager.class:?]
    at net.minecraft.entity.EntityLivingBase.setHealth(EntityLivingBase.java:955) ~[EntityLivingBase.class:?]
    at net.minecraft.entity.EntityLivingBase.<init>(EntityLivingBase.java:216) ~[EntityLivingBase.class:?]
    at net.minecraft.entity.EntityLiving.<init>(EntityLiving.java:101) ~[EntityLiving.class:?]
    at net.minecraft.entity.EntityCreature.<init>(EntityCreature.java:22) ~[EntityCreature.class:?]
    at de.mennomax.astikorcarts.entity.AbstractDrawn.<init>(AbstractDrawn.java:60) ~[AbstractDrawn.class:?]
    at de.mennomax.astikorcarts.entity.EntityCotopult.<init>(EntityCotopult.java:32) ~[EntityCotopult.class:?]
 
Последнее редактирование:
Сообщения
2,916
Лучшие ответы
187
Реакции
542
SharedMonsterAttributes.MAX_HEALTH регается только в EntityLivingBase.
Если тебе нужно добавить к своему мобу, которые не наследует EntityLivingBase, то в applyEntityAttributes пишешь
this.getAttributeMap().registerAttribute(SharedMonsterAttributes.MAX_HEALTH);
И после
this.getEntityAttribute(SharedMonsterAttributes.MAX_HEALTH).setBaseValue(50F);
 
Сообщения
814
Лучшие ответы
19
Реакции
156
EntityLiving это наследник EntityLivingBase
 
Сообщения
257
Лучшие ответы
6
Реакции
48
Странно у меня такого не происходит. Остался последний шанс) Где проходит регистрация Entity? Точно в CommonProxy#preInit()?
 
Сообщения
257
Лучшие ответы
6
Реакции
48
А в классах EntityCotopult и AbstractDrawn случайно не переопределён метод entityInit? Если переопределён, то вызван ли в них супер метод?
 
Сообщения
814
Лучшие ответы
19
Реакции
156
Теперь оная есть! Но при ударе падает:
Java:
java.lang.NullPointerException: at index 1
    at com.google.common.collect.ObjectArrays.checkElementNotNull(ObjectArrays.java:236)
    at com.google.common.collect.ObjectArrays.checkElementsNotNull(ObjectArrays.java:226)
    at com.google.common.collect.ObjectArrays.checkElementsNotNull(ObjectArrays.java:220)
    at com.google.common.collect.ImmutableList.construct(ImmutableList.java:347)
    at com.google.common.collect.ImmutableList.of(ImmutableList.java:102)
    at com.google.common.collect.FluentIterable.concat(FluentIterable.java:189)
    at com.google.common.collect.Iterables.concat(Iterables.java:428)
    at net.minecraft.entity.Entity.getEquipmentAndArmor(Entity.java:2520)
    at net.minecraft.enchantment.EnchantmentHelper.applyThornEnchantments(EnchantmentHelper.java:188)
    at net.minecraft.entity.player.EntityPlayer.attackTargetEntityWithCurrentItem(EntityPlayer.java:1511)
    at net.minecraft.client.multiplayer.PlayerControllerMP.attackEntity(PlayerControllerMP.java:575)
    at net.minecraft.client.Minecraft.clickMouse(Minecraft.java:1622)
    at net.minecraft.client.Minecraft.processKeyBinds(Minecraft.java:2375)
    at net.minecraft.client.Minecraft.runTickKeyboard(Minecraft.java:2146)
    at net.minecraft.client.Minecraft.runTick(Minecraft.java:1934)
    at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1187)
    at net.minecraft.client.Minecraft.run(Minecraft.java:441)
    at net.minecraft.client.main.Main.main(Main.java:118)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97)
    at GradleStart.main(GradleStart.java:25)
 
Сообщения
257
Лучшие ответы
6
Реакции
48
Какой-то из этих методов (this.getHeldEquipment(), this.getArmorInventoryList()) возвращает null. Посмотри не переопределены ли они где-нибудь, если да и там возвращается null, то верни за место него вот это Collections.<ItemStack>emptyList()
 
Сообщения
814
Лучшие ответы
19
Реакции
156
Спавнится и неат показывает 50 хп, но ломается с 1 тычки
 
Сообщения
257
Лучшие ответы
6
Реакции
48
Ломается, то бишь майн вылетает? Или моб умирает?
 
Сообщения
814
Лучшие ответы
19
Реакции
156
Моб умирает с 1 удара рукой.
 
Сообщения
257
Лучшие ответы
6
Реакции
48
Может у тебя просто эффект силы 255 уровня?)
 
Сообщения
257
Лучшие ответы
6
Реакции
48
Какой-то из этих методов (this.getHeldEquipment(), this.getArmorInventoryList()) возвращает null. Посмотри не переопределены ли они где-нибудь, если да и там возвращается null, то верни за место него вот это Collections.<ItemStack>emptyList()
И ещё возможно по этому сообщению ты меня неправильно поняла, если эти методы где-то переопределялись (в EntityCotopult или AbstractDrawn) и возвращают в каком-то случае null, то за место return null надо поставить Collections.<ItemStack>emptyList(). То есть остальную логику метода (если она конечно же есть), в том числе то что вернул супер метод, стирать не надо.
 
Сообщения
814
Лучшие ответы
19
Реакции
156
Уже поправила. НО как раз он ваншотится
 
Сверху