FML与Forge的由来

在很久很久以前(一个可以追溯到Minecraft刚刚发布的年代),人们就开始为Minecraft制作和使用Mod了。那个时候,由于Mod的制作方式是直接通过底层对Minecraft修改,所以将两个Minecraft Mod进行整合几乎是一件不可能的事情。

随后,Minecraft MCP(Minecraft Mod Coder Pack)的诞生,让Mod的制作和整合变得容易。这是因为Minecraft被进行了混淆化,这件事使得原本好看好记的诸如Item这样的类名、方法名、变量名等,通通被混淆化成了alq这样难以阅读和辨认的符号。Minecraft MCP的意义,就是对其进行反混淆,把alq这样的类名用一个诸如Item的名称代替。这使得人们可以通过更改MCP提供的源代码来进行Mod制作。但是,若是想合并两个Mod,必须要把两个Mod的源代码一行一行地进行整合。

直到2010年年底,一个叫作ModLoader的Mod横空出世,这使得Mod的开发方式产生了跨时代性的变化。ModLoader提供了一个框架和一套API,玩家通过这个框架可以很方便地管理Mod,开发者通过这一套API可以完成很多任务,如添加新方块、添加新物品,等等。

从2010年圣诞节前夕,Minecraft Beta版本发布开始,直到2011年年底Minecraft正式版发布,这一段时间被称为Minecraft Mod的“黄金时期”。很多著名的Mod如RailCraft,IndustrialCraft,BuildCraft等,都是这一时期开始开发的。但是,这段时期的Mod开发仍然问题重重。比如BuildCraft和IndistrialCraft就不能共存。他们更改了太多底层的东西。

这些Mod的开发者们看到Mod的整合仍旧困难,他们便发起了一项新的计划,这个计划就是Minecraft Forge。随着Minecraft正式版的发布和“黄金时期”的终结,很多Minecraft Forge的开发者,渐渐不再参与Minecraft Forge的开发。然而随着Mod数量的爆炸式增加,以LexManos和Cpw等为首的开发人员仍然坚持着Minecraft Forge的开发,并加入了很多崭新的特性。他们甚至将ModLoader这个框架整合进了Minecraft Forge,也就是Forge Mod Loader,简称FML。直到今天,Minecraft Forge和通过Minecraft Forge开发的难以计数的Mods,仍在发展壮大。

阅读本教程需要什么

Java等程序设计基础知识

本教程不针对Java初学者,本教程假定读者已经对Java的基础知识有了一定深入的了解。换言之,本教程假设读者已经对下面这些Java概念进行了深入地了解:

  • 对象
  • 类、属性和方法
  • 变量、运算符和表达式
  • 条件和循环
  • 包、继承、多态和接口
  • 泛型
  • 容器
  • 异常

下面这些Java概念虽然对Mod开发比较重要,但是读者在阅读之前不需要掌握或者只有阅读本教程更深入的部分才需要掌握,如果教程的某一部分认为读者不需要掌握,教程会在用到的时候会加以简要的介绍,如果需要,教程会提醒读者阅读相关的资料:

  • 注解
  • 数字和字符串的操作
  • 输入输出流
  • 多线程和同步
  • 反射
  • 中立字节码

下面这些Java概念和本Mod开发教程无关,虽然这些概念在其他Java应用中比较重要,但在本教程中不会用到。当然,了解这些知识对Mod开发是有一定帮助的:

  • 正则表达式
  • 图形界面
  • 网络
  • 数据库
  • ...

这里推荐一本书《Head First Java, 2nd Edition》,这本书的中文版适用于没有任何编程基础的读者。如果看完了这本书的前十一章,对于阅读本教程的Java基础知识就已经足够了。

如果想深入学习的话,推荐《Effective Java (2nd Edition)》和《The Java Language Specification (3rd Edition)》两本书。

相对而言,作者会保证教程使用的代码可以在Java6下运行,尽量减少使用一些令人迷惑的特性,并尽可能保证除了Forge/FML之外,不使用其他的第三方库。

除了Java知识之外,了解一些游戏开发的知识,如OpenGL等等,对阅读本教程有一些帮助,但对于阅读本教程没有专门学习的必要,除非作者在某些地方特定指出了对该知识的需要。

对Minecraft游戏的大致了解

本教程假设读者在阅读本教程前,已经对Minecraft这款游戏有了一些了解,包括Minecraft中一些现象的运作机制,一些小技巧等有了一些了解。作者也相信对本教程感兴趣的读者已经做到了这一点。

Java开发环境

为实践本教程的内容,读者可能需要一台安装有JDK8的,可以保证流畅运行Minecraft的电脑。别忘了这里修改的是游戏(本人旧电脑的流畅度就很难满足这一条件= =)。

