【我的世界】如何简单的在国际服开启服务器?(Java Edition限定)【下·模组与插件】
上一期我们讲过如何开一个原版服务器,但其中关于如何开模组服和配置插件服的插件并没有进行过多的解说,其实主要还是因为专栏有2万字的篇幅限制,所以迫不得已只能拆分成上下两篇。
要说道模组服,就不得不提一个在模组服领域里相当出名(同时也有些负面的)服务端——CatServer猫端
Cat server是国内团队设计开发的一个同时具备forgeAPI和spigotAPI的服务端,简单点来说,他既能装模组,也能装插件,是目前1.12.2模组服的主流选择。

为什么这么说呢?除了因为forge+vanilla的搭配不支持安装插件,数量稀少的仿插件mod无法实现插件的热重载、高效管理等功能,最最关键的一点在于,原版服务端对于游戏本体的优化不如spigot和paper。
虽然cat依旧无法解决forge单线程的问题,但至少在二者的协同运行上还是有那么一点点优化的,相比起只是单独安装了forge的原版服务端,他对硬件性能的要求还是降低了一些。
虽然说cat pro,即付费版,对于多线程的优化比社区版更优秀,但目前cat的开发团队已经出现过一次跑路的情况(虽然最后回来了,但当时群都解散了),而它的付费资格是通过开发团队的验证服务器实现的,如果开发团队真的跑路,意味着购买了付费版的人连服务器都启动不了,这是非常致命的。
个人用户不需要担心这些,因为社区版免费开放,不存在在线验证。
需要注意的是,无论是插件端还是模组服,都是需要进行上篇所提到的基础配置的,不能省略。
Cat server在对游戏本体优化的同时,也会带来一些原版服不存在的bug,这是因为spigot的地形生成器是基于bukkit的,而大多数存在修改世界生成的模组都是基于原版地形生成器开发的。在大多数地方,这样的改变并不会导致什么问题,但偶尔,他会导致世界生成出现状况。
最典型的例子便是暮色森林的传送门无法正常在暮色维度生成,造成这一点的原因也很简单,暮色森林的维度是基于下界群系进行修改的,暮色的海平面是Y32,和下界的岩浆海平面一致,主世界往下界生成传送门时,会在Y64附近搜索合适的位置进行生成,但暮色森林Y64的位置是半空中,且暮色森林的传送门没有框架,整体机制也与一般的下界传送门不同,自然也就无法生成浮空门。
这一切的结果就是导致玩家在建立暮色传送门之后,进入暮色森林就会出现在同坐标的Y64高度上,下场基本自然只有一个,那就是摔死,如果再加上基础插件和多世界插件,那么即便是创造模式也救不了你,因为在切换维度的时候会自动切换到默认模式,也就是配置文件中写的生存模式。
同时,从暮色森林返回主世界时,原本应该正常对应的关系也变成了下界到主世界的1:8坐标对应关系,如果你进入暮色森林的坐标在正负一两百格左右——这通常也是主世界出生点的范围,那么你在暮色出生点原地做个传送门,结果就是直接传到主世界一千多格外,但是你在原地找不到暮色传送门,建个门又是进入暮色森林和主世界同坐标的位置,因为暮色传送门是同坐标传送,没有1:8对应关系……
这些问题在单机都是不会出现的,但是在cat server中可能出现。
这个问题也不是完全无解,后面讲到插件的时候,我们可以通过设置多世界来回避这个问题(我也不知道怎么完全修复这个对应问题,我的问题在MCBBS挂了接近2个月了,都没有回复的)。
获取模组
说到模组服,那么自然就少不了安装模组了,但并不是什么模组都能往上装的,不同的模组会带来不同的世界生成修改,有的模组相互之间存在合成表的冲突,有的模组会大幅度降低原本高难度模组的难度,令高难度模组失去意义,这些都是选择模组的时候需要考虑的。
模组之间的搭配需要服主自己去思考,但相比选择模组,还有更重要的事情需要考虑。
首先是模组的版本是否正确,这一点很关键,一般来说,除非有漏洞报告(通常在mcmod的简介上会有说明,但有可能过时),否则建议去curseforge处下载最新的release版本,mcmod的模组页面一般都有curseforge页面的链接。
Curseforge的模组下载页面链接:
https://www.curseforge.com/minecraft/mc-mods

这是以OptiFabric为例,讲解一下curseforge页面的使用:

