Rift是Minecraft 1.13的一个轻量级的模组开发的(modding)API、库(library)和模组加载器(modloader),它的主要目的是为Minecraft创建一个更轻量和模块化的开发模组的API。Rift并不会完全取代Forge或者与Forge竞争,相反的是它会和可选的社区库共同构成一个mod网络,你可以在下面找到完整的库列表。 为什么要选择这个API?让API更轻量与模块化 Rift的目标就是在最小化修改游戏的情况下实现扩展游戏任意方面的API,而且这将不会添加额外的依赖。比起那个超级复杂的事件系统(Forge),Rift为扩展原版游戏内容实现了一个简单、快速、高效、清洁的基于接口的系统。 对于修改原版逻辑,Rift鼓励模组开发者通过使用 Mixin 库来在任意的原版方法中添加回调(callbacks)或重定向(redirects),而不是使用死板而又不稳定的一堆钩子。 Rift并不会直接添加复杂的功能(比如能量API,自定义模型渲染、自定义方块状态格式等)到API中,而是转而使用与之分离的库模组(library mods)来实现它们(你可以在下面找到完整的列表)。这带来的主要好处就是这可以让Rift更快速地更新到新版本的Minecraft,使用者将不需要去使用他们的模组中不需要使用的特性。没有加载任何模组的Rift将会比原版游戏一样地快速、稳定、节省内存。 让加入的模组更像原版内容 Rift API不会为修改已存在的游戏机制(game mechanics)提供任何钩子。相反,它提供了扩展原版游戏内容的钩子(你可以在下面找到完整的列表)。Rift也鼓励模组通过尽可能地使用原版API并与原版游戏共用创造物品栏和选项菜单来更使其更集成于原版游戏,这将减少玩家看见的原版内容和模组内容之间的不同。 然而,这并没有以任何方式限制了使用Rift API的模组。事实上,这恰恰是它的优点。使用Rift的模组将可以以比Forge的API更稳定的方式来改变游戏的工作方式(game works),不论是出于什么原因,模组都将可以通过Mixin(一个简单的基于注释的修改原版代码的系统)来在任意原版方法中注入它们的回调(callbacks),也可以替换原版方法或将它们替换为自己的代码。Mixin也确保了在大量模组注入到同一个方法下时的兼容性。 让模组能跨版本工作 通过Rift,你的模组将能在多个Minecraft版本中工作。通过使用可选的模组兼容模块,Rift将重新映射模组以更新混淆名并注入尚未实现的原版方法返回到类中,让不稳定的MinecraftAPI变得稳定起来。虽然要做到跨N个Minecraft版本的兼容不一定是不可能的,但大多数模组都应该能在跨了几个版本的Minecraft中正常工作。 快速与高效 不论是否以Forge模组安装或是以独立方式安装,Rift都不会拖慢游戏的加载时间。Rift是基于接口而不是事件总线(event bus),所以它不会加载额外的库,事件回调将会非常地快,添加你自己的模组事件将只需要短短几行的代码。 推荐使用的库 不像Forge,Rift的目标是让模组开发更加模块化。Rift自己只会提供扩展原版游戏的功能,更高级的API和功能都将由社区提供。 下面是一些常见功能的解决方案: 网络通信:RiftAPI、ProtoCharset 配置设置:Gson(原版库)、Configurate,以及你想要的其他库 编程语言支持:Riftlin(kotlin) 能源API:ZeroPoint 兼容相关:Rift-Capabilities 可供选择的方块状态格式:正在开发,将会很快到来 生成基于注释的riftmod.json:Pylon 功能: 简单而可扩展的基于接口的事件系统(模组可以仅以几行代码添加自己的事件) 注册物品、方块、实体方块、流体、附魔、粒子类型、药水效果、生物群系、实体、实体方块渲染器、自定义物品渲染器、复杂(无json)的合成、维度、世界类型以及更多的接口 能轻松添加原版封包(vanillapackets)和模组通信包(modmessages)的简单的网络通信API 客户端每tick或服务端每tick都被调用的Tick事件 对Mixin和其他ClassTransformers的支持和允许 自动化的依赖下载和解压 部分依赖于其他模组的一些功能将只会在该模组被安装时启用(联动功能) 如何安装Rift安装/升级Rift的方式就是直接双击jar,它会将自己复制到.minecraft文件夹并将名为“Rift+版本名”的版本添加至你的启动器中(译者注:默认为安装至官方启动器路径,可手动编写脚本以指定安装路径,启动Rift版本前请先安装原版1.13)。 添加Rift模组的方式与往常一样,只需放在“.minecraft/mods”文件夹即可。 可供参考的bat脚本——通过指定系统变量appdata来安装至bat的当前目录(安装在当前目录的.minecraft文件夹内,没有会自动创建) 下载地址
|