Minecraft(我的世界)中文论坛

标题: Harbinger - 面向中文社区的 1.12.2 Forge Mod 开发指南

作者: 3TUSK    时间: 2019-3-8 12:00
标题: Harbinger - 面向中文社区的 1.12.2 Forge Mod 开发指南
Harbinger:迟来的先驱者



Harbinger 是一套基于 Minecraft 1.12.2 和 Forge 的中文 Mod 开发指南。
顾名思义,Harbinger(英文“先驱者”之意)的最终目标就是覆盖“所有优秀的 Minecraft Modder 都或多或少了解的有关 Minecraft 和 Forge 的一切”。 说得夸张一些,这部开发指南是来终结 xkcd 927 的诅咒的。


Harbinger 最早于 2016 年 12 月中旬开始动笔,当时的项目代号为 Epsilon(第五个希腊字母“厄普西隆”),且最初的目标是一套同时覆盖 1.10.2、1.11.2 和 1.12.2 的 Mod 开发指南。 随着时间的推移及社区主流的变化,本指南最终放弃了 1.10.2 和 1.11.2 的有关内容,转而全力记载基于 1.12.2 的 Minecraft 及对应版本的 Forge 的 Modding 相关内容。
2018 年 8 月下旬,该项目停用 Epsilon 这个项目代号,并正式命名为 Harbinger,托管在 GitHub 上 Team CovertDragon 的 Organization 名下。 原本的计划是将 Harbinger 作为 TCD 的内部教材使用,但随后考虑到中文社区长久以来的 Mod 开发资源的空白与断层,TCD 成员与笔者遂决定将其打造成面向全中文社区的开发指南。




有鉴于其文本量过大,导致在 MCBBS 上维护 Harbinger 成本过高(排版、版本追踪、问题追踪等),所以本指南所有源文件全部托管于 https://github.com/TeamCovertDragon/Harbinger 仓库中。
本指南使用 GitBook 作为框架,电子书构建结果可随时在 https://harbinger.covertdragon.team/ 查看。本网站时刻监听源仓库更新,在 bleeding 分支上的新 commit 会立刻触发一次构建,所以不必担心更新速度的问题。
以下是 Harbinger 的总目录(含前言、正文、附录、实战与后记),全部指向 https://harbinger.covertdragon.team/ 。未完成的章节目前会返回 404:


前言


正文


附录


实战


后记




本指南全部内容均以 MIT 许可证授权。查阅 https://github.com/TeamCovertDragon/Harbinger/tree/bleeding/LICENSE 获得详细信息。
在同意将您的贡献以 MIT 许可证授权的前提下,我们欢迎您直接向 Harbinger 发起 Pull Request,为这份规模浩大(也不过一两万字而已)的指南的最终完成贡献您的一份力量。
两年多来,Harbinger 也得到过不少人的帮助。首先在此向所有直接参与维护的人致敬。 除此以外,还要特别感谢那些在幕后以各种形式帮到笔者的人们——没有他们,也许 Harbinger 将永远不会有今天这个样子。