关于魔法上网的一个小技巧:退掉QQ,你会发现速度瞬间提升很多,无论是PC还是手机都是如此,这是因为QQ本身与服务器有大量的小额数据交互,会挤占魔法上网的小水管。
因为在1.12.2并非只有forge一个模组API,还有一个liteloader,有的mod是基于这个API开发的,不过这些一般是轻量级的mod,比如小地图,注意不要下错版本了。
其次是模组是否支持服务端,这一点非常重要,我曾经试过因为不小心将一个客户端模组安装到服务端上,然后折腾了半天都没发现问题。
想要判断一个模组是否支持服务端,有一个非常简单的办法,打开mcmod.cn,搜索相关的模组,进入介绍界面,如果简介里面有一行“有xxx台服务器安装了xxx模组”,那么这个模组就是可以支持服务端的模组。
一般来说,没有这行字的都只支持客户端,当然也有极少数的个例。
但mcmod毕竟是国内热心玩家建立的一个带有一点点百科性质的搬运平台,自然也不是万能的,有的存在的mod,在这个网站上并没有人搬运,比如BBOR(),这时候我们可以去curseforge上找,一般绝大多数的mod都会发布在这个网站上。不过由于这个网站被twitch收购了,虽然启动快了点,但下载基本龟速。
当我们不确定一个mod能否在服务器上运行时,需要的是实机测试,也就是将这个模组安装到服务端上,看看能不能正常启动。
如果服务器不能正常启动,而是报错崩溃/重启的话,那么证明这个mod很可能是不支持服务端。
但还有另一种情况,模组本身需要另外的前置模组进行支持,这时候我们需要的还是那个网站,找到mod关系一栏,其中会有一行“xxx的前置mod”,下面就是模组所需的前置模组,将它安装上就能运行了。
如果没有前置模组,模组版本正确,但服务器还是不能启动,那就说明这个模组和服务器无缘了。
选择模组
选择模组的时候,我们也应该遵循一定的顺序,首先确认游戏的主要玩法,选择核心的内容模组,相互之间是否有冲突?是否有特别消耗服务器资源的模组(如EIO末影接口)?用在服务器上,这些都是需要着重考虑的。
选择确定内容模组之后,需要确保他们之间不会出现前面所提到的,相互之间存在难度覆盖等问题,想要解决相互之间的合成冲突,还得考虑添加一个能解决合成冲突的合成台(一个单独的mod),或者如果计划中的模组列表中包括林业(foresty)的话就不用了,因为它的专属合成台可以直接解决这个问题。
内容模组敲定之后,还要再进行一次筛选与考虑,尽可能精简模组,因为服务器和单机不同,多个玩家同时游玩的压力就是成倍数的叠加给forge的运行线程,一台普通电脑能带的动的模组整合包,一台高配置服务器都未必带的动。
接下来第二步,需要添加的是辅助功能模组,这部分模组未必带来大量新的游戏内容修改,但往往能够在游戏方式上提供一些便利性,如矿脉矿工(Veinminer连锁采矿)能减少玩家挖矿时的时间消耗,铁箱子(ironchest)能让箱子和潜影盒拥有最多4倍的储存空间,墓碑类模组能降低死亡惩罚的同时,也能保留一定死亡的刺激性。这一类模组都是第二步添加的(上面我所提到的3个,都是服务端模组,尽管他们有的看上去像是客户端模组)。
需要注意的是,有的模组看上去很像只支持客户端的模组,但的确他们是需要在服务器安装才能生效的,比如JEI系列的合成管理模组,以及在其基础上延伸的Hwyla等模组,就是服务端也要安装(才能实现部分功能)的。
第三步添加的是优化模组,前面也提到过,模组的数量一多起来,对于服务器的压力就很大,此时可以添加一定的优化模组来降低服务器的压力。优化模组的选择其实很多人都是一头雾水的,这里有一个建议,可以去MCBBS上找一些免费的整合包,下载下来,然后看看其中的优化类模组是什么,然后去curseforge上下载新版本塞到自己的服务端之中,这样也能节省一些寻找模组的时间。
三个步骤弄完之后,模组的配置已经基本完成了,但是开模组服还有另一个事情需要做,就是制作客户端。
因为模组的实现是需要双端同时安装的,想要让你的玩家也玩上这个游戏的话,那么你也得为他们配置一个适用的客户端。
将模组文件夹简单粗暴地复制到客户端上虽然也能进行,但考虑到玩家自身可能有一些别的需求,一些辅助功能的客户端mod还是需要服主帮忙添加的。
简单举一些例子,比如苹果皮(AppleSkin)显示饥饿度,高清修复(Optifine)是光影管理模组,体素地图(VoxelMap)或者旅行地图(JourneyMap)是小地图,等等。
一般来说,对于服主,可以提供一个打包好的第三方启动器包,其中包含启动器和游戏的本体,也可以只打包一个mod文件夹,让玩家自己选择去安装,都是可以的。
因为cat server的原版核心并不是官方核心,而是spigot,所以它在支持模组的同时,也兼容bukkit系的插件,接下来,我们就要讲解服务器的插件了。

