This is an old revision of the document!
添加一个实体
介绍
实体是下一步采取增加一个项目,方后。 要添加实体,您将需要3个主要类:
- 实体类,为您的生物提供逻辑/ AI
- Renderer类,它允许您将实体连接到模型
- Model类,这是您的玩家在游戏中看到的
我们将创建一个cookie爬虫,当它爆炸时,它将在所有地方启动cookie。
注册一个实体
与积木和物品不同,您基本上总是想要一个完全专用于您的实体的类。 我们正在创建爬虫克隆,因此将使我们的实体类扩展CreeperEntity:
public class CookieCreeperEntity extends CreeperEntity { [...] }
您的IDE应该指示您创建与超级匹配的构造函数-立即执行此操作。
要注册您的实体,我们将使用Registry.ENTITY_TYPE。 要获取所需的注册表实例,可以使用EntityType.Builder或FabricEntityTypeBuilder-我们建议使用第二个实例。
public static final EntityType<CookieCreeperEntity> COOKIE_CREEPER = Registry.ENTITY_TYPE, new Identifier("wiki-entity", "cookie-creeper"), FabricEntityTypeBuilder.create(EntityCategory.AMBIENT, CookieCreeperEntity::new).size(EntityDimensions.fixed(1, 2)).build() );
The size() method allows you to set the hitbox of your entity. A creeper is 1 block wide and 2 blocks tall, so we'll use (1, 2).
If you load up your game at this point, you will be able to use /summon to see your creation. If all went right, it should appear as a normal creeper. I would not recommend going into survival.
创建一个渲染器
我们的Cookie爬虫自动具有模型,因为它扩展了Creeper类。 我们将皮肤更改为Cookie皮肤,而不是普通的绿色迷彩。
首先,创建一个MobEntityRenderer类。 MobEntityRenderer具有2个通用类型:实体和模型。 因为我们使用的是Creeper模型,所以我们还必须通过为其指定类型来告诉Creeper模型这不是Creeper实体。
public class CookieCreeperRenderer extends MobEntityRenderer<CookieCreeperEntity, CreeperEntityModel<CookieCreeperEntity>> { [...] }
您需要重写getTexture方法并添加构造函数。 默认情况下,构造函数具有3个参数(EntityRenderDispatcher,EntityModel,float),但是我们可以删除最后两个参数并自己创建它们:
public CookieCreeperRenderer(EntityRenderDispatcher entityRenderDispatcher_1) { super(entityRenderDispatcher_1, new CreeperEntityModel<>(), 1); }
对于getTexture方法,您需要返回模型的纹理。 如果为null,则您的实体将不可见。 这是100%保证的方法,可以花费3个小时来弄清楚模型为何不起作用。 为方便起见,我创建了一个Cookie爬行器纹理,所有人均可使用,您可以从此处下载。 默认的实体纹理文件夹约定为:textures/entity/entity_name/entity.png。 这是一个示例实现: <code java [enable_line_numbers=“true”]> @Override protected Identifier getTexture(CookieCreeperEntity cookieCreeperEntity) { return new Identifier(“wiki-entity:textures/entity/cookie_creeper/creeper.png”); } </code> 文件存储在resources/assets/wiki-entity/textures/entity/cookie_creeper/creeper.png. 最后,您需要将实体连接到渲染器。 由于渲染仅发生在客户端,因此您应始终在ClientModInitializer中执行以下工作: <code java> EntityRendererRegistry.INSTANCE.register(CookieCreeperEntity.class, (entityRenderDispatcher, context) → new CookieCreeperRenderer(entityRenderDispatcher)); </code> 这会将我们的实体链接到我们的新渲染器类。 如果您载入游戏,应该会看到我们的新朋友: https://i.imgur.com/8Gfc2sV.jpg 如果要使用自己的模型,则可以创建一个扩展EntityModel的新类,并在我们的渲染器中为其交换Creeper模型。 这相当复杂,将在单独的教程中介绍。