开发Mod最为推荐的JDK版本是JDK8,当然,使用特性相对较少的JDK7开发也是可以的。对于JDK6而言,虽然Minecraft 1.8.9可以在Java6上运行,但是JDK6相对而言太过陈旧了,所以并不推荐。对于JDK9及更高版本来说,由于Forge不准备对Minecraft 1.12.2及更低版本提供针对Java9及更高版本的支持,因此请不要尝试使用JDK9及更高版本编写Mod。

为了方便开发,你需要一个用于Java开发的IDE(Integrated Development Environment,集成开发环境),如Eclipse、IntelliJIDEA、Netbeans等,这里推荐Eclipse和IntelliJIDEA,本教程作者使用的IDE是IntelliJIDEA。

一定程度的不借助JavaDoc的源代码分析能力

Minecraft作为一个商业软件,每一次次版本号更新对于Mod界都是一次灾难,直到现在,仍然有很多优秀的Mod卡在Minecraft1.7.10、Minecraft1.8.9等旧版本。因此,这要求开发者拥有不借助JavaDoc,通过MCP提供的名称进行的源代码分析能力。当然,如果读者怀疑自己没有这方面的能力,那也没有关系,因为我相信通过本教程的学习,读者会慢慢掌握不借助JavaDoc分析源代码的能力的。

对Mod开发的热情、缜密的思维、以及一个足够大而又能正常运作的脑洞

这条很重要!!!

本教程为读者提供什么

针对Minecraft 1.12.2版本并基于Forge的Mod开发教程

本教程主要面向的Minecraft版本为1.12.2,本教程也会兼顾到对于Minecraft 1.10.x、1.11.x、1.12.x等版本对应的Forge的支持。

本教程不讨论1.8、1.7.10及之前的如1.7.2、1.6.4等Minecraft版本,虽然较1.12.2早期的版本的Mod开发和1.12.2的有着很多相通之处,本教程的很多地方也可能会对这些版本的Mod开发提供帮助,但本教程不去探究这些差别。

本教程不讨论基于ModLoader、Liteloader等其他Mod API的开发,以及基于CraftBukkit、Spigot等插件的开发,等等。

虽然本教程的每一句都经过了作者的推敲,但是由于大意疏忽等原因,可能无法发现一些错误,恳情读者斧正。

源代码

对于教程中的所有源代码实现,本教程会尽可能地保证在Minecraft 1.12.2版本、和给定Forge版本下的服务端和客户端下成功运行。本教程也会考虑到诸如Minecraft 1.10.x、1.11.x、1.12.x等Minecraft版本对应的Forge版本,并尽可能使相同的代码在高版本的Forge里正常工作,但不作保证。

对于教程中出现的源代码,读者可能需要加上一些import等辅助语句以使其正常工作。对于教程附带的源代码,本教程已经在Minecraft 1.12.2版本、和给定Forge版本,也就是14.23.5.2860下的客户端和服务端进行了测试。

本教程的所有源代码虽然进行了充分的测试,但是由于作者水平有限,可能无法发现一些错误,恳情读者指出。

工作环境的准备

从Forge官网下载ForgeMdk,并尽可能采用稳定版本(作者采用的是14.23.5.2860版本),本教程的所有开发操作都基于此。

接下来对于工作环境的配置,教程会在下一部分进行讲解,如果读者希望升级自己的开发环境中Forge的版本,可以参阅附录(有待更新)。

注:

ForgeMDK免广告下载地址:https://maven.minecraftforge.net/net/minecraftforge/forge/1.12.2-14.23.5.2860/forge-1.12.2-14.23.5.2860-mdk.zip

这里建议不使用2859之前的版本,其中的JCenter在IntelliJ IDEA中,2022年2月1日后不能再被解析

下一篇:1.配置工作环境:Minecraft Mod开发:1-配置工作环境