插件
插件,是在服务端上,实现更多设置与管理功能的类似模组的东西,因为它的API是由服务端核心自带的,而不是通过第三方API如forge提供,本身也有着基于配置文件的调节选项,所以与模组有着很大的区别。
Spigot、Paper都是基于bukkit发展而来的,因此都属于同一个系列的插件API,相互之间都能够互相兼容,海绵端的sponge API是独立的,与前者相比不通用。
对于是否需要安装插件,我个人的建议是,对于小白来说,最好不要装,原因很简单,你搞不懂插件的功能,只会导致各种各样的bug。但对于对外开放的服务器,则必须要安装一些管理插件,否则在服务器的管理上很容易出现问题。
插件与模组不太一样,大多数插件对于版本的要求并没有模组那么强,大多数都能跨小版本,少数即便跨大版本也能生效(除非是1.12.2到1.13或者1.8.9到1.9这种出现核心机制变化的大版本,那种基本所有插件都会失效),但使用插件之前,也应当确认当前插件的版本是否与服务端版本匹配
下面我只介绍一些常用的插件,具体能实现什么功能,以及可能出现的问题。
【EssentialsX】基础插件,需要与权限组管理插件配套,这是一个模块化的插件,可以根据自己的需求来确定需要哪些组件,最常用的是本体EssentialsX-[版本号].jar,使用该插件的时候尤其需要注意支持的服务端版本。
对于大多数玩家来说,基础套件最熟悉的功能便是tpa(玩家间传送)和home(设置家)相关的指令功能,这个功能一般是通过EssentialsX套件实现的。
【GroupManagerPlus】权限组管理,和Essentials配套使用的插件,管理玩家的权限组。
如果只是基友服中想实现玩家间传送功能,只装这两个插件就够了。
我留意到似乎没有多少相关的教程,鉴于我本人也不太会用,建议还是自己使用谷歌翻译确认配置文件当中关于权限的说明,这里只说几个最常用的。
玩家间传送相关:
essentials.tpa (将自己)传送到指定玩家位置的权限
essentials.tpahere (将别人)传送到当前位置的权限
essentials.tpaccept 接受别人的传送请求(默认2分钟内要接受或拒绝)
essentials.tpdeny 拒绝别人的传送请求
设置家相关的权限:
essentials.home 传送回家的权限
essentials.sethome 设置家的权限
essentials.delhome 删除家的权限
搭配GroupManger使用的时候
mangaddp default 权限名
就是为所有玩家增加对应的权限
删除则是使用mangdelp来删除
【Multiverse-core】多世界管理。
这个插件允许你自己建立新的维度,并链接到已有的世界体系之中,他也会对传送门等世界之间传送的方式进行管理,这个插件也是配置起来让人相当头疼的一个基础插件。
它的安装需要一个前置插件:ProtocolLib,如果没有它,多世界不能正常运行
因为用不好的就会导致世界一团糟,但这是目前我找到的在cat端解决暮色传送门异常的唯一办法。
这个插件拥有完整的汉化说明书,在mcbbs上,下面是原贴的链接:
https://www.mcbbs.net/forum.php?mod=viewthread&tid=703794
解决世界传送异常的方法就是在有问题的世界都设置传送点,然后通过多世界传送来解决,其中还需要考虑玩家是否有在世界之间传送的权限——这些帮助文档之中都有很详尽的介绍。
这里有一个误区就是,如果你安装的模组会在世界生成矿物或者结构的话,那么默认生成的那个世界是必须要保留,而且作为主世界的,因为模组结构与资源不会生成在你用mv多世界创建的新世界之中,哪怕你将其设置为玩家出生的世界,除非你不需要这些资源,改而用其他模组来“无中生有”。
【NeverLag】红石玩家深恶痛绝的扫地大妈。
这是一个国人开发的优化+反作弊插件,1.12.2请使用2.0+的版本,否则可能会出现大量的问题。
这个插件能管理的东西很多,基本全在它生成的config文件夹之中,因为是国人开发的插件,所以配置文件自带汉化,这一点还是非常友好的。
需要注意的是,有很多地方默认的清理会让一些红石机械不工作,对于红石服来说,你需要注意设置是否与相关红石机械的原理出现冲突。
比如【FallingBlock】一项开启的话,就会导致刷沙机出问题(友情提示,1.14依赖木栅栏的刷沙机不适用于1.12.2,请老老实实使用船的碰撞箱)。
还有红石高频的清理等等,此处的limit我不太清楚是怎么限制的,有兴趣的小伙伴可以自己研究,推荐红石服玩家直接关闭这个选项。
还有【AntiExplode】,爆炸不破坏地形的话,基于TNT的处理模块、轰炸机、世吞等等都会无法工作。
但其中有一些功能还是有用的,比如限制实体的数量,能够避免管理不在线的时候,玩家自己过量养殖导致的服务器崩溃,不过想要根治问题还是需要人工去排查哪里出现了实体堆积的情况,并对堆积的实体进行处理。
其中有一些被配置文件限制的事项,其实是原版的特性,开红石服的请先了解清楚这一项是否会对游戏的进程产生明显影响,但对于mod服来说,有些功能是可以直接关闭(也不会产生太大影响)的。
【slimefun】大名鼎鼎的粘液科技,以插件实现类mod的功能,因为我没玩过,所以只是提及一下,貌似有不少人都不知道粘液科技实际上是插件来着。
【CoreProtect】非常好用的一个方块记录插件,因为指令的前缀通常被人叫做【co i】,但是相当消耗服务器的存储资源,可以记录方块的操作,甚至回溯一些方块,以防范熊孩子,并调查是否有玩家使用了违规的挖矿外挂。
【OreReplacer】高级反矿透
一个友好的台湾作者开发的插件,资源消耗少,1.14小型服务器反矿透和透视材质包的最佳选择,这个插件会删除所有不与空气接触的矿物,只有在玩家挖开表面的石头时,才会实时生成矿石,这也保护了绝大多数埋藏在地下的矿石,无论是Xray或者是透视材质包都无法发现不与空气接触的矿石,因为他们本来就不存在。
需要配置一些矿物生成的几率,还可以在活动的时候整体提升矿物的生成概率。你也可以单独选择只屏蔽部分矿石,效果还是不错的。
作者在MCBBS上有发布这个插件,你们可以自行前往去获取最新版本
其他还有很多插件,因为我都没用过,所以我就不一一赘述了,安装插件之前,必须要确保你已经知晓这个插件的具体功能,以及版本是否正确。确认版本的事情很简单,在插件官网、开发者GitHub或者spigotmc网站下的基本都是最新版,而在启动的时候,如果插件版本不是最新,往往都会有提示,注意启动时一闪而过的信息,往往就会有提醒。

