本教程的第6步实体模型制作方法已过时,推荐使用blockbench制作所有的生物实体模型。
Blockbench下载地址
类似教程:1.18.1模组开发教程03–生物实体
本次我们尝试在Minecraft中创造一个人物实体(Zombie类型)
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);
}
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出现,芜湖!
演示材质
爹!!!
从mcbbs那边找过来的,可以说是Harbinger后最新的救命恩人了,Harbinger用的stable_39 mcp太旧了。另外大佬一般是在哪里翻文档的。
你好,我一般是通过看教学视频来进行学习的,国内国外的资源其实都有很多,另外Github上面有一些开发包也可以参考一下,1.12.2有一个IdeallandFramework的开发包非常不错。
怀念啊,小时候尝试研究这个东西,失败了
欢迎大佬%%%
大佬orz