【Minecraft java edition 模组开发】(一):实现一个简单的模组

您所在的位置:网站首页 简单电脑编程代码怎么写 【Minecraft java edition 模组开发】(一):实现一个简单的模组

【Minecraft java edition 模组开发】(一):实现一个简单的模组

2024-07-14 13:25:55| 来源: 网络整理| 查看: 265

零、写在前面

在这里插入图片描述

1.看这个系列需要什么前提? ① 对Minecraft有一定的了解,知道模组、方块、物品、实体等名词的具体含义。② 对java编程有一定了解,至少要学到容器。③ 会编写json代码,(其实不会也可以,因为这个比较简单,现敲现学都没问题,尤其对于会JavaScript的同学而言。可以通过这个链接进行学习JSON菜鸟教程)④ 安装并配置好了forge1.12.2(不知道怎么弄的可以参考这个forge安装教程[IntelliJ IDEA]) 2.我为什么要开这个系列的坑? ① 模组开发比较繁琐,虽然不像算法那样要动脑子想,但是这个包里放这个类,那个包里放那个类,哪个目录下又要放哪个json或者png文件。真的把人弄得……用陕西话讲,木乱的。我把这些东西写到博客里,也算是给自己加强记忆。② 网络上关于模组开发的教学资料真的非常少,毕竟这玩意又不能拿去考研秋招或者是校招。没有补课机构愿意出教学,也没有太多人愿意去学。于是乎学习资料便很少了。那我就在这里把我自己学习的经历摆出来,后来者也能走走捷径。 3.最后一点

  没啥可说的了其实,但是只写两点太难看了,也就是说这一点是用来凑数的。废话不多说了,我们开整。

二、建包

在这里插入图片描述

  放mod的java文件的包要放在…/src/main/java这个目录里面,一般都起名为com.你的Minecraft中用的名字.你这个mod的名字。例如com.darkill.examplemod 。

  然后再建两个包,分别为com.darkill.examplemod.util和com.darkill.examplemod.proxy和。结构如下(其他的包暂时不用管,也不用加入):

项目结构

三、写用来做参考文件的Reference类

在这里插入图片描述

  在com.darkill.examplemod.util(注意,包名因人而异,我这里只是为了举例子)包里面写一个Reference类。这个类的作用其实就相当于一个properties配置文件,它的里面全部是常量。

package com.darkill.examplemod.util; public class Reference { public static final String MODID = "examplemod"; public static final String NAME = "Example Mod"; public static final String VERSION = "1.0"; public static final String ACCEPTED_VERSIONS = "[1.12.2]"; public static final String CLIENT_PROXY_CLASS = "com.darkill.tutorialmod.proxy.ClientProxy"; public static final String COMMON_PROXY_CLASS = "com.darkill.tutorialmod.proxy.CommonProxy"; } 逐一解释这些常量的用意: MODID:相当于模组的身份证号,MODID必须全部为小写字母,并且尽量不要太短,否则会和别人的mod混淆。NAME:就是你这个模组的名称。VERSION:这个模组目前的版本。ACCEPTED_VERSIONS这个模组支持哪些Minecraft游戏版本使用。

  上面提到的这几个都可以随意些,后面两个变量必须是proxy包下面的这两个类,不过这时这两个类还没写呢,一会儿再写。我们先接着写Main文件

  

四、写Main类 — mod文件运行的入口

在这里插入图片描述

  在com.darkill.examplemod包里面写一个Main类。具体代码如下:

package com.darkill.examplemod; import com.darkill.examplemod.util.Reference; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod.EventHandler; import net.minecraftforge.fml.common.Mod.Instance; import net.minecraftforge.fml.common.SidedProxy; import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; @Mod(modid = Reference.MODID, name = Reference.NAME, version = Reference.VERSION) public class Main { @Instance public static Main instance; @SidedProxy(clientSide = Reference.CLIENT_PROXY_CLASS, serverSide = Reference.COMMON_PROXY_CLASS) public static CommonProxy proxy; @EventHandler public void preInit(FMLPreInitializationEvent event) { } @EventHandler public void init(FMLInitializationEvent event) { ModRecipes.init(); } @EventHandler public void postInit(FMLPostInitializationEvent event) { } } 五、编写ClientProxy与CommonProxy

在这里插入图片描述

  我们在第三步写的Reference类中可以注意到有两个类的路径我们并没有写任何java文件,这一步的操作就是写上他们。

package com.darkill.examplemod.proxy; import net.minecraft.item.Item; public class CommonProxy { public void registerItemRenderer(Item item, int meta, String id) {} } package com.darkill.examplemod.proxy; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.item.Item; import net.minecraftforge.client.model.ModelLoader; public class ClientProxy extends CommonProxy { @Override public void registerItemRenderer(Item item, int meta, String id) { ModelLoader.setCustomModelResourceLocation(item, meta, new ModelResourceLocation(item.getRegistryName(), id)); } } 六、修改用来记录模组信息的info文件

在这里插入图片描述

  该文件名为mcmod.info的位于…/src/main/resources目录下,内容为:

[ { "modid": "examplemod", "name": "Example Mod", "description": "Example placeholder mod.", "version": "1.0", "mcversion": "1.12.2", "url": "", "updateUrl": "", "authorList": ["darkill"], "credits": "The Forge and FML guys, for making this example", "logoFile": "", "screenshots": [], "dependencies": [] } ] 内容分别为: modid:对应Reference中的MODIDname:对应Reference中的NAMEdescription:对模组内容的描述version:该模组目前的版本mcversion:模组使用的mc版本authorList:制作者名单 七、运行模组

在这里插入图片描述

  现在这个模组充其量只能算得上是一个空壳模组,没有物品,没有方块,什么都没有。下面的张杰我们会逐一介绍,我们现在先讲讲如何运行模组。

if (you.usingIDE().equals(“eclipse”)) {

  打开Main类。然后点这儿:

eclipse

} else if (you.usingIDE().equals(“intellij IDEA”)) {

  同样打开Main类,先点这(或alt+u):

Run

  然后点这个(或alt+shift+f10):

在这里插入图片描述

  然后再弹出的东西里面点这个runClient:

在这里插入图片描述

} else { me.sugest(“用idea去吧”);}

  然后我们就会发现mc自动运行了,打开左下角的Mods,就能找到我们写的空壳模组了。 在这里插入图片描述 在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