<基于1.8 Forge的Minecraft mod制作经验分享>

首先看看一个mod的文件结构,懂Java的应该都看得懂:

src/main/
--java/com.xxxxxxxx.xxx/
----block/
----item/
......
----xxx.java
--resources/assets/xxx/
----blockstates/
----lang/
----models/
----textures/
----mcmod.info

可以看到在main文件夹下,有java、resources两个文件夹,前者放Java源码,后者存放要用到的资源,现在开始具体介绍:

  1. 首先,你需要一个用@Mod(modid = xxxx, version = xxxx)这个注解标识的Java主类作为入口,对应上图的xxx.java。Forge会根据这个注解识别到它。modid是你的mod的Id,即一个唯一标识你的mod的字符串,记得小写,version是版本号,一个形如1.0.0的String。一般建议把这两个String作为常量定义主类里,方便随后的调用。

    然后,你需要用@EventHandler注解标注几个方法,使这个主类能够真正的在Forge运行时做一些事情。这个注解是根据其标注的方法的参数来工作的,这里有三个基本的参数:FMLPreInitializationEvent、FMLInitializationEvent、FMLPostInitializationEvent。这三个参数其实是三个事件,Forge会在MC开始时依次执行这三个事件。关于它们的具体分工我发现很难说清楚,还是在之后用到的时候再细说吧。

    在我的斗罗大(大)陆(坑)mod里,主类是长这样的:

    @Mod(modid = DouroMod.MODID, version = DouroMod.VERSION)
    public class DouroMod
    {
    /**ModInfo*/
    public static final String MODID = "douromod";
    public static final String VERSION = "0.0.0"; ......
    ...... @EventHandler
    public void preInit(FMLPreInitializationEvent event)
    { ...... } @EventHandler
    public void init(FMLInitializationEvent event)
    { ...... } @EventHandler
    public void postInit(FMLPostInitializationEvent event)
    { ...... }
    }
  2. 然后你需要对你的mod做一个描述,这部分内容在上图中的mcmod.info里面完成。里面的modid、name、description等等都是顾名思义的,填上就行。需要注意version、mcversion别动,看得出那是占位符吧,是由gradle搞定的,不需要你写。另外,如果想要输中文并正常显示的话,需要把文件编码调整为GBK而不是UTF-8,有点奇怪对吧,所以建议别用中文,除非你想让外国友人看到乱码。

  3. 现在你的mod主类已经建立,并且用@Mod申明了mod的Id和Version,也为你的mod添加了描述信息。但你还需要在build.gradle里面同步的修改它们。在工程目录下找到build.gradle并打开,可以看到里面其实写的很详细,你需要改什么,不应该动什么。关键是把version = ""里面改为你的mod版本号,group = ""里面写你的包名com.xxxxxxxx.xxx,archivesBaseName = ""里面写mod的Id。

好了,运行试试看,在mod选项里是不是已经看到了你的mod以及的描述信息了呢?我的Github链接https://github.com/zhengxiaoyao0716/DouroMod,快来一起做啊

第三章:真正弄清楚一个Mod的组织结构

