提供: Minecraft Modding Wiki
細 (→エンティティの追加) |
細 (→解説) |
||
(同じ利用者による、間の2版が非表示) | |||
11行目: | 11行目: | ||
===ソースコード=== | ===ソースコード=== | ||
メインのクラス | メインのクラス | ||
− | |||
− | |||
*Main.java | *Main.java | ||
<source lang="java"> | <source lang="java"> | ||
39行目: | 37行目: | ||
Registry.ENTITY_TYPE, | Registry.ENTITY_TYPE, | ||
new Identifier(mod_id, "example_mob"), | new Identifier(mod_id, "example_mob"), | ||
− | FabricEntityTypeBuilder.<RubyEntity>create(SpawnGroup.AMBIENT, RubyEntity::new).dimensions(EntityDimensions.fixed(0.75f, 0.75f)).build() // | + | FabricEntityTypeBuilder.<RubyEntity>create(SpawnGroup.AMBIENT, RubyEntity::new).dimensions(EntityDimensions.fixed(0.75f, 0.75f)).build() //ここは以前のバージョン(1.15.2まで)とは違います。 |
); | ); | ||
@Override | @Override | ||
public void onInitialize(){ | public void onInitialize(){ | ||
+ | EntityRendererRegistry.INSTANCE.register(Main.RUBY_ENTITY, (entityRenderDispatcher, context) -> new RubyRenderer(entityRenderDispatcher));//ここも以前のバージョン(1.15.2まで)とは違います。 | ||
+ | EntityRendererRegistry.INSTANCE.register(example_mob, (entityRenderDispatcher, context) -> new ExampleRenderer(entityRenderDispatcher)); | ||
//つくったエンティティのスポーンエッグを登録(スポーンエッグを作らない場合はなくてもよい) | //つくったエンティティのスポーンエッグを登録(スポーンエッグを作らない場合はなくてもよい) | ||
− | |||
Registry.register(Registry.ITEM, new Identifier(mod_id, "example_mob_spawn_egg"), new SpawnEggItem(example_mob , 0x0DA70B, 0x73420E, new Item.Settings().group(ItemGroup.MISC))); | Registry.register(Registry.ITEM, new Identifier(mod_id, "example_mob_spawn_egg"), new SpawnEggItem(example_mob , 0x0DA70B, 0x73420E, new Item.Settings().group(ItemGroup.MISC))); | ||
86行目: | 85行目: | ||
public Identifier getTexture(ExampleEntity entity) { | public Identifier getTexture(ExampleEntity entity) { | ||
//テクスチャの場所を指定 | //テクスチャの場所を指定 | ||
− | return new Identifier("example | + | return new Identifier("example", "textures/entity/example_entity.png"); //ここも以前のバージョン(1.15.2まで)とは違います。 |
} | } | ||
} | } | ||
95行目: | 94行目: | ||
FabricEntityTypeBuilder.<RubyEntity>create(SpawnGroup.MONSTER, RubyEntity::new).dimensions(EntityDimensions.fixed(0.75f, 0.75f)).build() | FabricEntityTypeBuilder.<RubyEntity>create(SpawnGroup.MONSTER, RubyEntity::new).dimensions(EntityDimensions.fixed(0.75f, 0.75f)).build() | ||
</source> | </source> | ||
− | + | *以前はEntityCategoryだったがSpawnGroupに変わった<br /> | |
− | + | MONSTERはモンスターのスポーンの仕方となる(暗いところにスポーン)<br /> | |
− | MONSTERはモンスターのスポーンの仕方となる(暗いところにスポーン) | ||
CREATUREは動物のスポーンの仕方となる(草原などにスポーン) | CREATUREは動物のスポーンの仕方となる(草原などにスポーン) |
2022年7月5日 (火) 01:07時点における最新版
この記事は"Fabric API 0.3.2 build 230~"を前提MODとしています。 |
エンティティの追加[編集]
Entity追加 1.15.2以前と、していることは同じであり、1.16に対応させたチュートリアルである。
以前と少し変わっただけで殆ど変わっていない。
既にMinecraftにあるモデルからエンティティを追加する。 カスタムモデルを追加する訳ではないが、エンティティの作成方法やエンティティの登録方法、スポーンエッグの登録を解説する。 1.16~が対応している。
ソースコード[編集]
メインのクラス
- Main.java
package net.example.modding; import net.example.modding.entity.ExampleEntity; import net.example.modding.entity.ExampleRenderer; import net.fabricmc.api.ModInitializer; import net.fabricmc.fabric.api.client.rendereregistry.v1.EntityRendererRegistry; import net.fabricmc.fabric.api.entity.FabricEntityTypeBuilder; import net.minecraft.entity.EntityCategory; import net.minecraft.entity.EntityDimensions; import net.minecraft.entity.EntityType; import net.minecraft.item.Item; import net.minecraft.item.ItemGroup; import net.minecraft.item.SpawnEggItem; import net.minecraft.util.Identifier; import net.minecraft.util.registry.Registry; public class Main implements ModInitializer { //MOD ID(変数)を設定 public static String mod_id = "example"; //エンティティを登録 public static final EntityType<ExampleEntity> example_mob = Registry.register( Registry.ENTITY_TYPE, new Identifier(mod_id, "example_mob"), FabricEntityTypeBuilder.<RubyEntity>create(SpawnGroup.AMBIENT, RubyEntity::new).dimensions(EntityDimensions.fixed(0.75f, 0.75f)).build() //ここは以前のバージョン(1.15.2まで)とは違います。 ); @Override public void onInitialize(){ EntityRendererRegistry.INSTANCE.register(Main.RUBY_ENTITY, (entityRenderDispatcher, context) -> new RubyRenderer(entityRenderDispatcher));//ここも以前のバージョン(1.15.2まで)とは違います。 EntityRendererRegistry.INSTANCE.register(example_mob, (entityRenderDispatcher, context) -> new ExampleRenderer(entityRenderDispatcher)); //つくったエンティティのスポーンエッグを登録(スポーンエッグを作らない場合はなくてもよい) Registry.register(Registry.ITEM, new Identifier(mod_id, "example_mob_spawn_egg"), new SpawnEggItem(example_mob , 0x0DA70B, 0x73420E, new Item.Settings().group(ItemGroup.MISC))); } }
エンティティの設定のクラス "CreeperEntity"にしているが"ZombieEntity"などでも可能。カスタマイズもできる。
- ExampleEntity.java
package net.example.modding.entity; import net.minecraft.entity.EntityType; import net.minecraft.entity.mob.CreeperEntity; import net.minecraft.world.World; public class ExampleEntity extends CreeperEntity { public ExampleEntity(EntityType<? extends CreeperEntity> entityType, World world) { super(entityType, world); } }
このクラスは使いたいモデルとテクスチャの設定をしている。
- ExampleRenderer.java
package net.example.modding.entity; import net.minecraft.client.render.entity.EntityRenderDispatcher; import net.minecraft.client.render.entity.MobEntityRenderer; import net.minecraft.client.render.entity.model.CreeperEntityModel; import net.minecraft.util.Identifier; public class ExampleRenderer extends MobEntityRenderer<ExampleEntity, CreeperEntityModel<ExampleEntity>> { public ExampleRenderer(EntityRenderDispatcher entityRenderDispatcher_1) { //モデルを指定 super(entityRenderDispatcher_1, new CreeperEntityModel<>(), 1); } @Override public Identifier getTexture(ExampleEntity entity) { //テクスチャの場所を指定 return new Identifier("example", "textures/entity/example_entity.png"); //ここも以前のバージョン(1.15.2まで)とは違います。 } }
解説[編集]
FabricEntityTypeBuilder.<RubyEntity>create(SpawnGroup.MONSTER, RubyEntity::new).dimensions(EntityDimensions.fixed(0.75f, 0.75f)).build()
- 以前はEntityCategoryだったがSpawnGroupに変わった
MONSTERはモンスターのスポーンの仕方となる(暗いところにスポーン)
CREATUREは動物のスポーンの仕方となる(草原などにスポーン)