Помогите, не получается создать своего Entity

Версия Minecraft
1.14.4
MyBot:
package kabal.Bot;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import client.renders.EntityRenderRegistry;
import init.Entities;
import list.ItemList;
import net.minecraft.entity.EntityType;
import net.minecraft.item.Item;
import net.minecraft.item.ItemGroup;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;

@Mod("mybot")
public class MyBot
{

    public static MyBot instance;
    public static final String modid = "mybot";
    public static final Logger LOGGER = LogManager.getLogger(modid);
    public static final ItemGroup bot = new BotItemGroup();
    public MyBot()
    {
        
        instance = this;
        FMLJavaModLoadingContext.get().getModEventBus().addListener(this::setup);
        FMLJavaModLoadingContext.get().getModEventBus().addListener(this::clientRegistries);
        
        
        MinecraftForge.EVENT_BUS.register(this);
        
        
    }
    
    private void setup(final FMLCommonSetupEvent event)
    {
            LOGGER.info("Setup method registered");
        
    }
    private void clientRegistries(final FMLClientSetupEvent event)
    {
        EntityRenderRegistry.registryEntityRenders();
        LOGGER.info("clientRegistries method registered.");
    }
    
    @Mod.EventBusSubscriber(bus=Mod.EventBusSubscriber.Bus.MOD)
    public static class RegsitryEvents
    {
        @SubscribeEvent

        public static void registerItems(final RegistryEvent.Register<Item> event)
        {
            event.getRegistry().registerAll
            (
            ItemList.bot_item3 = new Item(new Item.Properties().group(bot)).setRegistryName(location("bot_item3")),
            
            ItemList.bot_item4 = new Item(new Item.Properties().group(bot)).setRegistryName(location("bot_item4")),
            
            ItemList.bot_item = new Item(new Item.Properties().group(bot)).setRegistryName(location("bot_item")),
            
            ItemList.bot_item2 = new Item(new Item.Properties().group(bot)).setRegistryName(location("bot_item2"))
            );
            Entities.registerEntitySpawnEgg(event);
            
            LOGGER.info("Items registered.");
        
        }
        
    }

    @SubscribeEvent
    public static void registerItems(final RegistryEvent.Register<EntityType<?>> event)
    {
        event.getRegistry().registerAll
        (
            Entities.bot_entity   
                
        );
        Entities.registerEntityWorldSpawns();
    
    }
    public static  ResourceLocation location(String name) {
        
        return new ResourceLocation(modid,name);
    }
}
 

Вложения

  • BotEntity.png
    BotEntity.png
    256.9 KB · Просмотры: 6
  • BotEntityModel.png
    BotEntityModel.png
    212.1 KB · Просмотры: 7
  • Entities.png
    Entities.png
    267.7 KB · Просмотры: 6
  • EntityRender.png
    EntityRender.png
    250.8 KB · Просмотры: 6
  • EntityRenderRegister.png
    EntityRenderRegister.png
    214 KB · Просмотры: 4
Помогите пожалуйста, я создал предмет, спавнящий моего моба, но вместо него спавнится свинья. При ее смерти выпадает свинина. Но при этом ее поведение и характеристики задаются мною. Скорее всего какие то проблемы с моделью, и, наверно, если майнкрафт не находит нужную для Entity модель, то по дефолту дает модель свиньи. Что можно с этим сделать?
 
7,099
324
1,510
Скинь код по-человечески, плиз, не скринами, а через тэг
Java:
Но предупреждаю, помочь с вопросом не смогу, ибо не разрабатываю под эти новейшие нестабильные версии. @Doc твой выход
 
Последнее редактирование:
BotEntity:
package entity;

import init.Entities;
import net.minecraft.entity.CreatureEntity;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.SharedMonsterAttributes;
import net.minecraft.entity.ai.goal.LookRandomlyGoal;
import net.minecraft.entity.ai.goal.RandomWalkingGoal;
import net.minecraft.entity.ai.goal.SwimGoal;
import net.minecraft.world.World;
public class BotEntity extends CreatureEntity
{
    @SuppressWarnings("unchecked")
    public BotEntity(EntityType<? extends CreatureEntity> type, World worldIn)
    {
        super((EntityType<? extends CreatureEntity>) Entities.bot_entity, worldIn);
    }

