13518219792

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

创新互联MinecraftWiki教程:警告[]

  本文章介绍的是架设Java版服务器。关于基岩版服务器的架设,请见“
教程/架设基岩版服务器”。

创新互联公司服务项目包括金秀网站建设、金秀网站制作、金秀网页制作以及金秀网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,金秀网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到金秀省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

目录

此特性为Java版独有。

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

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

注意:

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

警告[ ]

注意

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

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

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

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运行环境,且具有以下两种类型:无头的(没有图形界面)以及普通的。

” ——
Debian Wiki(译文)

一般步骤[ ]

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

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

Java选项[ ]

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

Minecraft选项[ ]

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

旧命令行选项

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

示例命令行[ ]

Windows操作指导[ ]

安装Java[ ]

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

如果你没有安装Java或你的Java版本较旧,你可以下载OpenJDK或Oracle “OTN” JDK。

macOS操作指导[ ]

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

安装Java[ ]

打开终端。

设置Minecraft服务器[ ]

参见一般步骤。

使用Time Capsule[ ]

有些家庭使用的无线路由器是AirPort 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[ ]

Arch默认提供最新的稳定Java版本。若无特殊需求,建议安装默认版本的Java环境。

运行pacman -S jdk-openjdk安装Java。

如果希望了解所有可用的Java版本,请运行pacman -Ss openjdk进行查询,或访问OpenJDK获取更多信息。

例如安装Java 17,请运行pacman -S jdk17-openjdk

注:Arch官方不提供无头JDK,只提供无头JRE、完整JRE以及JDK。

如果遇到问题,请参考ArchWiki。

Gentoo[ ]

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

Gentoo Wiki

其他发行版[ ]

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

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

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

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

https://github.com/silvertriclops/MCSLI

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

FreeBSD操作指导[ ]

此部分需要更新

Java 7已经过时,因为官方已经使用Java 18了。
一些崩溃问题在OpenJDK 18中不会再出现。
所以如果相关内容测试成功的话,则下文中关于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

Hostman[ ]

Hostman是用于云托管应用程序的应用程序托管提供商。Minecraft可作为Hostman上的一键式应用程序使用。安装大约需要2分钟,有个关于如何配置服务器并开始游玩的说明。你可以在一台服务器上拥有多个Minecraft服务。在此处免费试用。

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=。例如,你可以使用下面的命令指定版本为最新快照:

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 :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服务器的管理和启动、关闭自动化:

端口转发[ ]

参见: 端口转发

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

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

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

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

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

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

OS X上IP地址的显示位置

Mac
打开在logo下的菜单,找到“系统首选项”,然后选择“网络”。你的IP地址应该会显示在右侧(应该是xxx.xxx.xxx.xxx形式)。将它复制下来即可。
Linux
你可以使用网络诊断中心(有一些发行版有)。或者在终端中执行
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 Studios或Minecraft Wiki的官方意见。

注意

使用虚拟专用网络可能对连接至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地址输入到“直接连接”框里。

设置Radmin VPN[ ]

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

  1. 在这里下载Radmin VPN。
  2. 创建网络:在本地计算机上安装Radmin VPN后,按“创建网络”按钮。 设置网络名称和密码,然后按“创建”按钮。
  3. 现在新网络将出现在主窗口。给朋友发送连接信息,然后运行Minecraft。
  4. 连接:Radmin程序启动后按“加入网络” - >在对话框中按输入网络名称和从主机网络的密码 - >“加入” - >新网络及其节点将显示在主窗口中。 - > 在Minecraft中连接到主机。(如同配置Hamachi的第七步)

配置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 <玩家或玩家实体目标选择器>命令把玩家添加进whitelist.json文件中(由于过渡到UUID系统的原因,不建议直接修改此文件的内容)。

连接到Minecraft服务器[ ]

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

服务端网络设置[ ]

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

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

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

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

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

使用动态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上发帖说明你的问题。为了能帮到你,请提供以下信息:

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


问:在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的情况):

一般要避免使用端口号低于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。

性能优化Java参数[ ]

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

使用Java 8或之前的版本[ ]

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 -Xms(视情况) -Xmx(视情况) -jar  nogui

使用Java 9或之后的版本[ ]

因为从1.17开始不支持Java 8,而在高版本Java上,上面的许多参数都被删除,暂时没有替代品,故可以使用以下参数:

java -jar -Xms(视情况) -Xmx(视情况) -server -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M  nogui

其他[ ]

如果上述两个用例都报错的话,可以使用服务端所属版本的官方客户端参数,此参数可以在编辑“配置”界面上的“JVM参数”中找到,然后使用以下参数:

java -jar -Xms(视情况) -Xmx(视情况) -server <在官方启动器中获得的参数>  nogui

视频和替代教程[ ]

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

参考[ ]

  1. ↑ https://www.noip.com/support/knowledgebase/how-to-add-a-srv-record-to-your-minecraft-server-remove-the-port-on-the-end-of-the-url/

教程(作下划线标记的教程为中文独有教程)

新手教程
  • 菜单屏幕
  • 游戏术语
  • 下载、安装与购买
新手生存
  • 新手指南
  • 第一天
  • 第二天
  • 第三天
  • 提示与技巧
  • 饥饿管理
  • 不该做的事
  • 生存注意事项
庇护所
  • 庇护所
    • 沙漠
  • 最佳居住生物群系
  • 最佳建筑材料
  • 建筑与结构
  • 房屋类型
  • 导航
综合