_DIM_
本帖最后由 _DIM_ 于 2021-9-5 15:51 编辑
Sponge 海绵端教程
或许我写的不完全对,欢迎各位为我纠错
以下所有内容都以API7的1.12.2为例
此文章字数已达到 2.5w+ 字,心急吃不了热豆腐
若看完依然整不好海绵端但又想用的话,楼主已帮你整好
如果你实在学不会,建议你返用Bukkit系,例如CatServer
本帖内容严禁转载!

Sponge讨论群:742592722
最后更新:2020-3-13
↑字数警告↑
>> Sponge 与 Bukkit 的区别 <<
使用Sponge开的百人服实例:

在开始阅读教程之前,先确保你有足够的电脑知识
首先你至少得完成小学电脑课的所有知识,免得讲了半天你不知道“根目录”是什么,
其次在整合海绵端之前你需要抛开以前spigot端的所有用法,因为这是个全新的端
还有你至少要会小学英语的大部分单词,否则你可能不知道Download是啥。
你需要对网络与电脑配置有一定的了解,比如总以为20兆网络就是20m/s的小白就可以不用继续看了- -
最后,你必须要有玩过其他MC的服务器,否则你可能连怎么注册登录都不知道……

那么,开始你的海绵之旅吧!

第一章,开始搭建海绵服务端

第二章,寻找并安装基本的插件

第三章,开始进行基本插件配置

第四章,为用户组分配使用权限

第五章,寻找更多的海绵端插件

第六章,对你的海绵端进行优化

第七章,服务端发生崩溃怎么办

第八章,海绵端开服的常见问题
█████,如果您要查看本帖隐藏内容请回复

教你不花一分钱支持插件开发者



虽然是回复可见,但请各位不要水回复或滚键盘
你可以这样回复:期待楼主的下次更新



写在最后


更贴的动力,在于人气
8


若有其他不懂的问题,请加群询问
(群号在本教程最上方)

来自小组:Power of Spongie







来自群组: Power of Spongie
2021.12 数据,可能有更多内容
Sponge 海绵端教程
或许我写的不完全对,欢迎各位为我纠错
以下所有内容都以API7的1.12.2为例
此文章字数已达到 2.5w+ 字,心急吃不了热豆腐
若看完依然整不好海绵端但又想用的话,楼主已帮你整好
如果你实在学不会,建议你返用Bukkit系,例如CatServer
本帖内容严禁转载!

Sponge讨论群:742592722最后更新:2020-3-13
↑字数警告↑&gt;&gt; Sponge 与 Bukkit 的区别 &lt;&lt;使用Sponge开的百人服实例:
TPS平均稳定在19.99 ,内存占用仅13G不到
在开始阅读教程之前,先确保你有足够的电脑知识首先你至少得完成小学电脑课的所有知识,免得讲了半天你不知道“根目录”是什么,其次在整合海绵端之前你需要抛开以前spigot端的所有用法,因为这是个全新的端还有你至少要会小学英语的大部分单词,否则你可能不知道Download是啥。你需要对网络与电脑配置有一定的了解,比如总以为20兆网络就是20m/s的小白就可以不用继续看了- -最后,你必须要有玩过其他MC的服务器,否则你可能连怎么注册登录都不知道……
那么,开始你的海绵之旅吧!

第一章,开始搭建海绵服务端
在这之前先说一下,有些人可能会因地域问题无法打开国外的网站可查看酒石酸的方法 https://www.bilibili.com/video/av15533665具体怎么操作自行想办法,这里不做任何的解释

请先确保你的电脑装有 Java8 64位 并且没有其他多余版本的 Java,否则启动时窗口会一闪而退。[链接为官方下载页]
首先前往Sponge官网,找到下载地址并开始下载 【建议下载推荐版而不是最新版】https://www.spongepowered.org/downloadsSponge有两个版的服务端,一个是 VANILLA 版,也就是跟纯净服一样的,一个是 FORGE 版,可以装模组的。


我先讲VANILLA版的搭建方法
首先在上方的下载地址中下载好核心

以及在浏览器里输入以下网址开始下载官方核心,可以根据需求修改版本号
https://s3.amazonaws.com/Minecraft.Download/versions/1.12.2/minecraft_server.1.12.2.jar
如果下载的是 zip ,请将后缀改为 jar
没有显示后缀名?Win10 系统请按照下图示例操作,Win7 系统请百度。



接着新建一个文件夹,将两个核心放入(请注意好官服核心大小有29M左右)



然后在根目录下新建一个 文本文档.txt 打开文本文档,粘贴以下参数
java -Xms1024M -Xmx1024M -jar [填写核心的名字].jar

这里提一下,Xmx是用来设置你的服务端能够使用的最大内存数,注意,千万不要超过服务器的最大内存而Xms是另一个设置内存的参数,用它来设置程序初始化的时候内存栈的大小。通俗点讲就是一个最大一个最小,如果可以的话最好是两个设置的一样,固定内存使用量。


[填写核心的名字]是需要改成核心的名字,比如图中的 spongevanilla-1.12.2-7.1.0-BETA-24
1024M 也是可以改的,建议你改成 2048M 或更高。


