Minecraft Wiki

除另有声明,转载时均必须注明出处若簡繁轉換出錯,請以遊戲內為準请勇于扩充与修正内容有兴趣逛逛我们的微博沟通交流,欢迎到社区专页需要协助,请在告示板留言

致全體港澳用户:Minecraft 現已於最新正式版加入繁體中文(香港)翻譯,多謝各位嘅支持!

了解更多

Minecraft Wiki
Advertisement
Minecraft Wiki
5,476
个页面

在这个教程中,我们将通过手把手的方式,一步步地帮助您建立属于您自己的Minecraft服务器(Java版)。在该教程中,我们使用Mojang发布的供玩家免费下载的服务器端程序,该程序在大部分操作系统(比如Windows、Mac OS、GNU/Linux和BSD)上都可以运行。

如需查看更多教程,请查看此页面底部或教程页。更多有关Minecraft服务器的信息,参见服务器

注意:

  • 开设服务器会花费一些时间,并且需要一些技术上的知识。如果您没有基础的计算机和网络技能,请不要尝试开设服务器。最好的选择可能是在网络上寻找有关于如何设置服务器的教程(而不是这里)。
  • 一台Minecraft服务器不需要一台高端机器,但是上网本和笔记本电脑都一般都不适合用于开设服务器。它们的配置一般都比较低端,且I/O性能相较于台式机要更差。
  • 只要您的电脑足够强劲,在一台电脑上同时开服务端和客户端也是可行的。
  • 对于很多玩家游玩的服务器,不建议将服务器连接到无线网络(WLAN,尤其是WWAN),最好还是把服务器接入到有线网络,例如以太网。
  • 如果您决定只是想联机玩游戏,而不是自己开设服务器。可以考虑在Minecraft服务器列表中找到您想玩的服务器。
  • 如果您不想在家中开设服务器,请查看Minecraft论坛上的服务器托管区。这样的话,您一般需要每月支付一定的费用(因为免费的托管服务其实很难找),但是这样也免去了您维护服务器的烦恼,可以保持服务器一直在线,玩家可以随时进入服务器游玩。

注: 也有其他一些可用的定制服务器软件,这些软件一般被大型服务器所使用,但是这些软件并不受Mojang官方支持。

警告[]

注意

如果您对自己所做的事情没有清楚的认知,那么在自己的电脑上运行服务器软件会导致您的电脑更容易受到来自外部网络的非法人士或有害程序(例如黑客和病毒)的攻击。因此,请谨慎使用服务器软件。

鉴于您正在一步步地开启您自己的服务器,您应该要注意所有可能出现的危险性。运行下面的所有教程(应该)不会导致您的系统出错,但是由于本wiki是所有人都可编辑的,且我们并不知道您的系统配置与软件运行情况,我们并不能保证您的系统不会出现问题。

为了确保您根据下面的教程架设服务器而不会出现问题,我们强烈推荐您至少要知道以下的内容:

  • 命令行的使用并使用命令行编辑配置文件
  • 基本的网络搭建术语(IPDHCP端口等)
  • 您的系统配置
  • 您的网络构成环境
  • (如果您有路由器或交换机等)您的路由器配置

各种Java间的差异[]

Java是一种用于编写在Java虚拟机(JVM)运行的程序的编程语言。JVM支持很多种不同的平台。为了做到这一点,开发者为JVM编写代码,而所有被JVM支持的平台都能运行这样的程序。进一步了解

此部分用于回答一些会被经常问到的一些关于Java的问题,也是对于您作出有关Java的选择的一些指导。

OpenJDK与OracleJDK的区别[]

OpenJDK与OracleJDK非常相似。OpenJDK是对Java的一种官方的开源参考实现。OpenJDK是一个开源代码库,几乎所有其他JDK都基于此构建。除了打包方式、许可证和一些表面上的差别外,OpenJDK与OracleJDK是一样的

请注意:如果用于商业和生产用途,OracleJDK的OTN(Oracle技术网络)构建版本就需要一份付费的订阅才能使用。这似乎包含了运行Minecraft服务器的情况,即便是非盈利目的的。Oracle会提供他们自己的OpenJDK构建版,但是不会打包成那种易于安装的安装包格式。

JRE与JDK的区别[]

JRE指的是“Java运行环境”。JDK指的是“Java开发工具包”。JRE被设计用来运行Java程序,而JDK则是被设计用来开发Java程序的。JDK中包含了JRE,而JRE中包含了JVM。这意味着如果您已经有了JDK,那样也同时有了JRE和JVM。原版Minecraft不需要JDK,但是有一些插件可能需要它。

无头Java[]

无头Java实际上是普通Java的删减版。它去除了对图形界面或鼠标、键盘方面的支持。无头Java通常被用在服务器或其他不需要图形界面的场合。

在Debian上,有几种Java虚拟软件包被使用。这些软件包都支持Java运行环境,且具有以下两种类型:无头的(没有图形界面)以及普通的。

一般步骤[]