    @Override
    protected void registerGoals()
    {   
        this.goalSelector.addGoal(0, new SwimGoal(this));
        this.goalSelector.addGoal(1, new RandomWalkingGoal(this, 0.5d));
        this.goalSelector.addGoal(2, new LookRandomlyGoal(this));
    }
    @Override
    protected void registerAttributes()
    {
        super.registerAttributes();
        this.getAttribute(SharedMonsterAttributes.MAX_HEALTH).setBaseValue(20.0d);
        this.getAttribute(SharedMonsterAttributes.MOVEMENT_SPEED).setBaseValue(1.0d);
    }
    
    
}
Entities:
package init;

import entity.BotEntity;
import kabal.Bot.MyBot;
import list.ItemList;
import net.minecraft.entity.EntityClassification;
import net.minecraft.entity.EntityType;
import net.minecraft.item.Item;
import net.minecraft.item.SpawnEggItem;
import net.minecraft.world.biome.Biome;
import net.minecraft.world.biome.Biome.SpawnListEntry;
import net.minecraft.world.biome.Biomes;
import net.minecraftforge.event.RegistryEvent;

public class Entities {

    
    
    public static EntityType<?> bot_entity = EntityType.Builder.create (BotEntity::new, EntityClassification.CREATURE).build(MyBot.modid + "bot_entity").setRegistryName(MyBot.location("bot_entity"));
    public static void registerEntitySpawnEgg(final RegistryEvent.Register<Item> event)
    {
        event.getRegistry().registerAll
        (
                ItemList.bot_egg = registerEntitySapwnEgg(bot_entity, 0xf2920c, 0x28bdae, "bot_egg")
        );
        
    }
    
    public static void registerEntityWorldSpawns()
    {
        registerEntityWorldSpawn(bot_entity, EntityClassification.CREATURE, Biomes.PLAINS);
    }
    public static Item registerEntitySapwnEgg(EntityType<?> type, int color1, int color2, String name)
    {
        SpawnEggItem item = new SpawnEggItem(type, color1, color2, new Item.Properties().group(MyBot.bot));
        item.setRegistryName(MyBot.location(name));
        return item;
    }
    public static void registerEntityWorldSpawn(EntityType<?> entity, EntityClassification classification, Biome...biomes)
    {
        for(Biome biome : biomes)
        {
            if(biome != null)
            {
                biome.getSpawns(classification).add(new SpawnListEntry(entity, 10, 1, 10));
            }
        }
        
    }


}
EntityRender:
package client.renders;

import client.models.BotEntityModel;
import entity.BotEntity;
import kabal.Bot.MyBot;
import net.minecraft.client.renderer.entity.LivingRenderer;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.client.registry.IRenderFactory;
import net.minecraft.client.renderer.entity.EntityRenderer;
import net.minecraft.client.renderer.entity.EntityRendererManager;



public class EntityRender extends LivingRenderer<BotEntity, BotEntityModel>
{
    public EntityRender(EntityRendererManager manager)
    {
        super(manager, new BotEntityModel(), 0f);
    }
        @Override
        protected ResourceLocation getEntityTexture(BotEntity entity)
        {
            return MyBot.location("textures/entity/bot_entity.png");
        }

    public static class RenderFactory implements IRenderFactory<BotEntity>
    {

        @Override
        public EntityRenderer<? super BotEntity> createRenderFor(EntityRendererManager manager)
        {
            return new EntityRender(manager);
        }
        
        
    }
}
EntityRenderRegistry:
package client.renders;

import entity.BotEntity;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.fml.client.registry.RenderingRegistry;

@OnlyIn(Dist.CLIENT)
public class EntityRenderRegistry
{
    public static void registryEntityRenders()
    {
        RenderingRegistry.registerEntityRenderingHandler(BotEntity.class, new EntityRender.RenderFactory());
    }
}
BotEntityModel:
package client.models;


import entity.BotEntity;
import net.minecraft.client.renderer.entity.model.CowModel;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;

@OnlyIn(Dist.CLIENT)


public class BotEntityModel extends CowModel<BotEntity>
{
    
    
}
 
Сверху