Line 45: |
Line 45: |
| After creating and configuring the entity type builder, it must be built. This requires the modid and name of the entity type. For an entity type with the name "example_monster" in the mod "examplemod", this would look like <code>builder.build("examplemod:example_monster")</code>. | | After creating and configuring the entity type builder, it must be built. This requires the modid and name of the entity type. For an entity type with the name "example_monster" in the mod "examplemod", this would look like <code>builder.build("examplemod:example_monster")</code>. |
| | | |
− | ===Tying It Together=== | + | === Tying It Together === |
− | Given the above information, a basic EntityType might look like the following:{{Tabs/Code Snippets | + | Given the above information, a basic EntityType might look like the following: |
| + | {{Tabs/Code Snippets |
| |java=EntityType.Builder.of(ExampleMonsterEntity::new, MobCategory.MONSTER) | | |java=EntityType.Builder.of(ExampleMonsterEntity::new, MobCategory.MONSTER) |
| .sized(1.0F, 2.0F) | | .sized(1.0F, 2.0F) |
Line 52: |
Line 53: |
| .updateInterval(1) | | .updateInterval(1) |
| .build("examplemod:example_monster") | | .build("examplemod:example_monster") |
− | }}To function, this example requires that an entity class of the name <code>ExampleMonsterEntity</code> exist along with the entity type being [[Registration|registered]]. | + | }} |
| + | To function, this example requires that an entity class of the name <code>ExampleMonsterEntity</code> exist along with the entity type being [[Registration|registered]]. |
| | | |
| == Entity Class == | | == Entity Class == |
Line 67: |
Line 69: |
| | | |
| To define custom behavior, methods must be overriden. Your IDE should have a feature to list all possible methods to override, although some common ones might be: <code>customServerAiStep</code> for server AI, <code>tick</code> for code to execute each tick on client/server, and <code>registerGoals</code> to setup AI goals. | | To define custom behavior, methods must be overriden. Your IDE should have a feature to list all possible methods to override, although some common ones might be: <code>customServerAiStep</code> for server AI, <code>tick</code> for code to execute each tick on client/server, and <code>registerGoals</code> to setup AI goals. |
| + | |
| + | == Entity Attributes == |
| + | Since 1.17 and later versions, you **MUST** define attributes if your entity class extends <code>LivingEntity</code> or any other class that inherits from it. In Attributes, you can define: |
| + | |
| + | * Max Health |
| + | * Movement Speed |
| + | * Attack Damage |
| + | |
| + | and more... |
| + | |
| + | In your Entity class, create a static method that creates your attributes: |
| + | <code> |
| + | // In your Entity class... |
| + | |
| + | public static AttributeSupplier.Builder setAttributes() |
| + | { |
| + | return createHostileAttributes().add(Attributes.MAX_HEALTH); |
| + | } |
| + | </code> |
| | | |
| == Natural Spawning == | | == Natural Spawning == |
| To make entities naturally spawn, they must be added to the spawn list for each biome that the entity should spawn in. This can be achieved with a [[Biome Modifiers#Add Spawns|<code>forge:add_spawns</code> biome modifier]]. | | To make entities naturally spawn, they must be added to the spawn list for each biome that the entity should spawn in. This can be achieved with a [[Biome Modifiers#Add Spawns|<code>forge:add_spawns</code> biome modifier]]. |