运行一个Minecraft服务器的基本步骤是:安装java,运行服务器,接受EULA,然后再运行一次。当您安装了java并打开命令行后,后续的内容基本上都是一致的。

  • 检查配置是否符合需求(CPU、内存大小和可用存储空间大小)。
  • 安装Java。不同的操作系统步骤不同,请参照下方相关内容。
  • 下载页中下载服务端。
  • 为下载下来的jar文件新建一个文件夹,并把它放进去。这个文件夹会存储所有的配置和世界存档文件,所以不要在“下载”文件夹中直接运行。
  • 打开一个命令提示符或一个终端界面。
  • 检查Java是否可用。输入java -version就可以。
  • 输入cd(切换工作目录),切换到您存放服务端jar文件的文件夹中。如果您打开了一个图形界面,也可以把这个文件夹拖动到终端窗口中。
  • 输入java -jar minecraft_server.jar --nogui用来首次启动服务器(如果您的jar文件名不是“minecraft_server.jar”,把它换成实际的文件名即可)。
  • 接受EULA。在文本编辑中修改自动生成的eula.txt文件中的eula=false行为eula=true。这表示您已阅读并理解了EULA的内容,并会在使用服务端时遵守它。如果您没有这样做的话,服务器会在您尝试启动时立即退出。
  • 现在服务器已被配置好了。您可以使用java -jar minecraft_server.jar启动服务器了。如果您不想让服务器显示图形界面,在前面的命令后面添上一个空格和--nogui即可(有些人觉得这样做会让服务器更快)。您也可以使用下面所列出的一些选项。

现在,您应该已经启动了一个基本的服务器了。更多关于配置服务器的内容,参见配置环境。关于如何编写启动脚本的内容,参见编写脚本用于启动服务器

Java选项[]

命令行中,Java选项应该被添加在-jar选项之前。

  • 对运行Minecraft服务器来说,最重要的事情莫过于内存。您可以使用-Xmx选项设置服务器能被允许使用的内存量。通常-Xmx2G(最大内存2GB)就已经够用了。
    • -Xms(初始化内存大小)不会对长时间运行有性能上的影响,但是您也可以设置它。-Xms512M(512MB)应该够了。
    • 对于一些版本的JRE,可以使用“soft max heap size”(-XX:SoftMaxHeapSize=1G)。JRE将尝试只使用那么多的内存,但如有必要,它将超过-Xmx设置的最大值。 如果您在服务器上运行许多东西,这可能会很有用。
  • 如果您的服务器运行在64位的Solaris系统上,并且使用了64位Java,请添加-d64

Minecraft选项[]

关于服务端JAR文件的选项要写在命令中的-jar minecraft_server.jar后面。您可以在后面加上--help查看所有可以被传递给服务端的参数。下方列出了一些可用的命令行选项。

  • --bonusChest
    • 在初次生成世界时,是否生成奖励箱。
  • --demo
    • 指定服务器是否在演示模式下运行(给玩家显示一个“演示版”弹出信息。且演示结束后,玩家不能破坏、放置方块或者吃东西)。
  • --eraseCache
    • 清除光照缓存等。与优化单人游戏世界时的选项相同。
  • --forceUpgrade
    • 强制升级所有区块到服务器目前的版本(单人游戏世界也可用)。
  • --help
    • 显示此帮助。
  • --initSettings
    • 只初始化server.propertieseula.txt,然后退出。
  • --nogui
    • 启动服务器时不显示图形界面。
  • --port <Integer>
    • 指定服务器监听的端口,而无论在server.properties中设置的是什么(默认值为-1)。
  • --safeMode
    • 加载存档时只使用原版数据包。
  • --serverId <String>
    • 为服务器指定一个服务器ID。
  • --singleplayer <String>
    • 指定服务器以离线模式运行(<String>的用途未知,可能是由Mojang内部所使用的)。
  • --universe <String>
    • 指定查找world文件夹的位置(默认为.,即当前目录)。
  • --world <String>
    • 指定一个level.dat所在文件夹的名称。
旧命令行选项

一些选项能在旧版中使用,但是已在新版本中被移除或被替换了。

  • -o true
    • 使服务器以在线模式运行,只有经过认证的用户才能进入(新版本中此选项可能不能使用)。

示例命令行[]

  • 运行一个存档文件夹名称为“cold”的,监听在1337端口上且最大1GB内存的服务器:java -Xmx1G -jar minecraft_server.jar --port 1337 --nogui --world cold

Windows操作指导[]

安装Java[]

运行Minecraft服务器需要Java运行环境(JRE,或者直接叫Java)。为了安全着想,您应该使用最新版的Java。您可以按照下列方法之一检查是否是最新版:

  • 打开Windows控制面板,找到Java(它可能在“程序”类别中),然后点击“立即升级”。
  • 点此可以通过您的浏览器自动检查版本。但是,Google ChromeFirefox浏览器不运行Java内容,所以不能用它们来检查。
  • 打开命令提示符,输入java -version。如果显示出了版本号,可以与Java网站上的信息对比获取最新版本号。

如果您没有安装Java或您的Java版本较老,您可以下载OpenJDKOracle “OTN” JDK

macOS操作指导[]

请注意:在MacOS 10.4或更老的版本上,服务器不能正常运行,且有可能导致您的机器崩溃。

安装Java[]

打开终端。

  • 您可以通过执行java -version来检查您是否安装了Java。并确保其版本高于1.6(比1.8高要更好)。
  • 如果您没有Java,您可以使用HomeBrew安装:
  • 再次执行java -version,这一次应该会看到一些消息了。

设置Minecraft服务器[]

参见一般步骤

使用Time Capsule[]

有些家庭使用的无线路由器是AirPort Time Capsule。此章节教您如何在不搞坏文件服务器的情况下做相应设置。

