你可以帮助我们扩充关于该主题的更多信息。
概述
本文中所有涉及“服务器”的词语都指的是Java版Minecraft服务器而非基岩版Minecraft服务器。
我的世界服务器是一个可供多个玩家联机游戏的虚拟空间,玩家可以在其中进行各种活动并与其他玩家互动。
Minecraft Java版的服务器可以根据其结构分为四种类型:
- 原版服务器,指使用官方Java版服务端开设的服务器。
- Mod服务器,指使用Mod服务端(例如Fabric、Forge、Quilt)开设的服务器。
- 插件服务器,指使用插件服务端(例如Paper、Pufferfish、Purpur)开设的服务器。
- 插件及Mod混合服务器,指使用混合服务端(例如Sponge)开设的服务器。
- 其中只有使用官方Java版服务端的服务器可称为原版服务器
本文将指导你如何开设自己的Mod服务器。
本教程目前适用于Windows、Linux、MacOS。
警告
开设服务器可能会导致你的电脑更容易受到网络攻击(常见如分布式拒绝服务攻击:DDoS),因此,开设服务器时请将网络安全放在第一位;最好使用防火墙等设施来预防网络攻击。
鉴于你正在一步步地开启你自己的服务器,你应该要注意所有可能出现的危险性。运行下面的所有教程正常情况下应不会导致你的系统出错,但是由于Minecraft Wiki的开放性,且编者对于你的系统配置与软件运行情况并不了解,因此并不能保证稳定性。
为了确保你根据下面的教程架设服务器并将出现问题的概率降至最低,我们强烈推荐你至少要知道以下的内容:
- 基本的网络搭建术语(IP、端口等);
- 关于电脑硬件的基础知识;
- 命令行的使用;
- 你的网络环境;
- 你的系统配置。
如果对上述内容不明白,可以查看服务器基础知识速查表。
开始之前
为了避免版本更新而带来的Java需求版本提升导致本段内容失去意义,截止至本段内容最后一次更新,Java正式版最新版本为1.20.2。
架设服务器之前,最好先阅读完本段的所有内容并确保你的电脑完成了下面的“网络”和“Java”栏。
另外,我们建议你准备一个有语法高亮功能的文本编辑器,如VSCode,Windows自带的记事本和写字板查看配置文件(如.json和.config文件)的效果可能不尽人意。
需求
在架设服务器前,你需要先明确你的需求,这里有一个较为笼统的分类:
- 如果你想游玩无任何插件、Mod的原版服务器,请参阅教程/架设服务器。这种服务器一般不可添加拓展。
- 如果你想开设纯净服务器,请选择Mod服务器并阅读本篇文章。这种服务器的拓展性比插件服低,但保留所有原版特性。
- 如果你想开设小游戏服务器或对游戏特性做出改变,亦或启用某些资源包,请选择插件服务器,参阅教程/架设Spigot服务器。这种服务器一般拓展性最强、优化最好,但可能会使一些原版特性失效(如刷沙)。
- 网络配置
运行Minecraft服务器所需的最低网络带宽为每秒1 Mbps的上下行速度,也就是大约 125KB/s。然而,这只是最低要求,如果你的服务器有多个同时在线的玩家或者使用了许多插件和Mod,你可能需要更高的带宽来保证良好的游戏体验。通常来说,为每位玩家提供至少1.5Mbps至2Mbps的带宽是比较稳妥的选择,并且保证服务器所在的机器拥有足够的CPU处理能力来处理游戏数据流量。此外,如果你想提供玩家更加流畅的网络体验,你可以考虑选择能够提供更高速度的网络带宽,如10Mbps或以上。
此外。你还需要一个公网IP或使用内网穿透。
- 公网
- 如果你使用的是局域网或者无线局域网(统称内网),和你不在同一局域网的玩家无法连接到你的服务器,因为局域网是封闭的。这时,就需要一个公网IP。公网IP分为动态和静态两种。动态公网IP会随时间不定期改变(重启光猫时一定改变),而静态公网IP的则是固定的。
- 无论你有没有公网IP或配置内网穿透,和你在同一局域网内的设备都可通过连接服务器的内网IP地址进入服务器,而即使未连接互联网,本机也可以通过连接localhost(IPv4)、127.0.0.1(IPv4)、::1(IPv6)进入服务器。
- 你也可以通过内网穿透来达到相似效果,参阅下文。
- 检查
- 如果你需要确认是否已经获取了公网IP,可以使用搜索引擎查询IP地址(例如这个),然后将查询结果与公网IP地址段进行对比。
- 静态和动态
- 如果你需要为自己的服务器申请公网IP,就需要知道静态公网IP和动态公网IP的区别。静态公网IP需要申请或者购买专线(详情请咨询你的运营商),这一般是十分昂贵,所以建议你申请动态公网IP。
- 能否从运营商处申请到公网IP及其步骤由运营商的相关政策决定。你可以咨询你的运营商或在网络上搜索以获取相应内容,通常来说IPv4较IPv6来说更难申请因为数量更少。如果你要使用动态公网IP,则一般需要配置动态域名服务(DDNS),方法可见下文,也可自行搜索。
- 内网穿透
- 原理是通过让你的电脑连接到另一台有公网IP的电脑,数据从玩家到这台电脑再到你的服务器,这种方式通常适用于实在没有办法申请公网IP的人。因为提供内网穿透的服务商通常会对流量收费且一般延迟较高,所以若非别无他法否则不推荐。
DNS和DDNS的配置
如果你想他人使用域名进入你的服务器,那么你需要配置DNS或DDNS。
DDNS(Dynamic DNS / Dynamic Domain Name System,动态域名系统):它的功能是将用户的动态IP地址映射到一个固定的域名解析服务上。如果你使用动态公网IP且想要玩家使用域名加入服务器,那么你需要配置动态域名服务。关于配置动态域名服务的教程请使用DnsPod的用户参考这篇文章,使用阿里云的用户参考这篇文章,其他在中国大陆较小众的域名提供商配置方式请自行搜索,这里不加赘述。
DNS(Domain Name System,域名系统):它的功能是将用户的IP地址映射到一个固定的域名解析服务上。如果你使用静态公网IP且想要玩家使用域名加入服务器,那么你需要配置域名服务。
DNS主要用于域名到IP地址的静态映射,而DDNS主要用于动态IP地址的映射。
软件配置
Java
Java是一种面向对象的编程语言,用于编写在JVM(Java Virtual Machine,简称JVM,Java虚拟机)上运行的程序。Minecraft服务端和客户端都运行在JVM上,所以也需要Java。
- 选择
由于甲骨文官方的OracleJDK在8u202更新后的所有版本如果用于盈利都需购买订阅才可使用,这包含了运行Minecraft服务器的情况,如果你想不因为Java环境增加一笔额外支出,那么运行在高版本的服务器就需要一个第三方替代品,那就是OpenJDK。
JDK和JRE的关系:JDK包含JRE;JDK(Java Development Kit,简称JDK,Java开发工具包)一般用于开发Java程序,JRE(Java Runtime Environment,简称JRE,Java运行环境)用于运行Java程序;一般你只需使用JRE即可,但由于某些插件或Mod可能需要用到JDK的一些功能,所以建议安装JDK。
无头Java实际上是普通Java的删减版,它去除了对图形界面或鼠标、键盘方面的支持,所以可以节省计算机资源,适合在服务器等不需要图形界面的场合使用。如果你使用Java的图形功能那可以选择安装无头Java。
- 快速选择
如果你完全不知道应该选择哪个版本的Java,那么请下载JDK 8的最新版本和JDK 17(版本须大于等于17.0.3),这可以覆盖目前任何版本的需求。
- 查看安装
为了检查Java是否已被正确安装及其版本,你需要执行java -version查看JRE版本,或执行javac -version查看JDK版本。
- 为了减少出错的概率,Java的安装路径请不要包含中文。
- 常见发行版下载
甲骨文官方的Java在Java8u202以后如需商用要订阅后才可使用,因此为了避免纠纷建议使用甲骨文官方Java的服主在开服前查看自己使用的Java的版本;一般来说,甲骨文Java商用订阅是针对商业客户提供的,以公司或组织为单位进行购买。如果只是个人用户或者仅用于非商业用途,可以使用免费的开源Java发行版,例如OpenJDK。
你可以在以上Java发行版中根据你所要架设的Minecraft服务器版本自行选择,也可自行搜索其他版本。
操作系统
本教程讨论范围仅限于Windows,MacOS及Linux。
- 选择
- Windows:最常见的操作系统,简单直观易上手,推荐Windows Server而不是普通Windows(包括专业版、家庭版、教育版、长期支持版等)。
- Linux:最小众的操作系统,入门门槛高,系统较稳定,某些纯命令行版耗费系统资源较少。
- MacOS:硬件门槛高,软件资源较少。
- 快速选择
如果你使用的是Windows主机且没有任何Linux系列系统操作基础,我们推荐使用Windows Server。
硬件配置
对于想自己架设的服务器的你,这里有一些关于服务器配置的建议。
如果你了解电脑的配置,并确信它已经达到了能够运行服务器的需求,可以选择跳过这一节。
- 服务器的配置不需要很高,例如1核心的CPU加上2GB的内存就足够支持一个的小型服务器。
- 由于Minecraft单线程的特性,建议选用主频较高且架构较新的CPU,而不是核心数量多而主频低的CPU,这样可以更好地支持多个玩家同时在线游戏;此外,建议选用服务器或工作站CPU,这些CPU一般稳定性较强。
- 同样由于Minecraft单线程的特性,在不使用其他优化手段的情况下,CPU性能再强也终将有瓶颈,若想进一步了解Minecraft单线程运行的原因,可以参考这篇文章。
- 硬盘最好选择企业级硬盘(最好是固态硬盘),这些企业级硬盘的故障发生概率更低,但不管你使用的是什么硬盘,都要经常做好备份,以免存档丢失。
- 内存建议使用具有ECC纠错功能的内存(DDR5自带ECC纠错),这可以减少宕机的几率。
- 服务器对显卡的需求是只要能进系统就行。
- 网速至少需1Mbps(上下行)以上才不会过于卡顿。
- 如果你不想在家中开设服务器,你可以选择使用云服务器。这样的话,你一般需要每月支付一定的费用,但能免去维护服务器硬件的烦恼。
正式开始
注意:本文章对Mod服务器的讨论范围仅限于编写此文章时仍然存在的Forge和Fabric,停止更新的或其他小众的Mod加载器等均不在讨论范围之内。此处以推出Fabric为界,之前的版本(1.14之前)称为老版本,1.14及其后的版本称为新版本。
- 选择Mod加载器
Fabric
Forge
首先确认你要假设的服务器版本,1.14版本之前由于Fabric兼容性差,推荐使用Forge,1.14及以后版本由于Forge优化较差(主要体现在加载速度慢)及主流Mod开发者逐渐转移至Fabric,建议使用Fabric。
Fabric
- 兼容
Fabric服务器常见于1.14及以后的版本,但这并不意味着1.14前的版本无法使用Fabric,你依然通过某些兼容手段使用Fabric,貌似需要添加特定的JVM参数。
理论上,没有什么能阻止你在任何版本的 Minecraft 上,在任何混淆层下,运行 Fabric 的模组加载器,一直到 c0.0.11a 。然而,这些版本大多没有 Yarn 映射──因此,制作模组的过程变得……有点儿复杂。
- 一般安装
- 本方法不适用于纯命令行的操作系统,如果你使用的是这种系统,请参考无GUI安装。
- 你也可以参考Fabric官方服务器安装教程。
Fabric下载页面
1. 你需要前往Fabric下载页面以下载安装器(Fabric-installer,以下简称安装器)或JAR安装器(Universal JAR installer,简称JAR安装器)。
- 如果你使用的是Windows系统,那么建议下载安装器,点击“Download for Windows”即可;如果是其他系统,请下载JAR安装器(这是一个JAR文件,需要Java8运行),点击下方的“Download universal jar”即可;这两个文件图形界面的外观和功能是完全一致的。
Fabric安装器界面,版本0.11.2
2. 打开你下载的名为exe/jar文件,选择服务器选项卡,然后选择游戏版本和加载器版本,加载器版本越新越好。
3. 选择安装位置后点击安装,不存在的文件夹会被安装器创建,为避免出错,服务端的安装路径不要包含中文,安装完成后该路径内文件应如下所示:
- 文件夹
- libraries
- net
- 略
- org
- 略
- net
- fabric-server-launch.jar
- libraries
- 如果该文件夹已经有和你下载版本一样的fabric-server-launch.jar文件,那安装器将不会重复下载(安装器会自动补全缺失的文件),而是会直接在检查后弹出服务端安装成功,即跳到下一步。
Fabric安装器弹出的窗口
4. 如果你没有提前在该文件夹放入对应版本的Minecraft官方服务端的jar文件,Fabric安装器会弹出一个窗口提示“找不到有效的 版本 服务端”,点击下载服务端即可快捷的下载,你也可以选择去官方网站下载,下载完成后应该会多出一个名为server.jar的文件,此时该路径内文件应如下所示:
- 文件夹
- libraries
- net
- 略
- org
- 略
- net
- fabric-server-launch.jar
- server.jar
- libraries
5. 启动服务器需要命令,你可以选择每次启动服务器都重复输入命令,或是使用启动脚本。
- 快捷方法:在安装器弹出的窗口中点击生成启动脚本,该文件夹内应多出两个文件,一个名为start.sh,另一个是satrt.bat,Windows点击.bat文件,Linux和MacOS点击.sh文件即可开服。
- 方法二:自写启动脚本。
* Windows系统官方示例代码如下java -Xmx2G -jar fabric-server-launch.jar nogui编写后保存为.bat文件即可。
* Linux和MacOS官方示例代码如下#!/usr/bin/env bash编写后保存为.sh文件即可。
java -Xmx2G -jar fabric-server-launch.jar nogui - 你也可以尝试最为热门的第三方启动脚本Aiker's Flag(这个网站也有对我的世界JVM启动参数的详细介绍,但是是纯英文的),如下:
java -Xms10G -Xmx10G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -jar fabric-server-launch.jar nogui根据你的系统选择保存的文件格式。如果你在启动脚本中使用的内存超过12GB,请调整以下内容:
-XX:G1NewSizePercent=40
-XX:G1MaxNewSizePercent=50
-XX:G1HeapRegionSize=16M
-XX:G1ReservePercent=15
-XX:InitiatingHeapOccupancyPercent=20 - 使用图形操作系统的服务器可能需要在服务器崩溃后即时查看日志,可以在代码后加上
pause。示例:java -Xmx2G -jar fabric-server-launch.jar nogui。这可以使服务器崩溃后命令行窗口不会立即关闭。
pause
启动脚本中Xmx后跟的数字为服务器最大使用内存大小,保存后点击即可开服。关于详细的JVM启动参数解释,可以参考这篇文章。
关于服务端JAR文件的选项要写在命令中的-jar fabric-server-launch.jar后面。你可以在后面加上--help查看所有可以被传递给服务端的参数。下方列出了一些可用的命令行选项。
--bonusChest- 在初次生成世界时,是否生成奖励箱。
--demo- 指定服务器是否在演示模式下运行(给玩家显示一个“演示版”弹出信息。且演示结束后,玩家不能破坏、放置方块或者吃东西)。
--eraseCache- 清除光照缓存等。与优化单人游戏世界时的选项相同。
--forceUpgrade- 强制升级所有区块到服务器目前的版本(单人游戏世界也可用)。
--help- 显示此帮助。
--initSettings- 只初始化
server.properties和eula.txt,然后退出。
- 只初始化
--nogui- 启动服务器时不显示图形界面。
- 你仍然可以与你的服务器交互,但如果启用,必须使用cmd或终端。
nogui与此选项作用相同,主要用于向后兼容非常旧的服务器版本,但更加推荐使用--nogui更可取,因为这与其他选项的格式匹配
--port <整数>- 指定服务器监听的端口,而无论在
server.properties中设置的是什么(默认值为-1)。
- 指定服务器监听的端口,而无论在
--safeMode- 加载存档时只使用原版数据包。
--serverId <字符串>- 为服务器指定一个服务器ID。
--singleplayer <字符串>- 指定服务器以离线模式运行(<字符串>需要指定一个值,但此值的具体用途未知,可能是由Mojang内部所使用的)。
--universe <字符串>- 指定查找world文件夹的位置(默认为
.,即当前目录)。
- 指定查找world文件夹的位置(默认为
--world <字符串>- 指定一个
level.dat所在文件夹的名称。
- 指定一个
- 旧命令行选项
一些选项能在旧版中使用,但是已在新版本中被移除或被替换了。
-o true- 使服务器以在线模式运行,只有经过认证的用户才能进入(新版本中,将
server.properties中的online-mode改为true等同于此选项)。
- 使服务器以在线模式运行,只有经过认证的用户才能进入(新版本中,将
- 方法三:使用命令行,在命令行界面输入
java -Xmx2G -jar fabric-server-launch.jar nogui,Xmx后跟的数字为服务器最大使用内存大小,即可开服。- 如果你直接打开了server.jar文件,它会生成一些文件和文件夹,会多出的文件如下:
- 多出的文件
- libraries(已有文件夹)
- com(已有文件夹内新增)
- 略
- commons-io(已有文件夹内新增)
- 略
- io(已有文件夹内新增)
- 略
- it(已有文件夹内新增)
- com(已有文件夹内新增)
- logs
- latest.log
- version
- 你的服务端版本
- server-你的服务端版本.jar
- 你的服务端版本
- eula.txt
- server.properties
- libraries(已有文件夹)
- 当出现“Done!”字样,代表服务器已经成功初始化。
- 第一次启动时报错“You need to agree to the EULA in order to run the server. Go to eula.txt for more info.”是正常的,这意味着你需要同意Minecraft最终用户许可协议,请打开服务器文件夹内新生成的名为eula.txt的文件,将false改为true并保存即可。
6. 在第一次启动服务器时服务端会在文件夹内创建一些文件,在服务器控制台输入stop或restart即可关闭服务器。
7. 现他人应该可以通过连接你的IP或所映射的域名加入服务器。
- 即使你没有公网IP也未配置内网穿透,和你处在同一局域网的设备也可以通过连接服务器的IP来加入服务器,而即使未联网,本机也可以通过连接localhost、127.0.0.1(IPv4)、::1(IPv6)进入服务器。
- 无GUI安装
- 你也可以参考Fabric官方服务器无GUI架设教程。
- 需求
这种安装方法用于在不支持GUI的机器上架设Fabric服务器。
- 依赖
Minecraft 1.16.X或更早版本,所需的Java版本是8+对于Minecraft 1.17.X,所需的Java版本是16+,对于Minecraft 1.18.X或更高版本,所需的Java版本是17+你也需要一个能把文件下载到你自己的机器上的方法。你可以使用某些文件传输工具如curl或wget。
- 安装依赖
| 名称 | 注 | Debian (Ubuntu, Mint, …) | Fedora |
|---|---|---|---|
| Java | 必需 | apt install openjdk-8-jre-headless | dnf install java-1.8.0-openjdk-headless |
| Curl | 可选 | apt install curl | dnf install curl |
| Wget | 可选 | apt install wget | dnf install wget |
- 步骤
- 创建并进入一个目录以放置你的Minecraft服务器。
- 将最新版本的Fabric Installer放在同一目录下。
- 使用Curl:从这个页面找到Fabric Installer的下载URL,对按钮右键,在下拉菜单中复制下载链接。然后在你的Minecraft服务器目录下运行。curl -o installer.jar <把链接复制于此,不含尖括号>。
- 使用Wget:从这个页面找到Fabric Installer的下载URL,对按钮右键,在下拉菜单中复制下载链接。然后在你的Minecraft服务器目录下运行。wget -o installer.jar <把链接复制于此,不含尖括号>。
- 文件传输软件:从这个页面下载Fabric Installer的Jar文件,并传输到你的Minecraft服务器所在的目录下。
- 运行Fabric Installer。java -jar installer.jar server -mcversion <Minecraft版本,不含尖括号>。
- 现在在Minecraft服务器的目录下应该出现一个名为fabric-server-launch.jar的文件。现在你可以把Fabric Installer删除了。
- 运行命令文件来启动你的Minecraft服务器。
如果你不能在你的机器上运行任何命令,你可以在本地电脑上执行这些操作,最后将所有文件一并上传到你的服务器上。
- 示例(使用Debian)
# 下载依赖 sudo apt install openjdk-8-jre-headless curl # 创建用于放置Minecraft服务器的目录并进入这个目录 mkdir fabric cd fabric # 下载Facric Installer curl -o installer.jar <installer jar url> # 运行Fabric Installer java -jar installer.jar server -mcversion 1.16.5 -downloadMinecraft # 删除Fabric Installer rm installer.jar # 重命名Jar文件 mv server.jar vanilla.jar mv fabric-server-launch.jar server.jar echo "serverJar=vanilla.jar" > fabric-server-launcher.properties # 启动Minecarft服务器 java -jar server.jar
Forge
其他
拓展内容
配置服务器
server.properties
Java版默认的server.properties文件
server.properties是储存多人游戏(Minecraft或Minecraft Classic)服务器所有设置的文件。
在编辑server.properties时,行之间的顺序可以打乱,但不能改变文件结构。每一行的等号之前的文本为变量名,你不应该修改这些内容。等号后面为变量的值,你可以按照规则自行编辑。以#开头的行为注释,添加、修改或移除注释行不会对游戏造成影响。
保存了server.properties的更改之后,服务端必须重新启动才能使更改生效,另一种选择是在服务器控制台或游戏中使用/reload命令重新加载,这也能获得同样的效果。
如果server.properties文件未列出下文中所有的属性(例如服务端版本更新加入新属性,或该文件还未创建),那么服务器在启动时会重写server.properties补全缺失的属性,并将缺失的属性值设为默认值。
server.properties文件只是一个普通的UTF-8编码文本文件,尽管它有扩展名,因此可以使用任何文本编辑器进行编辑。
- 文件位置
该文件会在服务端第一次运行时自动生成(如果本来没有的话)。
| 操作系统 | 文件位置 | 注解 |
|---|---|---|
| Windows | server.jar 的相同目录下
|
|
| Linux
Unix Unix/Mac |
工作目录路径(pwd) |
如果你在你的 home 目录下启动(
|
- 默认设置
新安装的服务器具有以下默认设置:
#Minecraft server properties
#(文件修改时间戳)
enable-jmx-monitoring=false
rcon.port=25575
level-seed=
gamemode=survival
enable-command-block=false
enable-query=false
generator-settings={}
enforce-secure-profile=true
level-name=world
motd=A Minecraft Server
query.port=25565
pvp=true
generate-structures=true
max-chained-neighbor-updates=1000000
difficulty=easy
network-compression-threshold=256
max-tick-time=60000
require-resource-pack=false
use-native-transport=true
max-players=20
online-mode=true
enable-status=true
allow-flight=false
initial-disabled-packs=
broadcast-rcon-to-ops=true
view-distance=10
server-ip=
resource-pack-prompt=
allow-nether=true
server-port=25565
enable-rcon=false
sync-chunk-writes=true
op-permission-level=4
prevent-proxy-connections=false
hide-online-players=false
resource-pack=
entity-broadcast-range-percentage=100
simulation-distance=10
rcon.password=
player-idle-timeout=0
force-gamemode=false
rate-limit=0
hardcore=false
white-list=false
broadcast-console-to-ops=true
spawn-npcs=true
spawn-animals=true
function-permission-level=2
initial-enabled-packs=vanilla
level-type=minecraft\:normal
text-filtering-config=
spawn-monsters=true
enforce-whitelist=false
spawn-protection=16
resource-pack-sha1=
max-world-size=29999984
- 服务器属性
| 属性 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| allow-flight | 布尔值 | false | 允许玩家在安装添加飞行功能的mod前提下在生存模式下飞行。
允许飞行可能会使恶意破坏者更加常见,因为此设定会使他们更容易达成目的。在创造模式下无作用。
|
| allow-nether | 布尔值 | true | 允许玩家进入下界。 |
| broadcast-console-to-ops | 布尔值 | true | 向所有在线OP发送所执行命令的输出。 |
| broadcast-rcon-to-ops | 布尔值 | true | 向所有在线OP发送通过RCON执行的命令的输出。 |
| difficulty | 字符串 | easy | 定义服务器的游戏难度(例如生物对玩家造成的伤害,饥饿和中毒对玩家的影响方式等)。
如果设置了旧的数字ID,则会自动转化为英文的难度名称。
|
| enable-command-block | 布尔值 | false | 是否启用命令方块。 |
| enable-jmx-monitoring | 布尔值 | false | 暴露一个具有对象名net.minecraft.server:type=Server的MBean和两个属性averageTickTime和tickTimes用于暴露以毫秒为单位的tick时间。
|
| enable-query | 布尔值 | false | 允许使用GameSpy4协议的服务器监听器。用于获取服务器信息。 |
| enable-rcon | 布尔值 | false | 是否允许远程访问服务器控制台。
|
| enable-status | 布尔值 | true | 使服务器在服务器列表中看起来是“在线”的。 |
| enforce-secure-profile | 布尔值 | true | 要求玩家必须具有Mojang签名的公钥才能进入服务器。
|
| enforce-whitelist | 布尔值 | false | 在服务器上强制执行白名单。
当启用后,不在白名单(前提是启用)中的用户将在服务器重新加载白名单文件后从服务器踢出。
|
| entity-broadcast-range-percentage | 整数(10-1000) | 100 | 此选项控制实体需要距离玩家有多近才会将数据包发送给客户端。更高的数值意味着实体可以在更远的地方就被渲染,同时也可能提高增加延迟的概率。
|
| force-gamemode | 布尔值 | false | 强制玩家加入时为默认游戏模式。
|
| function-permission-level | 整数(1-4) | 2 | 设定函数的默认权限等级。
4个等级的详情见 #op-permission-level。 |
| gamemode | 字符串 | survival | 定义默认游戏模式。
如果值是旧用的数字,会静默转换为对应游戏模式的英文名称。
|
| generate-structures | 布尔值 | true | 定义是否能生成结构(例如村庄)。
注:即使设为false,地牢仍然会生成。 |
| generator-settings | 字符串 | {} | 本属性质用于自定义世界的生成。详见超平坦世界和自定义了解正确的设定及例子。 |
| hardcore | 布尔值 | false | 如果设为 true,服务器难度的设置会被忽略并且设为 hard(困难),玩家在死后会自动切换至旁观模式。 |
| hide-online-players | 布尔值 | false | 如果设为 true,服务端在响应客户端状态请求时不会返回在线玩家列表。 |
| initial-disabled-packs | 字符串 | 空白 | 需要在创建世界过程中禁用的数据包名称,以逗号分隔。 |
| initial-enabled-packs | 字符串 | vanilla | 需要在创建世界过程中启用的数据包名称,以逗号分隔。特别地,功能数据包必须在此指定才能生效。 |
| level-name | 字符串 | world | “level-name”的值将作为世界名称及其文件夹名。你也可以把你已生成的世界存档复制过来,然后让这个值与那个文件夹的名字保持一致,服务器就可以载入该存档。
|
| level-seed | 字符串 | 空白 | 与单人游戏类似,为你的世界定义一个种子。
|
| level-type | 字符串 | minecraft:normal | 使用世界预设ID,确定地图所生成的类型。
使用世界预设ID时,需要在其中的“:”前加“\”转义。原版世界预设ID可以省略其前面的“minecraft:”(即命名空间)。
|
| max-build-height | 整数 | 256 | 玩家在游戏中能够建造的最大高度。可能会在该值较小时生成超过该值的地形。 |
| max-chained-neighbor-updates | 整数 |
1000000 | 限制连锁NC更新的数量,超过此数量的连锁NC更新会被跳过。若为负数则无限制。 |
| max-players | 整数(0-2147483647) | 20 | 服务器同时能容纳的最大玩家数量。请注意,在线玩家越多,对服务器造成的负担也就越大。同样注意,服务器的OP具有在人满的情况下强行进入服务器的能力:找到在服务器根目录下叫ops.json的文件并打开,将需要此能力的OP下的bypassesPlayerLimit选项设置为true即可(默认值为false),这意味着OP将不需要在服务器人满时等待有玩家离开后再加入。过大的数值会使客户端显示的玩家列表崩坏。 |
| max-tick-time |
整数(0–(2^63 - 1)) | 60000 | 设置每个tick花费的最大毫秒数。超过该毫秒数时,服务器看门狗将停止服务器程序并附带上信息:服务器的一个tick花费了60.00秒(最长也应该只有0.05秒);判定服务器已崩溃,它将被强制关闭。遇到这种情况的时候,它会调用 System.exit(1)。
译者注:如果你监测服务程序的返回代码,此时返回代码会为1。(习惯上,程序正常退出应当返回0)
|
| max-world-size |
整数(1-29999984) | 29999984 | 设置可让世界边界获得的最大半径值,单位为方块。通过成功执行的命令能把世界边界设置得更大,但不会超过这里设置的最大方块限制。如果设置的 max-world-size 超过默认值的大小,那将不会起任何效果。
例如:
|
| motd | 字符串 | A Minecraft Server | 本属性值是玩家客户端的多人游戏服务器列表中显示的服务器信息,显示于名称下方。 |
| network-compression-threshold |
整数 | 256 | 默认会允许n-1字节的数据包正常发送, 如果数据包为n字节或更大时会进行压缩。所以,更低的数值会使得更多的数据包被压缩,但是如果被压缩的数据包字节太小将反而使压缩后字节更大。
注:以太网规范要求把小于64字节的数据包填充为64字节。因此,设置一个低于64的值可能没有什么好处。也不推荐让设置的值超过MTU(通常为1500字节)。 |
| online-mode | 布尔值 | true | 是否让服务器对比Minecraft账户数据库验证登录信息。只有在你的服务器并未与 Internet 连接时,才将这个值设为false。如果设为false,黑客就能够使用任意假账户连接服务器!如果minecraft.net服务器宕机或不可访问,那么该值设为true的服务器会因为无法验证玩家身份而拒绝所有玩家加入。通常,这个值设为true的服务器被称为“正版服务器”。故意设定该变量为false的服务器称为“破解服务器”(也称离线服务器),这类服务器允许拥有未授权的Minecraft副本的玩家加入。
|
| op-permission-level | 整数(1-4) | 4 | 设定使用/op命令时OP的权限等级。所有存档会从之前的存档继承能力和命令。
|
| player-idle-timeout | 整数 | 0 | 如果不为0,服务器将在玩家的空闲时间达到设置的时间(单位为分钟)时将玩家踢出服务器 |
| prevent-proxy-connections | 布尔值 | false | 如果服务器发送的ISP/AS和Mojang的验证服务器的不一样,玩家将会被踢出。
|
| pvp | 布尔值 | true | 是否允许PvP。也只有在允许PvP时玩家自己的箭才会受到伤害。
|
| query.port | 整数(1-65534) | 25565 | 设置监听服务器的端口号(参见 enable-query)。 |
| rate-limit | 整数 | 0 | 设置玩家被踢出服务器前,可以发送的数据包数量。
|
| rcon.password | 字符串 | 空白 | 设置RCON远程访问的密码(参见enable-rcon)。RCON:能允许其他应用程序通过互联网与Minecraft服务器连接并交互的远程控制台协议。 |
| rcon.port | 整数(1-65534) | 25575 | 设置RCON远程访问的端口号。 |
| require-resource-pack | 布尔值 | false | 当此选项启用(设为true)时,玩家会被提示作出选择(是否启用服务器资源包)。如果玩家拒绝则会被服务器断开连接。 |
| resource-pack | 字符串 | 空白 | 可选选项,可输入指向一个资源包的URI。玩家可选择是否使用该资源包。
注意若该值含":"和"="字符,需要在其前加上反斜线(\),例如 http\://somedomain.com/somepack.zip?someparam\=somevalue 资源包大小理应不能超过
注意,下载成功或失败由客户端记录,而非服务器。 |
| resource-pack-prompt | 字符串 | 空白 |
可选,用于在使用 与聊天组件语法一致,可以包含多行文本。 |
| resource-pack-sha1 | 字符串 | 空白 | 资源包的SHA-1值,必须为小写十六进制,建议填写它。这还没有用于验证资源包的完整性,但是它提高了资源包缓存的有效性和可靠性。 |
| server-ip | 字符串 | 空白 | 将服务器与一个特定IP绑定。强烈建议留空该属性值!
|
| server-port | 整数(1-65534) | 25565 | 改变服务器(监听的)端口号。如果服务器在使用NAT的网络中运行,该端口必须被转发(在你有家用路由器/防火墙的前提下)。 |
| simulation-distance | 整数(3-32) | 10 | 设置服务端可更新实体范围的最大值,即玩家各个方向上的区块数量(是以玩家为中心的半径,不是直径)。超出此范围的实体不会被更新,对玩家也不可见。
默认/推荐设置为10,如果有严重卡顿的话,减少该数值。 |
| spawn-animals | 布尔值 | true | 决定动物是否可以生成。
提示:如果你有严重的卡顿,可以设为false。 |
| spawn-monsters | 布尔值 | true | 决定攻击型生物(怪物)是否可以生成。
如果difficulty=0(即难度设置为和平)的话,该属性值不会有任何影响。 提示:如果你有严重的卡顿,可以设为false。 |
| spawn-npcs | 布尔值 | true | 决定是否生成村民。
|
| spawn-protection | 整数 | 16 | 通过将该值进行2x+1的运算来决定出生点的保护半径。设置为1会保护以出生点为中心的3×3方块的区域,2会保护5×5方块的区域,3会保护7×7方块的区域,以此类推。这个选项不在第一次服务器启动时生成,只会在第一个玩家加入服务器时出现。如果服务器没有设置OP,这个选项会自动禁用。
|
| sync-chunk-writes | 布尔值 | true | 启用后区块文件以同步模式写入。 |
| text-filtering-config | 空白 | | |
| use-native-transport | 布尔值 | true | 是否使用针对Linux平台的数据包收发优化。此选项仅会在Linux平台上生成。
|
| view-distance | 整数(3-32) | 10 | 设置服务端发送给客户端的世界数据量,也就是设置玩家各个方向上的区块数量(是以玩家为中心的半径,不是直径)。它决定了服务端的可视距离。(另见渲染距离)
默认/推荐设置为10,如果有严重卡顿的话,减少该数值。 |
| white-list | 布尔值 | false | 启用服务器的白名单。
当启用时,只有白名单上的用户才能连接服务器。白名单主要用于私人服务器,例如提供给相识的朋友、通过应用流程谨慎选择的陌生人等。
注: OP会自动被视为在白名单上,所以无需再将OP加入白名单。 |
在Java版1.12之前的版本中,announce-player-achievements 布尔值(默认为true)属性用于切换是否成就要广播给所有玩家。该属性已被移除,但如果已经设置了这条属性,则游戏规则announceAdvancements将自动更新,随后从文件中删除这条属性。
管理服务器
Mcdreforge
MCDR(Mcdreforge,简称MCDR)是一种挂载在服务端以外的一种服务端管理插件,基于Python,可以在不对Minecraft服务端进行修改的情况下,通过可自定义的插件系统,提供对服务端的管理能力,由于它的插件是由Python语言所编写而成,所以相较于Mod开发和插件开发,开发MCDR插件会方便许多。若你想安装MCDR或开发插件,请参阅官方的帮助文档。
- 安装Python
MCDR需要Python 3.6或以上版本。Linux发行版和MacOS通常情况下自带Python,除非你使用的系统较旧(例如CentOS 7),一般的发行版的Python版本已足以运行MCDR。
如果需要更新,建议使用系统对应的软件包管理命令(例如apt和yum等)。你也可以通过下载源代码进行编译安装,请前往Python官网,此处亦可以下载Windows平台下可直接安装的.exe格式文件。
若在你的电脑中Python 2与Python 3并存,那么下文的pip请改为pip3。
- 下载安装MCDR
在命令行中执行pip install mcdreforged以下载并安装MCDR,中国大陆用户可使用国内的PyPI镜像(例如清华开源软件镜像站所提供的镜像源)来加速MCDR的下载。
- 初始化MCDR
若你想在某个文件夹中启动MCDR,通过cd xxx可进入名为xxx的文件夹,执行cd ..可返回上一级文件夹,最后在所在文件夹内执行python -m mcdreforged init在此初始化MCDR。
命令执行完毕以后文件结构如下所示:
- 文件夹
- config/
- logs/
- MCDR.log
- plugins/
- server/
- config.yml
- permission.yml
- 启动
首先将你服务端的全部文件移动至MCDR的server文件夹中。如果你在服务端文件夹中直接初始化MCDR,那么某些文件或目录可能会被覆盖,此时你需要在server文件夹中新建一个文件夹,并将正确的服务端文件复制至此,然后在MCDR初始化的目录中执行python -m mcdreforged启动服务器。
此时你服务端的某些设置需要在MCDR的permission.yml中进行更改。你可以执行pip install --upgrade mcdreforged来更新MCDR。
- 安装插件
你可以前往MCDR插件仓库进行下载,或是查阅MCDR官方文档并尝试自行编写。
插件请放置至plugins文件夹。
服务器基础知识速查表
| 名称 | 标准解释 | 通俗解释 |
|---|---|---|
| IP | 全称为Internet Protocol(网络协议),计算机在互联网中的唯一地址,用于标识互联网或本地网络上的设备。 | 别人要找到你家需要你家的地址,IP相当于电脑在互联网上的地址,他人的电脑访问你的电脑需要知道你电脑的IP。 |
| 广域网IP(公网IP) | 广域网IP是指以公网连接Internet上的非保留地址。广域网的计算机和Internet上的其他计算机可随意互相访问。 | 有了公网IP他人的电脑才能准确找到你的电脑。 |
| 端口 | 端口是英文port的意译,可以认为是设备与外界通讯交流的出口。分为虚拟端口和物理端口,虚拟端口指计算机或交换机路由器内的端口,不可见。例如计算机中的80端口、25565端口等。物理端口又称为接口,是可见端口,如计算机背板的RJ45网口。虚拟端口是一个16位的二进制数字,范围从0到65535。 | 端口相当于一扇门,电脑上不同的应用程序就像房子,每个房子有自己的门,端口号就是门的编号。当一个应用程序需要与其他设备或者网络交流时,就通过它自己的“门”(端口号)来传递数据。 |
| 电脑硬件基础知识 | 包括电脑的构成和主要硬件部件的作用,例如中央处理器(CPU)、内存、硬盘、显卡、声卡等。 | 初步入门可参考这篇文章 |
| 命令行 | command-line interface,缩写:CLI。命令行是一种通过命令执行操作的用户界面,它可以让用户通过输入指定的指令来操作计算机。 | 如Windows的Cmd.exe入门,MacOS默认的zsh shell入门或Bash,Linux常见如Bash、Zsh、Fish入门等。也有许多新兴命令行软件,如PowerShell,但功能对于本文多余故不列举。 |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||