首先感谢楼主做出的贡献. 但是说句不好听的, 楼主还需要努努力才可以达到屎的水平.
抛去教程中资源失效和网站的乱码(这毕竟是网站的事), 首先我想问一句, 什么叫
???
纵观整个教程, 楼主真是把这句话贯彻到底了, 而这也是教程中问题最大的地方. 编程不是卖白菜, 最最要不得的就是 "知其然而不知其所以然", 为什么国内开发水平总体远低于国外? 我认为垃圾教程要付很大一部分责任. 不去探究细节, 不去研究底层原理, 只浅显的讲一讲表层 API, 那结果就是一旦 mod 出现任何问题, 您的 "徒弟" 们马上 gg, 毫无解决办法. 新的 1.13 马上就发布了, 这些人面对新的版本(API), 根本没有自己感悟理解的能力, 只能去找新的教程, 如果没有, 当场 gg. 楼主的整个教程一直讲到 potion, 药水效果, 但是我认为不如仔细的讲讲 ModElement 加载的几种方式以及时机, 让大家理解这些, 至少我认为使用 RegistryEvent.Register 事件加载的元素是不需要写教程进行讲解的, 哪怕是像声音这种需要新的 json 文件的, 我相信只要把文件结构讲明白, 剩下的初始化, 载入, 学生完全能够自己理解, 而这种深层次的理解虽然会耗一些时间, 但是对他们来说获得的好处远远超过仅了解 api 带来的好处. 总而言之, 授人以鱼不如授人以渔.
第二点就是我想问问楼主, 你对自己的代码风格是不是有超强的自信或者说自负. 代码可读性可以说极差, 逻辑支离破碎, 也就是你现在讲的少, 等你加载更多的元素试试, 我相信到那个时候你自己都不想读你自己的代码. 首先, 抽象错误, 当然这个每个人都有自己的理解, 但是我感觉 IHasModel 这种接口有什么存在的意义? Forge 本身就使用了两种方式加载, 这个完全可以在 ClientProxy 中完成的工作为什么要单独抽象增加代码复杂性(这也就是第一条我所说不讲原理的坏处之一, 可能楼主自己也不太了解底层吧)? 第二, 在代码中根本看不到 Forge "层次化" 加载的影子, 而分步(事件)加载就是 Mod 的核心. 楼主隐藏了这部分东西, 配合第一条的 "本教程不会讲各种什么什么由来的话", 真真儿是 6 的飞起.
第17到19章更是可笑至极, 我都不知道怎么说了. 不过可以看得出来, 楼主是有一定的技术功底的, 只是在讲述的侧重点上有些问题, 这也是很正常的(比如我有位学长考研数学能考到140+但是给我们讲题颠三倒四的...), 可能语言有些偏激, 但是看看国内的开发水平, 包括我在内的简直是菜的抠脚, 除去是因为自己不动脑子思考之外, 就像我上面说的, 教程要付很大的责任.
另外说个题外话, 为什么这些教程都喜欢从 "安装 JDK 配置环境变量" 开始讲? 你们怎么不从盘古开天辟地开始讲呢?