Minecraft Wiki

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

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

了解更多

Minecraft Wiki
Advertisement

在這個教學中,我們將透過手把手的方式,一步步地幫助您建立屬於您自己的Minecraft伺服器(Java版)。在該教學中,我們使用Mojang發布的供玩家免費下載的伺服器端程序,該程序在大部分作業系統(比如Windows、Mac OS、GNU/Linux和BSD)上都可以執行。

如需查看更多教學,請查看此頁面底部或教學頁。更多有關Minecraft伺服器的資訊,參見伺服器

注意:

  • 開設伺服器會花費一些時間,並且需要一些技術上的知識。如果您沒有基礎的計算機和網路技能,請不要嘗試開設伺服器。最好的選擇可能是在網路上尋找有關於如何設定伺服器的教學(而不是這裡)。
  • 一台Minecraft伺服器不需要一台高端機器,但是上網本和筆記本電腦都一般都不適合用於開設伺服器。它們的配置一般都比較低端,且I/O效能相較於台式機要更差。
  • 只要您的電腦足夠強勁,在一台電腦上同時開伺服器端和客戶端也是可行的。
  • 對於很多玩家遊玩的伺服器,不建議將伺服器連接到無線網路(WLAN,尤其是WWAN),最好還是把伺服器接入到有線網路,例如乙太網。
  • 如果您決定只是想聯機玩遊戲,而不是自己開設伺服器。可以考慮在Minecraft伺服器列表中找到您想玩的伺服器
  • 如果使用使用遊戲中設定內的區域網遊戲需要外網或者內網貫穿亦或者埠映射,如果聯機主機可以連結您的WLAN,可以直接輸入地址連結而不用使用更複雜的操作讓其他內網連接到您的伺服器{使用埠映射有一定設備危險性}地址的正確填寫x.x.x.x:埠
  • 您不想在家中開設伺服器,請查看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位址的顯示位置

macOSMac
打開在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。

效能優化java參數[]

對於各類JDK(Oracle或Open)使用者,使用JDK的一些參數進行優化是可行的。以下參數在一定程度上優化了GC記憶體操作且利用了一些CPU指令集。

使用Java8或之前的版本[]

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 <jar文件> nogui

使用Java9或之後的版本[]

因爲1.17 使用Java16,上面的所屬的參數很多被刪除,暫時沒有替代品,因此可以使用以下參數

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

其他[]

如果上面兩個參數皆報錯,可以使用你所屬版本的官方客戶端參數,可以在 安裝檔/<你所需要的版本>/三點(更多)/編輯/JVM參數 中找到,然後以以下方式編輯

java -jar -Xms(视情况) -Xmx(视情况) -server <在官方啓動器中取得的參數> <jar文件> nogui


影片和替代教學[]

這裡給出了一些其他的Minecraft伺服器架設教學:

參考[]

Advertisement