改好后保存并关闭,并将文件名后面的 .txt 改为 .bat
然后是双击启动,稍等片刻即可开好服(如果闪一下就没了的话,请在参数里空行,在第二行加上 pause


你会发现,控制台突然关闭了那是因为你需要同意一个叫 eula 的协议
打开根目录中的 eula.txt ,将里面的 false 改为 true


保存后再启动一次服务端


当你看到Done (7.759s)! For help, type &quot;help&quot; or &quot;?&quot; 后,就代表服务器已成功开启
现在你可以输入 stop 来关闭服务端了,所有的插件均放在 mods 文件夹内,即使这是纯净版






接着是FORGE版,用同样的方法下载好核心 【建议下载推荐版而不是最新版】

并且记好那串字符中的第二串数字,比如这里的是 2611
就表明你需要使用 ≥2611 版的 FORGE ,如果版本用小了可能会出现一些奇怪的问题


用同样的方式去下载 1.12.2 的官方核心
https://s3.amazonaws.com/Minecraft.Download/versions/1.12.2/minecraft_server.1.12.2.jar
如果后缀是 zip 请改为 jar
没有显示后缀名?Win10 系统请按照下图示例操作,Win7 系统请百度。



然后新建一个文件夹,将官方核心单独放入,然后双击它(请注意好官服核心大小有29M左右)



你可能会看到一个窗口闪一下就没了,并且根目录中会多出几个文件
打开 eula.txt 文件,将里面的 false 改为 true ,保存后关闭


下面是注入 Forge ,请打开 Forge 官网 https://files.minecraftforge.net/
在左侧点击所需要的版本比如 1.12.2 ,点击下方黄色的按钮,找到 2611 或往后的版本并下载


如果不用感叹号方法,需要等待广告时间出现 skip 后才能下载(这个不要下载到文件夹内,你可以下载到桌面)


下载好后双击打开它,建议将下方的勾去掉,然后选择第二个 server ,也就是服务端
并且在右下角选择文件夹,像这样



都选好后点确定即可开始安装 FORGE ,后面只要耐心等待即可



如果进度条结束后出现的是一个 successful 的字样,就说明安装成功了

如果不是,就代表失败,不过失败了不要紧,很正常,用上述的方法再重复就好,直到成功为止如果你实在没法成功,可能是地域的问题了,可以在我这个贴下载离线库文件


接着用同样的方法创建一个启动服务端的bat文件
但是要注意,核心的名字要写的是安装好后 forge 核心的名字,例如下图

我就得在bat里这样写
java -Xms4096M -Xmx4096M -jar forge-1.12.2-14.23.2.2611-universal.jar不建议低于 4096M ,如果模组较少的话可以2048M起步(分配过低会导致频繁GC从而卡服)


保存后新建一个名为 mods 的文件夹并将先前下载好的 sponge 核心丢进去



最后是双击bat文件启动服务端即可(如果闪一下就没了的话,请在参数里空行,在第二行加上 pause

最后面出现了 Done (3.541s)! For help, type &quot;help&quot; or &quot;?&quot; 就代表成功了
在此你已经成功搭建了sponge服务端

顺带提一点,强烈建议使用 API7 及以上版本的核心,因为新版本中貌似对多核有了较大的优化



实在看不懂的……我录了个视频,到了不会的地方就暂停研究下吧0.0https://www.bilibili.com/html/player.html?aid=50919767&wmode=transparent&as_wide=1&page=1
https://www.bilibili.com/video/av50919767/
有能力的用户建议不要使用感叹号方法下载,因为这样子作者无法获利
第二章,寻找并安装基本的插件
在这之前,建议先做一些准备工作
下载 notepad++ ,虽然 Sponge 很少有插件用 yaml 格式,但还是建议用这个来编辑防止格式错乱。
准备一个客户端,如果是 VANILLA 版的可以直接用纯净的客户端,即不需要 Forge
如果是 FORGE 版的请使用装了Forge 的客户端,例如这种 (无耻的推了自己的帖= =)


准备工作做完后,我先说一下 Sponge 的一些特性
1、所有插件均装在 mods 文件夹或子文件夹内
2、绝大部分插件配置文件都在 config 文件夹内
3、插件的数据可能在 config 文件夹内,也可能在根目录下
4、插件的配置文件基本上都是 conf 格式的文件,yaml 格式占少数
5、conf 文件的配置格式为 HOCON ,如果你对这个感兴趣的话,可以点击这里
6、Sponge 本身不建议各位使用盗版登录,即离线登录
7、Sponge 的配置文件在 config 文件夹内的 Sponge 文件夹内
8、Sponge 本身自带经济 API ,也就是不需要 vault 这类的前置插件
9、在安装了权限插件后,给予 OP 的方式不再是 op ID
10、寻找更多的 Sponge 插件请前往Sponge 官方论坛 Ore 矿区,Ore 的插件一定是免费开源且无后门的
11、Sponge 插件能否兼容的版本看的是 API ,而不是游戏版本号
12、强烈不建议使用 pore 这类的插件,如果坚持想要装 bukkit 插件,请回去使用 Bukkit 系服务端
13、海绵端对 MOD 的兼容并非完美,偶尔会有冲突导致 MOD 的功能不可用,需要自行测试
14、海绵端可以随时随意升级 forge 以及 sponge 核心,但是升级 sponge 的前提是 forge 必须在需求版本之上
15、海绵端的插件对 MOD 的兼容性较好,比如 IC2 的核弹,BC 的采石场是没法破坏领地的
16、FORGE 版海绵端可以装到客户端里,因此客户端也可以添加海绵端的插件
17、Sponge 服务端作为一个开源项目,具有相当快的版本迭代周期(自Tollainmear
18、国内的 Sponge 开辟者是 4z 大佬,就是下方的沙发回复,并不是我,我只是个搬运工。
19、请勿用 catserver 等 bukkit 系的端来跟海绵端比较,稳定性、兼容性、面向用户群体都是没有可比性的嗯,碾压


现在可以开始寻找一些必要的插件了,这里我给出一些常用的插件以及大概的使用方法(不想要的插件可不下)
常用前置:PlaceholderAPI 站内搬运 原帖
权限插件:LuckPerms 原贴
基础插件:Nucleus 站内搬运 原贴
基础附属:Nucleus-Gluon 原帖
经济插件:EconomyLite 站内搬运 原贴 [精简小巧]
  / TotalEconomy 站内搬运 原贴 [功能强大] (两者二选一)
领地插件:GriefPrevention 站内搬运 原贴
创世神插件:WorldEdit 原贴 (切勿使用异步创世神!)
物品禁用:EpicBanItem 站内原贴
全息显示:Holograms 站内搬运 原贴
指令禁用:Command Blocking Manager 站内原贴
菜单插件:VirtualChest 站内原贴
计分板插件:YYSScoreboard 站内原贴
查询插件:Prism 站内搬运 原贴
登录系统:FlexibleLogin 站内搬运 原贴
自动公告:PixelAutoMessage 站内搬运 原帖
地皮插件:Plotsquared 站内搬运 原帖 (官方版慎用)
欢迎语插件:ServerListPlus 原帖
扫地插件:SoulClear 站内原贴
商店插件:UniversalMarket 站内搬运 原帖
  / AmberShop 站内原贴
箱子锁插件:Latch 站内搬运 原帖 [类似于LWC]
    /Lockette 原帖 [类似于牌子锁](两者二选一)
反压测插件:AntiAttackRL 站内搬运
注意:Luckperms 不要下载成 Bukkit 版本的



或许有些人不知道该点哪个才是下载,这里我建议你先去原帖里下载,不行再下载备份的
如果有需要汉化的比如登录系统,再将搬运贴的汉化文件下载了之后放进去(按照搬运贴说明放入指定文件夹内)
如果你不懂得英语,告诉你一些小技巧,只有 Ore 之类的帖子就点这个,一般这种点进去后上面都会有个 Versions
这个是版本的意思,点击它,然后找到对应的版本即可,比如你的是API7的核心,就找7.0的,如果没7的话也可以用6的
插件一般都是向上兼容的

如果是一个正常的帖子一般里面就有下载链接,仔细找找可以找到 Download 的字样,或者 latest build 的字样
同样找到对应版本或者只有旧一点的版本下载就好


若出现这种界面,表示新版本还没通过管理员复核,虽然能用但是使用后造成的损失责任自负。
点右下角即可,意思是继续



现在试着自己去下载上述中的插件,当你都下载好后全部拖入服务端的mods文件夹内即可 (插件只会是jar后缀的文件)
如果你怕忘记插件的英文名,你可以在前面加上中文备注,但切勿删掉英文字,否则以后会吃亏的
现在可以试着启动一次服务端,如果没问题的话,你或许会看到这个界面

别急,不要以为卡在这就开好服了,这是正在下载缺失的文件,根据网络情况等一段时间才会继续


小技巧:
当开服完毕后多余的插件信息太多不好找 Done! 不确定开好没的话,直接输入 help 就知道了
如果有反应就证明开好了,如果没反应就证明没开好



在此,你已成功安装好了主要的一些插件,接下来就是配置插件了!
很多人一直很不解为什么 Sponge 没有 Residence 领地插件。这是因为 res 领地插件一直都是盈利性插件,而 Sponge 的 ore 社区是强制性插件免费开源的。因此不管从什么角度上看, res 开发者没有任何理由开发 Sponge 版本。



第三章,开始进行基本插件配置
首先打开根目录的 server.properties
这个是啥就不用我多说了吧……
找到 online-mode=true ,如果你要做盗版服的话,就改为 false ,否则只有正版用户能进
找到 view-distance=10 ,这个是视距,建议改小,越小服务端性能就越好(越流畅)
找到 allow-flight=false ,模组服建议将此选项改为 true ,防止一些模组的飞行功能受到限制
其他的一些属性建议根据官方翻译来自行修改 https://minecraft-zh.gamepedia.com/Server.properties


前面也说了,Sponge 插件的配置文件一般都在根目录的 config 文件夹内
因此你启动了一次服务端过后再打开 config 文件夹可以看到一堆配置文件
Sponge核心的配置文件在 config\sponge 文件夹内
提示:每次修改配置后记得保存再关闭!


这里请先打开 forge.cfg ,没错这个是forge的配置文件,并非某插件的
接着 ctrl+f 找到这一段 disableVersionCheck=false 把false改为true
然后是拉到最下面找到 Global=true 把true改为false
这两个一个是检查forge更新,一个是检查所有mod的更新
鉴于我天朝拥有伟大的GFW,建议都关闭掉。

接着着是找到 removeErroringEntities=false 以及 removeErroringTileEntities=false
将这两个 false 都更改为 true ,目的是为了降低MOD本身问题导致蹦服的概率
都改好后可以关掉这个文件了
下面是讲 Luckperms 权限插件的基本使用方法

Luckperms 权限插件
首先打开 luckperms 的配置文件
找到 storage-method=&quot;h2&quot;
这个是数据的存储方式,可以根据上面的提示并根据自己的情况来进行修改

代码:

  1. Currently supported: mysql, mariadb, postgresql, sqlite, h2, json, yaml, hocon, mongodb
如果你什么都不了解的话,建议你不做任何修改
如果你想让这个权限插件和以前常用的GM插件一样可以修改权限数据文件的话
可以将 h2 更改为 yaml ,但这么做性能会有所降低
别问为什么,GM 本身性能就非常的低 = =
不过如果是小服的话这点弊处可忽略不计
接着是启动服务端,如果你还记得我前面说过的话
你应该是知道给予 OP 的方式不可能是简单的 op id
不过给予的方式并没你所想的那么难,首先你需要了解一下这个插件的指令
其实这个插件的所有指令都是有规则的,虽然很长但是很好记
首先输入 lp help ,你可以看到这样子



看看本帖的标题:[面向新手]
因此你只需要知道几个英文就好
user 用户
group 组
delete 删除
create 创建
add 添加
set 设置
remove 移除
permission 权限
info 信息


很简单的英文,因此根据意思可以知道
lp user 就是跟指定玩家有关的东西
lp group 就是跟指定权限组有关的东西
lp creategroup 就是创建权限组
lp deletegroup 就是删除权限组
lp listgroups 就是列出权限组
lp sync 这个比较特殊,是重载配置文件


在这里,我可以告诉你,最简便给予 OP 的方式就是给予指定玩家*权限
那么这回你应该知道该怎么做了吧,指定玩家那就是 lp user
这回你可以试着输入 lp user ID ,ID就是你要给OP的用户名,比如我的是God_DIM,就这样输入



给予某玩家某权限,那么就是跟权限有关的东西,那就是 permission
接着按方向键↑,返回刚才输入的东西,往后面添加 permission ,比如这样



emmm...意思是需要这个用户至少要加入服务器一次
好的,这回就用到客户端了,用这个ID启动客户端
启动好后输入 127.0.0.1 进入本地服务端,或者添加服务器输入 127.0.0.1






进去一次后就可以回到控制台了
接着按方向键↑返回之前输入的指令再按回车,可以看到这样子



你会看到这么多绿绿的字里面有一个 set ,没错这个就是设置,也就是设置权限
接着再按方向键↑,往后面再加一个 set 按回车,可以看到如下

根据提示可以知道,往后面输入权限后,再输入 true 就是启用,如果是 false 就是禁用


那么你可以这样输入
lp user God_DIM permission set * true

lp 代表插件名
user 代表后面输入的是用户名(group 则为用户组)
God_DIM 是我的游戏ID
permission 代表我要修改的是权限
set 代表通过设置来修改权限(unset 则是取消设置)
* 代表权限
true 代表权限属于启用状态(false 为禁用)

现在你已经拥有了所谓的OP权限了,同样的道理,如果要给某玩家某权限,把ID和*改一下就好了


但!这并非正确的给予管理权的方式,给*权限的确能让你拥有所有权限,但也容易出现各种问题
因此,最好的办法不是给*权限,而是创建管理组,然后将各个插件的管理权加进去,
最后再让玩家加入管理组,例如想拥有MC原版的所有指令权,则添加 minecraft ,lp插件的则是 luckperms
海绵端的指令则是 sponge 。注意,无需添加节点,也就是不需要 minecraft.* 这样子。
因此给予 OP 的方式就需要各位腐竹稍微用点心了,毕竟古老的 op id 以及 * 权都是一种不安全的方法。


创建用户组以及编辑用户组的权限的方法也大同小异
不过将某玩家移入某权限组就有点不一样了,回到 lp user ID ,可以看到在permission下面还有一个 parent
这个就是继承组,输入后可以看到这样



这里讲一下 set 和 add 的区别(第八章有更详细的讲解)
set 是移除该用户的所有用户组并加入到指定的这一个组里
add 是为该用户在拥有A组的情况下再增加多一个B组
我们一般都是用的set,因此你可以这样输

将该玩家用户组改为AAAA


假设你想让某玩家加入vip组30天,在30天后自动取消,那么可以用addtemp功能
例如:lp user ABC parent addtemp vip 30d
这样就不需要再另外用其他的vip插件了,由权限插件做定时功能即可


在这里提醒一下,插件的默认组是 default
如果你想查看某玩家的详细信息的话输入 lp user ID info 即可查看
更多详细请看中文 Wiki


看完上面,可以自己试着创建一个管理组
先输入 lp creategroup admin 创建一个叫 admin 的租
接着使用 lp group admin permission set xxx.xxx true 给管理组权限(要么给*,要么给单独的插件管理权,在第四章有讲)
现在给 “OP” 的方式就简单了,直接输入 lp user 玩家名 parent add admin 就拥有管理权了


Luckperms 的基本用法就讲到这里,下面讲一下 EconomyLite 经济插件


EconomyLite 经济插件
当你装好后可能会发现显示的全是英文,这时你就需要去搬运贴复制汉化好的语言文件了



接着找到并打开 \config\economylite\messages.conf
然后全选,粘贴即可,记得保存


接着打开 config.conf 文件
如果你想让玩家能给不在线的玩家转钱,可以将
confirm-offline-payments=false 改为true
然后找到 debug-logging=true 将true改为false,别问为什么
然后找到最下面的 virt-default-balance=0.0
这个是玩家初始金钱,你可以根据自己的情况来设置


然后再打开 currencies.conf 文件,这个是记录货币类型的
前两个改成金钱的名字,第三个改成金钱的符号,你可以改成这样子
coin {
    plural=BB币
    singular=BB币
    symbol=¥
}
current=coin



flexiblelogin 登录插件
去下载好新版的插件以及汉化文件,将汉化文件丢到\config\flexiblelogin\
有提示点覆盖即可,messages.conf 就是语言文件,可自行修改里面的文字
接着打开 config.conf 文件(新版为local.conf文件),如果你是连配置文件都一起替换的的话,里面应该都是中文的注释
自行根据中文注释来修改即可

其余更多功能请详见搬运贴




prism 查询插件
在 config 文件夹内找到 prism 文件夹,找到里面的 prism.conf 文件
打开它,找到 display {} 的位置,将里面的内容改为

代码:

  1. dateFormat="d/M/yy HH:mm:ss"
即24小时制显示,默认的12小时制容易混乱
接着找到下方的

代码:

  1. storage {
  2.     engine=h2
  3.     expireRecords="4w"
  4. }
可以将4w改为2w,即仅保留2星期内的数据,可以减少磁盘空间占用
其详细用法请见搬运贴
最常用的指令就是 /pr i 查询功能以及 /pr rb 回档功能




EpicBanItem 禁用插件
用法很简单,手里拿着要封禁的物品输入 /ebi create [名字] 即可完成物品封禁
名字是自己写的,能记得住是指什么物品就行
如果想修改其禁用的功能以及世界,可输入 /ebi edit [名字] 进行修改

绿色则是指启用监听,红色则是指关闭监听,例如玩家制作封禁的物品,那么就把craft改为红色
直接用鼠标点击修改,修改完后请记得点左下角的保存
若想禁用模组物品的合成,建议使用 CraftTweaker


其余详细的用法请看原贴




Plotsquared 地皮插件
地皮为何标了个慎用,因为这个插件的 Sponge 版目前被停更,有着不少BUG
例如在地皮外面丢东西会消失,预置里只有桥梁能用,无法使用自定义路面功能,无法删除地皮等等……
这里可以试着使用 GiNYAi 修改的地皮插件(已解决大部分基本功能的BUG)



这款插件的下载方式也有些奇怪,下面我简单的说一下
首先打开原帖网址,然后点击下图红框的链接,不要点BUILDS



然后找到这两个字样的文件,点击即可开始下载



当你下载好启动服务端后可以试着输入 ps ,如果有反应就证明可用



接着是做汉化,这步比较关键,请仔细看
首先打开 \config\plotsquared\translations 文件夹
接着打开 s_chinese.yml 文件,这个就是汉化好的文件,但因编码问题无法使用
接着点开该链接 http://tool.chinaz.com/Tools/Unicode.aspx 这是一个转换平台
将 s_chinese.yml 的内容全选后复制,粘贴在这个网站左侧的框框内,然后点击 转中文



这时你会看到右边的框框已经出现人能看懂的语言了,然后再全选,复制
接着是打开 PlotSquared.use_THIS.yml 文件,全选后粘贴 即可,接着是保存关闭
如果操作无误的话,你看到的就会是已经汉化好的 PlotSquared.use_THIS.yml 文件。



然后再次启动服务端,然后输入 ps ,如果看到的是中文证明已汉化成功



如何创建地皮?还是和bukkit版的创建方式一样
输入ps setup,就会出现提示



然后输入 ps setup PlotSquared(区分大小写) 就开始进行创建步骤
接下来只要一路按照提示输入就行了,例如:
ps setup DEFAULT(区分大小写)
ps setup 64(地皮高度)
ps setup 42(地皮大小)
ps setup 1(地皮下面的方块)
ps setup 2(地皮表面方块)
ps setup 44(认领前地皮围墙方块)
ps setup 44:1(认领后地皮围墙方块)
ps setup 7(路面宽度)
ps setup 64(路面高度)
ps setup 155(路面方块)
ps setup 1(围墙下面的方块)
ps setup 64(围墙高度)
ps setup true(地皮底下是否生成基岩)
ps setup plotworld(地皮世界的名字)
接着稍等片刻即可生成完毕(如下图)



生成完毕后打开文件夹 config\plotsquared\config 在里面可以看到这四个文件

首先打开 settings.yml 文件,找到 updater: true 这项,将 true 改为 false
接着打开 worlds.yml 文件,找到下列

代码:

  1.     event:
  2.    spawn:
  3.   egg: false
  4.   breeding: false
  5.   custom: true
  6.     natural_mob_spawning: false
  7.     mob_spawner_spawning: false
根据需求可将 false 改为 true ,例如Pixelmon模组的精灵在地皮不出现的问题,改为 true 即可
改完这些之后输入 ps reload 重载插件即可


这时地皮插件可以暂时放一边了,继续下一个插件


Virtual Chest 菜单插件
该插件是巨佬4z写的,详细用法请看 Wiki中文Wiki(非最新)
或许没有常见的杜蕾斯强大,不过也跟 cc 差不多了,熟练的腐竹或许可以做出精美的界面


例如下图样式(楼主制作):









图中菜单的配置文件:https://paste.ubuntu.com/p/rMgDv4Qgdz/



GriefPrevention 领地插件
该插件的另一个对手是 RedProtect 即红色保护(RP)插件。
但由于 GP 兼容的插件以及 MOD 较为广泛,因此推荐使用 GP


注意,给予该插件的管理权的正确方式为:
①给予 griefprevention.admin 以及 griefprevention.user 权限
②在控制台输入 /gpreload
该插件的详细用法请查看此贴教程,在这里提一下 3D 和 2D 圈地的区别
该插件默认是 2D 圈地,也就是只需选中 X 和 Y 轴的对角线,不需要考虑 Z 轴(高度)
如果换成 3D 则和 res 一样需要考虑高度。


插件的配置文件是 \config\griefprevention\worlds 目录内的 global.conf 文件
在里面可以找到 locale=&quot;en_US&quot; ,将其改为 &quot;zh_CN&quot; 可使用中文的语言文件。
关于中文,由于该插件的文本匹配机制很差,导致只要插件经常更新后部分语言文本变量出错,
如果你发现语言文件的变量在游戏内显示不正确,一般是插件更新了但是汉化的大佬没有更进所致,
若出现了上述问题,玩家可以通过该网站自行更新语言文件后放入lang文件夹内,并在配置文件中改为 zh_CN



此插件可以防御绝大多数 MOD 的破坏和攻击,例如 BC 的采石场, IC2 的核弹,并且支持与 Pixelmon 关联
默认圈地工具是金铲子,可通过在客户端中安装 该MOD以及 liteAPI 来达到显示边界的效果,比如这样



在这里简易说一下管理员无限大小领地的方式
拿好圈地工具(默认金铲子),输入 /adminclaims 即可切换为管理员模式
此时右键两个对角的方块即可圈好领地
若想删除,可输入 /deleteclaim 删除你所在的领地


设置领地 flag 也很简单,在你所在的领地输入 /cf 即可出现 flag 值的各项数据

直接用鼠标点击橙色的 [true/false] 即可(紫色的是默认设定
这些英文对应的意思在 wiki 里都有写,可以自己去查看



值得一提的是,若在领地外面输入 /cf,则调整的是你当前所在世界的 flag
比如你想让整个主城世界不被破坏,那么就可以去主城的世界输入 /cf(不要圈地)
然后将 block-place 和 block-break 改为 false ,建议将 使用物品 以及 物品交互 也关闭


这里可以查看本插件的meta值设定方法,举个例子:
如果想让玩家每小时可以免费获得200个领地方块的话,那么就输入↓
/lp group default meta set griefprevention.blocks-accrued-per-hour 200




Nucleus 基础插件
抱歉时隔半年多才更新到基础插件,主要是因为当时基础插件还没汉化 &gt;_&lt;
这个是Nucleus的官网,可以在这里查看所有的指令、权限、文档等等……
可以在 4z 的帖子查看翻译的指令描述以及权限描述


首先不要认为这款基础插件不如常见的 EssentialsX ,实际上比那个强大的多了
首先找到配置文件,在 config 文件夹下的 nucleus 文件夹内,打开 main.conf 文件
按理来说现在各位看到的应该都是米二汉化过的了,没有以前我用英文版的时候难受


最开始你会看到 modules 区域,这个就是该插件的特点,你可以将你不需要的功能完全关闭
比如你不想让该插件管理聊天格式,让其他插件管,就将 chat=ENABLED 改为 chat=DISABLED
之后所有的功能都可以自行插件配置文件里的中文注释进行自定义配置


Spawn 功能一般都需要修改一下配置,各位用习惯了以前的 bukkit 服都是输入 /spawn 回主城的
而 Nucleus 默认则不是这样,需要输入 /firstspawn 才能够回到主城,否则是当前世界的复活点。
因此需要修改 on-respawn=false 以及 on-spawn-command=false ,都更改为 true
最后将下面的 target-spawn-world=world ,改为你主城所在的世界即大功告成,注意要区分大小写


当你自定义完配置文件后,可以在控制台给予 OP 管理权限以及玩家的用户权限
正确的权限给予方法:/nucleus setupperms [USER|MOD|ADMIN|OWNER] &lt;权限组名&gt;


比如你的 OP 权限组名字叫 admin ,那么就输入下列命令(直接给*权的可以不管)
/nucleus setupperms ADMIN admin
/nucleus setupperms MOD admin
/nucleus setupperms OWNER admin


同理如果默认权限组是default,给予玩家用户权限就输入 /nucleus setupperms USER default
注意:默认的用户权限是不包含 /back 的使用权,请单独给予默认权限组 nucleus.back.base 权限
注意:默认的用户权限是不包含 /tpahere 的使用权,请单独给予默认权限组 nucleus.teleport.tpahere.base 权限


很多人想问怎么让 VIP 玩家能够设置更多的家,方法很简单
在安装了 Luckperms 权限插件的情况下,输入 /lp group &lt;组名&gt; meta set home-count &lt;数量&gt;
比如 vip 组叫 vip1 ,要让他们能够设置 255 个家,那么就输入 /lp group vip1 meta set home-count 255


该基础插件自带世界管理器,因此无需再额外添加多世界插件!指令为 /world


简单的说下这些英文代表的意思:
setdifficulty —— 设置世界难度
setkeepspawnloaded —— 设置是否保持出生点加载
teleport —— 传送玩家到指定世界
sethardcore —— 设置世界是否为极限模式
modifiers —— 查看可用的世界编辑器
delete —— 彻底删除指定世界
load —— 加载指定世界
enable —— 启用指定世界
unload —— 卸载指定世界
create —— 创建世界
info —— 世界信息
border —— 设定边界
setloadonstartup —— 设置世界是否在开服时加载
setgamemode —— 设置世界的游戏模式
setpvpenabled —— 设置世界PVP是否开启
list —— 查看世界列表
setspawn —— 设置世界出生点
presets —— 查看可用的世界预设
spawn —— 前往世界出生点
gamerule —— 查看世界规则
rename —— 更改世界名字
disable —— 关闭指定世界
clone —— 复制世界
generators —— 查看可用的世界生成器


正确的创建世界方法:
/world create 名字【创建一个普通的世界】
/world create 名字 -i【导入一个已有的世界】
/world create 名字 -g minecraft:flat【创建一个超平坦世界】
/world create 名字 -p sponge:the_void【创建一个虚空世界】
创建新世界的名字不能与现有世界名字重复,例如不能用 “world” “DIM1” “DIM-1” 这三个默认存在的名字


注意:世界存档都在根目录的 world 文件夹内,并非在根目录


关于游戏内聊天格式的修改方式
此基础插件修改聊天格式很简单,并且可以自定义名字颜色、聊天颜色、不同权限组不同格式
首先返回 main.conf 文件,找到 Chat 模块的配置部分,接着找到 templates 部分即可进行修改



举个例子:


此聊天格式配置中,默认的聊天格式为 {{prefix:s}}&amp;e{{displayname}}{{suffix}}&amp;f&gt; &amp;r
管理组(需自行创建)的聊天格式为 {{prefix:s}}&amp;c{{displayname}}{{suffix}}&amp;f? &amp;r
VIP组(需自行创建)的聊天格式为 {{prefix:s}}&amp;b{{displayname}}{{suffix}}&amp;f? &amp;r


好了,现在来看下效果:
默认组
管理组
vip组
{{prefix:s}}{{suffix}} 变量分别是前缀与后缀变量,由权限插件控制的,可用权限插件添加
当然如果是用其他的称号插件的话可以不需要这两个变量,而是改为称号插件自带的变量
例如 Sponge 里用的最多的称号插件 newhonor ,就自带有 {{newhonor}} 变量,可自行添加


接着找到下方 Core 模块check-for-wildcard=true ,如果你是给管理组直接添加的*权限
建议将该项设置为 false ,就可以避免在管理员进服时出现一大堆不必要的提醒。
其余的设置可自行通过配置文件内的中文注解来完成配置,只要你能读得懂中文基本没难度


接下来打开同目录下的 commands.conf 文件,此文件是用来管理指令的开关以及冷却/预热时间
例如 /teleport 指令(就是强制tp)

代码:

  1. teleport {
  2.     # 下面的指令为相关指令的简写形式。设置为false以禁用他们。
  3.     aliases {
  4.   nteleport=true
  5.   tp=true
  6.     }
  7.     # 以秒为单位的倒计时,玩家两次执行此指令之间需要等待的冷却时间。设置为0以禁用此功能。
  8.     cooldown=0
  9.     # 执行指令所需要的游戏币消费,游戏币仅会在指令执行成功之后被扣除。设置为0以禁用此功能。
  10.     cost=0
  11.     # 设置此指令是否启用。
  12.     enabled=true
  13.     # 以秒为单位的倒计时,玩家执行指令之前需要等待的指令预热倒计时(译者注:预热期间,玩家不能移动且不能执行其他指令,否则会打断预热,导致指令执行失败)。设置为0以禁用此功能。
  14.     warmup=0
  15. }
在这里可以看到该指令有两个别名,nteleport 和 tp ,如果你不想让 /tp 指令被基础插件占用的话
将后面的 true 改为 false 即可,此外还可以在下方的 cooldown 更改冷却时间以及 warmup 预热时间


建议将玩家常用的传送功能都添加一个预热时间,防止滥用卡服
例如 tpa, tpahere, back, home, spawn, warp, rtp 等等……




ServerListPlus Motd插件
此插件是用于显示自定义服务器标题页,例如这样



在安装好插件后先重启一次服务端,接着打开 config\serverlistplus 文件夹
此时可以看到一个 ServerListPlus.yml 文件,打开它,即可开始修改标题


这里展示一下已修改好的样式:



接着在客户端里就可以看到这样子的标题



Default:是指玩家IP第一次搜到服务器显示的样式
Personalized:是指同IP之前已搜索过后显示的样式

代码:

  1. - |-
符号是用于分隔,表示可以添加多种标题样式,并随机显示


代码:

  1. Favicon:
  2.     Files:
  3.     - icon.png
在此地方可添加图标,添加多个图标即可随机使用。
图标名字可以随意,图标大小必须为 64x64 ,例如



更多的变量符请在wiki查看


当你都配置好并确保yaml格式没有错误后点击保存
接着在控制台输入 slp reloadslp enable 即可启用自定义服务器标题页




YYSScoreboard 计分板/Tab插件
使用此插件可以为服务器添加自定义计分板以及自定义 Tab 功能,目前已支持动态效果
首先打开 config\yysscoreboard 文件夹,先打开 config.conf 文件,可以看到默认设定:

代码:

  1.     scoreboard-mode {
  2.   async-update=false
  3.   cache-scoreboard=true
  4.   same-score=false
  5.   stable=true
  6.   static=false
  7.     }
在这里可以将 async-update 项改为 true 优化性能,但可能会导致报错,如有报错还是将其关闭较好。
接着找到 stable=true这里需要极其注意,默认是 true 的情况下是不支持玩家个人变量的(服务器变量可以)
如果强行使用个人变量会导致显示出来的并非你本人的变量。如果你想用计分板显示个人变量,需要改为 false
但如果改为 false 就会导致其他自定义玩家头顶名字的插件失效(例如newhonor的头顶称号功能)
鱼和熊掌不可兼得,请各位腐竹择二其一
新版已能够互相兼容
接着打开 scoreboard.conf 文件,可以看到如下样式



example 这个字样是可以自己随便改的,你可以设置多个计分板和tab ,只要命名不一样就行了
为什么要设置多个计分板?如果你想要动态效果的话就需要用到多个计分板了
delay=20 代表切换时间,单位是tick,这里设置的是计分板每1秒切换一次,仅仅变的是字的颜色
这里需要注意的是,显示同样的内容不能出现重复,只许有一行,否则会报错,可以使用Papi变量
此配置文件在游戏里的效果就是这样的 (红绿来回变)



自定义 tab 部分也是同样的方式编辑,至于那四项分别代表哪里的显示,看下图就懂了



同样支持颜色代码、Papi变量以及动态功能,prefix 可以使用 newhonor 的变量来显示玩家称号




SoulClear 扫地插件
此插件是我请求老魂写的一个适用于海绵端的多功能清理插件,在此感谢老魂抽出时间为Sponge社区做出贡献
首先打开 \config\soulclear 文件夹,可以看到里面有个 config.yml 文件。对,yaml格式(老魂不喜欢hocon)


打开后就能看到配置文件,瞬间找回了 bukkit 的味道,yaml 格式,还有中文注释,一目了然,不需要我多说了



这里提一下,清理掉落物的黑名单是指不清理的项目,可以指定某个模组的所有物品
例如我想禁止他清理拔刀剑模组的所有物品,先找到拔刀剑的物品ID



接着可以在配置文件里这样写,即可放置拔刀剑模组的掉落物被插件清理走



保存配置后输入 /sponge plugins reload soulclear 重载插件即可
接着可以输入 /soulclear clearItem 立即清理地面物品来测试一下



在此已基本上配置好必备插件,接下来是为默认组分配权限


第四章,为用户组分配使用权限
在进行权限分配之前,有必要让各位腐竹大概知道一些特性
1. 目前 Sponge 能用的权限插件只有 Luckperms ,除了这个没有第二个(以前另外两个都死了)
2. 关于 LP 的详细用法,请参考中文Wiki,用法与 GM 截然不同
3. 由于 Sponge 没有 OP 这一概念,因此你要么给自己 * 权限,要么把各个插件的管理权都添加到一个组里
4. 任何权限节点后面都不需要带上 .* ,因为Sponge没有 * 这个概念
5. 假设你给了 AAA.BBB 权限,那么就等同于给了 AAA.BBB.* 权限,后面的权限全都会拥有
6. LP的默认存储方式是 H2 。如果想直接修改文件给予权限,可以更改为 YAML 格式,更改方式在第三章有说。
7. LP的默认组为 default ,因此给玩家的权限只需给 default 组添加权限即可。
8. 有一些插件作者是直接从以前的 Spigot 版原样移植过来,因此基本没考虑到权限的问题。例如:PlotSquaredRedProtection 。这些没有另外写权限的插件都有同样一个问题,那就是Wiki的权限部分讲解会误导 Sponge 用户,导致有不少腐竹反馈到给了权限也无法使用,至于解决方法请继续往下看。不会添加权限?第三章开头有讲


好了这里说一下第八点的问题,先用 RP 领地插件举个例子。下图是原贴写的给权限的方法



按照他的方法,只要给玩家 redprotect.user 的权限就可以了


现在我们点进右下角蓝色的 HERE 看看是怎么一回事



根据这个可以看到,redprotect.user 的确包含了红框里的所有权限
但是!这只是 spigot 插件常用的手段,并不适用于 Sponge 。
不过,Sponge 当然也没这么傻,他有自己的方式。就是上面说的,给了 AAA.BBB 后,后面的也全部包含了


因此按照这个红框里的权限可以得知,我们需要给玩家的并非 redprotect.user 权限
而是 redprotect.ownredprotect.infowand 这两个权限
Flag 功能也并非给玩家 redprotect.flag.all 权限,而是给 redprotect.flag 权限


若是想给管理权也十分简单,直接给 redprotect 权限即可

从而可知,地皮插件的问题也是同样如此




用户权限并非 plots.use ,而是……

下面还有……


不好意思,地皮插件的作者就是这么6,如果你想使用地皮插件的话,只能乖乖一个一个的给权限了
这里我只能帮你整理一下:(这里我用的是YAML格式,如果也有使用YAML格式的腐竹可以直接复制进去)

代码:

  1. - plots.add
  2. - plots.auto
  3. - plots.buy
  4. - plots.chat
  5. - plots.claim
  6. - plots.clear
  7. - plots.confirm
  8. - plots.continue
  9. - plots.delete
  10. - plots.denied
  11. - plots.deny
  12. - plots.done
  13. - plots.download
  14. - plots.flag
  15. - plots.home
  16. - plots.info
  17. - plots.kick
  18. - plots.list
  19. - plots.permpack
  20. - plots.plot.4
  21. - plots.remove
  22. - plots.save
  23. - plots.set
  24. - plots.toggle
  25. - plots.trust
  26. - plots.undeny
  27. - plots.unlink
  28. - plots.untrust
  29. - plots.use
  30. - plots.visit
  31. - plots.merge.4
其中 plots.plot.4plots.merge.4 分别是拥有数量和合并数量,可以把 4 改为 1 ,即只能领取一块地皮
在上述的默认用户权限中包含了修改游戏模式的权限,因此需要额外禁用一条权限 plots.set.flag.gamemode
指令 /lp group default permission set plots.set.flag.gamemode false


至于管理权就很方便了,直接给 plots 即可


不会给权限?在第三章的开头有说,如果看不懂,那就记住下面几个指令就好
lp group xxx permission set xxx.xxx true给某个组某权限
lp group xxx permission unset xxx.xxx 给某个组取消某权限
lp user xxx permission set xxx.xxx true给某个玩家某权限
lp user xxx permission unset xxx.xxx 给某个玩家取消某权限


如果把 true 改为 false ,那就是禁用某权限,不了解的可以先不管
默认组是 default ,如果想给所有玩家某权限,那么就把 xxx 改为 default 即可


现在开始进入本章的正题,给管理员和玩家在第二章列出插件的权限
这里按照第二章列出的插件顺序来。(如果管理组直接用的*权,那么可以不用给管理组任何权限)
插件名
管理权
玩家权
备注
PlaceholderAPI
placeholderapi.admin


LuckPerms
luckperms


Nucleus


请看第三章的Nucleus部分讲解
EconomyLite
economylite
economylite.balance
economylite.pay
economylite.baltop
economylite.virtual
economylite.loan
GriefPrevention
griefprevention
griefprevention.user
虽然官方建议不要给griefprevention,但实测只给griefprevention.admin的话会出现很多问题,因此建议还是直接给griefprevention
WorldEdit
worldedit


EpicBanItem
epicbanitem
epicbanitem.bypass.&lt;rule-name&gt;
玩家权是用于忽视某个物品的禁用
Holograms
holograms


VirtualChest
virtualchest
virtualchest.open.self

YYSScoreboard
yyssbscoreboard
yyssbscoreboard.command

Prism
prism

允许玩家查询的话就给玩家prism.inspect
FlexibleLogin
flexiblelogin
flexiblelogin.command

PixelAutoMessage
pam.cmd.reload


Plotsquared
plots

玩家权请看上方
ServerListPlus
serverlistplus.admin


SoulClear
soulclear.use


UniversalMarket
com.xwaffle.universalmarket
com.xwaffle.universalmarket.open
com.xwaffle.universalmarket.add
CarrotShop
carrotshop
carrotshop.create

Latch
latch
latch.normal

除此之外还需要给管理组服务端本身的指令权限:minecraftspongeforge这三个


关于给 Nucleus 插件权限的方式,请看第三章


不会给权限?前面已经讲过很多遍了,实在不会的…我最后用通俗的话再举一个例子:
给玩家使用 GP 领地的权限:/lp group default permission set griefprevention.user true


若还有疑问的话,请回帖或加群询问


第五章,寻找更多的海绵端插件
插件少是海绵端的其中一个缺点,主要是很少有人愿意搬运海绵插件,因此有一大半的插件不支持中文
你可以前往 forumsore 寻找更多的海绵端插件


这里推荐各位使用Chrome浏览器,可以使用谷歌翻译网页(比百度翻译和有道翻译要准很多)




我会在下面列出目前海绵端常用的插件以及介绍他的作用(这里不列出第二章出现过的插件),格式如下:
类型:
[英文名] [中文名] [搬运贴]

[作用]


管理类:
Maintenance 维护暂无搬运贴
作用:可以开启维护模式更改服务器Motd并且阻止玩家进服


Plan 分析暂无搬运贴
作用:可以使用网页来查看服务器的详细数据


VirtualChest 虚拟箱子站内原贴
作用:用于制作服务器菜单。


MMCTickets 票暂无搬运贴
作用:在服务器上添加一个票券的系统


Aura-Update-Checke 检查更新暂无搬运贴
作用:用于检查服务端内在ore上发布过的插件是否有更新


DupeFixer 漏洞修复搬运贴
作用:用于修复大部分模组的卡BUG复制物品问题


BorderProtector 边界保护搬运贴
作用:用于防止玩家使用末影珍珠跑到边界外面


fakejoinleave 虚假加入离开暂无搬运贴
作用:给服务器里增加玩家加入和离开的假消息


Simple-Whitelist 简单白名单站内原贴
作用:可以不使用服务端自带的whitelist功能用该插件控制白名单


CommandUtils 自定义命令暂无搬运贴
作用:可自定义命令,功能十分强大


RandomCommands 随机命令暂无搬运贴
作用:增加随机命令的功能


ProtectionPerms 单独保护暂无搬运贴
作用:可使用权限进行限制物品方块的互动(请勿使用*权)


VoteParty 投票暂无搬运贴
作用:为服务器增加投票的功能


ForcePack 强制资源包暂无搬运贴
作用:强制服务器玩家使用指定的资源包


Spark 火花搬运贴
作用:用于深度分析服务端卡顿的原因


MMCLogger 记录者搬运贴
作用:记录服务器玩家使用的指令和聊天内容


MMCReboot 重启搬运贴
作用:给服务器增加自动重启的功能,以及自己可以临时设定重启时间


MMCRules 规则暂无搬运贴
作用:强制玩家在进服时阅读规则并接受规则


PlayerDataReset 重置玩家数据暂无搬运贴
作用:可使用指令重置指定玩家的数据


Negativity 消极暂无搬运贴
作用:反作弊


Nucleus Heisenberg 原子核海森堡 暂无搬运贴
作用:Nucleus 单独分出来的GeoIP模块,用于记录玩家的位置


聊天类:
MultiChat 多聊天暂无搬运帖
作用:用于同步跨服聊天信息


NewHonor 新荣耀站内原贴
作用:多功能的前缀称号插件


PixelmonOverlay 宝可梦覆盖图暂无搬运贴
作用:在游戏界面上方显示宝可梦信息


Chat-UI 聊天界面暂无搬运贴
作用:将聊天窗口修改为多功能聊天窗口


Tab-Modifier Tab修改器暂无搬运贴
作用:用于修改 Tab 列表


Boop @游戏内玩家搬运贴
作用:让玩家可以在游戏内AT他人,并且会发出提示音


ItemChat 物品展示暂无搬运贴
作用:在聊天栏内展示你手中的物品


NucleusHover 原子核徘徊暂无搬运贴
作用:在 Nucleus 的聊天功能基础上添加悬浮显示功能,跟杜蕾斯聊天一样


UltimateChat 终极聊天搬运贴
作用:可代替 Nucleus 的聊天功能,一款功能更多的聊天控制插件


PixelAutoMessages 像素自动消息暂无搬运贴
作用:一款多功能的自动公告插件,可设定鼠标点击后执行的命令或打开的网页


AsciiEmotes Ascii表情暂无搬运贴
作用:使用指令可发出字符表情


Realistic-Chat 真实聊天暂无搬运贴
作用:让聊天拥有距离系统,只有距离你较近的玩家才可以看见你发送的消息


Chatclear 清理聊天暂无搬运贴
作用:一款多功能的清屏插件


ChitChat 便条聊天暂无搬运贴
作用:让聊天系统拥有频道功能


WorldAlias 世界别名站内原贴
作用:可自定义世界的别名(例如生存世界),并且可用于聊天前缀以及计分板显示


待更……


第六章,对你的海绵端进行优化
说到优化,很多人并不清楚海绵端该如何优化,这里说一下我个人的优化方式
(任何优化方式都比不上模组开发者对自己模组优化的效果好,如果模组自己作死,也没办法了)


首先建议额外安装以下模组/插件:
Mob-controller(使用最新的稳定版R
Randompatches (使用最新的稳定版R
Tiquality (使用Tiquality-THIN-1.12.2-GAMMA-1.7.2版本)
Foamfix (使用0.10.10版本)
Laggoggles (使用LagGoggles-SPONGEFORGE-1.12.2-4.3版本)
TickProfiler (使用最新的版本)
AI-Improvements (使用最新的版本)
Phosphor (使用0.2.6版本)
Spark (这是款插件,使用最新版即可)
OfflineServerUsernameWebRequestNetworkManager (这是款插件,使用最新版即可)


作用:
Mob-controller(客户端也要装)
可以对怪物生成进行控制,能够限制指定实体每个区块或世界的数量。
默认生成的配置文件是空的,需要在原贴复制内容粘贴进去后进行修改。具体配置方式原贴有讲。


Randompatches(客户端选装,有额外的BUG修复)
可以防止电脑性能不好或延迟过高的玩家在登录时卡住时间过长被踢出服务器
同时还修复了大量关于MC原版的BUG。


Tiquality(仅服务端安装,可能不兼容最新版的 Sponge
会对每个玩家分配合理的 Tick ,如果用完了就会降低他所放置方块的 Tick 。如果在线人数越多,分配的也会越多。下线的玩家也会对他个人放置的方块 Tick 进行限制,这些都可以在配置文件中配置。支持 GP 圈地以及 FTB 圈地,默认玩家领地内的东西不会受到 Tick 限制。此模组建议只在开服之前安装,强烈不建议在正式开服后安装,因为安装后玩家先前放置所有的方块都会被停止 Tick ,需要玩家拆掉重新放置。你可以将一些方块添加到白名单内让他永远不会受到限制,指令在原贴中有给出。
目前与 Laggoggles 互不兼容,请择二其一。


Foamfix(客户端选装,可降低内存占用)
这是款出了名的优化模组,它能够大幅度的降低内存占用以及缓解原版一些卡服的问题
服务端安装方法:
在装入服务端后先启动一次,若发生崩溃请打开配置文件 foamfix.cfg,找到下列选项

代码:

  1. B:optimizedBlockPos=true
  2. B:patchChunkSerialization=true
将这两个项改为 false 保存后重启服务端即可。


Laggoggles(客户端选装)
用于检测服务端内卡服的方块or实体。客户端需要安装 Forge 版(服务端安装 SpongeForge 版)
使用方法很简单,在游戏内按 Ins 按键,点击 world 。等待30秒即可出卡服原因报告。
目前与 Tiquality 互不兼容,请择二其一。


TickProfiler(仅服务端安装)
作用与 Laggoggles 相似,只不过前者带有GUI界面和传送功能。
不想用 Laggoggles 的话可以改用这款。使用指令请看 Github


AI-Improvements(仅服务端安装)
用于缓解大量怪物造成的卡服情况。


Phosphor(仅服务端安装)
用于降低大量的光照运算导致的TPS下降。(多模组世界探险服效果显著)
若安装了此模组,请确保 Sponge 的异步光照功能处于关闭状态。下面有讲异步光照在哪。


Spark(仅服务端安装)
用于分析服务器内存回收导致的停顿时间以及整个服务器的线程占用情况。Wiki 有写指令使用方法。


OfflineServerUsernameWebRequestNetworkManager(仅服务端安装)
我们请求4z大佬写的修复类插件,简称 OSUWRNM ,中文译名:管理离线服务器用户名网络Web请求
用于防止服务器在 onlinemode 为 false 状态下导致检索离线用户名卡死主线程导致蹦服的情况。
该蹦服问题具体表现在使用 /tp /tphere /invsee 等等可以操作离线玩家的指令时导致主线程卡死。
具体原因是使用此类指令检索离线玩家信息时需要联网请求到 mojang 服务器,由于国内大部分服务器连接 mojang 延迟过大甚至无法连接导致主线程卡死未响应。由于官服自带特性以及插件未做处理导致 Sponge 在国内此问题较为严重。在这里特别感谢 4z 修复了Sponge腐竹们一直头疼的问题。


建议科技服安装模组:
BitHop (客户端也需要安装)
用于优化漏斗造成的延迟,建议科技服屏蔽原版的漏斗,改用该模组的漏斗。




接着对服务端进行配置:
在这之前先了解一下MC里的时间计算方式,MC是按 Tick 计算时间的,20Tick = 1s
首先打开官服原本的配置文件,根目录的 server.properties 文件


找到 network-compression-threshold 项,该项的作用是对网络封包进行压缩。默认值为 256 ,这里可以更改为 512 ,能够少量降低CPU占用但额外增加些带宽消耗。若服务器带宽比较吃紧的话,这里建议不做改动。


找到 max-tick-time 项,建议将此项改为 0,用于避免服务器TPS较低导致的强制崩服(SpongeVanilla不建议修改)


关于 view-distance 项,海绵端可不用在这里调视距,第三章里所说的调视距只是懒人式的,如果你想优化,请往下看


接下来是打开海绵端的配置文件,位置在 \config\sponge 的 global.conf 【请关服后再修改】
这里的 global.conf 是指全局设置,也就是所有世界默认的配置
这里以我目前时间的最新版 spongeforge-1.12.2-2768-7.1.6-RC3639 为例
(低于 7.1.6-RC3639 这个版本的或许会缺少一些选项,可无视)


item-despawn-rate (默认为6000,不装扫地插件的话建议改为3600或更低,单位是 tick )
作用是控制掉落物的消失时间,6000tick 即为5分钟,并且仅在区块加载时才会计时


living-hard-despawn-range (默认为128,建议80 )
作用是控制实体在超过玩家距离多少时才会消失,是按半径算的。


max-speed (默认为100,建议25 )
作用是删除速度过快的实体,这里是按速度的平方计算的,25即为5
主要是为了避免一些模组出现速度过快的实体并且会强制加载区块的实体
如果有影响的话还是建议改回默认的100,即速度10


entity-activation-range {}
该选项是用于更改实体的激活范围,如果有模组没有使用原版的实体类型,可将 auto-populate 设为 true 并开启一次服务端再关闭,他会自动将模组的实体类型加入进来。这里只讲原版的参数。
ambient=32周围环境实体,建议改为24或更低
aquatic=32水中生物实体,建议改为8或更低
creature=32动物实体,建议改为16(过低会导致难以用食物勾引动物)
misc=16其他实体,例如掉落物,建议改为4或更低(过低会导致掉落物要靠近才能看见)
monster=32怪物实体,建议改为24或更低(过低会导致要靠近怪物他才会攻击你)


realtime (默认为 false ,建议 true)
该选项是尽可能的让一些东西以现实时间处理,例如玩家聊天响应。
如果服务端TPS较低,可以依然保持玩家的正常游戏。
国内比较火的 cat 端也copy了海绵端的这个优化功能,可见开启realtime的重要性。


tileentity-activation (默认为 false ,建议 true)
用于强制修改tile方块的更新速率,后面会讲到如何修改。


async-lighting (默认为 true ,建议 true)
开启该选项可让光照系统异步计算,默认是开启的可以不用管。
若安装了 Phosphor 模组,请将此选项关闭!纯净服可保持开启。


cache-tameable-owners (默认为 true ,建议 true)
用于缓存被驯服动物的主人信息,默认是开启的可以不用管。


drops-pre-merge (默认为 false ,建议 true)
开启后会预先合并掉落物。一些根据掉落进行判定的模组可能会出现问题。


eigen-redstone (默认为 false ,建议 true)
用于优化红石的算法,可缓解高频红石卡服的问题
后面两项不用开,仅将 enabled 设为 true 即可。


panda-redstone (默认为 false ,旧版建议 true)
在旧版的 Sponge 里没有前面的 eigen-redstone 功能,可使用这个来代替。
新版的建议开启前面那项即可,此选项可保持关闭。


spawner {}
该项是用来控制每位玩家周围会生成的实体数量以及生成速度。
spawn-limit-ambient=15生成周围环境实体限制。可适当调节
spawn-limit-animal=15 生成动物实体限制。可适当调节
spawn-limit-aquatic=5 生成水中生物实体限制。可适当调节
spawn-limit-monster=70 生成怪物实体限制。建议适量降低
tick-rate-ambient=400 生成环境实体的间隔,单位tick。可适当调节
tick-rate-animal=400生成动物实体的间隔,单位tick。可适当调节
tick-rate-aquatic=400生成水中生物实体的间隔,单位tick。可适当调节
tick-rate-monster=1 生成怪物实体的间隔,单位tick。建议改为2或更高


tileentity-activation {}
用于强制修改tile方块的更新速率,需要前面讲同名字的选项设为 true 才能在这里修改(对科技服性能影响巨大)
auto-populate 设为 true 后开启一次服务端再关闭即可自动写入模组可修改的部分。
default-block-range 方块激活范围。意思玩家距离方块超过多少格后方块暂停工作。默认为64,可改为48或更低。适当降低可大幅度提升服务器的TPS,但是若太低了会导致玩家旁边的机器经常暂停运作。
default-tick-rate 方块的刷新速率,默认为 1 也就是会将方块的 20tick 更新速率除以 1 的速度进行工作(就是不变),若设为 2 即让方块的更新速率变为 10tick(20/2=10)。这里强烈不建议修改默认速度,仅单独修改模组的各个方块更新速率。
前面带有 default 的均为全局设置,建议仅修改在重启服务器后自动导入列表的项目。为什么说对科技服性能影响巨大?因为科技服往往每位玩家都会制作大量的机器工作实现自动化设备。而机器全都是属于tileentity,也就是默认每秒都会计算20次,并且在默认的距离玩家64格范围内就会开始工作。服务器当然不止是一个玩家,而是大量玩家一起建设大量的机器,从而导致服务器被这些机器导致的TPS越来越低。因此建议在这里降低机器的工作速率。例如改为2,机器将由原先的每秒工作20次变为每秒仅工作10次。当然这样修改会导致发电量或工作速度降低一半,改为3则降低3倍。因此如果你想在不影响工作效率的前提下降低工作速率,则需要前往模组的配置文件将你所降低的那个机器的生产力提高。例如你降低了ic2的风力动能发生机,那么就需要前往ic2的配置文件将风力动能发生机这个机器的发电量*2,这样一来发电量和原先依然一样。但是并非所有模组都可以自定义这些机器的生产力。因此需要自行衡量降低更新速率的后果。(请勿更改AE2的机器更新速率)点击查看米二的教程


world {}
在这里可以修改全局世界的默认设定(这里没有写出来的建议不做修改),下面会讲如何单独设定世界
auto-player-save-interval=900 自动保存玩家数据的间隔,单位tick。这里建议更改为6000或更大
auto-save-interval=900自动保存地图数据的间隔,单位tick。这里建议更改为6000或更大,可以跟前面的错开时间
chunk-unload-delay=15 区块卸载延时,单位秒。这里建议全局 15,并且不同世界单独设定不同数值。
deny-chunk-requests=false拒绝对未加载的区块进行操作。建议改为 true。若某些模组导致出问题了请改回 false
flowing-lava-decay=false 快速移除岩浆。建议改为 true。当玩家取走或堵掉岩浆后,剩下的会跟水一样快速消失。
item-merge-radius=2.5 合并掉落物的半径。这里建议全局 2.5,并且不同世界单独设定不同数值。
keep-spawn-loaded=true 保持出生点加载。这里建议全局 false,并且不同世界单独设定不同布尔值。
load-on-startup=false 在开服时加载世界。建议改为 true。
mob-spawn-range=4 生物生成视距,单位 chunk。可适当的修改该项,修改该项对性能影响不大。
pvp-enabled=true 是否开启 PVP,可单独设置不同的世界。
view-distance=-1视距,单位 chunk。在这里修改此项会覆盖一开始根目录配置文件的设定。建议全局为 8
weather-ice-and-snow=true 下雨和下雪,可单独设置不同的世界。
weather-thunder=true 打雷,可单独设置不同的世界。关闭可微量提升性能。


接下来是打开同目录下的 worlds\minecraft 文件夹,在这里可以看到不同类型世界的文件夹
这里以 overworld(普通世界)举例,打开后可以看到你在服务器所创建的所有世界的文件夹
dimension.conf 是用来修改 overworld 所有世界的设定。
如果想单独修改 world 世界,请接着打开 world 文件夹。

最后可以看到一个 world.conf 文件,打开它进行单独的设定。


这里有两种情况,一种是打开后会看到有几项配置,如下图



此时将全局设定里你想更改的项复制进去即可,例如我想将 world 世界的视距设为 6

其他的设定也是同样的方法复制进去即可。记得保存。


还有一种情况是打开后空白的没任何选项,那么需要自己手动添加



手动添加示例:



HOCON格式允许使用TAB,也就是可以不用按4次空格,直接TAB就好。
实际上可以连空格和tab都不需要,只要符号对了格式依然是正确的,空格和tab只是为了方便阅读。


这里分享一下我个人常用的世界设定方式:
主城世界:开启保持出生点加载,视距不改,关闭下雨打雷PVP,区块卸载延时默认或调高
生存世界:视距稍微降低一些 比如6,区块卸载延时默认或稍微降低,掉落物合并可改为3。
资源世界:视距可大幅度降低 比如4,区块卸载延时降低为10,掉落物合并可改为4,关闭打雷,开启快速移除岩浆。
地皮世界:视距不改,区块卸载延时降低为10,掉落物合并不做修改。
你可以根据你服务器的情况添加不同的设定参数。
至于其他世界,可根据你服务器的用途参照生存世界和资源世界的设定来修改。




接下来开始配置 Forge 的选项(这里以 Forge2815 为例)
位置在 config 文件夹的 forge.cfg 文件以及 forgeChunkLoading.cfg 文件。


首先打开 forge.cfg 文件
B:disableVersionCheck建议将此项设置为 true ,用于关闭版本检查,提高启动速度。
B:removeErroringEntities建议将此项设置为 true ,可避免实体错误导致崩服。
B:removeErroringTileEntities建议将此项设置为 true ,可避免Tile方块错误导致崩服。
B:Global建议将此项设置为 false ,用于关闭一些模组的检查更新,提高启动速度。


接下来打开 forgeChunkLoading.cfg 文件
B:asyncChunkLoading建议将此项设置为 true ,可对区块进行异步加载,减少对TPS的影响。




解决跑图卡服问题:
往往跑图卡服是由于玩家经过的地方没有被加载过,导致第一次加载的区块需要时间计算
再加上可能会有其他模组的生成器,导致计算时大幅消耗CPU资源使得TPS下降严重因此要解决玩家跑图卡服的问题也很简单,只要让所有区块预先生成一次就可以缓解这一令人头疼的问题。
当然了,MC的地图可以大到令你磁盘爆满的地步,因此首先你需要输入指令设定一个地图边界。


首先使用 /world tp [world] 传送到要设定边界的世界。比如 /world tp test 就传送到了 test 世界。
接着如果要给 test 世界设定半径 10000 个方块(以本人为中心),就输入下面指令:
/world border set 10000



接着输入 /world border 检查一下



确认无误后,就可以开始预加载地图了,确保在没有玩家的情况下输入下面指令:
/world border gen -a -t 100 -f 1



接下来只要耐心等待即可。如果想取消预加载,可以输入撤销指令:
/world border cancelgen




启动参数设定:
启动参数的设定可以决定回收内存时会不会导致卡服,这里推荐使用 Rasgnarok优化指南 里的启动参数:

代码:

  1. java -Xms8G -Xmx8G -XX:+UseG1GC -XX:+UnlockExperimentalVMOptions -XX:MaxGCPauseMillis=100 -XX:+DisableExplicitGC -XX:TargetSurvivorRatio=90 -XX:G1NewSizePercent=50 -XX:G1MaxNewSizePercent=80 -XX:G1MixedGCLiveThresholdPercent=50 -XX:+AlwaysPreTouch -XX:+UseLargePagesInMetaspace -jar server.jar
其中,启动文件名以及最大和最小内存是可以自己更改的,但建议两个设定为一样而不是一大一小。


我个人实测此参数的效果如下:(范围7d)

每隔几秒会稍微回收一点,过了几个钟回收不来的时候进行一次大的回收,并且回收时TPS不会有太大波动。


TPS大部分时间稳定在19.8以上:(因本服玩家较少,测试可能会有误)




请勿尝试对海绵端使用 Openj9,部分插件可能会出现报错。
本帖优化教程仅针对 Sponge 端,请勿将其他服务端参考该帖子进行优化操作。
同时也不建议将其他服务端优化教程的方式用在 Sponge 上,出了问题后果自负。


第七章,服务端发生崩溃怎么办
首先需要清楚服务端是模组致命问题导致的崩溃还是主线程卡死导致的崩溃
在查找崩溃原因前请先检查下列配置是否已修改
根目录的 server.properties 文件中的 max-tick-time 是否为 0
config目录的 forge.cfg 文件中的 removeErroringEntities 以及 removeErroringTileEntities 是否为true
最后是检查根目录的 crash-report 文件夹内是否有最近崩溃的日志文件(对应时间)


如果 crash-report 文件夹内找不到对应崩溃时间的文件,则检查一下根目录内是否存在 hs_err 开头的log文件
若是有 hs_err 文件则表明服务端是因内存溢出导致系统强制关闭的意外崩服
解决办法只有减少视距和模组或者增加服务器内存,具体怎么做我就不多说了
若是有 crash 文件则表明有可能是模组、插件或服务端的致命问题导致的崩端。
此时需要找到对应崩服时间的崩溃日志,例如:



在安装了 notepad++ 的情况下右键使用 notepad++ 打开(请勿使用记事本打开)



下图只是个例子,这是个典型的服务端在启动时就发生的崩溃
原因:缺少 mcef 前置模组



再举个典型的服务端启动时发生崩溃的例子
原因:yyssb插件装了两个



再来个典型的服务端启动时发生崩溃的例子
原因:Forge版本没达到模组要求

这个很好解决,只要自己再去下载一下新版的forge重新安装,改一下启动参数即可


下面展示一个在服务端运行过程中突然崩溃的例子
原因:randompatches模组导致的崩溃(目前该问题已解决)

这种由模组原因导致的崩溃问题建议直接前往模组作者的Github发出isseus寻求帮助


崩溃的原因有很多,这里就不一一列出了,通常崩溃日志看多了就会有经验了
如果你实在看不懂的可以全选后复制,粘贴在 https://paste.ubuntu.com/

点击 Paste! 后会出现网址,例如

最后回复本帖将网址复制进来即可,同时最好说明下崩服有没有规律,比如干了某件事后才会崩的。


不过我也不是万能的,有不少奇葩的崩端原因我也未必能看懂,毕竟我不懂得Java,不是程序员。
通常我看不懂的就直接复制一份服务端用排除法解决,通常优先排除掉最近添加的模组或插件。


已知一些模组的崩溃问题:
这里的崩溃指在游戏中莫名崩溃的问题,并非启动时崩溃。启动崩溃均为自身整合问题。
血魔法:Forge版本请使用2808以上
匠魂:Forge版本请避开2832~2835这4个版本
音乐工艺:该模组代码十分不规范,与 Sponge 完全不兼容。
溪流:与 Sponge 暂不兼容。 已兼容,请使用最新版。
圣诞彩灯:与 Sponge 暂不兼容。
Elrol's GUI Elevator:与 Sponge 暂不兼容。
女仆:本身不兼容多人。可使用修复版


收录时间:19年7月05日


第八章,海绵端开服的常见问题
  • 如何给 Sponge 跨服实现使用 Authme 登录?
本方法不适用于 服务器内存过少面板服务器 的腐竹使用

首先看一下原理图了解一下大概实现方式



从图中可知,想要实现跨服除了本教程所教的搭建 Sponge 端以外,
还需要作为登录服用的 Spigot 端以及跨服用的跨服端(也叫 Bungee 端)。
然后模组服可不必再加登录插件,只要在登录服加登录插件即可。


接下来讲一下怎么搭建跨服端
这里推荐各位使用 Waterfall ,操作简单方便,可用 bungee 插件并且支持连接 Forge 服务端。
先前往官网下载好 Waterfall官网:https://papermc.io/downloads#Waterfall



单独用一个文件夹放这个 jar 文件



创建一个 txt 文本文档并双击打开,输入启动参数(以下为建议参数)

代码:

  1. java -Xmx512M -Dfile.encoding=UTF-8 -Xincgc -XX:MaxPermSize=128M -jar waterfall-280.jar
请记得修改上方的 waterfall-280 文件名字
保存后更改后缀为 .bat 格式文件(不会更改后缀名请看第一章)

接着双击该文件启动,稍等片刻即可启动完毕(第一次启动需要一些时间)


若出现了下图黄色的字样,请关闭后删掉 modules 文件夹内对应的文件再重新启动
例如下图的是 cmd_list.jar

(关闭跨服端并非输入 stop ,而是 end





接着返回根目录,打开 config.yml 文件



并且修改一下红框的部分,修改为截图中的样子即可(注意编码要 UTF-8)
由于跨服端的配置信息并非固定顺序,因此每个人的配置信息顺序都不一样,但内容是一致的



其中红框内蓝色框框的是端口号,需要根据自己服务器的情况修改,
上方两个端口号等同于开放给玩家连接用的端口号。
下方两个则是各服务端的端口号,只要不是相同的就可以。


修改后对应服务端的 server.properties 文件内的端口号也要更改为与上方的一致。


接着安装 motd 插件,推荐使用梨子的 ColorMOTD 插件
在上方超链接帖子中直接下载插件并放入 plugins 文件夹即可






重启跨服端后会生成对应的文件夹,打开文件夹后打开 config.yml 文件



你会发现里面是空的,没有任何字。接下来返回原贴,找到配置文件示例并复制



粘贴在刚才空白的配置文件内并保存,最后只要根据注释以及原贴教程自行配置即可



跨服端大致弄好后可以开始搭建登录服
登录服的下载地址同刚才的一样
https://papermc.io/downloads#Paper-1.12
下载最新的 1.12.2 即可(不建议使用1.13.2)


下载好后将 jar 文件另外放在一个文件夹内,并再新建一个文件夹名为 “cache” ,如下图



接下来在浏览器里输入以下网址开始下载 1.12.2 的官方核心(下载到 cache 文件夹里面)
https://s3.amazonaws.com/Minecraft.Download/versions/1.12.2/minecraft_server.1.12.2.jar
如果下载的是zip,请将后缀改为jar。这里需要将下载文件更名为 mojang_1.12.2.jar






确认无误后,返回根目录,创建一个 文本文档.txt
在里面输入启动参数,paper-1613 为刚刚下载核心的名字

代码:

  1. java -Xmx1024M -jar paper-1613.jar
保存后更改后缀为 .bat 格式文件(不会更改后缀名请看第一章)


双击启动,就会开始下载额外的文件。请稍等片刻...



下载好后会自动退出,接下来会发现根目录多了几个文件,
打开 eula.txt 将里面的 false 改为 true 保存并退出



再启动一次服务端,直到出现 Done 为止就可以输入 stop 关闭服务端



接下来打开根目录的 server.properties 文件
跟之前的一样,将 online-mode=true 改为 false
由于是登录服,建议再修改一下几项
allow-nether=true 改为 false
max-world-size=29999984 地图边界,根据情况而定,可以改为10
server-ip=127.0.0.1这里需要在后面加上127.0.0.1,防止玩家越过了跨服端直接进入登录服
spawn-npcs=true 改为 false,不生成村民
spawn-animals=true 改为 false,不生成动物
pvp=true 改为 false,禁止玩家斗殴
difficulty=1 改为 0,和平模式
gamemode=0 改为 2,冒险模式则无法破坏地形
max-players=20 最大玩家数,可改大一些例如 100
spawn-monsters=true 改为 false,不生成怪物
generate-structures=true 改为 false,不生成建筑
view-distance=10 改为 4,降低视距减少不必要的带宽占用
最后是修改最重要的端口号 server-port=25565
将端口号设置为跟跨服端里设置的一致,例如上方示例中设置的是 25566,那么这里就改为 25566


改好后保存并退出,接着打开根目录的 spigot.yml 文件
找到 bungeecord: false 选项,将它改为 true


修改好 spigot.yml 后保存退出,再打开 bukkit.yml 文件
找到 allow-end: true 选项,将它改为 false ,关闭末地
找到 autosave: 6000 选项,将它改为 0 ,关闭自动保存
这里修改这两项的目的是降低登录服不必要的开销,可选择不关闭
若关闭了自动保存,如果你有修改登录服的建筑,需要手动输入 /save-all 进行保存。


接下来开始给登录服安装一些插件
ProtocolLib (前置)
AuthMe (登录系统)
Vault (前置)
Stp (服务器传送)
BungeeAutoJoinServer (登录后自动传送)


其中 服务器传送 和 登录后自动传送 只是用来给玩家从登录服传送到模组服的插件
你可以不用这两个插件,去寻找更好的跨服传送插件,例如 NPC传送、传送门传送、右键物品传送 等等……
Authme 的配置方式请看搬运贴配置文件示例的中文注解来进行配置


最后是修改海绵端的配置文件
打开你海绵端的文件夹,打开根目录的 server.properties 文件并修改下列两项
server-port=25567端口号,根据跨服端的配置文件里设定的端口号进行修改,需要一致
server-ip=127.0.0.1限制ip,防止玩家越过登录服直接进入模组服


接下来是打开海绵端的配置文件,在 \config\sponge 文件夹里,打开 global.conf 文件
首先找到 ip-forwarding=false 选项,将它改为 true
最后找到 bungeecord=false 选项,将它改为 true
保存后关闭
记得海绵端里不用加登录插件,因为玩家现在是在登录服里进行登录的。
现在将三个端都开起来即大功告成!


  • conf 文件所使用的 HOCON 格式不好编辑?

由于 NotePad++ 不支持对 HOCON 格式的颜色标注导致不少腐竹在编辑 conf 文件时容易出现格式错误。
但由于 HOCON 格式与 JSON 格式较为相似,可以在 NotePad++ 里改用 JSON 格式标注,更改方式如图:



更改完后就可以看到如图所示的颜色标注



不过只能说是大致上差不多,但部分地方还是会出现标注错误的,例如这样写:



这种情况下显然是 HOCON 独特的写法,JSON 并没有这种写法导致标注出问题的。


因此,如果你想进阶的整合 Sponge 端的话,这里推荐你改用 VSCode 并装上 4z 的 HOCON Colorizer
HOCON Colorizer 目前的特性:
  • 语法高亮
  • 基于缩进的文本折叠
  • 内建语法解析和错误提示
  • Ctrl+Shift+I 一键格式化

安装方式
首先点开右侧链接打开 VSCode 官网下载软件:https://code.visualstudio.com/



下载好后打开安装包,可以看到如下界面,一直点 “下一步” 即可。



安装完毕打开后会发现全是英文的,这时需要改成中文界面,请按照下图示范操作



安装完毕后 按下 Ctrl+Shift+P 即可出现下图窗口



接着输入 config 在搜索结果里点击下面图示的第一个



然后点击 zh-cn



最后会弹窗提示你重开 VSCode ,点击 Restart 即可



重开完后就会发现变成中文界面了



接着用同样的方法安装 HOCON Colorizer 插件
请看好作者是:Yanbing Zhao ,不要安装成了其他插件



安装完毕后可以尝试一下使用 VSCode 打开 conf 配置文件


勾选上 “始终使用此应用打开” 即可将默认 NotePad++ 转为 VSCode 打开 conf 文件



此时就可以让各位编辑 hocon 格式时更加便捷快速(例如图中有一处出现了格式错误)



由于 HOCON 格式对空格和TAB不严格,导致有些人自己写的配置文件格式很杂乱但依旧能用
例如下图所示,杂乱无章,让其他人打开你写的菜单看都看不懂(自己看得懂就好系列)



这时候就需要格式化这个配置文件,点击右键即可出现 “格式化” 按钮



格式化好之后,就变成了十分规范的配置文件(让菜鸟写起来跟大佬写的一样规范)



  • 如何导入一个存档并设为主城?
由于 Sponge 的特殊性,导致有不少腐竹第一次接触 Sponge 时会遇到导入存档后重启服务器就消失的情况。


这里需要注意以下几点:
  • 存档名字一定要跟文件夹名字一致
  • 存档名字 ≠ 文件夹名字
  • 模组服的多世界存档位置均在根目录的 world 文件夹内
  • Nucleus 有区分 第一次进服出生点 以及 世界出生点

首先教一下如何修改存档名字
这里用玄霄阁存档为例,如有冒犯请联系我
下载好后先将它解压到客户端saves 文件夹内



不知道 saves 文件夹在哪?
一般情况下在 .minecraft 文件夹内就可以看到
二般情况下就是在 .minecraft\versions\版本名\ 里可以看到


解压好后先将文件夹改名,例如 “zc” 如下图所示



改名后启动客户端,点击 单人游戏 就可以看到刚才的存档文件夹,请看下图中红框位置所示

上面的是存档名字,下面的是文件夹名字,现在现在需要将两个名字改成一致,选中后点击 编辑


将它改成 zc 后点击 保存世界



此时显示都是一致时即修改完成(不要进入世界)



接下来回到 saves 文件夹中,将 zc 文件夹复制到服务端根目录 world 文件夹内



接下来在控制台输入 /world create zc -i -m sponge:void 即可(-m sponge:void 是虚空的意思,可去掉)
(可能有人以为我打错字了多了 / ,实际上 Sponge 并不会在意控制台是否有斜杠)



这里解释一下这条指令的含义:
/world create zc -i -m sponge:void
首先斜杠就不解释了。
然后是 world create zc 部分,意思就是创建一个名为 zc 的世界
接着是 -i 部分,意思就是导入现有存档
最后是 -m sponge:void 部分,意思是使用虚空修改器,就是指接下来这个世界新生成的区块都会是虚空


当生成好之后,在游戏中输入 /world tp zc 即可传送到 zc 世界



然后输入 /setspawn 设置世界出生点
以及输入 /setfirstspawn 设置第一次进服出生点


设置好这两项后前往第三章查看修改 nucleus 配置文件的部分即可




修改后记得要输入 /nucleus reload 重载配置文件


此时你已加载并设置好了主城!


  • 插件都放在 mods 文件夹下跟模组会搞混?
由于 Sponge 机制问题,插件在 Forge 看来算是 Sponge 的附属模组,不过也是可以分开的。


方法一:
在 mods 文件夹内新建一个名为 1.12.2 的文件夹。

这是 Forge 本身的功能,可以读取 mods\1.12.2 文件夹下的非 coremod 模组。
因此一般的模组和插件都可以放在该文件夹下运行,像上图中 TickProfiler 属于 coremod 模组就不能放进去。


方法二:
在 Sponge 配置文件中找到 plugins-dir= 这项,默认配置是 &quot;${CANONICAL_MODS_DIR}/plugins&quot;
也就是说 Sponge 不仅会读取 mods、1.12.2 文件夹里的插件,还会额外读取 plugins 文件夹里的插件



当然了你可以自定义读取插件的额外路径。
例如改成:&quot;${CANONICAL_MODS_DIR}/chajian&quot; ,就会读取 \mods\chajian 目录下的插件。
如果你想改成读取根目录下的 plugins 文件夹跟 Bukkit 一样,可以改成 &quot;${CANONICAL_GAME_DIR}/plugins&quot;


同样的上面有一个 config-dir= 选项,就是用来修改插件配置文件的目录,修改的方式与插件读取目录一样。
不过由于特殊性,不太建议修改 config-dir= 这项设置,以防出问题。

最后需要注意一点。
凡是带有 Mixin 标签的插件,均不能放在任何子目录下,只能放在 mods 文件夹内!



  • 如何为服务端添加定时重启功能?
如果是纯净服的话,可能一个星期甚至一个月再重启一次也基本没什么问题,但是模组服就不一样了。
由于模组开发者水平不一,导致不同模组都会有不同程度的内存溢出,因此模组服每日重启一次一般是必要的。


首先下载并安装好 MMCReboot 插件,建议使用最新版,里面已包含楼主先前提交的中文文本。
启动一次服务端后关闭,可以看到 config 内生成的 mmcreboot 文件夹,接着打开 mmcreboot.conf 文件。



白色箭头处默认为 Fixed ,意思就是间隔时间重启,若改成 Realtime 则是指定时间重启,改成 None 就是取消自动重启。
图中绿色框框中的数字则是修改重启的间隔时间,而蓝色框框处则是修改重启的指定时间,可以自己增加或删除重启时间点。
红色箭头是指语言文本,改成 ZH 后即可将指令注释显示成中文。
截图中还有个 bossbar 的配置,默认是关闭的,开启后可自动在游戏上方显示重启倒计时以及进度条。


剩下的其余配置均为重启提示间隔、提示方式、提示消息等配置,稍微懂点英语的可以自行作修改,看不懂的话就不用管他。
最下方还有个 TPS 过低自动重启以及投票重启功能


use=false 如果改成 true 则是 TPS 过低时自动重启服务器。
红框中的默认是 true ,如果改为 false 则关闭玩家投票重启功能。
投票重启功能的相关配置在大概 70~90 行的位置,默认是同意票达到在线玩家数的 60% 则重启。


其它相关指令请输入 /reboot help 查看



给予玩家 mmcreboot.reboot.vote 权限即可让玩家自行发起投票重启。


虽说这个插件是多功能重启插件,但充其量也只是帮你输入了 /stop 让服务器关闭而已。
因此你除了安装此插件以外,还需要修改你的 .bat 文件。


右键根目录的 .bat 文件,点击 使用 notepad++ 打开。
在 java 启动参数那行的上方插入下面的命令:

代码:

  1. @ECHO OFF
  2. @set a=0
  3. :start
  4. title Sponge服务端-1.12.2 重启次数[%a%]
接着在 java 启动参数那行的下方插入下面的命令:

代码:

  1. choice /t 5 /d y /n >nul
  2. set /a a=%a%+1
  3. goto start
这样一来只要服务端一被关闭就能够自动重新启动。


完成后的整体看起来应该是这样的:



这样一来便做好了自动重启功能。


  • 如何为服务端添加定时备份存档功能,以及如何回档?
首先下载 AromaBackup 模组以及 Aroma1997Core 模组。
其中后者是前置插件,如果你已安装了如下模组,请先检查一下你的服务端是否已装有上列模组避免重复。



下载好后,用压缩软件打开 AromaBackup 模组 jar 文件
接着找到 \assets\aromabackup\lang\en_us.lang 文件,如果图标是 Notepad++ 则直接双击打开。



如果不是则解压到桌面后再用 Notepad++ 打开进行修改。



自行大致的修改几个经常显示的文本即可,保存后覆盖到原先压缩包内的 en_us.lang 文件。
此时已汉化好该模组,接着拖入服务端的 mods 文件夹或 1.12.2 文件夹即可。
由于它不是插件,请不要放入到 plugins 文件夹内!并且此模组不需要在客户端添加。


接着启动服务端后关闭,打开 config 文件夹,打开 \aroma1997\aromabackup.cfg 文件
可参考我个人汉化的配置文件:

代码:

  1. # Configuration file

  2. backup {
  3.     # 压缩文件的格式,可用的格式:"zip", "tar", "tar.gz", "folder"
  4.     S:compressionType=zip
  5. }


  6. backup_location {
  7.     # 备份文件的文件名。支持的变量有:
  8.     #world, year, month, date, hour, minute, second, identifier.
  9.     #请注意: 建议使用变量,但不强制使用。目的是让两个备份文件使用不同的文件名,确保您的文件名是独立的。 [default: %world%/Backup--%world%--%year%-%month%-%date%--%hour%-%minute%]
  10.     S:filename=%world%/Backup--%world%--%year%-%month%-%date%--%hour%-%minute%

  11.     # 备份路径。可用绝对路径或minecraft相对路径。
  12.     S:location=./backups
  13. }


  14. backup_schedule {
  15.     # 每隔多少分钟进行一次备份。0 则表示关闭自动备份。
  16.     I:delay=30

  17.     # 应保留多少个完整的备份文件。当备份文件达到设定数字时,将自动删除最旧的完整备份以及依赖于它的增量备份文件。 [range: 1 ~ 2147483647, default: 30]
  18.     I:fullBackupsToKeep=30

  19.     # 每个完整备份应包含多少个增量备份。设置不为 0 时则启用该功能。例如你设置成 5 ,则每当有一个完整备份时,会按时间间隔再生成 5 个增量备份。 [range: 0 ~ 500, default: 0]
  20.     I:incrementalBackupsToCreate=0

  21.     # 要保留多少个增量备份文件。 当存在这么多增量备份文件时,将自动删除最旧的增量备份以及依赖于它的增量备份文件。 [range: 1 ~ 2147483647, default: 100]
  22.     I:incrementalBackupsToKeep=100

  23.     # 是否在服务端刚开启好时进行一次完整备份。
  24.     B:onStartup=true

  25.     # 如果服务器上没有任何玩家,则跳过那个时刻的自动备份。
  26.     B:skipbackup=true
  27. }


  28. general {
  29.     # 是否允许所有玩家使用 /backup 命令。
  30.     B:allPlayers=true

  31.     # 如果开启了黑名单,则不备份下列维度。
  32.     I:blacklist <
  33.   >

  34.     # 压缩率。请设置为 9 (高压缩) 至 1 (低压缩)。[译者注:高压缩会减少磁盘占用空间但是会增加备份时的 CPU 占用以及备份时长,低压缩则相反]
  35.     I:compressionRate=5

  36.     # 如果设置为 true 则使用白名单,如果设置为 false 则使用黑名单。
  37.     B:useWhitelist=false

  38.     # 如果开启了白名单,则仅备份下列维度。
  39.     I:whitelist <
  40.   0
  41.   1
  42.   -1
  43.   >
  44. }


这里不建议你修改备份文件名以及备份路径。
默认的备份间隔为 30 分钟,建议修改为 60 分钟或更长时间。同时强烈建议打开增量备份功能,否则建议每 720 分钟才进行一次备份。
incrementalBackupsToCreate 设置一个数字即可开启增量备份。
例如间隔设置为 60 ,增量设置为 11 ,则表示每隔 11 个钟之后进行一次完整备份,这 11 个钟里有 11 个增量备份。
fullBackupsToKeep 强烈建议更改小些,除非你磁盘空间很多,否则很容易磁盘爆满。
allPlayers 功能默认是开启的,强烈建议关闭,否则玩家也能让服务器开始备份存档。


备份文件的用法(回档)
先关闭服务端,打开根目录的 \backups\world 文件夹(默认情况下)。

从文件大小上可以看的出来,增量备份一定会比完整备份要小的多。
就拿图中的备份为例,假设你现在要对服务器进行回档,并回档到大概 15:30 左右的样子。
这时就会发现完整备份只有 14:55 而增量备份刚好在 15:30 左右,因此需要使用增量备份。


首先解压完整备份文件,右键点击提取到 xxx 文件夹,不要提取到当前位置。(有些软件提取叫做解压)
或者你也可以自己新建一个文件夹,然后打开备份文件,将里面所有的文件都解压到新建的文件夹。






完成后看到的大致上是这个样子的,接着将这个文件夹改名为 world
接着打开增量备份文件,将里面的所有文件解压到刚刚改名的 world 文件夹内(大部分压缩软件支持直接拖出去)



若出现提示则点击替换/覆盖。不要跳过或忽略!



接着剪贴这个 world 文件夹,返回到根目录,先删除原有的 world 文件夹,然后在根目录粘贴即可。切勿覆盖!


注意:
假设你想回档到 18 点,而完整备份是 14 点钟,期间有 15、16、17 点的增量备份。
这时你就需要先解压 14 点的完整备份,然后按顺序将 15,16,17,18 点的增量备份一次一次的覆盖进去。
最后再将解压好的 world 文件夹放到根目录即可。记得一定要先删掉原有的 world 文件夹而不是覆盖或替换。
  • 如何设置礼包以及新手进服物品?
使用 Nucleus 基础插件即可设置礼包以及新手物品。
请先输入 /kit 指令了解一下礼包系统的强大功能



add - 创建礼包
give - 给指定玩家礼包
set - 更新礼包内容
cost - 礼包费用
hidden - 在列表隐藏礼包
edit - 编辑礼包内容
setcooldown - 设置冷却时间
list - 礼包列表
remove - 删除礼包
command - 给礼包添加执行指令
toggleredeemmessage - 领取礼包是否有消息
view - 查看礼包内容
rename - 重命名礼包
autoredeem - 登录自动领取礼包
permissionbypass - 礼包无需权限
create - 创建并编辑礼包
resetusage - 重置礼包冷却
onetime - 只能领一次
setfirstjoin - 第一次进服领取
info - 查看礼包信息


在了解完这些功能后,试着自己创建一个 “每周礼包
首先在自己背包里放好每周礼包的物品,例如这样:



接下来输入 /kit add 每周礼包 即可创建完成(可以使用中文名)



注意:如果你的背包有其他非礼包物品的话,请使用 /kit create 每周礼包



如果你漏添加某个物品,可输入 /kit edit 每周礼包 进入编辑界面进行修改


然后你想给礼包内容添加1000金币奖励的话,输入下列指令:
/kit command add 每周礼包 eco add {player} 1000

你可以同时添加多个执行指令,所有指令都以控制台执行。


接着添加冷却时间,这里示范是每周礼包,那么就是一周的冷却时间,因此可以这样输入:
/kit setcooldown 每周礼包 1w
当然了你也可以把 1w 改成 7d168h10080m604800s(闲着蛋疼)



最后是给玩家领取 “每周礼包” 的权限:nucleus.kits.每周礼包
你可以给默认组,或者只给 vip 的玩家领取这个礼包权限


关于玩家领取礼包的方式有很多种,可以输入 /kits 查看列表并用鼠标点击领取相应礼包,也可以输入 /kit 每周礼包 直接领取。或者你也可以在菜单里做一个点击领取每周礼包的按钮,甚至可以让玩家登录时自动领取。
如果你想设置为登录时自动领取的话,输入 /kit autoredeem 每周礼包 true


如果出现了下图红色英文字提示:



则先要修改配置文件 main.conf 下图选项为 true 。



最后输入 /nucleus reload 重置配置文件即可


做好礼包后可以试着领取看看给予的物品以及执行的命令是否正确







接下来是创建进服新手物品:
先用上述同样的方法创建一份礼包,例如叫 “进服礼包



接着使用命令 /kit onetime 进服礼包 true 设置为只许领一次
然后使用命令 /kit setfirstjoin 进服礼包 true 设置在第一次进服时自动领取
再是使用命令 /kit hidden 进服礼包 true 将此礼包在列表里隐藏(只在进服时领一次,列表显示没多大意义)
最后使用命令 /kit permissionbypass 进服礼包 true 忽视权限检查,无需再特意给权限


此时只要有新手第一次进服,背包里就会自动出现礼包中的物品




  • 如何创建和应用 VIP 权限组?
在上面的教程中很多处都有对权限部分的讲解,如果你还是不太会设置权限组的话可以看这里。


这里打个比方,现在需要创建一个叫做 VIP 的权限组,方便让玩家氪金后给他相应的权限。
首先使用命令 /lp creategroup VIP 创建一个新的权限组,名字叫 VIP
接着使用命令 /lp group VIP permission set xxx.xxx trueVIP 组添加权限。
如果有需要你也可以将权限设置为 false比如 ore 上就有一款封禁插件就是靠权限系统运作的,有权限的就禁止他使用指定物品,没有权限的就不会禁止。这时候如果默认组是有这个权限的话就相当于不能用这个物品了,而让 VIP 能用的话就需要给 VIP 组添加这个权限并设为 false ,反过来即可。
当你把 VIP 组的 权限(permission) 和 元标签(meta) 都设定好后,就需要设置一个 权重值 。


什么是权重值?
比如当默认组的其中一个 meta 值设置的是 100 ,而 VIP 组同一个 meta 值设置的是 150 的时候,这个拥有 VIP 组的玩家究竟是会拥有 100 的值还是 150 的值?这时候就需要用到权重了,权重大的权限组则优先判断。
例如默认组默认为 0 ,把 VIP 权重设为 10 ,则玩家会拥有 150 的值而不是 100 的值。
使用命令 /lp group VIP setweight 10 即可将 VIP 组权重设为 10
同理,你可以将什么 VIP2、3、4、5 SVIP SSVIP SSSVIP SSSSVIP SSSSSVIP 啥的都分配好权重值。


分配好权重值基本上就完成了,接下来你需要了解一下两种设置 VIP 的方式。
第一种是将玩家的权限组成 VIP 组,第二种是在玩家现有权限组的基础上再增加一个权限组
也就是一个 set 一个 add
理解不来?看下图




如果你是想用 set 方式的话,则需要对 VIP 组设置一个继承组。
使用命令 /lp group VIP parent set default 即可让 VIP 组继承默认组的权限。
如果是用 add 方式的话则不用设置。个人推荐是使用 add 方式,这样会更便于管理玩家拥有的权限。


现在有许多服务器都会弄很多30天、90天之类的氪金方式。
也就是说如果你是将玩家设置或添加了 VIP 组的话,如果到了 30 天你就需要自己把他们的组换掉或删掉。
更换权限组则同样是用 set 命令。而删除则是使用 remove ,主要针对使用 add 方式添加的权限的腐竹。


这样一来会变得十分不方便,此时你就需要用到一个叫做 “临时添加” 的功能。
临时添加实际上是在使用 add 方式的基础上拓展的功能,只要将 add 改为 addtemp ,并在最后面添加时间即可。


例如我想将一个叫 YYS 的玩家临时放入 VIP30 天,则使用命令:
/lp user YYS parent addtemp VIP 30d
此时当 30 天过后,权限插件会自动撤销他的 VIP 权限组。
如果你突然看他不爽了,想立刻撤销,使用命令:
/lp user YYS parent removetemp VIP
即可完成撤销。


想查看一位玩家的权限组状态?例如还有多少天到期,使用 info 功能即可看到。
例如下图中 DIM 玩家的 VIP 组距离撤销还剩2天23小时59分56秒。



现在,你应该很清楚的了解该如何在 Sponge 端给玩家设置权限组。
  • 如何设定玩家拥有家的数量以及如何使用?
设定玩家拥有家的最大数量是通过权限插件给予 meta 值实现的。修改方法很简单,使用命令 /lp group default meta set home-count 数字 即可设置完毕。同理如果想设置 VIP 组的话 /lp group vip meta set home-count 数字 即可设置完毕。
玩家命令:设置默认家(名为home):/sethome前往默认家(名为home):/home删除默认家:/delhome home设置其他家:/sethome [名字]前往其他家:/home [名字]删除其他家:/delhome [名字]查看家的列表:/home list显示你设置家的最大数量:/home limit
管理员命令:查看其他人的家:/home list [ID]前往其他人的家:/home other [ID] [名字]删除其他人的家:/home deleteother [ID] [名字]显示其他人设置家的最大数量:/home limit [ID]

  • 如何创建多种货币以及如何使用?
目前经济插件常见的有两款,分别是 EconomyLiteTotalEconomy ,这两款都支持海绵端的多货币系统,因此可以直接使用这两款经济插件创建多货币,这里以 EconomyLite 为例。
首先找到 \config\economylite 文件夹并打开 currencies.conf 文件,可以看到里面是这种样式的



其中第一行的 coin 是可以随便写的,第二第三行的则是货币的名字,第四行是货币符号,第六行则是使用哪个作为服务器的默认货币。
这里需要注意一点,第二第三行的货币名字一旦定下来了并且有玩家经济数据了就不能再改,否则玩家经济会清零。


接下来试着添加第二种货币,例如这样



保存后关闭该文件。打开 config.conf 并找到 default-balance 这项,这里需要将初始货币设为 0 ,否则的话两个货币都会在玩家第一次进服都给予指定数值。
现在虽然已经创建第二种货币了,但是该怎么去用是个问题,由于经济插件并没有太多的多货币功能,因此就算创建了也没法使用,因此这里可以使用 夕 大佬写的多货币辅助插件 MultiCurrencies ,使用该插件可以让腐竹们轻松编辑玩家的其他货币,这里提供一份已经编译好的 jar 下载
用法很简单,指令开头为 meco ,就是在 eco 前面多了个 m (目前暂时只能操作在线玩家)

add set remove 分别表示 增加、设置、减少
假设要给 AAA 玩家添加 1 点券,则使用命令 /meco add AAA 点券 1

要查询 AAA 点券还剩多少也很简单,使用命令 /meco AAA 点券



只需给予权限 multicurrencies 即可使用上述指令


这下问题来了,能给玩家设定其他货币的数额了,那么该如何让玩家可以自由使用其他货币呢?
万能的 VC 又来救场了,VC 菜单插件支持多货币系统,因此可以直接指定某种货币进行消费,例如下图





其他的先不管,可以看到红色框框那栏,如果只写 cost: 数值 的话就是扣除默认货币的,但如果写成 cost: 经济插件名:货币名:数值 就可以扣除指定货币。



如果想改成给予点券的话把数值改为负数即可


  • 如何为服务器制作箱子菜单?
在这之前先确保你安装了 Virtual Chest 插件:https://www.mcbbs.net/thread-679260-1-1.html
这是官方wiki地址:https://github.com/ustc-zzzz/VirtualChest/wiki
这是米二翻译的 wiki 地址:https://www.mcbbs.net/thread-779618-1-1.html
由于米二翻译的为旧版 wiki ,这里建议查看官方 wiki ,如看不懂英文建议用 Chrome 浏览器自带谷歌翻译


当你安装好插件并启动过服务端后你会发现根目录的 config 文件夹内会多出 virtualchest 文件夹
里面还有个 menu 文件夹,打开它,你就会发现里面有两个示例菜单文件,这两个可以先不管
或者你在进入服务器后输入 /vc o example/vc o example2 来分别试着浏览这两个示例菜单






对于新手来讲,如果打开这两个菜单的 conf 文件看你可能会看的头疼,不知是啥玩意。不用着急,这里会从简单的讲起。
实际上示例文件会写这么多是因为这个插件的功能过于强大,作者想展示其特色功能。如果你需求不大可能就十分简短。


首先是设计
要做好菜单就要先从设计下手,你可以在游戏里面摆一个箱子,然后在里面弄成你想要的菜单效果,例如这样



接着是创建
回到 menu 文件夹内,新建一个文本文档后改名,名字随意(Windows系统可中文),后缀改为 .conf 。
例如这样:

接着打开它,这里建议用第八章第二节讲到的 VSCode 来打开,方便编辑
打开后将下面文本复制进去

代码:

  1. virtualchest {
  2.     TextTitle = "&9&l这里是菜单"
  3.     Rows = 3
  4.     UpdateIntervalTick = 20
  5.     AcceptableActionIntervalTick = 20
  6. }

这里简单的讲一下
TextTitle 就是菜单标题(箱子名字)
Rows 就是你的菜单要多少行(最多6行)
UpdateIntervalTick 是菜单刷新速度,单位是 Tick ,这个先不管,后面会讲到
AcceptableActionIntervalTick 是允许点击间隔单位是 Tick ,用来防止用连点器卡服的。


现在点击保存,然后在控制台输入 vc reload 来加载这个新建的菜单。(当然你在游戏里输入也行,不过这是个技巧,在后台输入如果没任何报错,那么就说明你写的菜单没有任何错误,如果出现报错,那么写的就是有误的。一般黄色报错是格式错误,红色报错是ID错误)



在游戏里就可以通过 /vc o Test 来打开这个菜单了,Test 就是我刚刚命名的文件名,注意要区分大小写。

此时你已经成功迈出第一步了,虽说里面还没啥功能。


开始制作菜单
在制作之前建议先看一下这个图片



VC菜单插件是按照图片中数字的顺序进行排布的,再看看上面我设计的菜单的排布,第一个草方块是在 10 号格子,
那么我们就在 virtualchest{} 里加上这段,你们可以直接复制:

代码:

  1.     Slot10 {
  2.   Item {
  3.    ItemType = "minecraft:grass"
  4.    Count = 1
  5.    UnsafeDamage = 0
  6.    DisplayName = "&a&l我是神奇的草方块"
  7.    ItemLore = [
  8.     "&e点一下我试试?"
  9.     "&f看看会发生什么"
  10.    ]
  11.   }
  12.     }
最终效果是这样的:

很多人看着 Hocon 格式就头疼,因为他们都看惯了 Yaml 格式,当你找到Hocon 格式的规律后就很好理解了,实际上所有大括号都是一一对应的父子关系,准确的讲就是字典。
在上图中,
Slot10 就代表着第 10 号格子
Item 就是指物品,物品这栏用一个大括号括起来了关于物品的所有数据
ItemType 就是物品的ID。MC 在 1.8 之后统一用英文 ID ,别再问为啥不能用数字 ID 了。
Count 是指显示的个数
UnsafeDamage 是子 ID ,任何没有标出子 ID 的物品默认都是 0 。
DisaplayName 就是物品的名字
ItemLore 就是物品的 Lore 信息
假设你不想设置某项,例如你不想设置 Lore ,那么你可以直接把 ItemLore 整条删掉是没有问题的,记得要把中括号也删干净。


现在显示的内容虽然有了,但好像没设置点击后发生什么。
现在开始添加指令,你需要在 Slot10 下面添加这串:

代码:

  1.   PrimaryAction {
  2.    Command = "say 我刚才左键点了草方块"
  3.   }
如果你想右键也要触发一下的话可以再加一个,像这样:

代码:

  1.   SecondaryAction {
  2.    Command = "say 我刚才右键点了草方块"
  3.   }
添加好后的效果如下:



如果你想同一个指令左右键都通用的话则可以直接使用 Action{}
PrimaryShiftAction{} 则是 Shift + 左键
SecondaryShiftAction{} 则是 Shift + 右键


此时已经制作好一个格子了,保存后重载一下插件试试效果。同样用 /vc o Test 打开菜单




现在再制作其他格子或许会觉得很简单了吧,剩下几个我简单的写了点东西:

代码:

  1. virtualchest {
  2.     TextTitle = "&9&l这里是菜单"
  3.     Rows = 3
  4.     UpdateIntervalTick = 20
  5.     AcceptableActionIntervalTick = 20
  6.     Slot10 {
  7.   Item {
  8.    ItemType = "minecraft:grass"
  9.    Count = 1
  10.    UnsafeDamage = 0
  11.    DisplayName = "&a&l我是神奇的草方块"
  12.    ItemLore = [
  13.     "&e点一下我试试?"
  14.     "&f看看会发生什么"
  15.    ]
  16.   }
  17.   PrimaryAction {
  18.    Command = "say 我刚才左键点了草方块"
  19.   }
  20.   SecondaryAction {
  21.    Command = "say 我刚才右键点了草方块"
  22.   }
  23.     }
  24.     Slot12 {
  25.   Item {
  26.    ItemType = "minecraft:diamond_pickaxe"
  27.    Count = 1
  28.    UnsafeDamage = 0
  29.    DisplayName = "&b&l我是神奇的钻石镐"
  30.    ItemLore = [
  31.     "&e点一下我试试?"
  32.     "&f看看会发生什么"
  33.    ]
  34.   }
  35.   PrimaryAction {
  36.    Command = "console: world tp world %player%"
  37.   }
  38.   SecondaryAction {
  39.    Command = "world tp world"
  40.   }
  41.   IgnoredPermissions = [
  42.    nucleus.world.teleport.base
  43.   ]
  44.     }
  45.     Slot14 {
  46.   Item {
  47.    ItemType = "minecraft:wool"
  48.    Count = 1
  49.    UnsafeDamage = 3
  50.    DisplayName = "&b&l我是淡蓝色羊毛"
  51.    ItemLore = [
  52.     "&e点一下我试试?"
  53.     "&f看看会发生什么"
  54.    ]
  55.   }
  56.   PrimaryAction {
  57.    Command = "back"
  58.   }
  59.     }
  60.     Slot16 {
  61.   Item {
  62.    ItemType = "minecraft:beacon"
  63.    Count = 1
  64.    UnsafeDamage = 0
  65.    DisplayName = "&b&l我是信标"
  66.    ItemLore = [
  67.     "&e你好 %player%"
  68.     "&f点一下送你一个信标"
  69.    ]
  70.   }
  71.   PrimaryAction {
  72.    Command = "console: give %player% minecraft:beacon; tell: &a现在你获得了一个信标"
  73.   }
  74.     }
  75. }

在 12 号格中,实际上左右键效果都是一样的,最终都是将玩家传送到 world 世界里,只不过实现方式有些不一样,左键是通过在控制台执行命令的方式将玩家传送至 world 世界里,右键则是玩家自己执行命令来传送到 world 世界里,至于为什么玩家可以执行管理员才能执行的命令,原因是因为我在下面还加了这样一个玩意:

代码:

  1.   IgnoredPermissions = [
  2.    nucleus.world.teleport.base
  3.   ]
就是玩家在点击这个格子时临时给他 nucleus.world.teleport.base 权限,执行完命令后再自动撤销。这样一来玩家就能在点击格子的一瞬间获得了临时权限去执行 world tp 命令。
在 14 号格中,淡蓝色羊毛是通过修改 UnsafeDamage 的数字实现的,也就是子 ID ,命令就只是普通的 back 。
在 16 号格中,这里执行了两条命令,先是控制台里用 give 给玩家一个信标,再是告诉玩家获得信标。多条命令之间用; 分号间隔即可。


现在按钮功能都做好了,开始弄周围的玻璃板装饰。
按照正常的思路应该就是不断的复制粘贴下面这样的信息,然后再改格子数字

代码:

  1.     Slot0 {
  2.   Item {
  3.    ItemType = "minecraft:stained_glass_pane"
  4.    Count = 1
  5.    UnsafeDamage = 4
  6.    DisplayName = ""
  7.   }
  8.     }

但这样如果突然想改装饰板的颜色的话,例如想从黄色改成绿色,那么就要把所有的 UnsafeDamage 改为 5,一条一条改十分痛苦。


这里可以用到一个叫 aliases 的功能,在 virtualchest{} 上面添加一个 aliases{} (在下面添加也行,个人喜好),然后在 aliases 里添加信息,就跟写格子一样,不过不再受 Slot 的约束,你可以自己定义名字,例如下图自己定义的 glass



此时你已经添加好了这个装饰板的信息,接着再去 virtualchest{} 里一一调用这条信息
调用方式很简单,直接添加一行 Slot0 = [${aliases.glass}] 即可






剩下的格子就以此类推了

保存后重载插件



似乎还漏了点东西,这菜单目前只能通过命令来打开,如果你想通过右键钟来打开菜单的话,需要在 virtualchest{} 下面加上这些

代码:

  1.     TriggerItem {
  2.   ItemType = "minecraft:clock"
  3.   EnablePrimaryAction = false
  4.   EnableSecondaryAction = true
  5.     }
猜也应该能猜到上面这三条的含义,第一个是钟的 ID ,第二个是左键打开,第三个是右键打开。


菜单制作完毕,接下来只需对每个格子进行功能试验确认,检查一下各格子功能是否达到你的预期即可。


这是这份菜单的全部代码:

代码:

  1. aliases {
  2.     glass {
  3.   Item {
  4.    ItemType = "minecraft:stained_glass_pane"
  5.    Count = 1
  6.    UnsafeDamage = 4
  7.    DisplayName = ""
  8.   }
  9.     }
  10. }

  11. virtualchest {
  12.     TriggerItem {
  13.   ItemType = "minecraft:clock"
  14.   EnablePrimaryAction = false
  15.   EnableSecondaryAction = true
  16.     }
  17.     Slot0 = [${aliases.glass}]
  18.     Slot1 = [${aliases.glass}]
  19.     Slot2 = [${aliases.glass}]
  20.     Slot3 = [${aliases.glass}]
  21.     Slot4 = [${aliases.glass}]
  22.     Slot5 = [${aliases.glass}]
  23.     Slot6 = [${aliases.glass}]
  24.     Slot7 = [${aliases.glass}]
  25.     Slot8 = [${aliases.glass}]
  26.     Slot9 = [${aliases.glass}]
  27.     Slot17 = [${aliases.glass}]
  28.     Slot18 = [${aliases.glass}]
  29.     Slot19 = [${aliases.glass}]
  30.     Slot20 = [${aliases.glass}]
  31.     Slot21 = [${aliases.glass}]
  32.     Slot22 = [${aliases.glass}]
  33.     Slot23 = [${aliases.glass}]
  34.     Slot24 = [${aliases.glass}]
  35.     Slot25 = [${aliases.glass}]
  36.     Slot26 = [${aliases.glass}]
  37.     TextTitle = "&9&l这里是菜单"
  38.     Rows = 3
  39.     UpdateIntervalTick = 20
  40.     AcceptableActionIntervalTick = 20
  41.     Slot10 {
  42.   Item {
  43.    ItemType = "minecraft:grass"
  44.    Count = 1
  45.    UnsafeDamage = 0
  46.    DisplayName = "&a&l我是神奇的草方块"
  47.    ItemLore = [
  48.     "&e点一下我试试?"
  49.     "&f看看会发生什么"
  50.    ]
  51.   }
  52.   PrimaryAction {
  53.    Command = "say 我刚才左键点了草方块"
  54.   }
  55.   SecondaryAction {
  56.    Command = "say 我刚才右键点了草方块"
  57.   }
  58.     }
  59.     Slot12 {
  60.   Item {
  61.    ItemType = "minecraft:diamond_pickaxe"
  62.    Count = 1
  63.    UnsafeDamage = 0
  64.    DisplayName = "&b&l我是神奇的钻石镐"
  65.    ItemLore = [
  66.     "&e点一下我试试?"
  67.     "&f看看会发生什么"
  68.    ]
  69.   }
  70.   PrimaryAction {
  71.    Command = "console: world tp world %player%"
  72.   }
  73.   SecondaryAction {
  74.    Command = "world tp world"
  75.   }
  76.   IgnoredPermissions = [
  77.    nucleus.world.teleport.base
  78.   ]
  79.     }
  80.     Slot14 {
  81.   Item {
  82.    ItemType = "minecraft:wool"
  83.    Count = 1
  84.    UnsafeDamage = 3
  85.    DisplayName = "&b&l我是淡蓝色羊毛"
  86.    ItemLore = [
  87.     "&e点一下我试试?"
  88.     "&f看看会发生什么"
  89.    ]
  90.   }
  91.   PrimaryAction {
  92.    Command = "back"
  93.   }
  94.     }
  95.     Slot16 {
  96.   Item {
  97.    ItemType = "minecraft:beacon"
  98.    Count = 1
  99.    UnsafeDamage = 0
  100.    DisplayName = "&b&l我是信标"
  101.    ItemLore = [
  102.     "&e你好 %player%"
  103.     "&f点一下送你一个信标"
  104.    ]
  105.   }
  106.   PrimaryAction {
  107.    Command = "console: give %player% minecraft:beacon; tell: &a现在你获得了一个信标"
  108.   }
  109.     }
  110. }

给玩家添加使用权限
玩家默认是没有权限打开任何菜单的,因此需要给玩家添加菜单权限 virtualchest.open.self.Test
Test 则是指刚才创建那份菜单的文件名,如果你不想一个菜单一个菜单的给权限,难么直接添加
virtualchest.open.self 权限即可。但这样需要将两个示例菜单删掉,防止玩家打开了示例菜单进行刷物品。


改进你的菜单
很多时候点击菜单里的格子时你不想让菜单被关闭或者需要跳转到其他 GUI 界面菜单,
这时就需要在 Action{} 里添加 KeepInventoryOpen 参数,后面跟着是布尔变量,像这样:



如果你想让你的菜单看起来简洁但又强大的话,可以制作多个菜单然后通过执行 vc o xxx 的方式更换菜单。


例如我想把右下角的玻璃板变成门,然后可以转到另一个菜单,此时可以把 Slot26 = [${aliases.glass}] 删掉
然后再添加一份 26 号格子的信息,例如这样:

代码:

  1.     Slot26 {
  2.   Item {
  3.    ItemType = "minecraft:iron_door"
  4.    Count = 1
  5.    UnsafeDamage = 0
  6.    DisplayName = "&6&l点我前往第二个菜单"
  7.   }
  8.   PrimaryAction {
  9.    Command = "vc o Test2"
  10.    KeepInventoryOpen = true
  11.   }
  12.     }

未完…待续…
教你不花一分钱支持插件开发者由于海绵端将 Metrics 数据收集器默认关闭状态,导致大量开发者无法正确地收集到相应插件的用户数据,再加上 ore 的规定里不准有收费功能和内置广告的相关规定,导致海绵插件生态发展速度十分缓慢。
如果你想为海绵插件贡献一份力但经济上又不允许的话,可以通过手动开启 Metrics 来支持各插件开发者。


开启方法:在服务端控制台输入 sponge metrics on 即可



虽然是回复可见,但请各位不要水回复或滚键盘你可以这样回复:期待楼主的下次更新


写在最后    由于 Sponge 是一个革新的 Minecraft 服务器生态,他与 Bukkit 相比起来有一套十分先进机制,不论是稳定性还是兼容性都有着显著的突出,此文章里已经表达的很清楚,在今后的模组中越来越多的会偏向主动兼容 Sponge 生态。
    但是由于是新的东西,适应也是需要时间的,例如插件与 Bukkit 相比可能只有其 1% 的量,并且有中文的也比较少。在今后的时间有空的话我偶尔会搬运一两个插件并汉化。由于官方的规范化,Sponge插件基本都是开源的,并且不会出现广告与付费内容,这与 Bukkit 生态相比起来显得十分安全与可靠。
    如果你在整合过程中遇到了些小问题,可以加群询问,群号在本帖最上面有写。如果你不太会整合但是想尝试用海绵端,可以等我下个月发布基础端。
    当然,即使我写了这么长篇大论的教程、搬运了这么多实用插件、整合了基础端,但有人还是实在无法接受这种奇怪的新玩意,我建议你们直接返用 Bukkit 平台的服务端,例如:Catserver、Mohist 等等……

更贴的动力,在于人气8


若有其他不懂的问题,请加群询问(群号在本教程最上方)更新日志:
前面的没记录……从今天19年3月13日开始记录吧
19年3月13日:修改了第二章的推荐基础插件中的计分板插件,由原来的esb改为yyssb。第二章的推荐基础插件新增扫地插件SoulClear。第三章新增yyssb插件的配置教程以及SoulClear的配置教程。
19年3月14日:开始写第四章的内容。将第八章和第七章的顺序互换了一下。更新了第四章内容。
19年3月28日:第五章重要性较低,暂时停更,更新第六章。
19年4月2日:修改了第一章里的一处错误。更新了第六章内容。
19年4月5日:补充了第六章内容。
19年4月14日:修正第四章 worldedit 拼写错误。
19年4月15日:更新了第六章内容。
19年4月20日:更新了第六章内容。
19年4月21日:修正了第六章错字。
19年4月23日:更新了第六章内容。
19年4月25日:更新了第五章内容。
19年4月26日:补充了第三章内容。
19年4月27日:补充了第二章内容,开始更新第八章内容。
19年4月28日:补充了第一章内容,更新了第八章内容。
19年4月29日:更新了第八章内容,补充了第六章和第一章内容。
19年4月30日:更新了第二章内容。
19年5月1日:补充了第三章内容。
19年5月3日:更新了第八章内容。
19年5月9日:更新了第八章内容。
19年5月11日:补充了第六章内容,以及更新了第一章的图片。
19年5月12日:删除了第二章 Luckperms 的搬运贴链接,修正了第八章的一处错误。
19年5月24日:修正了第三章GP插件cf功能介绍的一处错误。更新了第八章内容。
19年5月26日:增加《写在最后》。
19年5月28日:移除第六章的一处教程。
19年6月11日:修正第一章、第二章和第八章个别处表达不清晰。
19年6月21日:更新了第八章内容。
19年6月23日:修正了第八章备份模组的错误链接,对第三章进行了大面积的润色,方便阅读,补充了第一章内容。
19年6月25日:补充了第八章里 插件放置目录 问题的内容。
19年6月26日:给第二章插件列表里增加反压测插件。
19年6月27日:将模组崩溃列表合并至第七章。
19年6月29日:更新了第八章内容。更新了第三章,增加了 VC 菜单的示例图样与文件。
19年7月3日:给第二章增加了关于res领地的内容。
19年7月5日:增加第七章崩溃模组列表内容。
19年7月22日:修改第六章内容。
19年7月24日:更新第一章内容。
19年7月28日:更新第六章内容。
19年8月7日:修正第八章的一处错误。
19年8月13日:补充第三章 Nucleus 的内容。
19年8月17日:补充第四章地皮插件权限的内容。
19年10月21日:为第八章新增多货币功能的使用教程。
19年12月31日:将操作用户组的命令由group改为parent。
20年2月8日:为第八章新增 VC 菜单插件简单使用教程,修复一张裂图。
20年3月4日:少量修改第六章内容,修正第八章一处错字。
20年3月13日:修改部分细节,新增如何开启 Metrics 功能


来自小组:Power of Spongie



土球球
本帖最后由 ustc_zzzz 于 2018-3-7 00:48 编辑

为啥你这图片底下有个蓝边,怕不是自己截的。。。用官方文档给的这个吧:

另外最好再说一下-Xms和-Xmx两个参数的用途,毕竟。。。4G内存开Mod服,绝大多数情况下都不够用的。。。

海贼王#
本帖最后由 海贼王# 于 2018-5-5 13:15 编辑

初学者海绵端教程对我非常有帮助

_DIM_
ustc_zzzz 发表于 2018-3-7 00:45
为啥你这图片底下有个蓝边,怕不是自己截的。。。用官方文档给的这个吧:

另外最好再说一下-Xms和-Xmx两个 ...

是我自己随便截的XD
好的,我晚上更新时加上参数用途

448290006
阿里云的2GB的服务器玩sponge的mod服是不是小点

_DIM_
448290006 发表于 2018-3-8 10:32
阿里云的2GB的服务器玩sponge的mod服是不是小点

建议4G起步

448290006

更改了内存还是提示这个
Can't keep up! Did the system time change, or is the server overloaded? Running 2040ms behind, skipping 40 tick(s)
这个是什么有问题啊?

_DIM_
448290006 发表于 2018-3-9 15:55
更改了内存还是提示这个
Can't keep up! Did the system time change, or is the server overloaded? Run ...

电脑配置不够。只要玩着感觉还行就不用管

448290006
酷车手BB弹 发表于 2018-3-9 16:55
电脑配置不够。只要玩着感觉还行就不用管

换了个8g的服还是这样不管了,麻烦您了,您知道sponge哪个插件能关闭爬行者爆炸对方块的破坏吗?lp里边没有找到相应的设置

_DIM_
448290006 发表于 2018-3-9 18:56
换了个8g的服还是这样不管了,麻烦您了,您知道sponge哪个插件能关闭爬行者爆炸对方块的破坏吗?l ...

内存多≠配置高

基础插件里看一下,不太记得了,以前我是用领地插件弄的

s素元星
弱弱问一句....我这32位电脑配置成 -Xms4096M -Xmx4096M会不会出事。。。

_DIM_
s素元星 发表于 2018-3-9 20:16
弱弱问一句....我这32位电脑配置成 -Xms4096M -Xmx4096M会不会出事。。。

启动不了吧= =

s素元星

_(:з」∠)_

s素元星

那就只能设置成1024咯?

2bno_1
448290006 发表于 2018-3-9 18:56
换了个8g的服还是这样不管了,麻烦您了,您知道sponge哪个插件能关闭爬行者爆炸对方块的破坏吗?l ...

我倒知道原版有指令可以做到关闭所有生物对地形的破坏
(包括苦力怕爆炸和恶魂火球,但不包括TNT和末地水晶)
/gamerule mobGriefing false

_DIM_
s素元星 发表于 2018-3-9 20:30
那就只能设置成1024咯?

自己一个人测试或许没问题,只要加的MOD不多

但别人肯定玩不了的

_DIM_
134679asdzxc 发表于 2018-3-9 20:36
我倒知道原版有指令可以做到关闭所有生物对地形的破坏
(包括苦力怕爆炸和恶魂火球,但不包括TNT和末地水 ...

嗯,但是好像就出现了一些问题
末影人不能拿东西了,村民也不能种东西了

448290006
酷车手BB弹 发表于 2018-3-9 22:12
嗯,但是好像就出现了一些问题
末影人不能拿东西了,村民也不能种东西了 ...

好吧,问一下用领地插件怎么弄?

教程好有用啊,正好开服,同步学习,谢谢

_DIM_
448290006 发表于 2018-3-9 22:23
好吧,问一下用领地插件怎么弄?

教程好有用啊,正好开服,同步学习,谢谢 ...

领地插件直接下载好后丢进去就行了。。

s素元星
酷车手BB弹 发表于 2018-3-9 22:11
自己一个人测试或许没问题,只要加的MOD不多

但别人肯定玩不了的

好的吧..今天我已经把电脑升级64位的啦

这个地皮插件有什么问题吗 慎用 还有站内搬运贴不存在了

_DIM_
HTL9257 发表于 2018-3-10 15:19
这个地皮插件有什么问题吗 慎用 还有站内搬运贴不存在了

搬运贴补上了。地皮可能会出现一些问题,一般是由MOD引起的

Mr.Seven590
亩产万斤的bb弹

448290006
酷车手BB弹 发表于 2018-3-9 22:52
领地插件直接下载好后丢进去就行了。。

今天测试了一下,装了gf爬行者爆炸还是会有伤害不知道为什么,即使是圈了地,是什么地方设置的不对吗

3TUSK
若出现这种界面,点右下角即可,意思是继续


那个提示表示新版本还没通过管理员复核,虽然能用但是使用后造成的损失责任自负。

所以说... 是不是需要解释一下?

babybule
F3查找eula文档中没有找到协议中有 false 呀,要我怎么同意这份协议

_DIM_
a316488779 发表于 2018-3-24 09:50
F3查找eula文档中没有找到协议中有 false 呀,要我怎么同意这份协议



不是吧。。就这么点字都找不着吗= =

babybule
酷车手BB弹 发表于 2018-3-24 10:57
不是吧。。就这么点字都找不着吗= =

然而我的不是,起码千词协议,难道说不是那个协议么,不过名字都一样呀

babybule
弄了半天服务器没搭好,核心文件和服务端我之前放在  .minecraft 没出现eula.txt 。后来放E盘,才出这个长篇。是不是我放文件夹的地方有问题?

_DIM_
a316488779 发表于 2018-3-24 15:24
弄了半天服务器没搭好,核心文件和服务端我之前放在  .minecraft 没出现eula.txt 。后来放E盘,才出这个长 ...

并不清楚你的电脑是什么情况。。。

布鲁鲁
顶一下BB弹大佬

gghg3889
        首先是海绵服,1.12.2,家用主机(win)路由器端口映射开服。自己本机用外网ip连接成功,同路由器内另一台主机通过外网ip连接成功。基友连接失败,我自己用笔记本连手机热点也连接失败,都提示远程主机强迫关闭了一个现有连接。我在服务器内效果是看到他进入后又退出。

        我尝试了换局域网内另一台主机开服但是同样效果,也尝试使用本机的MacOS进行开服,同样效果。

        然后就用游侠尝试联机成功,但是不稳定,有时进不来,换个房间又进来了,玩了一天,转天继续联机了1小时左右,之后下线休息了一会儿 再次联机怎么也进不去,每次都是看到他进来,人物模型出现,然后就又退出,他显示连接已丢失。换用纯净无mod1.12.2同样效果。测试换用1.10.2无mod版成功但延迟很大,之前联机成功的时候延迟不大。

        后来,又测试1.12.2版本的无mod,外网IP直连,但是出现如题的同样错误提示“远程主机强迫关闭了一个现有连接”,看到他进入后很快又退出,而且还出现过另一种错误提示“你主机中的软件终止了一个已建立的连接”。

        于是我让我基友PING了我的IP,丢包率0%,延迟40ms左右,个人印象中这个网络延迟RTS/FPS应该都可以一玩了,所以应该网络环境是可以的吧。家里天津电信百兆,下行带宽在10MB/s(100Mbps)左右,上行没测出过极限,但是一般就是500KB/s,应该就是一般的电信光纤网络。基友是学校网络,手机热点共享的联通4G,求个解....

战神解说js
forge端启动后直接闪退,没新文件什么的

_DIM_
战神解说js 发表于 2018-4-6 11:18
forge端启动后直接闪退,没新文件什么的

按照步骤一步一步来只要没做错肯定没问题。做错了就另说了

_DIM_
gghg3889 发表于 2018-3-31 04:07
首先是海绵服,1.12.2,家用主机(win)路由器端口映射开服。自己本机用外网ip连接成功,同路由器内 ...

那还是用回kcauldron吧……

lihao020806
楼主最帅!!!!!!!!

和煦樱
Sponge大法好

信仰_
感谢大佬的教程,本地测试出现这种情况是为什么啊?

信仰_
信仰_ 发表于 2018-4-9 01:32
感谢大佬的教程,本地测试出现这种情况是为什么啊?

客户端用的是大佬你整合的1.12.2客户端

信仰_
我已经搞好了 ,再次感谢

_DIM_
信仰_ 发表于 2018-4-9 01:32
感谢大佬的教程,本地测试出现这种情况是为什么啊?

没关正版认证吧

吊打小逗比
下载FORGE的时候跳到广告链接没有skip怎么破

_DIM_
zrh2001 发表于 2018-4-9 14:19
下载FORGE的时候跳到广告链接没有skip怎么破

那需要挂ssr了

吊打小逗比

emmm。。已经科学上网解决了,本来准备加交流群的,然后眼瞎填错了域名,估计现在黑名单了

21bule
改好true后到这里就崩,求大佬帮助一下QWQ

_DIM_
21bule 发表于 2018-4-12 16:15
改好true后到这里就崩,求大佬帮助一下QWQ

25565冲突了。

21bule
21bule 发表于 2018-4-12 16:15
改好true后到这里就崩,求大佬帮助一下QWQ

弄好了QWQ,原版的构建是和forge版一样,先开minecraft_server才行。
forge版要把核心放根目录才行,而不是放mods文件夹里。
小白,瞎jb弄出来的QWQ。

sakurakaori
哥,我用的是你的整合包,插件也是看你的插件帖子下载的,开服也能正常开,但是config文件夹里一个插件都没有生效,进服务器也是,没有一个插件生效的,是什么问题呢?


_DIM_
sakurakaori 发表于 2018-4-12 18:22
哥,我用的是你的整合包,插件也是看你的插件帖子下载的,开服也能正常开,但是config文件夹里一个插件都没 ...

你自己删了不该删的东西呗

奶茶茶茶君
可以的,学一学

下一页 最后一页