当前位置:首页 > CN2资讯 > 正文内容

我的世界fabric mod开发

3天前CN2资讯

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-配置工作环境

    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/21682.html

    分享给朋友:

    “我的世界fabric mod开发” 的相关文章

    如何选择RN套餐性价比高的VPS服务

    RN套餐概述 在谈论RackNerd之前,我想先简单介绍一下这家公司。RackNerd成立于2019年,它是一家专注于虚拟主机和VPS服务的商家。作为市场中的新兴参与者,RackNerd凭借其高性价比迅速赢得了不少用户的青睐。在我了解的多家VPS提供商中,RackNerd以其实惠的价格和稳定的性能脱...

    甲骨文云的永久免费服务:开发者的理想选择

    在现代云计算的环境中,甲骨文云(Oracle Cloud)作为一种强有力的云计算服务,凭借其永久免费服务吸引了许多用户。回想我初次接触甲骨文云时,正是被它提供的多种Always Free服务所吸引,比如我可以免费使用2个实例和20GB的存储空间。这让我在学习和开发上有了更加广阔的可能性,不用担心一开...

    9929线路概述与使用评价:企业优质网络连接的最佳选择

    9929线路概述 在谈论互联网连接时,有些线路显得尤为重要,9929线路便是其中之一。它是中国联通的AS9929线路,广泛应用于企业和数据中心(IDC),主要承载着国际与国内的跨地市互联网专线任务。与普通家庭宽带相比,我会发现这条线路更像是一条高速公路,专为企业和专业用户设计。9929线路的优势在于...

    国外主机的选择指南:提升网站性能与安全性的最佳解决方案

    何谓国外主机? 国外主机,顾名思义,就是指在中国境外托管网站的服务器。随着互联网的迅速发展,越来越多的人和企业意识到使用国外主机的优势,例如更快的访问速度和更好的稳定性。我记得刚开始接触网站建设的时候,对国外主机这个概念感到有些困惑。其实,选择国外主机的背后,藏着许多让人兴奋的机会,不仅限于网站的建...

    云桌面怎么实现:全面解析云桌面部署的关键步骤与安全策略

    云桌面是一个非常有意思的概念,它将传统的桌面环境转移到云端。不再需要用户在本地计算机上安装复杂的软件,所有运算和存储都在远程服务器上完成。用户只需通过终端设备(如个人电脑、平板或甚至手机)访问云桌面,即可获得与物理机器相似的使用体验。简单来说,就是把整个计算环境通过网络交给云服务器来管理,用户只需负...

    掌握PVM: 并行虚拟机在高效计算中的应用与优势

    什么是PVM PVM,全称为“并行虚拟机”(Parallel Virtual Machine),是一种软件架构,用于多台计算机之间的并行计算。这种技术使得不同的计算机可以连接在一起,像一个单一的超级计算机一样共同完成任务。想象一下,你在进行一个复杂的计算,它需要大量的时间和资源。通过PVM,你可以将...