本帖最后由 in77 于 2020-3-29 10:20 编辑




0. 一台性能足够的电脑和网络
确保你有64位的CPU和系统 (32位玩MC都卡,想开服还是洗洗睡了吧)
开单端大服务器的CPU更看重高主频,开群组服务器的CPU更看重多核心数
确保你的服务器有至少4GB的RAM (建议6GB或更高)
对于网络,理想情况下5Mbps的上行能带10-20人,以此类推
而局域网开服的服主一般不用管这个(毕竟局域网内的速度远大于5Mbps)
1. 64位的Java8
Java8以下的版本自从1.12.x已经不被支持了, 同时绝大部分插件对Java8的兼容性最好
对于普通开服的服主,请使用Oracle JRE 8(最普通的Java)
*个人强烈不建议萌新服主使用OpenJ9之类的优化方案, 也不推荐使用Java9或更高的版本
2. 一个好用的文本编辑器
一个好用的文本编辑器会让你的开服之路更好 (雾
至少它给你带来的编辑体验会远比蹩脚的记事本更好
个人推荐VS Code和NotePad++两款文本编辑器


方法1: 自己在Paper官网下载并Patch服务端
*下载Paper老版本的方法*
步骤如下:
1. 找到你下载下来的文件位置(别告诉我你找不到了)
2. Patch纯净服务端:
你可以用最简单的方法: 双击打开下载下来的.jar文件, 让它自动下载并Patch原版服务端
下载需要时间,请耐心等待 (但这个下载速度很迷, 有时候很快, 有时候和蜗牛一样)
当出现eula.txt等文件时, 代表已经Patch好了.
Patch好的核心位于cache文件夹里, 名字叫做 patched_<MC版本>.jar
3.把这个文件移到一个单独的文件夹 (当然你要就地使用也可以,这个步骤只是推荐)
然后请移步第四章
*使用命令行构建的方法*
方法2: 从第三方构建站下载
注意: 构建站的版本有时不是最新发布的构建版本
请自行确认从第三方构建站下载的核心是否没有问题
我个人推荐的构建站:
Yive's Mirror https://yivesmirror.com/
Sakura's Mirror https://mirror.tcotp.cn/

复制代码
请将这个脚本以UTF-8编码格式保存
*不同编辑器的保存方法*
第2步: 运行刚刚保存的脚本
双击打开start.cmd文件 (刚刚创建的脚本文件)注意: 第一次启动时需要生成世界, 大约需要20秒-1分钟左右
当你看到 Done (29.399s)! For help, type "help" 时, 代表你服务器的第一次启动成功了.
请输入 stop 关闭服务器, 不要在这个时候进服务器建主城什么的, 那是第八章的事情, 请先移步第五章。
*常见的启动失败情况*
内存不足(设置的内存过大)
端口被占用

server.properties文件:
bukkit.yml 文件:
spigot.yml 文件:
paper.yml 文件:
commands.yml 文件:

主要优点:
不足:
2. 离线模式
可以让没有正版的玩家也进入服务器, 可以使用任意玩家名进入服务器
使用离线模式时, 玩家登陆不与验证服务器验证账号, 没有登陆插件的情况下, 玩家可以用任意账号进入服务器
主要优点:
不足:
离线服务器通过配合数据库、其他插件, 也可以拥有网页邮箱验证、防止压测、有效封禁恶意破坏者
具体实现请搜索其他dalao关于此类的帖子
主要优点:
不足:
Authlib-Injector在mcbbs内的介绍贴 https://www.mcbbs.net/thread-772051-1-1.html
也有类似第三方提供类似于Authlib-Injector的验证方案, 例如 "统一通行证"


复制代码





*写在最前面的话*
本教程假定阅读者拥有一部分电脑知识且看得懂部分和MC有关的英文
看不懂英文? 你可以先看本文英文的中文解释 (临时抱佛脚)

本教程主要面向想使用VPS、独立机、或家用主机, 使用Windows系统
想开高版本纯净插件服务器 (1.13.x以上) 的萌新服主
由于BBS没有关于这类需求且较全面的帖子, 所以我打算开新坑
以后可能会出Catserver之类模组核心的开服教程 (咕咕咕)
它会教你如何 下载、构建服务器核心, 开服, 弄一些基本插件, 以及设置权限
这个教程并不是最简单的教程,但是我会指出不少其他教程中所没有的细节
提供我对开服的个人见解,如果有错误还请大佬指出

本帖内容严禁转载!

本帖中示例主机的操作系统为 Windows Server 2019 (版本号 1809) 中文版系统
不同版本的Windows中的部分细节可能与本教程中的有所不同, 但都大同小异

*第一章 开服前的准备*
确保你有64位的CPU和系统 (32位玩MC都卡,想开服还是洗洗睡了吧)
开单端大服务器的CPU更看重高主频,开群组服务器的CPU更看重多核心数
确保你的服务器有至少4GB的RAM (建议6GB或更高)
对于网络,理想情况下5Mbps的上行能带10-20人,以此类推
而局域网开服的服主一般不用管这个(毕竟局域网内的速度远大于5Mbps)
1. 64位的Java8
Java8以下的版本自从1.12.x已经不被支持了, 同时绝大部分插件对Java8的兼容性最好
对于普通开服的服主,请使用Oracle JRE 8(最普通的Java)
*个人强烈不建议萌新服主使用OpenJ9之类的优化方案, 也不推荐使用Java9或更高的版本
2. 一个好用的文本编辑器
一个好用的文本编辑器会让你的开服之路更好 (雾
至少它给你带来的编辑体验会远比蹩脚的记事本更好
个人推荐VS Code和NotePad++两款文本编辑器

*第二章 选择服务端*
对于想开纯净服的服主, 个人建议使用PaperSpigot核心
为什么?
PaperSpigot服务端是从Spigot优化而来, 相比Spigot有更好的优化和自定义选项
对于各种服务端的对比, 你可以参考bbs其他dalao的帖子

*第三章 下载、构建服务端*
选好了服务端, 接下来就是下载了
不同的服务端有不同的下载/构建方法, 这里提供 Paper 核心的下载方法
方法1: 自己在Paper官网下载并Patch服务端
Paper的官网提供仍在更新的版本的下载 (截止发帖是1.15.2)
如果你要下载最新版, 请前往 https://papermc.io/downloads
你会看到这样的界面:

选择下载最新(最上面) 的版本即可
请注意: 从Paper官网或Jenkins下载来的并不是可以直接开服的核心, 你得手动制作可以开服的核心
步骤如下:
1. 找到你下载下来的文件位置(别告诉我你找不到了)

2. Patch纯净服务端:
你可以用最简单的方法: 双击打开下载下来的.jar文件, 让它自动下载并Patch原版服务端
下载需要时间,请耐心等待 (但这个下载速度很迷, 有时候很快, 有时候和蜗牛一样)
当出现eula.txt等文件时, 代表已经Patch好了.
Patch好的核心位于cache文件夹里, 名字叫做 patched_<MC版本>.jar

3.把这个文件移到一个单独的文件夹 (当然你要就地使用也可以,这个步骤只是推荐)
然后请移步第四章
*使用命令行构建的方法*
方法2: 从第三方构建站下载
注意: 构建站的版本有时不是最新发布的构建版本
请自行确认从第三方构建站下载的核心是否没有问题
我个人推荐的构建站:
Yive's Mirror https://yivesmirror.com/
Sakura's Mirror https://mirror.tcotp.cn/

*第四章 第一次开服*
当你准备好了核心,接下来就是激动人心的第一次开服了
第1步: 创建一个开服脚本
我个人推荐使用命令行 (CMD) 开服 而不是用第三方开服器开服
由于是第一次开服, 所以这里会先教导你写一个基础开服脚本:
首先在服务端核心所在的文件夹创建一个文本文件, 并把文本文件的扩展名改为 start.cmd (或者任何一个你喜欢的名字)
然后用文本编辑器打开, 加入以下内容:
然后用文本编辑器打开, 加入以下内容:
- @echo off
- chcp 65001
- java -XX:+AggressiveOpts -XX:+UseCompressedOops -Dfile.encoding=UTF-8 -Dcom.mojang.eula.agree=true -Xmx<分配的内存> -Xms<分配的内存> -jar <核心文件名>.jar nogui
- pause
*对每行命令以及Java启动参数的解释*
请将这个脚本以UTF-8编码格式保存
*不同编辑器的保存方法*
第2步: 运行刚刚保存的脚本
双击打开start.cmd文件 (刚刚创建的脚本文件)注意: 第一次启动时需要生成世界, 大约需要20秒-1分钟左右

当你看到 Done (29.399s)! For help, type "help" 时, 代表你服务器的第一次启动成功了.
请输入 stop 关闭服务器, 不要在这个时候进服务器建主城什么的, 那是第八章的事情, 请先移步第五章。
*常见的启动失败情况*
内存不足(设置的内存过大)
端口被占用
如果遇到了其他自己无法解决的问题, 请寻找他人帮助
但请记住让别人帮你解决任何问题, 你得附上错误日志或报错信息
Troubleshooting any problem without the error log is like driving with your eyes closed.
在没有错误日志的情况下诊断任何问题无异于闭眼开车。
—— Apache 官方文档 Getting Started 篇章

*第五章 修改服务端配置文件*
第一次启动Paper服务端后, 服务端目录中会出现以下文件
(以 Paper 1.15.2 构建 146 为例)

*文件列表 (文本)*
*修改服务端配置*
此处仅提供我认为要修改的几个重要参数, 至于"性能优化"等需求请去看其他dalao的帖子
注意: 所有配置文件中的 冒号、分号、逗号、括号、引号 等都必须是英文字符
如果你要加中文或特殊符号, 需要用"" (英文双引号) 扩起来
由于使用了全局UTF-8编码, 请确保你所有配置文件(包括插件) 的配置编码都为 UTF-8
*给萌新的重要提醒*
改任何配置, 如果你不懂这个参数所代表的意义, 那么请不要改你不懂什么意义的参数
server.properties文件:
bukkit.yml 文件:
spigot.yml 文件:
paper.yml 文件:
commands.yml 文件:

*第六章 玩家验证方案*
本章节详细介绍以下几种常见的登录验证方法
1. 正版验证
最方便的玩家验证方法, 只要有正版号就能进服务器
使用正版验证时, 玩家登陆会与Mojang的验证服务器验证登陆令牌(Access Token), 验证通过可以进入服务器
server.properties 中的 online-mode 设置为 true 即可 (默认值)

- 不需要离线服务器所需要的AuthMe等额外的登陆插件, 只要有正版账号就能进服
- 正版账号每个账号对应一个UUID, 玩家可以在官网随意改游戏名
- 惩罚不良玩家更加方便, 被封禁的玩家改名字也不能进入服务器
- 相对来说玩家素质比离线服务器有一点提高
- 使用离线登陆的压测攻击无法压测你的服务器

- 如果你的服务器无法连上Mojang的验证服务器, 或者Mojang验证服务器出问题, 那么所有玩家将会无法进入服务器
- 由于有Google验证码等, 国内购买正版账号较为困难, 国内也有很大一部分玩家没有正版账号, 他们将不能玩你的服务器
2. 离线模式
可以让没有正版的玩家也进入服务器, 可以使用任意玩家名进入服务器
使用离线模式时, 玩家登陆不与验证服务器验证账号, 没有登陆插件的情况下, 玩家可以用任意账号进入服务器
server.properties 中的 online-mode 修改为 false 即可
注意: 离线登陆的账户UUID是根据用户名生成的, 如果离线服务器不加AuthMe等登陆插件, 那么任何人都可以登陆任意一个账号
注意: 离线登陆的账户UUID是根据用户名生成的, 如果离线服务器不加AuthMe等登陆插件, 那么任何人都可以登陆任意一个账号

- 玩家可以用任意用户名进入服务器, 通过配置登陆插件可以做到中文等其他语言的字符
- 没有正版账号的玩家也可以进入服务器
- 不需要连接验证服务器所以不存在"Mojang服务器无法连接"的问题

- 没有登陆插件的话玩家可以用任何账号进入你的服务器, 包括你自己的OP账号
- 换用户名意味着换账号, 如果玩家想换用户名, 那么迁移数据是一件很麻烦的事情
- 恶意破坏者(熊孩子)如果被封禁账号可以用其他用户名进入你的服务器继续破坏
- 相较于正版验证, 你服务器的平均玩家素质可能较低
- 没有保护插件的情况下, 你的服务器无法防御压测攻击
离线服务器通过配合数据库、其他插件, 也可以拥有网页邮箱验证、防止压测、有效封禁恶意破坏者
具体实现请搜索其他dalao关于此类的帖子
3. Authlib-Injector
开源的游戏外登录规范, 把Mojang的正版登录API劫持成自己的, 从而实现游戏外登录。
源码、下载、Wiki (GitHub): https://github.com/yushijinhun/authlib-injector
相较于前两种, 不建议萌新服主使用

- 架设自己的账户服务器, 等于 “你自己的‘正版’账号服务器”
- 和正版一样, 每个账户有一个不变的UUID
- 玩家可以使用你自己架设的皮肤库
- 封禁恶意破坏者更方便, 因为你可以阻止其注册新账号
- 和正版验证一样可以防御压测攻击

- 你需要会使用Apache、MySQL等工具
- 验证服务器需要额外占用你的服务器性能, 或者你得再准备一台服务器用于Authlib-Injector
- 需要SSL加密证书, 这可能要额外付费, 国内使用443等端口需要备案
- 你需要花费额外的时间维护、管理你的验证服务器
- 你的玩家可能在注册、登陆方面遇到问题, 你得花时间帮他们解决问题
Authlib-Injector在mcbbs内的介绍贴 https://www.mcbbs.net/thread-772051-1-1.html
也有类似第三方提供类似于Authlib-Injector的验证方案, 例如 "统一通行证"

*第七章 添加插件*
这一部分的教程将会介绍我建议一个生存服务器要添加的插件
本章提供免费插件的下载链接, 对于付费插件请自行购买
加入插件后你需要多次打开并重启你的服务端使插件自行创建配置文件、下载依赖库等
对新手服主推荐的插件列表
还有别的好插件欢迎补充

*第八章 进服 & 设置权限*
到这里你应该改好你的服务器配置同时加了插件了
那么请先干2件事
1. 关闭你的MC服务器 (如果开着的话)
2.删掉第一次开服时候生成的地图
改了配置和添加插件后强烈建议删掉第一次开服自动生成的地图
毕竟你可能改过世界生成参数了对吧, 比如开了平滑基岩
反正按照本教程你应该还没用客户端进去过服务器
完成后请重启服务端
*通过IP进入服务器*
*在完成权限配置前请不要公开宣传服务器*
*设置权限*
这个我这里就不写了, 自己看插件百科之类的吧
在列一个常用权限列表我手要断了

*在启动脚本中加入自动重启*
MC服务器难免会Crash, 或者有时候你会要重启更新插件
当你完成了大部分配置之后, 你可以把你的启动脚本改成这样
- @echo off
- chcp 65001
- :start
- for /f "tokens=5" %%i in ('netstat -aon ^| findstr ":25565"') do (
- set n=%%i
- )
- taskkill /f /pid %n%
- java -XX:+AggressiveOpts -XX:+UseCompressedOops -Dfile.encoding=UTF-8 -Dcom.mojang.eula.agree=true -Xmx<分配的内存> -Xms<分配的内存> -jar <核心文件名>.jar nogui
- timeout /t 3
- goto start
服务端关闭后, 会自动回到 :start 的地方继续往下执行, 从而做到服务器关闭后自动重启
timeout /t 3 是在服务器关闭后等待3秒, 如果你想停止脚本, 请在此时关闭CMD窗口

*第九章 服务器日常管理*
当你配置好你的服务器插件后, 你就可以公开宣传你的服务器了
做服务器介绍的时候尽量多加点新奇的点子可能会吸引更多玩家
请注意: 千万不要给你不熟悉的人管理员权限
如果那个人是想骗到权限来恶意破坏呢?
*反作弊*
在这里在特别提一下关于是否要使用反作弊
如果是基友联机的服务器、开白名单自己人玩玩的, 那么反作弊没有必要, 只会降低你的游戏体验
这里强烈建议所有公开服务器(只要是谁都可以来玩的服务器)
加反作弊插件
对于你自己熟悉的朋友, 可以给他们反作弊的bypass权限(不检测这个玩家), 从而不让他被反作弊的可能存在的误报影响到
SpigotMC上1.13-1.15的反作弊列表

*第十章 对MC1.14和1.15性能优化的建议*
BBS里对于修改服务端配置优化服务器的教程很多
我这里对1.14之后令人窒息的 Chunk I/O 和 生物AI
提供一些建议

如果是开基友联机服, 忽略这些建议吧, 反正服卡了直接锤你基友就好了

1. 使用Essentials或者WorldGuard等插件禁止 火焰蔓延、爆炸破坏 等物理现象, 虽然你可能装了日志插件之类的保护插件, 但是对于TNT破坏之类的回滚常常会有一点问题, 比如栅栏之类的方块不相连, 甚至回滚的时候把点燃的TNT一起回滚了, 然后再炸一次 

2. 视野距离强烈建议不要超过6, 不然多几个玩家你服务器TPS就跳水
3. 关掉出生点常驻区块, 或者把世界出生点全部用RES或者WorldGuard插件圈起来, 除非你想让玩家在常加载区建造红石机器之类的
4. /tpa /back等传送指令设置一点冷却时间
5. 少让玩家高速跑图 或者随机传送(如果有的话)
6. 禁止密集养殖村民, 建议一个区块最多6只, 村民密集起来的话你就等着看Can't Keep up!刷屏吧 (反正我的i7-4960X是承受不住)
7. 主世界限制、或干脆禁止僵尸猪人生成, 猪人塔的猪人密集起来和村民一样也足够你服务端受的

就写到这里吧

Can't keep up! Is the server overloaded? Running 50000ms or 1000 ticks behind

占楼备用 

腐竹也太细了吧

写得很详细哎,i了i了,支持下
这么细节的吗,i了i了
凌晨制作?辛苦了
楼主牛逼
自己家的电脑开着稳定吗qwq
i了i了。没想到服主还发了教程,留个id:TheSuzh_524
i了i了

辛苦楼主了 i了 i了