其他
Linux开服需要一定的计算机编程基础,毕竟全程操作都是使用命令行实现的,其中涉及到不同情形下的问题我不可能逐一列出来。相反,如果你能理解如何在Windows环境下开服,那么在Linux环境下配置文件也是同样的修改方式,存在区别的只有远程访问方式的不同,还有启动方式有一些区别,服务端运行本身这件事情是没有改变的,这也是java作为跨平台编程语言的优越性所在。
Linux开服的操作百度也能找到,系统可能更新了(cento6.x变成了cento7等等),MC的版本变新了,但是基本的操作是不会变的。
一般来说,Linux开服之所以少见,并不是说这个开服方式不好,只不过是因为日常生活中大多数人的家用机都是Windows平台,服务商提供的服务器为了适用性,也是使用Windows Server的居多,但是有的服务商是提供将系统更换为Linux系统的服务的,在虚拟机上模拟过操作之后,可以考虑使用Linux内核的系统开服来进一步压榨服务器本身的内存和处理器性能,这样也能获得更好的开服体验(或者省下一笔升级配置的费用)。
以上内容可能写了不少,但由于本人水平有限,也仅作为一个参考,如果有什么纰漏的地方,还望大佬能够指出,尤其是关于模组和插件的部分,我是纯粹的新手,也是摸着石头过河,还望谅解。