Minecraft Mod 开发:0-前言相关推荐

  1. [Minecraft][Mod开发]如何做一个告示牌点赞mod

    本文选用的mc版本是1.16.5,但理论上可用于1.14+.若有人尝试成功,欢迎评论区留言. 需要实现的内容: 1:告示牌写上特定文本后使其作为点赞告示牌 2:点赞告示牌每次点赞后点赞数增加 3:点赞 ...

  2. 如何渲染一个生物 - Minecraft 1.16 Forge Mod 开发笔记

    如何渲染一个生物 - Minecraft 1.16 Forge Mod 开发笔记 基本渲染框架 调用栈 渲染器 `EntityRenderer` 生物基础渲染器 `LivingRenderer` La ...

  3. 我的世界 minecraft forge mod开发获取连续的方块

    大家在开发minecraft mod的时候可能会遇到一些需要获取连续的方块,所以我这里就给大家提供个思路,有建议或错误可以评论区指出 首先我们需要编写一个方法,用于获取一个方块连起来的方块. 思路:一 ...

  4. Minecraft 1.8.9 FML Mod 开发教程

    Mod开发教程 https://fmltutor.ustc-zzzz.net/ 转载于:https://www.cnblogs.com/lihuibin/p/8986455.html

  5. 【MC 网易-我的世界-mod开发基础笔记】 --- 前期准备

    文章目录 说明 前提: 准备工作 建议: 说明 通过网易官方文档的内容已经官方提供的视频相结合,总结的mod开发笔记. 开发必须要掌握基础的python编程基础,且此笔记中,官方的mc开发工具仅仅只是 ...

  6. 饥荒联机版Mod开发——准备工具(一)

    饥荒联机版Mod开发--准备工具 前言 工具下载 工具功能和使用 动画 c_start:反解压动画 Sprite:制作动画 打包工具:把动画再打包回去 贴图 TEXTool:查找/反解压tex tex ...

  7. 饥荒联机版Mod开发——常用inst方法(八)

    饥荒联机版Mod开发--常用inst方法(八) 前言 生成实体 监听/推送事件 使用标签 增删组件 网络组件 定时/阶段任务 回调函数 父子实体 平台 删除 位置,角度 显示/隐藏 判断 大脑 状态图 ...

  8. 饥荒联机版Mod开发——制作烹饪锅食物(六)

    饥荒联机版Mod开发--制作烹饪锅食物(六) 前言 准备工作 编写菜谱 制作预设物 添加菜谱 传送门 前言 核心组件及其流程如下: 材料 -> 烹饪锅(stewer) -> 食物(吃edi ...

  9. 开发指南专题一: JEECG微云快速开发平台前言

    JEECG微云快速开发平台-前言 1. 前言 1.1. 技术背景 随着WEB UI 框架(EasyUI/Jquery UI/Ext/DWZ)等的逐渐成熟,系统界面逐渐实现统一化,代码生成器也可以生成统 ...

  10. 饥荒联机版Mod开发——衣服(十一)

    饥荒联机版Mod开发--衣服(十一) 前言 总览与下载 modmain prefab 动画 前言 饥荒里面装备栏有三个地方,手,身体,头.上一期我们讲了戴头上的帽子,这期我们讲讲穿在身上的衣服.事实上 ...

最新文章

  1. 刷了半年LeetCode,总共500题,拿到了 Google 的 special offer,记下笔记,感谢这些很有用的公众号...
  2. Keystone v3 domains 应用场景
  3. 用JSON技术加快AJAX程序开发
  4. STM32手册中的CAN过滤器16位标识符屏蔽配置错误说明
  5. php如何抓取网页内容,php如何抓取网页数据?
  6. tfpose与openpose区别_人体姿态识别--Openpose+Tensorflow
  7. sql两个表查不同数据_产品操作MySQL第6篇 – 数据过滤-WHERE子句
  8. IO流基本知识总结【字节输入输出流、字符输入输出流、转换流、对象流】
  9. 5招详解linux之openEuler /centos7防火墙基本使用指南
  10. c语言如何存储已编译内容,二级C语言教程章节测试13.编译预处理和动态存储分配...
  11. 数据结构 树的遍历(递归遍历练习)
  12. H5网页漫画小说苹果cms模板源码/支持对接公众号/支持三级分销
  13. excel中如何对比两个表格的重复数据
  14. SG90舵机驱动,有代码
  15. ROS里程计的学习(odometry) (二)
  16. CSP 201609-3 炉石传说
  17. RSSI 平面 三点定位算法(C语言、JS源码例程)
  18. 数学速算法_适合小学三、四年级的心算法,再“笨”的学生,也不用列竖式
  19. GitLab 服务搭建
  20. 计算CDS中密码子的数量

热门文章

  1. 三大指数快速入门和应用
  2. Hulu推荐 | 《破产姐妹》Max演员新剧《娃娃脸》
  3. 漫谈程序员系列:请区别对待女程序员
  4. Processing学习笔记
  5. WINDOWS 7 X86专业版SP1后续补丁包20150901(微软官方下载地址列表)
  6. Vivado时钟之间的三种关系
  7. Gym - 100886I 2015-2016 Petrozavodsk Winter Training Camp, Saratov SU Contest I - Archaeological Res
  8. storyBoard中TopLayout和SuperView
  9. phyton方面相关书籍
  10. 学医后才知道的小知识...