一份Java Minecraft的开服手册 --请签收 OvO
寒冰是喵喵
2020年03月18日 21:52

这篇文章转载自我的博客https://hanbings.github.io/   字数:8.7k 阅读时间:约18分钟

0x00 注意事项

根据Minecraft最终用户许可协议(Minecraft EULA)\中的“try to make money from anything we’ve made”这一条项,就是说搭建的Minecraft服务器是不能被用于商业用途

0x01 服务端和客户端

MInecraft服务端和Minecraft客户端是什么关系?

这个其实是一个很简单的概念

1.服务端和客户端是两个东西,并不是一体的,服务端不包含客户端,客户端不包含服务端

2.服务端顾名思义,是用于服务客户端的

3.客户端是分发内容,是用于向服务器提出服务请求和响应服务器的动作的,它应该分发给玩家。(其中包括服主和管理员,也就是说服主和管理员只是有服务器的权限,同时一样也是玩家,都需要客户端才能进入服务端)这种包通常称之为服务器整合包

4.综上所述,一个完整的服务器应该由服务端和客户端两个不同的软件来组成,但这两个软件是可以在同一台主机上运行的

仍然不清楚的话可以通过关于页的联系方式找到我嗷

0x02 核心介绍

由于Github被墙,图片的加载速度会很慢,所以如果图片看不了的话建议使用梯子来进行加速\

在Minecraft服务端中,最重要的部分就是服务端核心,一般来说,服务端核心的选择决定了服务器会有什么的功能,核心通常有以下几类

  • Minecraft原版核心

  • Minecraft纯插件核心

  • Minecraft纯MOD核心

  • Minecraft插件MOD混合核心

原版核心即纯净版核心,它不能添加任何的插件和MOD

插件是一些能帮助服主完成管理工作的额外组件,它不需要再客户端安装

相比于插件,MOD则是需要在服务端和客户端同时添加才能够使用,单独在服务端添加客户端将无法进入服务器,单独在客户端添加,能进入服务器,但MOD将不会起到作用(辅助类另说,如小地图,顶部显示物品,Xray透视等,这里仅指功能类)

依据对服务器的功能需求而去选择最合适的核心是对服务器最大的优化(bushi)

Minecraft_Server(官服)

Minecraft_Server是Mojang自家的核心,是更新最快的,一般在Minecraft发布后的几天就会更新

它是没有任何的插件和MOD支持,也就是说它并不能安装任何的插件和MOD

CraftBukkit (水桶服)

CraftBukkit是一个使用Bukkit API的Minecraft多人模式服务端

它能使用CraftBukkit插件

但它对Spigot插件兼容性比较差

它只能加CraftBukkit插件和Spigot的部分插件,同样不能添加MOD

Spigot(水龙头)

CraftBukkit 之后的延续版本,兼容CraftBukkit插件,有自己的一套API

性能比 CraftBukkit 好,自带反作弊功能

能使用Spigot和Craft的插件,不能添加MOD

PaperSpigot(纸龙头)

也叫Paper端,在Spogot的基础上的再开发版本,支持 CraftBukkit 和 Spigot 插件

再带TPS优化,在1.9.x之前的版本的核心自带反作弊功能,1.9.x后被移除

能使用Spigot和Craft的插件,仍然不能添加MOD

TorchSpigot(火龙头)(VefLand)

Spigot的优化版,可加入Bukkit插件 在各方面性能相较于PaperSpigot更加好,稳定性十分强 支持多核心运算,并内置反作弊 (作者在1.9.4版本之后就咕咕咕了)

SpongeVanilla(海绵香草端)

Sponge端的纯净版,支持Sponge插件,不支持ForgeMOD Sponge插件可在客户端中安装(不是很懂什么意思) 占用内存少,配置需求低

*Sponge家族

ServerForge(Minecraft_Server_Forge)

是在官服的基础上加入了Forge,稳定性较好 无法使用任何的插件,支持ForgeMOD

因为只能安装ForgeMOD,可自定义功能较少

SpongeForge(海绵端)

原名Sponge,支持Sponge插件,其在高版本的Minecraft中支持ForgeMOD而更名为SpongeForge

同为早期成熟的核心

只能加入Sponge插件和ForgeMod,不兼容SpigotAPI和BukkitAPI

*Sponge家族

Cauldron(MCPC+)

MCPC+为先前的名字,KCauldron为最后几个1.7.10版的名字 能加MOD也能加Bukkit插件

性能上存在较多问题,Bukkit插件并非完全兼容

*Cauldron家族

Thermos(Cauldron的优化版)