注:您需要知道您的管理员账户和密码。

  • 打开系统设置->网络。
  • 点击“高级”按钮,然后到TCP/IP的底部。
  • 找到配置IPv4的地方,把选项改成使用具有手动IP地址的DHCP。
  • 把IP地址改为10.0.1.x。注意:x的数值需要在DHCP范围内(例如:如果DHCP地址池为10.0.1.2-10.0.1.254,那么x可以取2-254的任意值)。
  • 转到共享一节,确保Internet共享已开启。
  • 打开AirPort Utility并编辑您的Time Capsule设置。
  • 转到“网络”,确保路由模式选项设置为“DHCP和NAT”。然后,点击端口设置下方的“+”按钮。
  • 输入以下内容:
    • 描述:Minecraft Server(随便怎么写都行)
    • 私有IP地址:您在第四步填写的IP地址。
  • 把所有名字里面带“端口”的内容改成25565.
  • 点击保存并更新Time Capsule。

您现在可以配置您的服务器了

Linux操作指导[]

Linux有许多被称为“发行版”的变种。有一些发行版是专门为服务器设计的,或更适合运行在服务器上的。如果您正在架设一台专用服务器,我们建议您使用这些发行版中的其中一个。

一般来讲,Linux更欢迎开源软件。因此,在适用的情况下,建议您使用开源程序,例如OpenJDK。

安装Java[]

大多数发行版中都有OpenJDK。您可以直接安装。对于Oracle Java,请参考Oracle的下载页

注:尽管不影响Minecraft服务器,JavaFX以及其他专有部分可能需要单独安装。

Solus[]

执行sudo eopkg install openjdk-8命令安装OpenJDK。

安装Oracle JDK,请参考Solus帮助中心

注:OpenJDK 11不在Solus的仓库中。

Debian、Ubuntu和Raspbian[]

为了正常使用apt-add-repository命令,您可能需要“software-properties-common”(使用sudo apt-get install software-properties-common安装)和/或“python-software-properties”软件包(使用sudo apt-get install python-software-properties安装)。

由于许可证方面的问题,常用来安装Oracle Java的软件库已经停止维护。推荐您安装OpenJDK 8及更高版本。

OpenJDK可以使用此命令安装:sudo apt update; sudo apt-get install openjdk-8-jdk-headless

去掉命令中的“-headless”可以安装完整的Java。

注:此方法已在Ubuntu 18.04中测试有效。

openSUSE[]

注:由于openSUSE Tumbleweed可能的不稳定性,不建议使用此系统架设专用服务器。

在终端内执行命令:sudo zypper in java-1_8_0-openjdk 安装Java。

注:此方法已在openSUSE Leap 15.1中测试有效。

Arch Linux[]

官方只支持OpenJDK 7 到 OpenJDK 12。

运行pacman -S jdk8-openjdk-headless安装Java。去掉命令中的“-headless”可以安装完整的Java。

如果遇到问题,请参考ArchWiki

Gentoo[]

执行emerge --ask virtual/jdk安装Java。

Gentoo Wiki

其他发行版[]

查看您使用发行版的文档。它们应该会告诉您如何安装OpenJDK。

另外,您还可以直接访问Java网站下载适用于Linux的安装包。对于大部分发行版都有用(无论32位还是64位)。在网站上提供了不同安装包的安装指导。

如果您在安装的过程中询问了密码,请输入它。如果您被问到“Is this OK [Y/N]”,(如果需要的话)请回答“Y”然后回车。Java现在应该已经安装好了。

RunMinecraftServer.png

一个简单的安装脚本(同时会安装Java)[]

https://github.com/silvertriclops/MCSLI

注:这是一个非常早期的项目,设计时考虑了脱机安装,并将定期更新以使其对用户更加友好。

FreeBSD操作指导[]

此部分需要更新

Java 7与8已经过时,因为官方开始使用Java 16了。
一些崩溃问题在OpenJDK 16中不会再出现。
所以如果相关内容测试成功的话,则下文中关于Linux兼容相关的内容应该就可以删掉了。

此部分已在FreeBSD 10.0 amd64上测试有效(JRE使用的是:jre-7u65-linux-i586.tar.gz)。

安装Java[]

由于OpenJDK与Minecraft服务器的性能和崩溃问题,我们会安装为Linux设计的Oracle JRE。

在安装JRE前,您需要安装FreeBSD的Linux二进制文件兼容层,您可以按照此文档操作。
Java需要从proc中获取一些信息。您需要执行以下命令挂载linprocfs:

kldload linprocfs
mount -t linprocfs linprocfs /compat/linux/proc

并向/etc/fstab加入此行:

linprocfs   /compat/linux/proc   linprocfs   rw   0  0

Oracle JRE的一个依赖被标成“禁止”,所以安装这个依赖会失败。切换到/usr/ports/textproc/linux-f10-expat2.0.1/,然后在其中的Makefile文件中删掉以FORBIDDEN=开头的一行。

由于许可证问题,您需要从Java官网上手动下载Linux的tar包(例如“jre-7u65-linux-i586.tar.gz”),并把它复制到/usr/ports/distfiles。 然后,进入/usr/ports/java/linux-sun-jre17/目录并执行make install distclean安装JRE。

注:前一部分以前的说法(适用于FreeBSD 9.2 amd64)是:您必须在Makefile文件中设置JRE_UPDATE_VERSION变量,并将其设置为一个数字(在此例中为45)。然后再执行make install NO_CHECKSUM=1

尝试执行java -version。您可能会被提示找不到libjli.so。一种解决方法是:将您的Java路径显式指定为搜索路径。 创建一个符号连接:

ln -s /usr/local/linux-sun-jre1.7.0/lib/i386 /compat/linux/usr/lib/java

