本帖最后由 HTL9257 于 2019-5-23 10:48 编辑

如何用Sponge spigot 与BungeeCord 搭建一个带MOD的
高版本群组服
HTL9257出品
为什么选择这样的群组服   群组服可以让Sponge与Spigot的优势互补 弥补Sponge插件不足(部分功能在Spigot服实现) 以及Spigot无法安装MOD的劣势 充分发挥各个端的作用 带来较好的游戏体验


介绍
本教程主要分为以下几个部分
零                                                 检查配置                                                     
一                                                 BungeeCord 的搭建与设置 和插件推荐      
二                                                 spigot的搭建与设置 和插件推荐                 
三                                                 sponge的搭建与设置 和插件推荐               
四                                                 搭建和利用Mysql存储部分数据(可选)         
五                                                 已知的问题               
                                


检查配置
               首先 你要搭建一个大型的群组服务器  你必须得有高于单端的配置  请确保你有以下最低配置
一    4核以上的处理器(模组服务器处理器主频越高越好  sponge对多核优化性能较好)
二    建议8G以上的内存(模组服务器占用内存较大  请务必Sponge单端分配至少4GB的内存)
三    5M及以上的带宽  (根据在线玩家而定 并非硬性要求)
四    本教程只介绍使用windows系统环境


BungeeCord的安装与配置
mod跨服使用的跨服端是Waterfall  请到它的构建地址 下载与更新 镜像下载  国内镜像下载
----------------------------如何安装----------------------------
首先创建或者找一个启动bat 将核心改成你下载jar文件的名字
例如

启动后会生成一些文件
----------------------------相关配置----------------------------
打开config.yml    
下列地方需要修改
ip_forward: true                            打开服务端的IP转发  开启后子服可以获得玩家真实IP
permissions :                              若不需要群组管理员 请删除下面default与admin的 权限
- bungeecord.command.server
- bungeecord.command.alert
- bungeecord.command.end
- bungeecord.command.ip
- bungeecord.command.reload

至于删除权限后怎么跨服传送  
后面我们会用插件完成这项操作

online_mode:                               非正版服务器请设置为false
force_default_server:                   玩家上线时返回默认服务器 非正版服务器请务必打开
host:                                             整个群组服务器的端口 若要玩家使用默认端口进入请将设置改为                                                                          0.0.0.0:25565
设置好后 现在来添加子服  
servers:

  1.   lobby:
  2.    motd: '&1Just another Waterfall - Forced Host'
  3.    address: localhost:25565
  4.    restricted: false
复制代码
请在下面复制添加这段代码即可
解释
lobby  子服的名字   改成你各个子服的名字(跨服时需要)
motd子服的MOTD 无需修改
address: localhost 请修改为该子服server.properties中设置的端口
restricted  是否需要权限进入该子服  默认关闭即可
示例配置文件

----------------------------插件推荐----------------------------
                                              (安装在BC端内的 )
SkinsRestorer-----------------显示玩家皮肤 (spigot子服也需要安装)
BungeeAuthMeBridge-------防止未登录执行指令 (正版服务器不必安装)
BungeeKick-------------------服务器关闭时将玩家送回登陆服
ColorMOTD-------------------这个应该不用解释了吧  记得在配置文件中开启BungeeCord模式
ServerChat--------------------跨服聊天
AntiFakePlayer---------------防御插件 (原帖需回复下载 请事先看好版规)

1.13/1.14支持

需要下载最新版waterfall


spigot登陆服的搭建
版本的选择: 因为要搭建群组服 可能有多个版本的MOD服 如1.10.2和1.12.2 您最好选用最高版本的服务端
     下载安装或者找一个PaperSpigot服务端
            (与上方BC端方法相同)你可以用在服务端的镜像站  Yive's Mirror或者Sakura's Mirror(国内镜像)上下载到这些服务端
----------------------------配置修改----------------------------
server.properties中
server-ip=127.0.0.1 只监听本地的连接  防止玩家知道子服IP后绕过登录服进入(所有的服务器均设置)
server-port= 25566 由于是登陆服 服务器的端口需与您BC配置文件中设置的lobby(默认) 端口一致
online-mode=false  非正版服务器关掉 不做过多解释
spigot.yml中
bungeecord: true
开启服务器的BC模式