是Cauldron的优化版本,比原先的Cauldron更加稳定

能添加MOD也能添加Bukkit插件

*Cauldron家族

Uranium(铀端)

同Cauldron一家子,支持Bukkit插件和ForgeMOD

在Cauldron的基础上进行了优化(这里很迷,不知道优化些什么,Google结果极少)

*Cauldron家族

Contigo(水杯端)

还还还是Cauldron一家子,是Thermos的儿子

进行了大多优化

服务器滞后优化,更低的延迟,更好的优化

更好的世界防护 (Forge调用的物品不经过Bukkit插件!)

Spigot的安全更新有许多KCauldron并没调用

*Cauldron家族

CatServer(猫端)

一代神端,国人开发

尽管CatServer拥有一段黑历史,

Catserver支持ForgeMOD和Bukkit/Spigot插件

并且优化了多线程,

最重要的是,支持高版本的Minecraft,且仍在更新

这使得CatServer成为了除了Minecraft_Server_Forge之外,最热门的高版本ForgeMod服务器的选择

更何况CatServer还支持Bukkit插件

这里本来有张表格的,B站不支持这个.......可以到我的博客上看看

注:✅表示支持 ❌表示不支持 ✅/❓表示需要依据开发的插件来判读是否支持 ❓表示状态未知\

0x03 下载核心

那么呢,根据0x02的表格呢,可以知道无论什么版本都能用Minecraft_Server来开服务器,但是它是没有任何的插件和ForgeMOD的支持

或许你不需要插件来辅助管理服务器只是需要MOD支持,那么ServerForge就可以满足啦

那么我想要一个又能有插件,又能加ForgeMOD的核心,那么1.7.10和1.12.2都是有得选择哒

我选择是1.7.10:Thermos / 1.12.2 CatServer这两个端

这里采用CatServer 1.12.2的开服和目录结构分析

CatServer的官网是:http://catserver.moe CatServer的Github地址是:https://github.com/Luohuayu/CatServer/releases CatServer的MCBBS帖子是:https://www.mcbbs.net/thread-924736-1-1.html CatServerVailla的Github地址是:https://github.com/Luohuayu/CatServerVanilla

通过上面的地址都可以下载到CatServer的核心,请不要到不知名的网站下载哦

CatServer也有三个分支,分别是Universal Async 和 Vanilla

Universal是稳定版本,适合单核心性能强的使用 Async是多核心优化版本,适合核心多的服务器使用,可能存在兼容性问题 Vanilla是香草版本,就是简洁版本,只可以用Bukkit/Spigot插件

我选择稳定版本,有需求的小伙伴们可以自己选择核心和版本

文件:CatServer-3413a60-universal.jar MD5:769F975826B723034CE2CE8D1DB6ABA6 SHA1:68743363068CF90DE7CF4B4BAA067597BB14B2D3 CRC32:A209921F

0x04 创建脚本并尝试启动核心

CatServer

这里呢,下载好核心,创建一个独立的空白的文件夹(建议这么做)

把核心放进去,这个核心所在的位置,这就被称为服务端根目录(就是指创建的空白文件夹)

接下来,需要一个启动脚本

借用MCBBS大佬的脚本参数:https://www.mcbbs.net/thread-839828-1-1.html (侵删)

在服务端根目录创建一个start.bat这样的文件(名字可以随意,以bat结尾)

32位的版本:

64位的版本:

脚本具体内容请到原帖查看(或许以后会专门写一个博客介绍)

注意:并不是参数越多越好的,如果不认识这些参数建议脚本如下

这里的核心名字是CatServer-3413a60-universal.jar | Java的64位的JDK1.8

所以我的脚本是:

java -server -Xincgc -Xmx2048M -Xms32M -Xss512K -XX:+AggressiveOpts -XX:+UseCompressedOops -XX:+UseCMSCompactAtFullCollection -XX:+UseFastAccessorMethods -XX:ParallelGCThreads=4 -XX:+UseConcMarkSweepGC -XX:CMSFullGCsBeforeCompaction=2 -XX:CMSInitiatingOccupancyFraction=70 -XX:-DisableExplicitGC -XX:TargetSurvivorRatio=90 -jar CatServer-3413a60-universal.jar

于是我在服务端根目录得到两个文件:

双击start.bat(或者自定义的名字)就会自动从各个源网站下载镜像了,前提是要有网络嗷

自动下载

直到看到Done (xx.xxxS)! For help, type “help” or “?”就意味着开服成功了

小朋友,你是否有很多问号?

此时,输入stop指令即可停止核心运行

0x05 服务端根目录结构分析