然后在/compat/linux/etc/ld.so.conf.d/java.conf添加:

/usr/lib/java
/usr/lib/java/jli

执行/compat/linux/sbin/ldconfig。 现在执行java -version应该是正常的了。

启动Minecraft服务器[]

创建一个文件夹,然后把Minecraft服务端jar文件复制进去。
在实际的版本中,如果您用一般方法运行服务器,您会得到以下异常:syscall epoll_create not implemented。为了解决这个问题,可以在命令后面加上-Djava.nio.channels.spi.SelectorProvider=sun.nio.ch.PollSelectorProvider
启动命令示例:

java -Xmx1024M -Xms1024M -Djava.nio.channels.spi.SelectorProvider=sun.nio.ch.PollSelectorProvider -jar minecraft_server.1.7.10.jar nogui

Plan 9[]

alien-convert PATH_TO_YOUR_JRE.deb
chmod ~/~ rwx # for current user
snarf java -jar PATH_TO_SERVER_JAR.jar xvmf in acme

Cloudron[]

Cloudron是一个在服务器上自托管应用程序的平台。在Cloudron上,Minecraft是一个一键应用。它允许您通过浏览器上的Web界面管理Minecraft服务器。您也可以在同一台服务器上安装多个Minecraft实例。您可以尝试此示例(用户名:cloudron,密码:cloudron)。

Docker[]

Docker是一种开源的容器平台,可以使不同的Minecraft服务器实例和主机相互隔离开来。Docker本身和其容器仓库的所有者与Mojang没有任何隶属关系。

安装Docker(适用于Linux、Mac和Windows)[]

参见https://docs.docker.com/install

Docker镜像[]

关于完整的Docker镜像文档,请参见:https://github.com/itzg/docker-minecraft-server/blob/master/README.md

在一个名为“mc”的容器中运行一个简单的最新版本服务器,可以在shell中执行以下命令:

docker run -d -p 25565:25565 --name mc -e EULA=TRUE itzg/minecraft-server

在Docker镜像中指定Minecraft版本[]

如果要指定特定的版本,请在命令后添加-e VERSION=<version number>。例如,您可以使用下面的命令指定版本为最新快照:

docker run -d -p 25565:25565 --name mc -e VERSION=SNAPSHOT -e EULA=TRUE itzg/minecraft-server

指定为Minecraft 1.7.9:

docker run -d -p 25565:25565 --name mc -e VERSION=1.7.9 -e EULA=TRUE itzg/minecraft-server

服务器端口[]

要更改监听的端口,需要用到Docker的端口映射功能。这可以把主机上的指定端口映射到容器的25565端口上。可以使用下面的命令运行一个非25565端口的服务器:

docker run -d -p <port>:25565 --name mc -e EULA=TRUE itzg/minecraft-server

更新Docker镜像[]

使用下面的命令更新Docker镜像。请注意,此命令不会更新Minecraft,它只会更新镜像本身。

docker pull itzg/minecraft-server


配置环境[]

编写脚本用于启动服务器[]

实际上,我们不需要在每次启动服务器的时候输入命令。我们可以把命令写进一个文件里,然后执行它。

Windows[]

在Windows上,脚本被称为“批处理文件”。在放服务器jar文件的文件夹中创建一个文本文档,命名为start.bat,然后右键点击“编辑”,再将下面的内容粘贴到里面:

@ECHO OFF
java -Xms1024M -Xmx2048M -jar minecraft_server.jar --nogui
pause

然后双击这个文件启动您的服务器。您可能会收到“Class_Not_Found”和“ServerGuiConcole”错误信息,直接忽略它们。然后您就可以看到“Server Thread/INFO”这样的内容,这表示您的服务器启动了。

脚本中的pause命令会保持窗口开启,这样是为了让您能在服务器停止时能更方便的知道到底发生了什么。

macOS、Linux和FreeBSD[]

这些系统在命令行中都使用一种被称为“POSIX shell script”的脚本语言。在放服务器jar文件的文件夹中创建一个文本文件,命名为start.sh,然后写入以下内容:

#!/bin/sh
cd "$(dirname "$0")"
exec java -Xms1G -Xmx1G -jar server.jar --nogui

然后保存文件。执行chmod a+x start.sh(或者您放置此脚本的路径)使其可执行。您可以通过双击此文件或者在文件夹中输入./start.sh(如果在文件夹外,请输入完整路径)命令启动服务器。

如果您想像Windows中一样能在服务器关闭后保留窗口,请删除脚本中的exec一词,并在末尾加上read -n 1 -p "Waiting..."一行。此更改对从图形界面双击打开的服务器有效果。


启动和维护脚本[]