bukkit.yml中
connection-throttle: -1  不限制瞬时进入服务器的人数 (防止一个端关闭大量玩家进入服务器集体掉线
----------------------------插件推荐----------------------------

1.13/1.14支持

需要安装最新版ViaVersion插件 经过测试 不兼容AuthMeBridge 登录服建议1.12.2



Sponge端的安装与搭建
----------------------------安装服务端----------------------------
这是Sponge服务端 它是一个全新的服务端  绝大多数地方与传统的MOD端 如KC 非常不同  请不要用从前的                                                整合思维来整合这一个服务端  以1.12.2为例
                                                             好了 我们开始整合它把
第一步--------------下载Minecraft官方服务端--------------------

第二步----------------------安装forge ---------------------------
1.12.2因海绵端稳定性的缘故建议按照forge2611版本  注意 forge尽量要和Spongeforge版本一致  下载选择instiller-win版本
                                                  
                                                                                 之后
                                       
                                选择install server  下面选择你服务端的跟目录文件夹  耐心等待下载完成
                                然后将启动BAT中的核心改成forge-1.12.2-14.23.2.2611-universal.jar
                                                                                启动服务器
                                                          之后再生成的文件 elua.txt eula=true
2018.11.2 forge与sponge请使用2768版本 2611已经过期 部分MOD无法运行
第三步----------------安装Spongeforge------------------------
下载稳定的版本 镜像下载  国内镜像下载

                                                  
                                             下载完成后将Spongeforge放入服务端的MOD文件夹内
第四步-------------安装并配置Sponge及其插件-----------------                                      注意  Sponge的安装插件方式非丢进plugins文件夹 而是MOD文件夹
-------------------------服务端基本配置--------------------------
server.properties 的IP和端口设置为127.0.0.1和你BC中对应MOD子服的端口
打开config文件夹 找到sponge文件夹 global.conf
bungeecord 一项的 ip-forwarding=true
将下方的bungeecord=true
找到forge.cfg 将removeErroringEntities=true :removeErroringTileEntities=true
打开forge的清除错误实体功能  降低蹦服概率

-----------------------------寻找插件-----------------------------
你可以去服务端插件版 勾选sponge选项找到搬运的sponge插件  
或者去 sponge官方的矿区寻找(需要英文基础)
----------------------------推荐的插件----------------------------

---------------------------开始配置插件---------------------------
                              首先我们运行服务器  进入游戏 从权限组开始配置整个服务端
-----------------------------权限插件-----------------------------
如何配置 ↓

相关权限我们应该配置完毕了  现在开始配置其他插件的基本设置
如果你安装了Uchat插件  请将default-channel 设置为G (玩家全屏说话  默认L是附近玩家)
如果你还同时使用了NewHonor头衔插件  请在 prefix一项中format= 的括弧里面 添加{newhonor}变量 以显示称号  并且要在NewHonor的配置文件中把支持Uchat的配置选项打开
头衔插件  打开config/newhonor文件夹 honor.conf修改玩家的默认称号  
请注意给玩家newhonor.use权限节点
新版本newhonor需要在nucleus配置文件的聊天格式处添加honor称号变量 才可显示头衔 (2019.1.24)
给懒人准备的

一般通用基本权限配置(YML格式)含圈地权限 基本的指令权限

使用方式

将附件下载后  放入 服务端\luckperms\yaml-storage\groups(如果没有上述路径请手动创建文件夹)

然后在config\luckperms.yml内 Storage大项的 storage-method=ymal

groups.rar (3 KB, 下载次数: 147)

default为玩家组  有基本权限  admin为OP组 有基本上所有常用插件的权限
----------------------------多世界插件---------------------------
如果你安装了projectworlds 插件  你需要给玩家pjw.words 或者pjw.worlds.世界名权限 否则玩家无法使用跨世界传送 如地狱门 末地门
----------------------------记分板插件---------------------------
2019.1.24 计分板插件建议使用YYSSB 玩家变量不会错乱 配置办法及配置文件格式和ESB差不多
记分板建议使用2.3+版本的  低版在群组服中运行有死亡后弹回登陆服的BUG
它的配置文件是de_yottaflops_easyscoreboard.conf
参考配置


-----------------------------领地插件----------------------------
圈地工具默认是金铲子 如需修改请在 modification-tool="你要的圈地工具" 一项设置
max-claim-inspection-distance=100   设置玩家最大领地方块数量(最大领地大小)
警告 领地插件有14天未上线删除领地的设定 暂未找到如何关闭 如果有人关闭了这个请通知我
再次提醒给玩家基本使用权限
----------------------------箱子锁插件---------------------------
同上 给玩家基本使用权限即可  没必要过多配置
-----------------------------清理插件----------------------------
Interval=10 清理时间(分钟) 请自行调整合适的间隔
--------------------------BAN物品插件--------------------------

-----------------------------空岛插件-----------------------------

-----------------------------箱子菜单-----------------------------
如何配置 请参考这篇文档
---------------------------多服务器同步---------------------------
sponge的确有跨服同步插件
前置 MySQL数据库
  sponge没有STP 需要在BC端配置文件中给- bungeecord.command.server权限
为了服务器安全请在登陆服安装防止未登录执行指令的插件AuthMeBridge
注意 不建议使用  在多个MOD服务器间快速切换 会高概率造成客户端闪退
使用方式  配置数据库 (详情见下方MySQL的配置) 将插件与配置文件覆盖到各个要同步的子服
各个子服 MOD需一致 版本需一致 由于/server跨服是BC指令 sponge内无法限制输入速度  
反复跨服闪退暂无解决办法
有造成玩家物品丢失的可能 (请把同步间隔设置到5000ms以上可规避大多数的同步丢失)
BUG 已知加入了带有饰品的MOD时 会造成玩家饰品栏不同步 导致刷饰品(2019.1.24)
        如果玩家在服务器主线程卡死时掉线 或者登陆时主线程卡死  背包会无法同步 且第二次进入服务器时背包会回档
感谢米二(Tollainmear)的测试
-------------------------------其它--------------------------------

此处暂留  方便以后补充其他插件的配置教程
如果你想了解更详细的sponge端搭建方法 请查看BB弹的教程
(懒人包 即开即用)
-------------------------------错误排查--------------------------------
无法连接子服务器  
检查BC端 ip_forward 子服sponge端ip-forwarding bungeecord 是否打开 (如进入子服 无法识别客户端是否安装MOD 提示无forge等 )
服务器崩溃
如何从错误报告判断错误原因 参考这篇帖子




MySQL的设置与配置
----------------------安装一份Mysql并运行----------------------
如何安装
此处以MySQL5.7为例 讲解如何创建配置数据库 插件如何连接
我们使用的工具是MySQLWorkbench
----------------------调整数据库最高 连接数---------------------
多服务器对sql的链接量较大  默认的一百多个连接数肯定是不够的 链接数满的话服务器会报错刷屏  相关插件不工作
找到安装目录
ProgramData\MySQL\MySQL Server 5.7\my.nin
找到max_connections 一项 把他的数值改成500 1000或者更高
-------------------配置相关插件与数据库的链接-----------------

--------------------------Sponge方面---------------------------
以查询插件adamantineshield为例 该插件需要手动创建库
首先 设置好插件的配置文件
                                                                     
之后 复制database = 后面的名称 (不要复制引号)
之后用上面的方法 在MySQL内创建数据库

已知的问题
一   低版本的记分板插件在群组服运行中玩家死亡会弹回登陆大厅  请使用原帖下载的最新构建版本
二   Uchat在最新版1.12.2的某些spongeforge版本中有说话不显示的问题  请使用作者的最新版本
三   实测在较高延迟下  在登陆服反复使用跨服指令会导致跨服失败 请各位务必设置好指令延时
四   1.11.2版本的领地插件 在非玩家造成的方块改动会报错  例如工业2的采矿机 泵  请ban掉这些机器的放置权限 在1.12.2没有这个问题
五   sponge端若使用NPC模组  仍需要/op后才有权限编辑和创建NPC
六   ban物品插件无法ban物品ID一样 但NBT不一样的物品  如某些拔刀剑
七   ban物品插件无法防止工业2镭射枪的使用  即使关掉了use权限  请直接ban掉镭射枪(也可以使用菜单插件禁止使用)
八 在有多个MOD不相同的子服的情况下 使用错误的客户端跨服会导致即使再次跨入正确的服务器也无法进入 应重新登录后跨入正确服务器
⑨ 国内服务端镜像下载源由
@Prismaillya 的Sakura's Mirror (← 点击进入软件资源版的相关帖子)提供
十 已知龙之研究MOD在spongeforge 2705+ 的情况下与未知MOD同时运行会导致反应堆以及能量存储塔 GUI全部失灵
十一 神秘6beta26 和星辉魔法1.10.3(2768版能用的最后版本 更高版本需要2781)版本冲突 导致玩家频繁掉线(如果装了蹦极自踢会被T回登录服)

本教程由HTL9257编写 仅发表于MCBBS 严禁转载
最后更新 2019.2.11