写在开头:
提到minecraft大伙儿可能多少都有印象,当年和朋友们一起筹钱开服的往事还历历在目。近期闲来无事,便突发奇想大致整理一些开服的基础介绍,权当是云端的树洞。有些内容来自网络,进行了归纳整理,作为自己开服历程的记录,可能多有杂乱错漏,还请各位多多指正。
Minecraft服务器可以提供一个全天候在线的游戏,无论处于何时何地随时都可以进入共同的存档游戏。其基于一台7x24在线的服务器上架设服务端,并且提供一个公网访问方式(公网IP或内网穿透,也可使用域名解析使其更加好记)。一般的开服方式有:租赁、下载服务端使用服务器自行开服。其中租赁的来源可以是淘宝等平台上的资源,也可以是微软realms或者是网易代理的租赁服务器。而自行开服则需要先了解你需要的游戏版本。
一、租赁现成服务器
在淘宝等渠道租赁此处不再赘述,通过微软realms租赁进入游戏—>“在Realms服务器上创建”,按操作租赁即可。
直接租赁服务器的可以方便迅速的开服,适合短期尝鲜体验的用户。在Tb网购的服务器(一般是面板服)需要警惕交易安全,而在微软realms租赁的时候则可能需要切换地区。
二、版本介绍与选择
国际版本的Minecraft分为两个游戏版本:基岩版和JAVA版本;国内版本的Minecraft由网易代理。二者一致的是,电脑版本有JAVA和基岩两个版本,手机版本则只有基岩版。不同的是,网易代理的版本看起来比国际版本(微软版本)更新的要慢一些。
Java版顾名思义是使用Java语言编程的,是minecraft的最初版本,一般称之为Java版、JE版,而基岩版英文名称为Bedrock Edition,使用C++语言编程,一般称为基岩版、PE版、携带版。
1. 在游戏启动上,JAVA版本在使用启动器启动的时候可以自由选择版本,你的设备上也可以共存多个版本,开服所需要的服务端版本固定无需改变。基岩版启动的时候则无法自由选择版本。
2. 在游戏版本上,JAVA分为“快照”(测试更新,一般是预览)、“试验性快照”(不会在启动器发布,俗称快照中的快照)、“预发布版”(即将发布前的快照)、“正式版”等方式进行测试更新和正式更新。[^1] 而基岩版分beat版(相当于快照)、preview版(代替beat版)以及正式版进行测试更新和正式更新。 其中基岩版beta版和正式版的游戏端和服务端不一样,也不能互通,开服的时候需要注意。
3. 在游戏可玩性上,JAVA可以加入更多的插件和MOD,可以拥有更多的玩法(如:粘液科技、登陆领地插件),且有一些独有的特性,如双持。与之相对比的基岩版一般只能加入行为包,可玩性相对较差。
4. 在内容翻译上,由于基岩版采用机器翻译,所以可能会有一些看起来奇奇怪怪的翻译。
5. 在联机功能上,JAVA版本一般为PC设计,只可以电脑之间联机。而基岩版的服务器可以在不同设备之间联机,如电脑和手机一起游戏。
可以参照上面的简要介绍和自己的需要确定需要的版本,然后进行对应版本的服务端寻找和下载。
三、服务端下载
JAVA版本通常可以访问MCBBS论坛获取各个版本的服务端,也可以访问微软的官网获取最新版本的服务端[Download server for Minecraft | Minecraft](https://www.minecraft.net/zh-hans/download/server)。
基岩版本无法在启动的时候自由选择版本,推荐使用最新版本的服务端即可[基岩版服务器下载 | Minecraft](https://www.minecraft.net/zh-hans/download/server/bedrock)。需要需要注意的是,下载时需要区分标准版和BETA版,如上所述二者的客户端也是不同的。
下载的.jar文件对于winser和linux都是通用的。
四、客户端下载
JAVA版可以使用启动器启动,你可以通过微软正版的启动器进入游戏,也可以通过第三方启动器(也就是盗版)进入游戏。比较知名的第三方启动器包括:[PLC]、[HMCL]。
基岩版一般推荐使用官方正版启动器,PC端可以在微软商店购买,PE端可以在Apple Store和Google Play购买正版。
五、服务器
自行搭建mc服务器的前提是你需要拥有一台自己的、可以进行公网访问的服务器。你可以去购买各厂商的云服务器(一般建议轻量云服务器即可够用),也可以利用自己闲置的电脑设备作为服务器搭建。不过后者需要通过内网穿透以实现玩家的公网访问。比较知名的第三方内网穿透软件有:花生壳。
如选择购买厂商服务器,一般可以粗略理解为1G内存可以供8-10人在线、一人0.5-1M带宽。如果加入插件和MOD则需要更大的内存。JAVA 1.17版本及以上建议4GB内存起步。
作为参考:2c2g5m服务器,JAVA 1.12.2近似纯净生存服,5人在线时候无明显卡顿。
六、开服操作
(1)Linux
首先需要一个远程连接服务器的SSH软件并且为服务器开放<22>端口(为ssh默认端口,你也可以自行设置其他非冲突端口以增强安全性),常用的软件一般有:[Putty],[Xshell],这里只是提供的一种思路。
1.1 连接服务器
下面的操作以XShell为例,可以透过上面的链接下载免费授权。请同时安装xshell和xftp。后者在上传文件的时候会需要用到。
1. 打开xshell后点击“新建”.
xshell新建会话
2. 随后输入主机IP和端口号,SSH端口一般默认为22,点击“连接”.
xshell登入服务器
3. 按要求输入登录用户名,并点击“确定”
4. 双击左侧“新建会话”,按要求输入登陆密码即可连入服务器。
1.2 配置服务器 [^2]
1.2.1 安装环境
第一步就是安装相应的环境,JAVA版需要先为你的服务器安装JAVA,只需要在xshell命令行输入如下指令:
yum install -y java //安装JAVA
如你想指定下载的JAVA版本需要在代码后加上版本号即可,有时会因为服务端版本原因,需要尝试不同的java版本以找到最合适的版本。
1.2.2 防火墙
为让其他玩家可以从公网访问你的游戏服务器,需要检查防火墙是否开启。
systemctl status firewalld.service //检查防火墙是否开启,提示disavtive(dead)则表示已关闭
systemctl stop firewalld.service //CentOS关闭防火墙指令
1.2.3 保持服务端会话
利用screen使得可以在断开连接的情况下,mc服务器也可以保持运行。
yum install screen //安装screen
提示”is this ok?“
y //确认安装
1.3 装载Minecraft服务器
首先需要使用上面安装的screen建立一个新的session,以确保在断开xshell连接后依然可以保持mc服务器的运行。
screen //建立新session
其中,关于screen的一些基础指令被罗列在下方:
关于screen的一些指令:
screen //新建一个session
screen -ls //列出当前所有的session
screen -r hello //回到hello这个session
screen -d hello //远程结束hello session
screen -d -r hello // 结束当前session并回到hello这个session
现在,需要使用之前提到的XFTP将服务端核心上传到服务端以及进行修改。使用XFPT连接服务器后,双击文件列表顶端的“…”回到根目录下,新建一个名为“server”的文件夹(名字也可以随意,足够区分即可),并将服务器核心置入此目录下。然后我们需要一个启动脚本,命名为“start.sh”,可以使用记事本编辑。如后续winser开服启动脚本后缀则为.dat。
java -Xmx1024M -Xms1024M -jar minecraft_server.1.12.2.jar nogui
//-Xmx代表最大占用内存,-Xms代表最小占用内存,-jar后面的为服务端核心的名称,nogui表示无图形显示
或者透过微软官方的基岩版适用于UBUNTU的下载链接[基岩版服务器下载 | Minecraft]下载,将容器文件解压到空文件夹,通过以下命令开启服务器:
LD_LIBRARY_PATH=. ./bedrock_server
并且透过其中自带的微软帮助文档进行接下来的操作。
1.4 运行Minecraft服务器
在screen中输入如下指令:
cd .. //回到根目录下
cd server //进入“server”目录(如上一步文件夹名称是自定义,此处也要修改)
bash start.sh //运行启动脚本(同理,如自定义脚本名此处则需修改)
此处会发现无法正常启动服务器,中止并进入“server”目录下,打开新生成的“eula.txt”(最终用户协议),将其中的FALSE改为TRUE同意协议。然后再一次在screen输入启动指令:
bash start.sh //启动游戏
不出意外,服务器已经正常开服。
(2)WinSer
winser由于是图形化操作界面,大家平日有使用windows系统的习惯,比较好上手,也推荐新手使用此渠道开服。但是需要指出的是,winser对服务器性能要求更高,推荐至少在2GB内存的机器上尝试。系统版本建议使用winser 2012 R2版本,是个人测试下对服务器性能要求相对较低且好用的版本,此版本基于win8,UI和操作习惯也相对熟悉。
2.1 连接服务器
winser连接一般使用系统自带的“远程桌面”功能,但是此功能在家庭版上**不受支持**。针对家庭版用户可以选择寻求专业版的升级密钥,或者采用第三方远程桌面软件。
无论使用哪一种方式,都需要提前为服务器开启<3389>端口(为远程桌面默认端口,你也可以设置其他非冲突端口以增强安全性)。以腾讯云服务器为例,需要前往服务器管理后台先重置登陆密码,登陆用户名建议暂时保持“Administor”不变。输入你的服务器IP并点击“连接”,按要求输入用户名密码即可进入远程桌面。
2.2 配置服务器
2.2.1 安装环境
和Linux开服一样,如果你选择JAVA版本的服务端,你也需要先行安装JAVA环境,一般不推荐最新版本,因为可能存在一些稳定性和兼容性问题。你可以前往[甲骨文官网]下或者[MCBBS论坛]等方式获取你需要的java版本。
作为参考:我个人使用的java 1.12.2核心采用的java为“jre-8u321-windows-x64”。
Tip:java不建议随便更新。
2.2.2 防火墙
一样需要开放对应端口以确保玩家用户可以正常公网访问游戏服务器,你可以前往服务器管理后台开放。一般而言常用的端口如下(当然你也可以修改合适的端口,后面会提到):
java port - 25565
bedrock port -19132(ipv4)
-19133(ipv6)
按需开放即可。
2.3 装载Minecraft服务器
得益于图形化操作界面,只需要在桌面建立一个新文件夹,命名为“server”(或者你喜欢的名称),然后将服务端置入其中,并且参照上面linux的方法修改“eula”中结果为同意协议。从微软官网下载的基岩版服务端会自带启动文件,一般名为“bedrock_server.exe”,如果服务端中没有集成启动脚本,我们则需要自行编写。
最基础的形式和linux启动文件差不多,不同的是文件后缀为bat而非sh.
java -server -XX:+UseG1GC -Xms1024M -Xmx4096M -jar <服务端名称>.jar nogui
//详细意义可以参照上文Linux启动脚本撰写的介绍
当然,为了防止可能的服务端中断,我们也可以使用echo来使得服务端达到自动重启的目的,保证游戏服务器的可用性。具体的介绍可以参考本文底端的“补充内容”,也可以点击链接前往[MC服务器启动脚本写法]。这里给出我自用的一个启动脚本作为参考。
@ECHO OFF
title <窗口标题名称,可以自定义>
MAIN
cls
java -Xmx8192M -Xms5120M -XX:+AlwaysPreTouch -XX:+DisableExplicitGC -XX:+UseG1GC -XX:+UnlockExperimentalVMOptions -XX:MaxGCPauseMillis=45 -XX:TargetSurvivorRatio=90 -XX:G1NewSizePercent=50 -XX:G1MaxNewSizePercent=80 -XX:InitiatingHeapOccupancyPercent=10 -XX:G1MixedGCLiveThresholdPercent=50 -XX:+AggressiveOpts -XX:LargePageSizeInBytes=2M -XX:+UseLargePages -XX:+UseLargePagesInMetaspace -jar spigot-1.12.2.jar
if exist "plugins\RestartEvolution\restart.mcs" goto MAIN
echo (%time%) 服务器准备重启
echo.
timeout 6
goto MAIN
END
2.4 运行Minecraft服务器
双击文件夹中的“bedrock_server.exe”或“start.bat”或者类似的文件一键开服。
(3)正版验证
如果你和你的朋友们都拥有正版账号,那么可以选择开启此选项,否则请关闭。开启后可以阻止大部分恶意玩家(因为他们的恶意行为需要正版账号,增加了成本)。如果你想修改此选项,可以在目录下“server.properties”文件中找到如下内容进行修改:
online-mode=false //false即为关闭正版验证
七、服务器基本配置
根据上文的步骤,服务器应该已经正常开服了,下面是对目录下部分配置文件的基础解释,利用他们可以修改服务器的一些配置,以更适合个人需求。其中在完成配置文件的修改与上传后,需要透过“reload”指令重新加载整个服务端以使得修改生效。
`server.properties`
这是决定服务器信息最重要的文件,可以使用记事本直接打开修改。如果愿意也可以使用vscode等软件更舒适的编辑。这里以我自己的文件作为范本解释:
#Minecraft server properties //说明,无需理会
Sat Feb 25 14:49:49 CST 2023 //建立时间,无需理会
spawn-protection=16 //出生点保护距离,设置为0则将出生点保护降低为1x1的空间
server-name=XXX Server //服务器名称,将会在服务器列表展示
generator-settings=
force-gamemode=false //强制游戏模式
allow-nether=true //生成末地
gamemode=0 //默认进入游戏时的游戏模式,0为生存、1为创造、2为冒险、3为旁观
broadcast-console-to-ops=true //将控制台广播至op
enable-query=false //是否开启GameSpy4协议服务器监听器
player-idle-timeout=0 //服务器最长挂机时间,设置为0则不踢出服务器
difficulty=3 //难度,从0-3以此为和平、简单、普通、困难*
spawn-monsters=true //是否生成怪物
op-permission-level=4 //op的权限等级,默认4级即可。详细信息可以在底部补充内容的链接了解更多。
pvp=true //是否开启pvp
snooper-enabled=true
level-type=DEFAULT //确定服务器地图的类型。DEFAULT - 标准世界;FLAT - 超平坦世界;LARGEBIOMES - 预设世界,但所有生态系都更大(仅快照12w19a,或正式版1.3之后可用);AMPLIFIED - 预设世界,但世界生成高度提高(仅快照13w36a,或正式版1.7.2之后可用)[^3]
hardcore=false //极限模式,玩家死后会被服务器封禁
enable-command-block=true //允许命令方块
max-players=50 //最大允许同时在线的玩家数量(实际承载数还是要看服务器配置,这里是做一个限制,超过数量限制的玩家进入会提示排队等待)
network-compression-threshold=256 //默认会允许n-1字节的数据包正常发送, 如果数据包为 n 字节或更大时会进行压缩。 所以,更低的数值会使得更多的数据包被压缩,但是如果被压缩的数据包字节太小将会得不偿失。一般而言有:1 - 永久禁用数据包压缩;0 - 压缩全部数据包,建议在64-1500) [^3]
resource-pack-sha1= //资源包的SHA-1值,必须为小写十六进制。保持默认值一般即可。
max-world-size=29999984 //设置世界最大半径,超过max则无效
server-port=25565 //服务器端口,可以修改以增强安全性,但是同时需要开放对应端口
debug=false
server-ip= //服务器指向ip,会与之绑定。建议留空。
spawn-npcs=true //是否生成npc
allow-flight=true //是否允许飞行(针对有权限者)
level-name=world //主世界的名称
view-distance=8 //视距。默认10,推荐4-8,限制了渲染距离,一般建议>7,请根据实际情况调整
resource-pack= //可输入指向一个资源包的URI。玩家可选择是否使用该资源包
spawn-animals=true //是否生成动物
white-list=false //是否启用白名单机制。建议默认FALSE,如需启用需要修改目录下的whitelist文件
generate-structures=true //是否生成建筑物,如村庄、神庙
online-mode=false //这也就是大名鼎鼎的“正版验证”,开启后必须使用正版账号才能够登入。可以有效阻止大部分恶意玩家。
max-build-height=256 //建筑高度限制,最大值为256
level-seed= //服务器种子
prevent-proxy-connections=false //阻止代理连接。开启此选项后玩家透过代理工具(包括但不限于加速器之类)将无法进入游戏。此举可确保你能获得玩家真实的ip地址,便于管理封禁恶意玩家,按需开启
motd=XXX Server //服务器标语
enable-rcon=false //是否开启rcon监听,一般保持默认即可
`ops.json`
这里记录了服务器内的op(管理员)以及他们的权限等级,在控制台透过指令添加的管理员默认为4级最高级别。在页面底部的“补充内容”中可以对于权限等级进行进一步的了解。
op //任命op(默认4级)
-
deop //取消op资格
文件内容示例如下,你也可以参照此格式手动添加op,完成修改后请保存文件并透过“reload”更新配置。其中uuid一般可以透过指令“seen <name>”获取。
{
"uuid": "",
"name": "",
"level": 4,
"bypassesPlayerLimit": false
//修改为true代表在人满时op可以突破人数限制无需排队直接进入服务器
},
` banned-ips/players`
这个文件内记录了服务器内封禁的玩家和ip(段)以及封禁的原因,你可以透过控制台指令或者修改此文件内容以封禁/解封。
控制台命令(游戏内使用需要前置/):
ban //封禁该id,并且附带原因
ban //封禁该ip(段),并且附带原因
pardon //解封该id
pardon ip //解封该ip(段)
tempban //封禁某个玩家或IP一段时间。 : s=秒,m=分钟,h=小时,d=天,w=星期,mo=月,y=年
文件内容示例如下,你也可以参照此格式手动执行封禁/解封操作,完成修改后请保存文件并透过“reload”更新配置。
’banned-players.json‘
[
{
"uuid": "",
"name": "",
"created": "xxxx-xx-xx xx:xx:xx +0800", _**//此项为执行封禁的时间,末尾的+0800为UTC时区。**_
"source": "Console", _**//此项代表执行封禁操作的来源,“console”表示从控制台透过指令封禁**_
"expires": "forever",
"reason": "您的网络环境存在风险,请尝试更换网络环境。"
}
]
‘banned-ips.json’
[
{
"ip": "",
"created": "xxxx-xx-xx xx:xx:xx +0800",
"source": "Console",
"expires": "forever",
"reason": "[AntiDDoS]您所在的IP存在存在风险,系统已自动封禁,如有疑问请联系管理员"
},
{
"ip": "",
"created": "xxxx-xx-xx xx:xx:xx +0800",
"source": "console",
"expires": "forever",
"reason": "[AutoCheckDDoS]检测到您的ip存在DDoS风险行为,如有疑问请联系服务器管理员"
}
]
需要注意的是,如在使用过程中需要封禁ip段,使用“*”替代。如:127.0.0.*。为防止可能的ddos风险,可以考虑使用自动封禁插件以达到自动检测并封禁可能存在危险行为的用户以及ip。
八、添加插件
针对JAVA版本添加插件,只需要将插件文件解压入文件夹后置入目录下“**plugins**”文件夹即可。若想使得插件生效,请重启服务端或者尝试使用“**reload <插件名称>**”。
对于对外开放的服务器,一般推荐考虑添加部分基础性必要插件,以实现基础的游戏性保障,如:AuthMe(登录)、Essentials(权限组)、QuickShop(商店),Residence(领地)。过多的插件会影响服务器性能,请按需添加启用。插件的来源一般可以去[MCBBS论坛](https://www.mcbbs.net/)或者其他途径寻找,请在下载时检查是否匹配你的服务端和游戏版本。
九、补充内容
[1] 服务端启动脚本的撰写
[2] 权限等级(1.7)
参考
[1] minecraft基岩版与Java版区别 - 知乎 (zhihu.com)
[2] 在Linux环境搭建Java版Minecraft(我的世界)服务器_linux我的世界开服【版权声明:本文为CSDN博主「Meow_wu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。https://blog.csdn.net/Meow_wu/article/details/108825823】
[3] Minecraft 服务器server.properties属性文件介绍 (最详细 最全 汉化) - 哔哩哔哩 (bilibili.com)(https://foxs.wiki/index.php?title=Minecraft%E5%BC%80%E6%9C%8D#cite_ref-:0_3-0) [3.1](https://foxs.wiki/index.php?title=Minecraft%E5%BC%80%E6%9C%8D#cite_ref-:0_3-1)