Don't know how to add class [Entity]

Версия Minecraft
1.7.10
608
5
15
Код:
java.lang.IllegalArgumentException: Don't know how to add class biomesoplenty.common.entities.projectiles.EntityMudball! Report this error to mod author.
    at net.minecraft.entity.EntityTrackerEntry.func_151260_c(EntityTrackerEntry.java:717)
    at net.minecraft.entity.EntityTrackerEntry.func_73117_b(EntityTrackerEntry.java:434)
    at net.minecraft.entity.EntityTracker.func_85172_a(EntityTracker.java:386)
    at net.minecraft.entity.player.EntityPlayerMP.func_70071_h_(EntityPlayerMP.java:388)
    at net.minecraft.world.World.func_72866_a(World.java:2740)
    at net.minecraft.world.WorldServer.func_72866_a(WorldServer.java:877)
    at net.minecraft.world.World.func_72870_g(World.java:2678)
    at net.minecraft.world.World.func_72939_s(World.java:2480)
    at net.minecraft.world.WorldServer.func_72939_s(WorldServer.java:673)
    at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:986)
    at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:432)
    at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:841)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:693)
    at java.lang.Thread.run(Thread.java:745)
Как пофиксить эту херь? Сначала думал, что это из-за того что моб не зарегестрирован, но оказалось что всё нормально.
 

timaxa007

Модератор
5,831
409
672
Ты наверное всё скопировал из какого-то класса, но не унаследовал от него. В итоге ты используешь код, который не адаптирован для твоего класса. Ищи в код, что-то связное с EntityTrackerEntry, не не используй этот код, а используй свой (это что-то связное с отправкой пакета).
 
4,045
63
645
Судя по твоему первому предположению, всё, что он скопировал из какого-то неунаследуемого класса должно было быть подчёркнуто красным, но только в том случае, если бы там стояла упомянутая аннотация...
Вот я про неё и пишу.
 
219
12
119
Актуальный вопрос, такая же ошибка случилась с моим Entity

entity:
public class EntityBanker extends EntityCreature {

    public EntityBanker(World world) {
        super(world);
        setSize(0.6F, 1.8F);
        setCustomNameTag(EnumChatFormatting.GREEN + "\u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435");
        setAlwaysRenderNameTag(true);
    }

    @Override
    public void applyEntityAttributes() {
        super.applyEntityAttributes();
        getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.5D);
        getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(40D);
    }

    @Override
    protected boolean interact(EntityPlayer player) {
        if (BankerMod.COMPILATION_FLAG) {
            if (!worldObj.isRemote) {
                player.openGui(BankerMod.INSTANCE, BankerGuiHandler.PLAYER_STORAGE, worldObj, 1, 0, 0);
            }
        }
        return super.interact(player);
    }

    @Override
    protected boolean canDespawn() {
        return false;
    }

    @Override
    public boolean canBePushed() {
        return false;
    }

    @Override
    protected void collideWithEntity(Entity entity) {

    }

    @Override
    public void applyEntityCollision(Entity entity) {

    }

    @Override
    public boolean attackEntityFrom(DamageSource source, float damage) {
        if (source.getSourceOfDamage() instanceof EntityPlayer) {
            EntityPlayer player = (EntityPlayer) source.getSourceOfDamage();
            if (player.getCurrentEquippedItem() != null && player.getCurrentEquippedItem().getItem() == Items.spawn_egg) {
                Class<?> entityClazz = (Class<?>) EntityList.IDtoClassMapping.get(player.getCurrentEquippedItem().getItemDamage());
                if (entityClazz == getClass()) {
                    setDead();
                    return true;
                }
            }
        }

        return super.attackEntityFrom(source, damage);
    }

    @Override
    public boolean isEntityInvulnerable() {
        return true;
    }

    @Override
    protected void updateWanderPath() {
    }
}
 

TheAndrey

Редактор учебника
1,071
72
372
Не может найти, какой пакет отправить на клиент. Ставьте точку остановки на cpw.mods.fml.common.network.internal.FMLNetworkHandler#getEntitySpawningPacket, смотрите что там происходит.
 

tox1cozZ

aka Agravaine
8,454
598
2,890
Актуальный вопрос, такая же ошибка случилась с моим Entity

entity:
public class EntityBanker extends EntityCreature {

    public EntityBanker(World world) {
        super(world);
        setSize(0.6F, 1.8F);
        setCustomNameTag(EnumChatFormatting.GREEN + "\u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435");
        setAlwaysRenderNameTag(true);
    }

    @Override
    public void applyEntityAttributes() {
        super.applyEntityAttributes();
        getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.5D);
        getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(40D);
    }

    @Override
    protected boolean interact(EntityPlayer player) {
        if (BankerMod.COMPILATION_FLAG) {
            if (!worldObj.isRemote) {
                player.openGui(BankerMod.INSTANCE, BankerGuiHandler.PLAYER_STORAGE, worldObj, 1, 0, 0);
            }
        }
        return super.interact(player);
    }

    @Override
    protected boolean canDespawn() {
        return false;
    }

    @Override
    public boolean canBePushed() {
        return false;
    }

    @Override
    protected void collideWithEntity(Entity entity) {

    }

    @Override
    public void applyEntityCollision(Entity entity) {

    }

    @Override
    public boolean attackEntityFrom(DamageSource source, float damage) {
        if (source.getSourceOfDamage() instanceof EntityPlayer) {
            EntityPlayer player = (EntityPlayer) source.getSourceOfDamage();
            if (player.getCurrentEquippedItem() != null && player.getCurrentEquippedItem().getItem() == Items.spawn_egg) {
                Class<?> entityClazz = (Class<?>) EntityList.IDtoClassMapping.get(player.getCurrentEquippedItem().getItemDamage());
                if (entityClazz == getClass()) {
                    setDead();
                    return true;
                }
            }
        }

        return super.attackEntityFrom(source, damage);
    }

    @Override
    public boolean isEntityInvulnerable() {
        return true;
    }

    @Override
    protected void updateWanderPath() {
    }
}
Ахаха, мой код с холли крафта :ROFLMAO:
 
Сверху