This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
tutorial:entity [2021/07/19 22:10] platymemo |
tutorial:entity [2022/01/11 16:31] (current) simplycmd Clarify why you wouldn't use WaterCreatureEntity for fish as well |
||
---|---|---|---|
Line 1: | Line 1: | ||
===== Creating an Entity ===== | ===== Creating an Entity ===== | ||
- | //The source code for this project can be found [[https://github.com/Draylar/entity-testing|here]] on the entity branch.// | + | //The source code for this project can be found [[https://github.com/Draylar/entity-testing/tree/entity|here]].// |
Entities are a movable object in a world with logic attached to them. A few examples include: | Entities are a movable object in a world with logic attached to them. A few examples include: | ||
Line 10: | Line 10: | ||
Living Entities are Entities that have health and can deal damage. | Living Entities are Entities that have health and can deal damage. | ||
There are various classes that branch off `LivingEntity` for different purposes, including: | There are various classes that branch off `LivingEntity` for different purposes, including: | ||
- | * ''HostileEntity'' for Zombies, Creepers, and Skeletons | + | * ''HostileEntity'' for Zombies, Creepers and Skeletons |
- | * ''AnimalEntity'' for Sheep, Cows, and Pigs | + | * ''AnimalEntity'' for Sheep, Cows and Pigs |
* ''WaterCreatureEntity'' for things that swim | * ''WaterCreatureEntity'' for things that swim | ||
- | * ''FishEntity'' for fishies | + | * ''FishEntity'' for fishies (use instead of ''WaterCreatureEntity'' for schooling behavior) |
- | What you extend depends on your needs and goals are. | + | What you extend depends on what your needs and goals are. |
As you get further down the chain, the entity logic becomes more specific and curated to certain tasks. | As you get further down the chain, the entity logic becomes more specific and curated to certain tasks. | ||
The two generic entity classes that come after ''LivingEntity'' are: | The two generic entity classes that come after ''LivingEntity'' are: | ||
Line 151: | Line 151: | ||
return new CubeEntityRenderer(context); | return new CubeEntityRenderer(context); | ||
}); | }); | ||
+ | // In 1.17, use EntityRendererRegistry.register (seen below) instead of EntityRendererRegistry.INSTANCE.register (seen above) | ||
+ | EntityRendererRegistry.register(EntityTesting.CUBE, (context) -> { | ||
+ | return new CubeEntityRenderer(context); | ||
+ | }); | ||
+ | | ||
EntityModelLayerRegistry.registerModelLayer(MODEL_CUBE_LAYER, CubeEntityModel::getTexturedModelData); | EntityModelLayerRegistry.registerModelLayer(MODEL_CUBE_LAYER, CubeEntityModel::getTexturedModelData); | ||
} | } | ||
Line 195: | Line 200: | ||
ModelData modelData = new ModelData(); | ModelData modelData = new ModelData(); | ||
ModelPartData modelPartData = modelData.getRoot(); | ModelPartData modelPartData = modelData.getRoot(); | ||
- | modelPartData.addChild(EntityModelPartNames.CUBE, ModelPartBuilder.create().uv(0, 0).cuboid(-6F, 12F, -6F, 12F, 12F, 12F), ModelTransform.pivot(0F, 0F, 0F); | + | modelPartData.addChild(EntityModelPartNames.CUBE, ModelPartBuilder.create().uv(0, 0).cuboid(-6F, 12F, -6F, 12F, 12F, 12F), ModelTransform.pivot(0F, 0F, 0F)); |
} | } | ||
</code> | </code> | ||
Line 220: | Line 225: | ||
public void render(MatrixStack matrices, VertexConsumer vertices, int light, int overlay, float red, float green, float blue, float alpha) { | public void render(MatrixStack matrices, VertexConsumer vertices, int light, int overlay, float red, float green, float blue, float alpha) { | ||
ImmutableList.of(this.base).forEach((modelRenderer) -> { | ImmutableList.of(this.base).forEach((modelRenderer) -> { | ||
- | modelRenderer.render(matrixStackIn, bufferIn, packedLightIn, packedOverlayIn, red, green, blue, alpha); | + | modelRenderer.render(matrices, vertices, light, overlay, red, green, blue, alpha); |
}); | }); | ||
} | } |