本教程的第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, 14833957, 0);
//registerEntity("dimi", EntityDimi.class, Reference.Dimi, 20, 14833957, 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出现,芜湖!
演示材质

本文详细指导如何在Minecraft中通过新mod创建自定义实体,如僵尸RA3,包括实体类编写、模型导入与修改、渲染处理等步骤,并介绍了所需的模组和资源管理。


1199

被折叠的 条评论
为什么被折叠?



