--- lang: zh-TW --- # Minecraft 伺服器架設全攻略 [TOC] --- :::info 本教學涵蓋以下主要內容,請根據上方目錄尋找需要的段落,或從頭一步步來。 其中的所有文句都有其存在的意義,不妨一字一句地把它看完吧,不然會...「誒 這個剛剛有說過嗎?」 我是一名接觸Minecraft多年的玩家,也曾是帶領眾多玩家一起遊玩的伺服主。模組、插件、Bungeecord、Geyser 等眾多工具皆有接觸。我想透過集合這些經驗,讓想了解伺服器的玩家,或是已經是大佬級的人物一起讓開伺服器變得不那麼困難。 ::: --- # 簡介 Minecraft 是一款買斷制付費遊戲,玩家不僅可以選擇預設的「最新版本」來啟動遊戲,還可以透過「安裝檔」選擇想要的遊戲版本,或是調整GC參數,更多細節會在之後說明。 除了單人遊戲外,最吸引人的便是他**多人遊戲**的內容,與其他大型遊戲不同,伺服器均是由玩家們自行建立並運行的,玩家可以自行選擇伺服器的「核心」、「版本」、「模組」,更甚至是自定義遊戲規則。整個過程完全不需要額外收費,若你沒有買Minecraft,仍然可以架設屬於自己的伺服器。 伺服器開啟後,便可以邀請朋友們進來一起玩,但是要怎麼加入呢?對於硬體上的設定也是勸退了不少準伺服主,如何只用如「`play.hypixel.net`」這個的IP位址就加入伺服器呢?如何設定數據機的端口導向?多層NAT網路,如何對路由器做多步重定向?DDNS、DNS該如何設定? \ 此攻略將分為以下部分說明 1. 硬體上的準備 2. 軟體上的準備 3. 伺服器連線的方式、方法 4. 伺服器架設步驟 # 硬體需要準備什麼 以[最低標準](https://arc.net/l/quote/lvktfozf)(1~3人)來說,你只需要一台電腦(或租用VPS),一個可靠的網路環境(6Mbp/s 以上),便可以開啟伺服器了。 --- # 軟體需要準備什麼 * 合適版本的 Java (JRE/JDK) * 伺服器啟動核心 - 地圖檔案(可選) - 模組(可選) - 插件(可選) ## 版本所需Java 以下為各MC版本所需之Java版本(JRE或JDK皆可)。 \[[資料來源](https://www.reddit.com/r/feedthebeast/comments/138sarj/what_version_of_java_to_use_for_a_forge_1192/)\] | Minecraft | 1.13 | 1.14 | 1.15 | 1.16 | 1.17 | 1.18 | 1.19 | 1.20 | |:---------:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:| | **Java** | 15 | 15 | 15 | 15 | 17 | 17 | 17 | 17 | ## 核心種類 為自己的伺服器選擇一個合適的核心,直接影響到伺服器的效能與第三方插件或模組的支援性,以下是一些常見的啟動核心。 ### [Vanilla](https://mcversions.net/) Minecraft官方提供的伺服器,絕大部分玩家可以選擇此核心。在巴哈姆特下載的地圖也可以透過這個核心開伺服器。 此核心保有最純粹的原版體驗,包含需多「特性」。 :::info 穩定性:中高 版本支援:全 插件支援:X 模組支援:X ::: ### [Spigot](https://getbukkit.org/download/spigot) 目前主流的插件伺服器核心,可用插件總數最多。原版的許多「特性」在此核心上被保留。 :::info 穩定性:中 版本支援:1.4.6 - latest 插件支援:O 模組支援:X ::: ### [Paper](https://papermc.io/downloads/all) Spigot的替代品,修復並提升了需多漏洞與性能,建議以Paper取代Spigot作為核心。 :::info 穩定性:高 版本支援:1.8.8 - latest 插件支援:O 模組支援:X ::: ### [Pufferfish(+)](https://pufferfish.host/downloads) Pufferfish是Paper的分支之一,提昇了效能。 Pufferfish+使用了全非同步架構,效能約提升30%。 :::info 穩定性:高 版本支援: Pufferfish: 1.17.1 - latest Pufferfish+: 1.18.2 - latest 插件支援:O 模組支援:X ::: ### [Purpur](https://purpurmc.org/downloads) Purpur是Pufferfish的分支之一,在他優點之下新增了許多有趣的設定(預設關),例如可以飛行魷魚、可騎乘生物等... :::info 穩定性:中 版本支援:1.16.5 - latest 插件支援:O 模組支援:X ::: ### [Sponge](https://spongepowered.org/) 獨立API與Forge兼容,可與可支援的插件並用 :::info 穩定性:中 版本支援:1.8 - latest 插件支援:O 模組支援:O ::: ### [BungeeCord](https://www.spigotmc.org/wiki/bungeecord/) [bridge work with Spigot] 可整合與連接不同伺服器,達到分流效果。主要應用在Spigot伺服器。 :::info 穩定性:高 版本支援:ALL 插件支援:O 模組支援:X ::: ### [Velocity](https://papermc.io/software/velocity) [bridge work with Paper] 可整合與連接不同伺服器,達到分流效果。主要應用在Paper伺服器。 :::info 穩定性:高 版本支援:ALL 插件支援:O 模組支援:X ::: ### [Forge](https://files.minecraftforge.net/net/minecraftforge/forge/) 主流模組啟動器、伺服器。 :::info 穩定性:高 版本支援:1.1 - latest 插件支援:X 模組支援:O ::: ### [Fabric](https://fabricmc.net/use/installer/) 還在發展並趨於成熟的Forge替代品,在高版本中流行使用。 :::info 穩定性:高 版本支援:1.14 - latest 插件支援:X 模組支援:O ::: --- # 伺服器連線 這個部分是相較下最困難的地方,客戶端要如何才能夠訪問到伺服器呢?反向代理、直連IP、DDNS動態域名又是什麼呢? 以下提供多種不同方法實踐,並且會附上其建議與優缺點。可透過DNS補足某些方法的缺點。 ## 方法1: [ngrok](https://ngrok.com/) 知名的FRP反向代理平台,人數少時可作為代理使用。可配合CNAME與SRV紀錄綁定在域名上,做到固定IP。 :::info 優點:快速、便捷、延遲相對低、安全性高 缺點:流量限制低,不適用高負載、每次重新啟動端口不固定、僅英文介面對部分人不友好、無圖形化介面 ::: ## 方法2: [ZeroTier](https://www.zerotier.com/) 用過都說讚。詳細使用說明,網路上已有大量文章可供參考。 :::info 優點:開源、快速、延遲相對低、系統支援廣泛 缺點:客戶端需安裝額外應用程式、僅英文介面對部分人不友好、25人數限制 ::: ## 方法3: [Radmin VPN](https://www.radmin-vpn.com/) 貌似是朋友間主流的選擇,學習成本較低,但連線很麻煩...。詳細使用說明,網路上已有大量文章可供參考。 :::info 優點:快速、延遲相對低,有中文介面 缺點:客戶端需安裝額外應用程式、僅支援Windows用戶、150人數限制 ::: ## ~~方法4: [LogMeIn Hamachi](https://vpn.net/)~~ 若只有Windows用戶,請改用Radmin,否則請改用ZeroTier。 :::info 優點:快速、延遲低、有中文介面 缺點:客戶端需安裝額外應用程式、5人數限制、穩定性疑慮 ::: ## 方法5: 直連 對客戶端最友善的連線方式,浮動IP可搭配[No-IP](https://www.noip.com/)的DDNS服務一起服用。詳細使用說明如下。 :::info 優點:一勞永逸(一般來說)、延遲極低 缺點:設定較難 ::: --- # 架設原版伺服器 此範例以 1.20.4 版本為主 1. 到這個[網站](https://mcversions.net/)找到欲安裝的版本核心,下載`server.jar`檔案 ![image](https://hackmd.io/_uploads/By9XV0XZR.png =400x) 2. 根據上表「版本所需Java」可知,需要安裝Java 17。確定版本並選擇好作業系統後,可以到[此網站](https://www.oracle.com/tw/java/technologies/downloads/#jdk17-windows)下載並安裝Windows版本Java 17 ![image](https://hackmd.io/_uploads/S13gWkV-R.png =650x) 3. 建立一個新空資料夾,並將`server.jar`伺服器核心放入 ![image](https://hackmd.io/_uploads/BkJR-k4ZC.png =500x) 4. 再建立一個文字文件名為`start.txt` ![image](https://hackmd.io/_uploads/rJlIfk4bA.png =500x) 5. 請先讀完敘述後再動作!先根據以下說明調整後,將調整後的文字輸入進`start.txt`中。將副檔名改為`bat`批次檔案 ```! REM GC來源與詳細說明 https://aikar.co/2018/07/02/tuning-the-jvm-g1gc-garbage-collector-flags-for-minecraft/ java -Xms?G -Xmx?G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=35 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -Djansi.passthrough=true -jar server.jar --nogui ``` :::warning 1. 將 `-Xms?G` 與 `-Xmx?G` 更改為欲分配的記憶體大小(實際上會略大於),兩者數字填一樣。單位可用`G`或`M` 2. 若設定之記憶體大於12G,請調整以下參數 ``` -XX:G1NewSizePercent=40 -XX:G1MaxNewSizePercent=50 -XX:G1HeapRegionSize=16M -XX:G1ReservePercent=15 -XX:InitiatingHeapOccupancyPercent=20 ``` 3. 若無法執行,可能是環境變數有問題,可指定`java`為需求之版本。例如:`"C:\Program Files\Java\jdk-17.0.2\bin\java" -Xms....` ::: ![image](https://hackmd.io/_uploads/SySjnJEZA.png =500x) 6. 建立一個`eula.txt`檔案,並在內部輸入文字`eula=true`並存檔 ![image](https://hackmd.io/_uploads/SkFphkNWA.png =500x) 7. 執行`start.bat`即可開啟伺服器,本機可以透過輸入IP位址 `0` 來登入。多人連線問題請參考「伺服器連線」 ![image](https://hackmd.io/_uploads/By8ERy4WC.png =550x) --- # 架設模組伺服器 此範例以 1.18.2 - 40.2.0 版本為主 1. 到這個[網站](https://files.minecraftforge.net/net/minecraftforge/forge/)找到欲安裝的版本核心,下載`server.jar`檔案 ![image](https://hackmd.io/_uploads/rJ1MJxEbA.png =500x) 2. 建立一個新空資料夾,並將`forge-1.18.2-40.2.0-installer.jar`安裝器放入 ![image](https://hackmd.io/_uploads/r1v2JeNWC.png =500x) 3. 執行安裝器檔案,並選擇`Install server`,資料夾選擇當前資料夾,並開始安裝(他紅色的不要理他) ![image](https://hackmd.io/_uploads/ryQQWgVbA.png =550x) ![image](https://hackmd.io/_uploads/BypezxEbA.png =550x) 4. 可透過`user_jvm_args.txt`設定伺服器記憶體 ![image](https://hackmd.io/_uploads/S1vfExEW0.png =550x) 5. 建立一個`eula.txt`檔案,並在內部輸入文字`eula=true`並存檔 ![image](https://hackmd.io/_uploads/S11NNgE-R.png =500x) 6. 執行`run.bat`即可開啟伺服器,本機可以透過輸入IP位址 `0` 來登入。多人連線問題請參考「伺服器連線」 ![image](https://hackmd.io/_uploads/rJszrlEbA.png =550x) :::info 較新的版本不需要自行建立`start.bat`,若使用較舊的forge可參考「架設原版伺服器 4.」步驟完成設定 可在`run.sh`或`run.bat`後加上`--nogui`即可不啟動白色GUI視窗 ![image](https://hackmd.io/_uploads/HkcjNgV-A.png) ::: 7. 將模組放進`mods`資料夾裡,並重新啟動伺服器即可完成。 --- # 架設插件伺服器 TODO: ... # 關於客戶端 :::warning 由於新舊版本的設定檔無法相互兼容,客戶端強烈建議使用第三方的啟動器,將各個版本的設定檔案隔開,在後續安裝模組也可以更加便利。 會造成的影響 * 按鍵設定重置 (完整/部分) * 模組資料彼此污染 ::: --- > [name=XinShou] --- ###### tags: `Tutor` `Minecraft` <style> .markdown-body p { font-size: 18px; } </style>