上图是服务端根目录示意图

主要的目录是

主要的服务端根目录文件

/config/…

config的意思是配置,是由Forge创建的文件夹,MOD的配置都在这个目录下

/libraries/…

lib目录通常是依赖库的位置,在CatServer中一样,是CatServer的依赖库的目录

/logs/…

logs是日志文件目录,里面存放了所有的服务器日志文件,包括了DEBUG的日志,INFO的日志等

似乎CatServer会将日志记录完成后压缩存放并继续记录新的日志日志(忠实的机器嗷)

/mods/…

这个是ForgeMOD的存放目录,如果要添加MOD应该找到适合Forge版本和游戏版本的ForgeMOD然后放到这个目录

/plugins/…

这个是Bukkit/Spigot插件的存放目录

/world/…

无特殊,此处是默认地图存档存放处

banned-ips.json

被ban掉ip的玩家的列表,可手动添加,要注意,以JSON格式的条目才会生效

游戏中 /banip 玩家名 可以使玩家被添加这个文件里

help.yml

这是自定义玩家在输入/help的自定义文件

banned-players.json

和banned-ips.json类似,是ban掉玩家名的列表,一样需要JSON格式

游戏中 /ban 玩家名 可使玩家被添加这个文件里

server.properties

服务器主配置文件,十分重要,后面会详细讲解

bukkit.yml

是Bukkit核心的配置文件,由于CatServer也是Bukkit的产物,借用了Bukkit的一些方法,所以会产生bukkit的配置文件,服务器优化参数主要分布在这个文件和spigot.yml

spigot.yml

是Spigot核心的配置文件,因为Spigot本身由bukkit发展而来,添加了优化的方法,同样会产生此配置文件

catserver.yml

CatServer核心的配置文件,同bukkit.yml,后面会详细讲解

minecraft_server.1.12.2.jar

官服的核心,CatServer的构造大致为Minecraft_server.1.12.2 + Catserver对Bukkit支持 + Forge,故官服核心在开服步骤被下载到此处

start.bat

启动脚本

CatServer-3413a60-universal.jar

CatServer核心

usercache.json

储存玩家的ID和UUID(ID是指玩家名UUID是指玩家名所对应的唯一编号)

commands.yml

自定义命令配置文件

ops.json

服务器最高权限管理员名单配置文件,同为JSON格式

游戏中使用/op 玩家名 赋予玩家OP权限

whitelist.json

玩家白名单,若在主配置文件中开启了白名单,需要将白名单玩家添加到这里才能进入服务器

相当于相反的黑名单,不在名单上的不允许进入服务器

在游戏中使用/whitelist查看帮助,通常/whitelist add 玩家名 是添加玩家 /whitelist del 玩家名是移除玩家

permissions.yml

权限组配置文件

0x06 配置文件与服务器优化

一个好的服务器,必然做了许多优化……..哎呀…….编不下去了qwq

server.properties

参考:https://minecraft-zh.gamepedia.com/index.php?title=Server.properties&variant=zh-cn

来源:Minecraft Wiki

默认配置文件,来自Wiki,#号后为注释

注释[B]表示布尔数值 即true或者false

注释[I]表示一个整数

注释[S]表示一串字符