第三章:真正弄清楚一个Mod的组织结构的更多相关文章

  1. C# 线程手册 第三章 使用线程 实现一个数据库连接池(实战篇)

    在企业级软件开发过程中,为了改善应用程序的性能需要通常使用对象池来控制对象的实例化.例如,在我们每次需要连接一个数据库时都需要创建一个数据库连接,而数据库连接是非常昂贵的对象.所以,为了节省为每次数据 ...

  2. 《windows程序设计》第三章学习心得

    第三章是基于对一个windows窗口的学习,来达到对windows程序运行机制的理解. 从语言的角度看消息机制,Windows给程序发消息的本质就是调用"窗口过程"函数. Don' ...

  3. 第三章 C#循环与方法

    第一节1-For循环入门 语法: for(条件表达式) { 执行语句 } 练习: 第三章作业1.写一个程序打印100到200的值;2.写一个程序从10打印到1:3.写一个程序打印10到30之间的所有偶 ...

  4. JS复习:第三章&第四章

    第三章 一.把一个值转换成字符串的两种方法: 1.使用每个值都有的toString( )方法.这个方法唯一要做的就是返回相应值的字符串表现.例如: var age = 11 ; var ageAsSt ...

  5. 第三章 用SDK编译出第一个在Linux下的软件界面

    第三章 用SDK编译出第一个在Linux下的软件界面 先创建一个工程目录“mkdir project1”,进入目录,创建main.cpp文件,编写代码如下: 代码内容暂时可以先不理解,先让程序跑起来再 ...

  6. [转]TEC1401.Report开发技术总结 - 第三章 使用Oracle Reports开发报表-创建一个分组报表(2/4)

    本文转自:http://blog.csdn.net/deepsea_allen/article/details/53900284 第三章   创建一个分组报表 1.     建立数据模型 数据模型用于 ...

  7. [转]Windows Shell 编程 第三章 【转自:http://blog.csdn.net/wangqiulin123456/article/details/7987901】

    第三章 操作文件 我依然清楚地记得,Windows95 的贝塔版出现的情形,它在朋友之间和学院中传播,好酷,全新的文件管理器,一种全图标,全彩色可客户化的界面,以及活泼的动画标识使得在文件拷贝和删除方 ...

  8. (转)iOS Wow体验 - 第三章 - 用户体验的差异化策略

    本文是<iOS Wow Factor:Apps and UX Design Techniques for iPhone and iPad>第三章译文精选,其余章节将陆续放出.上一篇:Wow ...

  9. 《Metasploit魔鬼训练营》第三章

    p85 使用nmap探测目标主机的操作系统版本那里有问题,我探测不了NAT服务器的! msf > nmap -sT 10.10.10.254 [*] exec: nmap -sT 10.10.1 ...

随机推荐

  1. getUrlParam,jQuery中的URL参数获取

    大家经常会需要在一段URL中截取到自己所需参数的值,下面的方法也许能帮到您: $.getUrlParam = function(name){ var reg = new RegExp("(^ ...

  2. sql 语句左连接右连接小例子

    A表(a1,b1,c1) B表(a2,b2) a1 b1 c1 a2 b2 01 数学 95 01 张三 02 语文 90 02 李四 03 英语 80 04 王五 select A.*,B.* fr ...

  3. Sql 格式化工具

    SQL Pretty Printer:目前提供4种使用方式,桌面版本,SSMS(SQL Server Management Studio)插件,VS插件,和提供API接口. SQL Pretty Pr ...

  4. MVC中的HtmlHelper

    authour: chenboyi updatetime: 2015-04-27 21:57:17 friendly link:   目录: 1,思维导图 2,CodeSimple 1.思维导图:

  5. MVC中的模型注解

    authour: chenboyi updatetime: 2015-04-26 21:28:42 friendly link:   目录: 1,思维导图 2,内容解析 3,CodeSimple 1, ...

  6. 转:Java开发牛人十大必备网站

    原文来自于:http://www.importnew.com/7980.html 以下是我收集的Java开发牛人必备的网站.这些网站可以提供信息,以及一些很棒的讲座, 还能解答一般问题.面试问题等.质 ...

  7. cf B. I.O.U.

    http://codeforces.com/contest/376/problem/B #include <cstdio> #include <cstring> #includ ...

  8. C#程序设计基础——常量

    C#程序设计基础——常量 常量是在编译时已知,并且在程序的生存期内不发生更改的不可变值.常量使用const修饰符进行声明. 常量必须在声明时初始化,且常量的类型必须为以下类型之一:sbyte/byte ...

  9. angular学习地址

    在网上收集了angular.js的网站,不错,收集收集 http://www.ituring.com.cn/minibook/303 http://www.zouyesheng.com/angular ...

  10. 查看ASM 使用率

    有两种方法: 1.查看v$asm_diskgroup视图 SQL> select group_number,name,total_mb,free_mb from v$asm_diskgroup; ...