作者: 故里故里    时间: 2019-3-8 12:09
3t不愧是写教程出身的(雾
作者: 梨木利亚    时间: 2019-3-8 12:25
大喜過望,宜加分。
作者: 重生是希望    时间: 2019-3-8 12:41
迟来的平定者 ←_←
作者: zh470947848    时间: 2019-3-8 19:03
3T万岁(高呼
作者: 鸭蛋只吃黄    时间: 2019-3-8 20:18
大喜过望, 感谢 dalao
作者: 耗子    时间: 2019-3-8 21:24
关于跨Mod兼容,可以介绍一下Forge模组中的@Optional注解
作者: liach    时间: 2019-3-8 22:58
个人认为盲目依赖forge是硬伤。Minecraft modding很多内容和forge没有关系,甚至很多理念mod和插件可以共享。
作者: 3TUSK    时间: 2019-3-9 02:59
liach 发表于 2019-3-8 22:58
个人认为盲目依赖forge是硬伤。Minecraft modding很多内容和forge没有关系,甚至很多理念mod和插件可以共享 ...

然而 Forge 是个 de facto 的业界标准,先讲这个似乎也是非常符合直觉的选择……

换言之,以现在这个风格写下去,可以非常简单地将它改造成基于别的框架的 Modding 指南。
作者: 3TUSK    时间: 2019-3-9 03:02
耗子 发表于 2019-3-8 21:24
关于跨Mod兼容,可以介绍一下Forge模组中的@Optional注解

其实很早以前是有写到过 @Optional 的,但后来因为某些原因最终先暂时撤掉了,但原稿还在。

一句话:我(们)需要考虑一下怎么讲 @Optional 最合适……
作者: liach    时间: 2019-3-10 07:34
Optional 个人认为可以和 SideOnly 一起讲解。原理类似 SideOnly 但是服务对象不同 (服务 @APi 接口)
作者: 猿汐    时间: 2019-3-10 14:07
提示: 作者被禁止或删除 内容自动屏蔽
作者: 我是叶辉    时间: 2019-3-10 19:26
感谢楼主大大的教程。
作者: hjtest001    时间: 2019-3-14 20:23
楼主,这个是还未完成版么?怎么有好多章节页面打开是404错误,如下这些都是这样。
5.2.4 红石信号敏感的方块
9.1.2 流体储罐
9.1.3 打粉机19.3 大型结构
19.3.1 MapGenBase
19.3.2 MapGenStructure
19.3.3 Template
19.4 新维度
19.4.1  可选的 WorldType
19.4.2 WorldProvider
19.4.3 IChunkGenerator
19.4.4 BiomeProvider
另外我想问下这个指南会出离线PDF版或之类的离线版本么?
因为那个电子书网页打开奇慢无比,点一个章节有时候几分钟都没出来。
作者: 3TUSK    时间: 2019-3-17 02:18
hjtest001 发表于 2019-3-14 20:23
楼主,这个是还未完成版么?怎么有好多章节页面打开是404错误,如下这些都是这样。
5.2.4 红石信号敏感的方 ...

你可以倒回去看一下本贴的说明:
未完成的章节目前会返回 404

实际上应该是“还未开始动笔的章节”。暂时先不改了,等下一次目录更新的时候再动。

离线版本——有鉴于整套指南用的是 GitBook,你可以用 GitBook CLI($ npm install gitbook-cli -g)然后用它自己构建:
  1. # 导出 PDF 版本的
  2. $ gitbook pdf ./ ./book-pdf

  3. # 导出 EPUB 版本的
  4. $ gitbook epub ./ ./book-epub
复制代码

在本指南正式完成之前我们没有发布 PDF/EPUB 版的计划,因为在可预见的未来中整个指南的内容仍然会快速变化,导出 PDF 有可能会让过时的信息流传开来,与本指南的目标之一“传播最新最准确的关于 Mod 开发的信息”相违。
作者: q1915819245    时间: 2019-4-3 23:33
...看不明白新手qwq

作者: zjx475    时间: 2019-4-4 15:32
支持支持!简略没关系,关键要更完啊!!!不要像其他教程一样...
作者: K1赤铁    时间: 2019-4-6 12:30
这个更新速度貌似可以啊
作者: 小乘    时间: 2019-4-6 18:08
可以,虽然不清楚,
作者: 502mc    时间: 2019-4-6 20:40
有没有1.12.2的带中文注释的事件列表?
作者: 3TUSK    时间: 2019-4-7 01:16
502mc 发表于 2019-4-6 20:40
有没有1.12.2的带中文注释的事件列表?

有考虑过,但不是目前的重点。
目前的重点还是补全缺失章节的内容,比如 GUI、世界生成/新维度、实体及 AI、渲染等等等等…… 对各个事件的讲述会随着这些章节穿插进行。
作者: MC_wangxing    时间: 2019-4-7 17:40
emmmmmmmmmmmmmmmmmmm
作者: george2005    时间: 2019-4-9 10:59
为什么都是无效的链接?谢谢!
作者: 鸡脚芝士    时间: 2019-4-9 11:17
昨天链接还能打开来着,怎么今天不行了
作者: Savior_Hn    时间: 2019-4-19 10:30
很全面的讲解,多谢了~
作者: MashKJo    时间: 2019-4-27 21:43
为什么感觉所有教程都是竭力避开注册新世界这个环节?
作者: 3TUSK    时间: 2019-4-28 16:47
MashKJo 发表于 2019-4-27 21:43
为什么感觉所有教程都是竭力避开注册新世界这个环节?

很简单:
1. 因为都没接触过所以都不敢写,怕误人子弟。(思考一下你见过多少有加新维度的 Mod?)
2. 因为觉得是“高级篇”的内容所以决定放后面写,然后在真正动笔之前就先弃坑了。

有鉴于人手不足和时间不足,你可以期待一下 Harbinger 在这本回复发布一周之内更新这一章。有人问,就敢写。
作者: MashKJo    时间: 2019-4-30 12:28
u.s.knowledge 发表于 2019-4-28 16:47
很简单:
1. 因为都没接触过所以都不敢写,怕误人子弟。(思考一下你见过多少有加新维度的 Mod?)
2. 因 ...

还有,我有点儿疑惑,为什么有些章节只写一半就不写了,比如实体那章,连AITasks和AI列表都没有讲到。物品和方块的材质json也没有?
作者: 3TUSK    时间: 2019-4-30 13:56
MashKJo 发表于 2019-4-30 12:28
还有,我有点儿疑惑,为什么有些章节只写一半就不写了,比如实体那章,连AITasks和AI列表都没有讲到。物 ...

很简单:时间不够。

实体是个非常棘手的东西,暂时不知道什么时候能更新。你应该注意到了,实体那一章基本是空白。

物品和方块的模型 JSON——这条回复发布之后的一周之内应该就会有。
作者: 无归    时间: 2019-4-30 20:54
感谢大佬  
作者: 3TUSK    时间: 2019-5-1 04:23
本帖最后由 u.s.knowledge 于 2019-5-1 07:14 编辑
MashKJo 发表于 2019-4-30 12:28
还有,我有点儿疑惑,为什么有些章节只写一半就不写了,比如实体那章,连AITasks和AI列表都没有讲到。物 ...

其实物品模型其实是第十一章的内容,不过此前和其他编者的讨论中发现把物品模型这样的内容放得太靠后似乎不太合适,所以第四章(讲物品)的 4.1 节重新加入了非常基础的物品模型的介绍。
方块的入门介绍重写了一遍。之前的那个版本大约是一两年前写出来的东西……

作者: @TGL    时间: 2019-5-10 14:54
eclipse上点击 run client 出现 Unrecognized option: -Xincgc

作者: 3TUSK    时间: 2019-5-10 16:28
@TGL 发表于 2019-5-10 14:54
eclipse上点击 run client 出现 Unrecognized option: -Xincgc

请不要使用 Java 9,Minecraft 1.12.2+Forge 的组合不支持 Java 9!
请使用 Java 8。你可以在这里下载到最新的 JDK 8:https://adoptopenjdk.net/

或者你可以直接删了这 VM option:

作者: car_guider    时间: 2019-5-10 20:26
真的很详细,感谢大佬
作者: gooding300    时间: 2019-7-30 23:14
日常催更(跑
作者: sulinly    时间: 2019-8-2 01:53
学习下 谢谢
作者: ps360papa    时间: 2019-8-31 09:36
真心牛逼,我的编程之魂在熊熊燃烧
作者: junxian0608    时间: 2019-10-3 13:21
真心感谢,最近重回MC,有了想尝试mod开发的想法,这么详细的教程真的是让我少走好多弯路,真的是跪谢
作者: ayesd    时间: 2019-10-4 21:00
感觉可以分开Forge和原版源码来写,这样更容易理解,不然会费很多口舌要解释哪些是原版,哪些是Forge。将Forge中的一些核心机制和核心类讲解清楚,然后根据实例来进行讲解更好。
作者: BugjangAB    时间: 2019-12-19 21:26
什么时候出EPUB版?
作者: 名为123的貘    时间: 2019-12-20 22:26
本帖最后由 TT2386265512 于 2019-12-20 22:28 编辑


公开处刑
gui什么时候可以等到完整版
我先回去吭Container了

作者: 1143246234    时间: 2020-1-3 17:34
提个小知识((
在1.13以后的版本搭建环节时只需要.\gradlew.bat (eclipse)即可,setupDecompWorkspace可以不用加
如果加了setupDecompWorkspace会报错:
Task 'setupDecompWorkspace' not found in root project '*******'.
作者: Akron    时间: 2020-1-10 17:23
楼主,相关链接404了
作者: 3TUSK    时间: 2020-1-15 11:02
Akron 发表于 2020-1-10 17:23
楼主,相关链接404了

目录年久失修,建议直接通过 https://harbinger.covertdragon.team 访问……
作者: 神枪手开挂    时间: 2020-2-13 00:14
话说为啥有些标签点进去会显示404 not found
作者: 神枪手开挂    时间: 2020-2-13 00:21
对了,还有一个我要请教一下,为啥当我配置的时候卡死在这步

作者: 3TUSK    时间: 2020-2-13 03:59
神枪手开挂 发表于 2020-2-13 00:21
对了,还有一个我要请教一下,为啥当我配置的时候卡死在这步

要有耐心,或者尝试切换网络环境。网上有如何配置 gradle 使用代理服务器的方式。
作者: 神枪手开挂    时间: 2020-2-13 16:04
3TUSK 发表于 2020-2-13 03:59
要有耐心,或者尝试切换网络环境。网上有如何配置 gradle 使用代理服务器的方式。 ...

等久之后就这样了


作者: 1796315958    时间: 2020-2-18 22:58
本帖最后由 1796315958 于 2020-2-18 23:02 编辑

版主 为什么我第一步配置会是这个样子。。。
是java版本不对吗 该怎么解决





作者: 3TUSK    时间: 2020-2-20 11:59
1796315958 发表于 2020-2-18 22:58
版主 为什么我第一步配置会是这个样子。。。
是java版本不对吗 该怎么解决
[/back ...

0. 不是版主
1. 请卸载所有的 Java 然后重新安装 JDK 8。
作者: 1796315958    时间: 2020-2-20 20:35
3TUSK 发表于 2020-2-20 11:59
0. 不是版主
1. 请卸载所有的 Java 然后重新安装 JDK 8。

好                                    
作者: 乘蚁棱    时间: 2020-2-26 02:49
神枪手开挂 发表于 2020-2-13 00:21
对了,还有一个我要请教一下,为啥当我配置的时候卡死在这步

网络问题,文章里的常见问题1.1.1有解答
作者: 1687997266    时间: 2020-2-27 13:27
都是大佬啊!!!!!!!!

作者: 乘蚁棱    时间: 2020-2-27 16:54
教程讲的真的非常好!就是有一个缺点,不是很详细,没有具体地用一个框架例子来解释,对初学者不是很友好。好在我结合了其他人的教程,还是理解了
作者: jcb850    时间: 2020-3-2 15:29
个人非常喜欢的指南 但是最近无法访问 请问是网站出现问题了吗
作者: 妮玛煤了    时间: 2020-3-3 12:41
提示: 作者被禁止或删除 内容自动屏蔽
作者: jcb850    时间: 2020-3-3 13:10
gradle解决依赖的时候发现有一些文件 404了 请问还有别的镜像站有这些文件吗
作者: yukariの境界    时间: 2020-3-3 23:33
教程网站访问不了了,一直提示响应超时
作者: 2232915390    时间: 2020-5-3 17:45
MCBBS有你更精彩~
作者: 朱彦卿    时间: 2020-5-6 13:07
挺不错的。
作者: zhaohongxin    时间: 2020-5-8 08:57
大佬大佬
作者: 王境泽定律    时间: 2020-5-10 21:50
楼主大大,我是一个完全小白没接触过如何编程的人,但是我想自己用java编写mod,我看了你这些教程头很大,我该如何是好能给指条明路吗
作者: 2691047905    时间: 2020-5-11 12:21
你们这个很好非常好
作者: 2691047905    时间: 2020-5-11 12:26
你们非常好的真的我相信你们
作者: kronos0    时间: 2020-5-11 14:57

作者: MinuteSphinx    时间: 2020-5-12 21:41
严重怀疑mo玩家
作者: 道家深湖    时间: 2020-5-31 22:07
目录里第10章是附魔,但点开是Capability,呃,是因为附魔是Capability吗?
作者: 道家深湖    时间: 2020-6-9 00:21
https://harbinger.covertdragon.t ... nced/throwable.html
"生成雪球实体——关于实体的内容在第七章会详细解释,我们现在丢雪球就好了"
此时实体是第八章了。第七章是“物理端,逻辑端……”
嗯,也许比起章节号,这种地方用链接比较好?虽然无关紧要就是了
作者: deityYanDi    时间: 2020-6-10 23:55
顶顶顶顶顶顶顶顶顶顶顶顶顶
作者: Prilly    时间: 2020-6-11 12:18
        MCBBS有你更精彩~
作者: 2082152212    时间: 2020-7-7 15:47
1796315958 发表于 2020-2-18 22:58
版主 为什么我第一步配置会是这个样子。。。
是java版本不对吗 该怎么解决

建议项目文件放在全英文目录
作者: 2082152212    时间: 2020-7-7 15:48
王境泽定律 发表于 2020-5-10 21:50
楼主大大,我是一个完全小白没接触过如何编程的人,但是我想自己用java编写mod,我看了你这些教程头很大, ...

那就先去学Java

作者: 砍手党鸡    时间: 2020-7-11 07:52
本帖最后由 砍手党鸡 于 2020-7-11 13:47 编辑

大佬nb
作者: wan2009qi    时间: 2020-7-11 14:31
这个适用1.16版本吗
作者: doorming    时间: 2020-7-22 22:59
dalao牛逼!
作者: afree2004    时间: 2020-7-23 10:58
感谢大佬的教程。
作者: Nomel    时间: 2020-7-23 21:15
本帖最后由 Nomel 于 2020-7-23 21:54 编辑

我按照方法写了一个基岩苹果,但是无法食用,原来是super(new Properties().food(food).group(ItemGroup.FOOD));要有一个food(food),和黑曜石锭还不一样,它是只是说明了放在杂项,黑曜石苹果这里要说明放在食物才行,是这个意思吗?


(经测试,是这样的)

作者: 辞音    时间: 2020-8-4 01:38
太全面了 感谢
作者: 1446016008    时间: 2020-8-13 09:50
感谢dalao的教程
作者: 罗殷    时间: 2020-8-13 16:03
故里故里 发表于 2019-3-8 12:09
3t不愧是写教程出身的(雾

大喜过望, 感谢 dalao
作者: ljknbnb    时间: 2020-8-15 11:42
无论我下载哪个版本的mdk都会构建失败
作者: SurfingRok    时间: 2020-8-21 12:41
唉,mod的更新永远无法更进最新版本
作者: msbbsuser0912    时间: 2020-8-22 12:26
在bulid.gradle的“minecraft”节内写上“mapping = "stable_39"实际上会导致报错?
Build时错误:
* Where:
Build file 'F:\Forge\build.gradle' line: 27

* What went wrong:
A problem occurred evaluating root project 'Forge'.
> mapping
build.gradle内注释:
// The mappings can be changed at any time, and must be in the following format.
    // snapshot_YYYYMMDD   Snapshot are built nightly.
    // stable_#            Stables are built at the discretion of the MCP team.
    // Use non-default mappings at your own risk. they may not always work.
    // Simply re-run your setup task after changing the mappings to update your workspace.
    // mappings channel: 'snapshot', version: '20171003-1.12'
作者: chenjj100419    时间: 2020-8-24 09:54
ljknbnb 发表于 2020-8-15 11:42
无论我下载哪个版本的mdk都会构建失败

我有解决办法 下载 IJ 然后安装插件MinecraftDev 然后新建项目时选择minecraft 接着选择forge
作者: holymingyao    时间: 2020-8-30 22:17
厉害
作者: menghuanxiaoyao    时间: 2020-8-31 18:24
本帖最后由 menghuanxiaoyao 于 2020-8-31 19:06 编辑

能不能给个最新的forge官网下载教程,貌似forge官网进去后是服务器托管。
作者: 道家深湖    时间: 2020-9-13 14:15
18.1中,事件类型InputEvent.KeyboardInputEvent在我这没有,我这的是InputEvent.KeyInputEvent,不知是否为版本问题
作者: 道家深湖    时间: 2020-9-13 14:16
准确地说,我的InputEvent是net.minecraftforge.fml.common.gameevent.InputEvent;
作者: 布袋猫    时间: 2020-10-18 10:25
请问IDEA,代码写完了,怎么导出弄成单独一个JAR文件?
作者: 老-G    时间: 2020-11-30 15:31
forge环境还是没有安排好,好像是什么没下载下来
作者: tan大自然    时间: 2020-12-8 13:04
非常有用,感谢
作者: ar神之神人    时间: 2020-12-8 22:45
MCBBS有你更精彩~
作者: 钟太豪    时间: 2020-12-14 18:42
你好,请问一下现在最新版本的MDK内置的gradle已经不附带gradlew setupDecompWorkspace这个指令了,请问如何操作
我按照README内的说法执行完命令后导入eclipse还是不成功,并没有配置好相应的环境,导入包也无法导入。后面我尝试了下载离线包的方法,可以导入相应的包了,但是还是无法从eclipse中直接运行MC会报错无法运行client,求解答谢谢
作者: 836869905    时间: 2021-1-3 16:17
1 2万字确实不多 也就vim全面使用指南的字数(错乱)萌新心血来潮滚来学mod了 谢谢大佬的教程:p

作者: The剑圣Him    时间: 2021-1-19 17:29
不错,我一下全看完了,但有一个问题,就是实体方块的地址不能用了
作者: ml0834666    时间: 2021-1-25 08:45
辛苦了。
作者: JUAN_ZI小败    时间: 2021-1-30 02:21
学了一点编程和建模的美术过来尝试能不能自己制作喜欢的想法!我要做mod!(振声
作者: mini_zhao_233    时间: 2021-1-30 22:23
感谢大佬
作者: 龘人秀小时_    时间: 2021-2-1 12:54
感谢楼主的教程
作者: phjm2020    时间: 2021-2-1 16:21
厉害了啊