#Minecraft server properties #(文件修改时间戳) broadcast-rcon-to-ops=true #广播RCON信息给OP[B] view-distance=10 #视野距离,个人理解为区块加载范围,性能影响严重,超过10个人建议设置为6[I] max-build-height=256 #建筑的最大高度,通常为256格,不建议调小,65534可能是其最大值[I] server-ip= #服务器ip,请留空,将自动配置[S] level-seed= #地图种子,等同单人存档种子[S] rcon.port=25575 #RCON是一种远程连接协议,可以忽略[I] gamemode=survival #游戏模式1.12后改为字符串来代替原有的数字,请注意[S] server-port=25565 #游戏端口,根据个人设置[I] allow-nether=true #允许穿过地狱门抵达地狱,如果不需要地狱的话可以设置为false[B] enable-command-block=false #开启命令方块 若为false则无法使用命令方块[B] enable-rcon=false #开启RCON功能,建议false,RCON风险极大[B] enable-query=false #允许使用GameSpy4协议的服务器监听器,详细请前往Wiki查看[B] op-permission-level=4 #OP等级,设置为4为控制台同等权限,建议为2[I] prevent-proxy-connections=false #检测异地登陆并阻止进入游戏,对开放盗版服务器无效,原理是通过Mojang的服务器来查询IP[B] generator-settings= #生成器设置,留空默认为原版生成器[S] resource-pack= #服务器使用资源包,此处填写资源包在服务器内的目录[S] level-name=world #地图名称[S] rcon.password= #RCON密码,若不开启RCON功能可无视[S] player-idle-timeout=0 #挂机检测,0为关闭,单位为分钟[I] motd=A Minecraft Server #服务器标题,最多为59字节(貌似新版本会换行了)注意的是要求是unicode格式文字,否则将会出错[S] query.port=25565 #Query端口,如果不开Query的话可忽略[I] force-gamemode=false #强制游戏模式[B] hardcore=false #极限生存,死亡后会变观察者模式[B] white-list=false #白名单,true为开启[B] broadcast-console-to-ops=true #广播控制台信息给OP[B] pvp=true #玩家间攻击,true为开启[B] spawn-npcs=true #生成村民,true为生成[B] generate-structures=true #生成建筑,true为生成[B] spawn-animals=true #生成动物,true为生成[B] snooper-enabled=true #允许采集服务器信息true为允许[B] difficulty=easy #强制难度选项[S] function-permission-level=2 #函数默认权限等级,建议不要动[I] network-compression-threshold=256 #数据包压缩大小,建议保留[I] level-type=default #种子类型,default为默认[S] spawn-monsters=true #生成怪物,即和平选项,true为生成[B] max-tick-time=60000 #服务器最大崩溃等待响应时间,60000代表1分钟,超时后会自动结束服务器[I] enforce-whitelist=false #强制白名单,为false玩家同样能进入游戏,但会在一段时间后被踢出,直到加入白名单,前提是白名单开启[B] use-native-transport=true #针对Linux的优化,如果系统是Linux建议开启[B] max-players=20 #最大玩家数量[I] resource-pack-sha1= #资源包验证,使用sha1,此处填资源包的sha1[S] spawn-protection=16 #出生点保护,设置为0则关闭[I] online-mode=true #在线模式,就是正版模式[B] allow-flight=false #允许飞行,false当然是不允许啦[B] max-world-size=29999984 #世界生成上限,若到达则会出现空气墙[I]

以上是server.properties配置,如果有不懂的话欢迎QQ或者下方评论区骚扰嗷

bukkit.yml

bukkit.yml是Bukkit的配置文件,不是每一种核心都会生成

参考MCBBS大神 https://www.mcbbs.net/thread-478126-1-1.html

(侵删)

主要优化参数:

spawn-limits 即生物生成

超过10个人的服务器建议以下参数

monsters:50 #怪物

animals:10 #动物

water-animals:3 #水生物

ambient:1 #蝙蝠

注意这里的生成数量不是指全服的,只是一个人对应的生物数量,假设monsters为50,那么十个人在线则为最多500个怪物生成

另外加Spigot.yml的一些优化参数解析:

不单独写Spigot的原因是这个配置文件会极大的影响玩家体验,建议不要修改

random-light-updates: #随机光照更新,建议改为false,效果未知

max-tnt-per-tick:#最多每秒用多少kick去运算tnt防止卡服,警告,此选项会给使用TNT的红石科技带来极大影响,建议为20

tick-per:#控制漏斗运算,设置它将会给红石科技意想不到的效果,建议不要更改

0x07 常常常见问题 F&Q……QAQ怎么还有

问题:怎么给玩家OP

应该在控制台(后台)输入op 玩家名

问题:该如何下载插件

mcbbs.com 有你更精彩

问题:如何下载MOD

国外下载站:CurseForge

国内下载站:MC百科

问题:为什么进入服务器就在游戏提示无效的游戏会话

qwq 哼!你没买正版,快去把正版认证关了吧

问题:为什么服务器后台一直说Can‘t not keep !

表示CPU性能不是很好,一个动作执行了xxxxxms都没执行完,注意,这里的tick数,如果超过60000是会引发崩溃的,轻则大量玩家被t出服务器,重则直接崩溃,若出现,游戏内也没有明显卡顿建议把max-tick-time设置得大一点

问题:白名单开启后即使是在玩家被添加到白名单也会出现不能进入游戏的情况

哼!看看看,不买正版才会这样的!

解决办法:

enforce-whitelist设置为false,等待玩家第一次进入游戏时给予白名单

或

使用白名单插件

问题:为什么我一直无法启动服务器,bat的窗口总是一闪而过

请检查EULA.txt文件,是否false改为了true 同意EULA协议

问题:为什么EULA也更改仍然不能启动

qwq 这…….检查下JAVA和启动脚本有没有配置好或者填写好?

缺失的图片和表格可以到我的博客查看 我的博客地址:https://hanbings.github.io/