MCBBS Wiki欢迎您共同参与编辑!在参与编辑之前请先阅读Wiki方针。
如果在编辑的过程中遇到了什么问题,可以去讨论板提问。
为了您能够无阻碍地参与编辑 未验证/绑定过邮箱的用户,请尽快绑定/验证。
MCBBS Wiki GitHub群组已上线!
您可以在回声洞中发表吐槽!
服务器状态监控。点击进入
本站由MCBBS用户自行搭建,与MCBBS及东银河系漫游指南(北京)科技有限公司没有从属关系。点此了解 MCBBS Wiki 不是什么>>
用户:MashKJo/1.12.2模组开发教程/绪论
这是什么?
这是一个基于Minecraft 1.12.2和Forge 14.23.5.2859的模组开发教程。
叠甲
笔者不保证、也绝对不敢说这篇教程里的所有内容都是准确无误的。
对读者的要求
- 拥有一个正常的大脑
- 对于Minecraft原版的内容足够熟悉
- 对于安装Forge Mod的操作足够了解,且拥有较丰富的模组游玩经验
- 对面向对象编程思想、Java基本语法、Java的部分基础类库有着足够的了解
忠告
上面的那些话,可能过于冰冷、没有感情色彩了。那就让笔者声情并茂地再根据笔者自己学习模组开发的历程,给读者几句忠告。
首先,Java编程基础几乎是必备的(虽然你也可以用其他语言编写模组,但本教程只涉及Java)。否则你会发现,你要么根本没法学下去,要么学起来极其痛苦。如果结果是后者,那么其实你天赋已经相当异禀了。
笔者就曾经试着在“无Java基础”的情况下不用模组制作器制作模组,结果发现:找到的几乎所有教程都看不懂。最后终于找到了一个可以完全对着教程抄代码的模组开发教程,笔者便由此做出了一个模组:Ore Maul。有趣的是这个教程在MCBBS的帖子很快就充满了否定意见,原因就是“不讲实现原理,反而把大段大段的浅显代码扔到读者脸上”,因此那个教程的托管网站也很快关闭了。
笔者当年尝试过,结果是:根本学不下去——毕竟对着教程抄代码、完全不思考,怎么能被称作学习呢?
可以这么说,如果真的有教程能做到让不懂Java的人大段复制代码就可以做模组,那么也就最多做出一些毫无额外行为的物品、方块,以及一些JSON配方,就到头了。
所以还是去学Java吧。面向对象编程基础和Java的基本语法,是必须要熟练掌握的。至于Java的基础类库,这个说实话,对其中的一部分做个了解就好,比如Math、Map、List这种,这些在模组开发中是会经常用到的;至于其他的一些如System、Runtime等等,说实话,学了对模组开发意义不大。
至于想边学习模组开发边学习Java?这也行不通。添加一个新物品可以说是模组开发中最简单的需求了,然而光是注册物品就要涉及到泛型和Forge的事件系统,事件系统还牵扯到注解……哈哈,反正笔者不信谁能做到“边学习模组开发边学习Java”。
以及要有丰富的Minecraft原版和Forge Mod游玩经验,这样的话你在制作你自己的模组的时候,就能知道如何设计内容,能符合Minecraft的风格和数值,能和其他模组产生良好的互动。
另外,不要指望教程能帮你解决所有问题。任何教程都办不到这点。教程只是给你提供参考,给你引个路。如果你发现你想实现一个功能,然而没有任何教程讲过,那该怎么办?答案是去参考Minecraft原版和其他模组的源代码——所以,这也是一个要求你“有丰富的Minecraft原版和Forge Mod游玩经验”的原因,如果你不满足这点要求,你甚至连你该参考的代码在什么地方你都不知道。
而且你该优先参考其他模组的代码,而非Minecraft原版代码,原因是原版有些机制写的根本就不好,有些地方甚至根本就是硬编码,因此Forge提供了一些轮子来解决这些事情,你用类似于原版代码中的实现会忽略掉Forge的轮子,这对提升和其他模组的兼容性是不利的。
最后,拥有良好的提问规范和礼节。良好的提问规范指的是:提问的时候,描述清楚你的问题和需求,不要藏着掖着关键信息;而且,也不要把你的代码大段大段地复制粘贴到QQ群或Discord服务器的消息里,善用文件传输功能或各类Pastebin。至于良好的提问礼节,应该不需要笔者多说。