另外,您也可以尝试使用下面列出的脚本实现对Minecraft服务器的管理和启动、关闭自动化:

  • Minecraft Server Control Script (MSCS)适用于UNIX和Linux平台的Minecraft服务器。有以下功能:
    • 运行多个Minecraft实例。
    • 启动、停止和重启单个或多个实例。
    • 创建、删除、禁用和启用实例。
    • 第三方服务器支持:Forge、BungeeCord、SpigotMC等。
    • 自动备份、删除(X天前)和重启实例。
    • 详情参见:MSCS的Github
  • Minecraft Server Manager是一个适用于原版服务端和Bukkit的全面的启动脚本(支持Debian系系统,例如Ubuntu)。
    • MSM可以定期创建可兼容World Edit的备份。
    • 可配置用于提醒玩家的消息,例如“将在10秒内关闭服务器!”。
    • 可以在终端内执行游戏内命令(例如“say”、“op”和“whitelist”)。
    • 支持Tab键补全命令,使学习更简单。
    • 查看完整功能:MSM的GitHub
  • 服务器架设脚本
  • FreeBSD启动脚本
  • OpenBSD启动脚本
  • Ubuntu启动脚本
  • rfwadmin是一个适用于Linux的具有Web界面的启动脚本。有很好的用于快速保存和加载存档的Web界面。
  • Minecraft Systemd Service是一个完全集成systemd的Minecraft服务:
    • 适用于CentOS和Fedora。
    • 使用大量的只读和不可访问的权限来保护服务器。
    • 使用rcon执行安全的重启和停机操作。
    • 为了更方便的管理,可以与Minecraft Command Center Script一起组合使用。
  • Arch Linux systemd wrapper

端口转发[]

参见:端口转发

如果您有一台路由器,并且想让用户通过路由器连接进来时,就需要使用端口转发。如果您只是想架设一台内部服务器,那么您就不需要做这样的事。请注意:端口转发可能会导致安全风险。

不同路由器设置端口转发的方式不同。如果您不知道如何在您的路由器设置端口转发,可以尝试在网络上找适用于您路由器型号的教程。

此示例适用于TP-Link家庭路由器的新版界面。

进入您路由器的管理界面,找到端口转发页,然后点击新建服务或自定义服务。选择一个“协议类型”,“TCP”表示只转发TCP协议,“UDP”只转发UDP协议,而“ALL”则两者都转发。内部端口和外部端口都填写25565(如果您服务器不是标准端口,可以按需填写)。IP地址则填写您Minecraft服务器的内部IP地址,其余保持不变即可。

要获取您电脑的IP地址,请按以下步骤操作:

Windows Windows
⊞ Win + R打开“运行”,输入cmd然后↵ Enter,打开命令提示符。在命令提示符中输入ipconfig然后↵ Enter。找到对应您使用的网络适配器上的IPv4地址(有线连接的一般是“以太网”,无线连接的一般是“WLAN”)。一个IP地址的形式应该是xxx.xxx.xxx.xxx,然后把这样的内容记录下来。注意不要包含任何除了数字或点的部分

OS X上IP地址的显示位置

MacOS.svgMac
打开在logo下的菜单,找到“系统首选项”,然后选择“网络”。您的IP地址应该会显示在右侧(应该是xxx.xxx.xxx.xxx形式)。将它复制下来即可。
LinuxLinux
您可以使用网络诊断中心(有一些发行版有)。或者在终端中执行ifconfig,此命令会输出您所有网络接口的IP地址,找到例如inet addr:xxx.xxx.xxx.xxx的内容,将xxx.xxx.xxx.xxx的部分复制下来即可。

如果您获得了您的IP地址,请把它输入到前面转发设置中的“IP地址”中。 填写好这些需要的信息后,请点击“保存”(或者其他类似意思的按钮)。这样您就成功的设置了端口转发。当您启动Minecraft服务器时,需要把server.properties中的IP地址一项留空。 其他人需要通过您的外部IP地址来连接到您的服务器。您可以通过例如IP Chicken的网站获取外部IP地址。如果您不想用IP地址连接,可以使用动态DNS服务,例如NoIP DynDNS

接下来可以配置并连接了。

设置VPN[]

该段落的内容不受Mojang StudiosMinecraft WikiMinecraft论坛的官方支持

注意

使用虚拟专用网络可能对连接至Mojang服务器,Minecraft服务器,或者您的互联网造成影响。

在您和您的朋友之间设置服务器的另一种方法是设置虚拟专用网络。由于希望连接到服务器的所有用户必须下载外部软件以加入或创建服务器,因此该方法可能会被认为是不推荐而且不方便的。另外一种可行的办法是端口转发。可用于建立虚拟专用网络的免费简单程序是Hamachi和Radmin虚拟专用网络。是另外一种免费开源且支持大多数操作系统的方案,但是配置较困难。Hamachi免费版只允许5个玩家连接。

