本教程的第6步实体模型制作方法已过时,推荐使用blockbench制作所有的生物实体模型。
Blockbench下载地址
类似教程:1.18.1模组开发教程03–生物实体,第一步中模型制作请将实体的模型版本选择为1.7~1.13
本次我们尝试在Minecraft中创造一个人物实体
1.mod包中新建一个 entity 包
entity包中新建一个 EntityInit 类

在 EntityInit.java 中编写代码:
package com.Joy187.newmod.entity; import com.Joy187.newmod.Main; import com.Joy187.newmod.util.Reference; import net.minecraft.entity.Entity; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.common.registry.EntityRegistry; public class EntityInit { //对生物信息进行注册 public static void registerEntities(){ //生物名称,所编写的生物类,在Reference中的名称,追踪范围,生物蛋颜色1,颜色2 registerEntity("ra3", EntityRA3.class, Reference.RA3, 20, , 0); //registerEntity("dimi", EntityDimi.class, Reference.Dimi, 20, , 0); //... } public static void registerEntity(String name, Class<? extends Entity> entity, int id, int range,int color1,int color2) { EntityRegistry.registerModEntity(new ResourceLocation(Reference.Mod_ID + ":" + name), entity, name, id, Main.instance, range, 1, true, color1, color2); } }
讯享网
2.在entity中新建我们的生物类 -> 名称与EntityInit中的生物名称保持一致 (以EntityRA3为例子)

在 EntityRA3.java 中编写
讯享网package com.Joy187.newmod.entity; import net.minecraft.entity.monster.EntityZombie; import net.minecraft.world.World; //我们这里设定的生物是僵尸类型,也可以设置成其他类型(小白,小黑等) public class EntityRA3 extends EntityZombie{ public EntityRA3(World worldIn) { super(worldIn); // TODO 自动生成的构造函数存根 } }
3.在 util.handles 中 的 RegistryHandler.java 中 添加语句(生物信息)
public static void preInitRegistries(){ EntityInit.registerEntities(); RenderHandler.registerEntityRenders(); } public static void postInitRegistries() { }
示例:

4.在entity包中新建render包 (渲染生物)

在render包中 新建 RenderRA3(针对RA3的渲染) 类

在 RenderRA3.java 中编写代码:
讯享网package com.Joy187.newmod.entity.render; import com.Joy187.newmod.entity.EntityRA3; import com.Joy187.newmod.util.Reference; import net.minecraft.client.model.ModelBase; import net.minecraft.client.renderer.entity.RenderLiving; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.util.ResourceLocation; public class RenderRA3 extends RenderLiving<EntityRA3>{ public static final ResourceLocation TEXTURES = new ResourceLocation(Reference.Mod_ID + ":textures/entity/ra3.png"); public RenderRA3(RenderManager rendermanagerIn) { super(rendermanagerIn,new ModelRA3(), 0.5f); //渲染管理,生成RA3的模型,该生物的阴影占身体的比重() // TODO 自动生成的构造函数存根 } protected ResourceLocation getEntityTexture(EntityRA3 entity){ return TEXTURES; } }
5.在 util.handlers 包中新建 RenderHandler 类

在RenderHandler.java中编写Java代码:
package com.Joy187.newmod.util.handlers; import com.Joy187.newmod.entity.EntityRA3; import com.Joy187.newmod.entity.render.RenderRA3; import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraftforge.fml.client.registry.IRenderFactory; import net.minecraftforge.fml.client.registry.RenderingRegistry; public class RenderHandler { public static void registerEntityRenders(){ RenderingRegistry.registerEntityRenderingHandler(EntityRA3.class, new IRenderFactory<EntityRA3>() { @Override public Render<? super EntityRA3> createRenderFor(RenderManager manager) { return new RenderRA3(manager) ; } }); } }
6.之后我们需要对该生物的模型进行制作
我们需要下载iChunUtil和Tabula两个模组放入1.12.2中,之后启动游戏
相关模组下载地址


由于我们本次是制作僵尸的同类,所以我们找到僵尸的模型导入
- 点击"从Minecraft导入"

- 找到Zombie的模型,双击导入。

- 对模型进行修改后,点击保存

- 保存后点击导出项目 -> 导出为Java项目

- 我们保存的名称为 包名.model ,命名为ModelRA3() (与第4步中RenderRA3中的名称对应)


- 点击导出项目 -> 保存实体的 texture map(材质映射)

- 完成操作后可以关闭游戏
7.在MC中找到mods文件夹 -> 找到tabula -> 找到export -> 找到.Java和.png文件(物体的模型和皮肤)

8.在entity包中新建 model 包

9.将export中的.java文件放入entity.model文件(放置模型文件)

10.对Main.java中PreInit函数的进行修改
讯享网 public static void PreInit(FMLPreInitializationEvent event) { RegistryHandler.preInitRegistries( ); }
11.在resources文件夹下的 textures 包中新建 entity 包

将 export 中的.png文件加入到entity包中,名称和RenderRA3.java中保持一致

12.在assets中的 lang文件中加入我们实体刷怪蛋的名称
//entities entity.ra3.name=RA3
13保存文件 -> 启动游戏 -> 找到刷怪蛋


我们的Zombie出现,芜湖!
演示材质









版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/49932.html