下面的讨论内容仅限Java版
原版的像一坨胡乱搭起来的积木,虽然有个主干,但还是杂乱无章,有很多重复的逻辑。这坨积木外面套了一层布(混淆),普通人看不穿这层布,只能看到一些能用的接口,最简单的当然是命令了,能修改的内容很少;其次就是资源包,能修改游戏的各种资源,但没法影响服务端;再大一点就是资源包datapack,基本就是原版.jar能做出的最大修改了。这三种方式其实都是在使用官方提供的接口,不容易做出巨大改变(比如加一种新方块/生物,修改游戏UI等等)。
fabric给我的感觉,就是把这层套在积木上的布给去了,然后提供了一些修改积木的工具(主要是fabricAPI和mixin)。这样mod开发者就可以通过fabricAPI 或者mixin增加积木、修改积木。增加积木通常不会产生冲突,但多个mod修改了同一个积木就会导致冲突。可以说fabric不装任何mod的话,和原版几乎毫无差别。但各种mod可以修改原版任意一处细节。因此可以看到mod,上(服务端)有新增群系 生物 方块,下(客户端)有微调UI位置,虽仍然根植于原版,但可谓完全不原版
而spigot等服务端给我的感觉,就是完全造了一堆新积木,只不过长的和原版差不多。这种积木的逻辑更好,卡顿更低,但很可能在个别地方与原版不同。这类服务端提供了plugin插件这种接口来让开发者修改服务器。因此各种插件实际上是在用服务端核心开发者提供的api,可修改内容虽然相较原版的datapack扩大了,但仍然不是全部。
因此如果要我给各种修改玩法的方式做一个排序,由小到大应该是:
命令:只能局限于修改极少内容,比如检测玩家是否站在某种方块上,或者容器内有没有特定物品
数据包:能修改少数物品的用途,比如检测玩家右键了某物品,按下了什么按键
(spigot类服务器)插件:增加一些命令,自动处理游戏文件,读取玩家输入的配置来即时改变游戏
mod:EVERYTHING。增加群系 方块 生物,改变实体运动逻辑等等
原版的像一坨胡乱搭起来的积木,虽然有个主干,但还是杂乱无章,有很多重复的逻辑。这坨积木外面套了一层布(混淆),普通人看不穿这层布,只能看到一些能用的接口,最简单的当然是命令了,能修改的内容很少;其次就是资源包,能修改游戏的各种资源,但没法影响服务端;再大一点就是资源包datapack,基本就是原版.jar能做出的最大修改了。这三种方式其实都是在使用官方提供的接口,不容易做出巨大改变(比如加一种新方块/生物,修改游戏UI等等)。
fabric给我的感觉,就是把这层套在积木上的布给去了,然后提供了一些修改积木的工具(主要是fabricAPI和mixin)。这样mod开发者就可以通过fabricAPI 或者mixin增加积木、修改积木。增加积木通常不会产生冲突,但多个mod修改了同一个积木就会导致冲突。可以说fabric不装任何mod的话,和原版几乎毫无差别。但各种mod可以修改原版任意一处细节。因此可以看到mod,上(服务端)有新增群系 生物 方块,下(客户端)有微调UI位置,虽仍然根植于原版,但可谓完全不原版
而spigot等服务端给我的感觉,就是完全造了一堆新积木,只不过长的和原版差不多。这种积木的逻辑更好,卡顿更低,但很可能在个别地方与原版不同。这类服务端提供了plugin插件这种接口来让开发者修改服务器。因此各种插件实际上是在用服务端核心开发者提供的api,可修改内容虽然相较原版的datapack扩大了,但仍然不是全部。
因此如果要我给各种修改玩法的方式做一个排序,由小到大应该是:
命令:只能局限于修改极少内容,比如检测玩家是否站在某种方块上,或者容器内有没有特定物品
数据包:能修改少数物品的用途,比如检测玩家右键了某物品,按下了什么按键
(spigot类服务器)插件:增加一些命令,自动处理游戏文件,读取玩家输入的配置来即时改变游戏
mod:EVERYTHING。增加群系 方块 生物,改变实体运动逻辑等等