设置Hamachi[]

  1. 在希望加入服务器的每台计算机上安装Hamachi,包括主机。下载地址:
    Windows / Mac
    Linux (32位与64位.deb.rpm包均可找到。欲在 Gentoo 上安装,使用net-misc/logmein-hamachi
  2. 在主机上创建新的Hamachi网络。
  3. 主机安装并配置Minecraft服务器软件(server.jar):server.properties中的服务器IP字段保留为空(默认情况下)。
  4. 主机将新创建的Hamachi网络凭证传递给每个玩家。
  5. 玩家连接到主机的Hamachi网络。
  6. 当所有机器都连接在同一个Hamachi网络中,主机将其机器的Hamachi IPv4地址提供给玩家。
  7. 每个玩家使用主机的IPv4地址输入到“直接连接”框里。
  • 请注意,Hamachi占用了已经被IANA分配的IP块(25.0.0.0/8)。 所以,Hamachi有可能会和互联网冲突。

设置Radmin VPN[]

其配置方法和Hamachi的很相像。

  1. 这里下载Radmin VPN。
  2. 创建网络:在本地计算机上安装Radmin VPN后,按“创建网络”按钮。 设置网络名称和密码,然后按“创建”按钮。
  3. 现在新网络将出现在主窗口。给朋友发送连接信息,然后运行Minecraft。
  4. 连接:Radmin程序启动后按“加入网络” - >在对话框中按输入网络名称和从主机网络的密码 - >“加入” - >新网络及其节点将显示在主窗口中。 - > 在Minecraft中连接到主机。(如同配置Hamachi的第七步)
  • 如果Radmin VPN上的连接已经建立,但您没有看到游戏中的其他玩家,则需要调整防火墙,或者直接关闭防火墙。

配置Minecraft服务器[]

  1. 编辑server.properties文件(格式可参见server.properties#server.properties)。请使用纯文本编辑器修改此文件(例如记事本)。可能不需要做额外配置,默认生成的内容也可以启动服务器。
  2. 如果您要成为管理员(op)或添加管理员,请在服务器控制台或GUI上输入/op <玩家名>命令。此命令会把您指定的用户的UUID添加到ops.json文件中。管理员权限不会随着用户名的更改而消失,因为存储的是您的UUID而不是用户名。
    • 管理员可以执行命令。换句话说,管理员有权限控制游戏的某些方面(例如传送玩家)。
    • ops.json的内容:
[
  {
    "uuid": "",
    "name": "",
    "level": 4,
    "bypassesPlayerLimit": false
  }
]
  1. 如果在您的server.properties中设置了开启白名单,您可以在服务器控制台或GUI上使用/whitelist add <player>命令把玩家添加进whitelist.json文件中(由于过渡到UUID系统的原因,不建议直接修改此文件的内容)。

连接到Minecraft服务器[]

  • 如果您是在作为服务端的电脑上玩Minecraft,先选择“多人游戏”,输入“localhost”或者是“127.0.0.1”,而不是您的IP地址。
    • 这是不推荐的。除非您有一个性能良好,内存比较大的电脑。(服务器4GB,客户端2GB,其余的给系统)
  • 在您的局域网内的玩家可以通过内网IP来连接到您的服务器(因为玩家在局域网内,所以您不需要接口转发)。
  • 从Internet链接的玩家(也就是不在您的局域网中的玩家)必须使用您的外部ip来链接. 您必须为这些从外部链接的玩家使用端口转发。
  • (部分支持IPv6的客户端和服务端,客户端可以直接通过IPv6地址访问服务端。)
  • 特定网络适配器上的IP地址可以通过在命令提示符中输入“ipconfig”或者通过此网站来查看。如果在server.properties文件中指定了非25565的端口,则需要在地址栏中加上端口号。地址(IP和端口)看起来应该像192.168.0.168:25565这样。

关于IP地址的一些注意事项[]

  • 除非您为正在做服务器的电脑设定一个静态IP,否则的话,内部IP地址是有可能改变的。这会影响到接口转发规则并使得它们失效。不同的路由器有不同的设置静态ip的方法。您可以从您的设备的说明书或者在线文档中获得更多的帮助。
  • 如果您有连接到您外部IP的玩家,您应该明白如果您没有从您的Internet服务商处获得一个静态IP,那么您的外部IP是会变化的。您可以使用类似MyWANIP的工具来定时的检查您的外部IP。此外,您可以尝试使用DNS服务,这会允许您使用一个固定的域名,而不是动态的IP地址。不管您的外部IP地址是否改变,这个域名会指向您当前的外部IP地址(即,当您的外部IP改变时,DNS会自动更新)。
  • 在解决服务器故障时,您可以尝试在运行服务器的机器上使用客户端来调试,使用本地IP地址(localhost)、内网IP地址(例如192.168.x.x)或者公网IP都是可以的。
  • 如果您在公网上连接您服务器的公网IPv4地址时有问题,可以尝试使用IPv6地址来连接。您仅应在测试服务器是否在线时执行此操作。对于其他玩家而言,还是最好使用您的IPv4地址来连接。

服务端网络设置[]

  • 服务器需要开启防火墙相应端口(默认为25565)才能使服务端正常工作。
  • 确认网络设置正确并使用在线工具如You Get Signal确定服务端在国际互联网的IP。测试端口应与服务端设置的端口一致(默认为25565), 测试时请启动服务端

服务器有可能会遭到恶意攻击,在服务器投入使用以前,请务必做好物理保护及数据备份工作,否则有可能会带来经济及精神上的损失。

针对接入NAT的家庭网络的服务器[]

  • 如果家庭路由器的服务器接入NAT网络,那么他在启动后外网的玩家是无法连接的。
  • 购买路由器,进入路由器配置页面(一般是192.168.1.1:80或192.168.0.1:80)查看WAN IP记录下来,使用搜索引擎搜索IP,将该IP与之前的WAN IP对比,若相同则为一般有IP,若不同则为接入NAT的家庭网络。

这种情况,您可以使用内网穿透类应用,如花生壳,或协商运营商请求许可获取公网IP的资格。

针对使用家庭路由器的服务器[]

  • 如果服务器位于一个家庭路由器的局域网内,则需要在路由器设置相应的端口映射法则。
  • 关于端口映射的具体设置,可以访问 portforward.com。从网站给出的列表中选择您使用的路由器型号,网站将给出设置端口映射的相应步骤(有广告,可跳过)。调制解调器、路由器等网络器材附带的说明文件也可能包括了设置端口映射的相关信息。
    • 部分路由器提供了DMZ选项,与端口映射有同样效果,但遭到攻击的可能性相比使用端口映射更大(DMZ主机暴露在外网,不受路由器安全设置保护)。新手使用请咨询熟悉的业内人士
    • 一般来说可以首先尝试使用 UPnP 进行端口映射,大部分路由器都支持并默认开启该功能。可以使用诸如 miniupnpc 软件包的 upnpc 命令一类的程序进行映射。

针对使用动态IP的服务器[]

  • 由于大部分家庭用户(部分服务器代理的服务器也没有固定IP)使用ADSL或PPPoE等方式接入互联网,此种情况下的服务器无论通过路由器与否,IP地址是不定的。解决此问题可以使用动态DNS服务,届时玩家只需要知道服务器使用的域名即可连接到服务器。
  • 请联系网络供应商(家庭用户)或服务器代理商确定正在使用的网络接入方式。
  • 使用动态DNS需要进行以下准备工作:
    • 获得一个域名,可以从dot.tkOray等网站获得免费域名,也可以支付一定费用注册;
    • 选择一个动态DNS服务商,注册账号并按服务商提供的操作方法设置服务器及域名,维基百科有部分动态DNS的服务商列表

使用动态DNS需要一定网络理论及实践的基础,新手在做出决定前,请先咨询熟悉的业内人士。

  • 设置动态DNS请按照服务商的指示对服务器、路由器(仅限使用路由器的用户)进行设置。
    • 路由器设置需要进入管理页面进行操作,新手请参照说明文档或在业内人士的指导下进行。

局域网中的专用服务器[]

这一段的内容只适用于Classic(v0.30)服务器。

管理员不能在内网中通过一台另一台机器进入那台架设了服务器的机器,这是一个普遍性的问题。典型的情景是:您有一台专用服务器,而且有另一台供您玩游戏的机器。而它们同时连接到同一个路由器或交换机下,且内部IP为“192.168.x.x”。通常,通过服务器生成的URL连接时,会返回“服务器离线”的错误信息。

要解决这个问题,您需要在您的URL、书签以及其他您用来连接的东西后面加上?override=true
例如:http://www.minecraft.net/classic/play/4c3bebb1a01816acbe31c5ece1570da5?override=true

以前(1.8 beta和网站更新前)上面要加的东西是&override=true。这一点并没有被Mojang在网站Applet页面上说明,导致出现了很多误用。在此更新前,通过网站连接到您自己的URL会导致出现在Applet窗口底部出现“If you can't connect, try this link instead.”的红色文字,返回的是同样以“&override=true”结尾的连接。

注:Beta服务器没有这样的情况,您应该能通过内部或外部IP连接上服务器。

SRV记录[]

Java版1.3开始支持玩家可以在不输入端口号的情况下连接到一个使用非标准端口号的服务器。相关的信息是作为一种服务被记录在DNS上的SRV记录中的。SRV记录告知客户端实际上应该连接的主机名和端口。一些动态DNS(DDNS)服务和大多数的静态DNS服务都会允许您设置这样的记录。[1]

如果您要手动验证SRV记录是否生效,请参考下面的内容(假设给玩家的域名是“YOUR.DOMAIN.com”):

> nslookup -q=srv _minecraft._tcp.YOUR.DOMAIN.com
Server:  UnKnown
Address:  [REDACTED]

Non-authoritative answer:
_minecraft._tcp.YOUR.DOMAIN.com  SRV service location:
          priority       = 5
          weight         = 5
          port           = 65312
          svr hostname   = ACTUAL.DOMAIN.com

常见问题[]

问:如果我有一个没在这里提到的问题,我应该怎么办?

答:您可以在Minecraft Forums上发帖说明您的问题。为了能帮到您,请提供以下信息:

  • 使用的操作系统
  • Java版本
  • 一台还是多台电脑
  • 问题的具体描述
  • 您为解决问题已尝试的步骤
  • 您遇到的任何错误
  • (如果可以的话)问题的截图
  • 其他可能有助于帮您解决问题的内容(一般也不会有多少。注意不要提供密码

如果我们解决了您的问题,请说明具体解决问题的地方和方法。这可以对其他人有所帮助(也能帮我们解决常见问题)!


问:在Windows上双击批处理文件启动服务器,命令提示符窗口闪退且服务器没有启动。

答:请在您的批处理文件最后加上pause再运行。如果显示的是无效路径,这可能是您Java可执行文件或者服务端jar文件的路径不正确导致的。把批处理文件路径里的/jre7/换成/jre6/,确定运行环境在/Program Files/里还是在/Program Files (x86)/里,或者根据自己电脑的情况对路径进行相应调整。多说一句,运行服务端需要JRE运行环境,而不是浏览器里的Java插件。

也可能是您没有修改您的eula.txt文件。在双击您的minecraft_sever.jar文件后,您会看到文件夹内有个eula.txt文件。用记事本打开这个文件

(https://account.mojang.com/documents/minecraft_eula).
 Datum Uhrzeit
 eula=false

将最后一行修改为

eula=true

然后保存并退出。重新双击服务器启动的批处理文件应该就可以正常启动了。


问:当我尝试启动服务器时,服务器显示"Failed to bind to port!"。

答:可能是路由器端口映射设置有误,确认路由器为Minecraft开放的端口(默认为25565)正确地映射到您的服务器上。如果您的服务器是直接接入网络的且网络服务商不开放您所设置的端口,将server.properties文件中的server-port=25565中的“25565”改为其他可用端口号。

或者是您在server.properties文件中的IP地址一项中设置了IP地址。如果这个IP地址不与您系统上任何接口上的地址一致,服务端会显示这样的信息。如果把此项留空,您就可以在所有接口上绑定。这样,您和内网内的人就可以通过localhost或内网IP地址连接到服务器了。

此外,问题也可能是由于您尝试使用一个已被占用或无权限绑定的端口(小于1024的端口需要root或管理员特权才能使用)导致的。要解决这个问题,您可以尝试修改server.properties文件中的server-port=25565一行。

注:您应该避免使用下列端口,这些端口在有些ISP那里是被封禁的。并且,为了安全考虑,最好不要用root用户运行服务器(适用于Linux系统且端口小于1024的情况):

  • 21(由大多数FTP服务器使用)
  • 22(由SSH服务器使用)
  • 25(由邮件服务器使用,用于SMTP协议)
  • 53(由DNS服务器使用)
  • 80 (由大多数Web服务器使用)
  • 110(由邮件服务器使用,用于POP3协议)
  • 115(由简单文件传输协议使用)
  • 143(由邮件服务器使用,用于IMAP协议)
  • 443(由Web服务器使用的SSL端口)
  • 3306(由大多数MySQL服务器使用)

一般要避免使用端口号低于1024的端口,因为这些端口是“公认端口”,用于在IANA处注册的重要服务;另外因为安全原因,一些网络服务商还会屏蔽3306(MySQL服务器默认使用)端口等。除此之外,49152-65535段端口属于“动态端口”范围,没有被注册占用。

此类问题亦有可能是操作者疏忽导致服务端未关闭就再次开启了服务端,典型的错误操作有:Windows中直接双击了核心jar,Linux中使用守护进程运行Java等,导致服务端在后台运行而操作者未注意的情况。遇到此类问题可先检查占用该端口的进程,获取控制或将其结束,再启动服务端。


问:我尝试在Solaris/OpenSolaris上运行服务器,但是出现了以下错误:

java.io.InterruptedIOException: Operation interrupted 
at java.net.SocketInputStream.socketRead0(Native Method) 
at java.net.SocketInputStream.read(SocketInputStream.java:129) 
at java.net.SocketInputStream.read(SocketInputStream.java:182) 
at java.io.FilterInputStream.read(FilterInputStream.java:66) 
at gq.a(SourceFile:131) 
at ji.g(SourceFile:197) 
at ji.c(SourceFile:17) 
at oq.run(SourceFile:84) 
2011-05-31 16:57:26 [INFO] /:44673 lost connection

答:只有Solaris系统在线程中断连接时会发生这种异常,这种异常可以通过改变启动命令来避免:

java -Xmx1G -Xms32M -XX:-UseVMInterruptibleIO -XX:+UseConcMarkSweepGC \
 -XX:+CMSIncrementalPacing -XX:ParallelGCThreads=$CPU_COUNT -XX:+AggressiveOpts\
 -jar minecraft.jar nogui

这样的命令让Java使用一种可中断的IO栈来防止异常发生。


问:当我尝试连接到我的服务器上,服务器显示:

               Connection lost 
 
The server responded with an invalid server key

答:此错误通常在服务端发送了一个客户端不能识别的功能时出现,这可能是由于使用了不能识别的服务器软件、不平衡的客户端/服务器版本或修改过的客户端导致的。


问:为什么我不能破坏或放置方块!?

答:联系服主关闭保护出生点的功能,或离出生点远一些,除非您是服务器的op,否则在该功能开启时您不能在出生点附近放置或破坏方块。


问:我的服务器运行正常,但是我不能连接上去!

答:这可能是由一连串问题导致的。请按照上方提供的模板发帖询问。


问:如何给服务器更多内存?

答:修改启动命令行中的“-Xmx1G -Xms1G”部分中的数字。“-Xms”部分指定的是服务器启动时使用的内存量,而“-Xmx”部分指定的是服务器最大可以使用的内存量。 -Xmx1G -Xms2G = 1GB -Xmx2G -Xms1G = 2GB 等等。


问:为什么服务器CPU经常满载?

答:这可能是由于GUI(图形界面)窗口导致的。在启动命令行加入nogui可以禁用这个窗口。


问:我要怎么获取服务器的IP地址?

答:请参阅连接到Minecraft服务器一节。


问:我设置了端口转发,并且允许java.exe通过防火墙,但仍然不起作用!

答:您的调制解调器有可能运行在路由模式下。您可能会从ISP处拿到调制解调器和路由器二合一的设备。 要验证这一点,请查看您路由器上显示的WAN IP,如果这个IP是一个私有IP,那么您需要登陆到ISP提供给您的调制解调器的管理界面,然后把端口转发中的IP地址设置为您路由器的WAN IP。

性能优化[]

对于各类JDK(Oracle或Open)用户,使用JDK的一些参数进行优化是可行的。以下参数在一定程度上优化了GC内存操作且利用了一些CPU命令集。

java -server -XX:-UseVMInterruptibleIO -XX:NewRatio=3 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSIncrementalPacing -XX:ParallelGCThreads=4 -XX:+AggressiveOpts -XX:+UseFastAccessorMethods -XX:+UseBiasedLocking -XX:+CMSParallelRemarkEnabled -XX:MaxGCPauseMillis=50 -XX:+UseAdaptiveGCBoundary -XX:-UseGCOverheadLimit -XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=90 -XX:MaxTenuringThreshold=15 -XX:+DisableExplicitGC -Xnoclassgc -oss4M -ss4M -XX:CMSInitiatingOccupancyFraction=60 -XX:SoftRefLRUPolicyMSPerMB=2048 -Xms1G -Xmx(视情况) -jar <jar文件> nogui

视频和替代教程[]

这里给出了一些其他的Minecraft服务器架设教程:

参考[]