Minecraft

出自 Arch Linux 中文维基

Minecraft 是一個關於破壞和放置方塊的遊戲。遊戲一開始玩家的主要目的是搭建各種結構使自己免遭夜晚出沒的怪物的攻擊並生存下來,但隨着遊戲的進行,玩家們可以合作創造出一些不可思議的、富有想像力的東西。

該遊戲有兩個版本,Minecraft Java版和基岩版。Java 版是遊戲的原始版本,自 2009 年開始開發。該版本可以在 Mac、Windows 和 Linux 上遊玩。基岩版原為便攜版,但後來被移植到不同的平台上。它當前支持 Windows 10 和 11、流動裝置、Amazon FireOS 和 FireTV、Android 和 iOS、Xbox One、Playstation 4、Nintendo Switch 和 Samsung Gear VR 設備。基岩版客戶端沒有 Linux 的官方支持,但是基岩版伺服器軟件是可用的。

Java 版客戶端[編輯 | 編輯原始碼]

安裝[編輯 | 編輯原始碼]

Minecraft 客戶端可以通過 minecraft-launcherAUR 包來安裝。它提供了官方遊戲啟動器,一個用於啟動它的腳本和一個特定的 .desktop 文件。這個AUR包已被 Mojang 在官網上推薦。

你也可以使用功能更強大的第三方啟動器,參見 #Minecraft mod 啟動器節。

客戶端或局域網的防火牆配置[編輯 | 編輯原始碼]

大多數 Minecraft 聯機世界都是由專門的 Minecraft 伺服器主持。如果你想要開服,請看下方的伺服器部分。

更簡單的方法是允許其他人加入您當前的 Minecraft 遊戲。你的 Minecraft 客戶端允許其他玩家在你正在進行遊戲加入。你的客戶端會自動將你的遊戲在 4445 端口廣播。它還會監聽其他玩家加入的 TCP 連接。傳入的 TCP 端口會在每次你開始 Minecraft 遊戲隨機產生。如果你沒有防火牆,這是個很有效的方法。但如果你的防火牆阻止傳入的 TCP 連接,那麼連接這個隨機端口會變得很棘手。

總之,要允許您的客戶端主持局域網遊戲,您的[防火牆]需要允許以下端口:

  • 4445 UDP 端口來廣播你的遊戲
  • 隨機的傳入的 TCP 端口

參閱 [1] 以獲取更多信息。

基岩版伺服器[編輯 | 編輯原始碼]

安裝[編輯 | 編輯原始碼]

Bedrock Minecraft 伺服器可以通過 minecraft-bedrock-serverAUR 包安裝。它提供了一個 systemd unit 文件。這個AUR包會創建一個單獨的 minecraft-bedrock 用戶。

啟動伺服器[編輯 | 編輯原始碼]

你可以通過使用 systemd 或直接通過命令行運行它來啟動伺服器。你可以通過使用 systemd startenable minecraft-bedrock-server.service。或者,作為 minecraft-bedrock 用戶在 /opt/minecraft-bedrock-server 目錄下運行下列命令

$ LD_LIBRARY_PATH=. ./bedrock_server

伺服器設置[編輯 | 編輯原始碼]

設置文件 server.properties 包含了伺服器設置和額外的文檔.最重要的是, server-port 用於確定 UDP 端口,該端口會監聽傳入的連接。默認的 IPv4 端口是 19132,IPv6 端口是 19133。 IPv4 的 UDP 端口 43351 和 IPv6 的 UDP 端口 51885 需要被用於驗證。

Java版伺服器[編輯 | 編輯原始碼]

安裝[編輯 | 編輯原始碼]

Java版Minecraft 伺服器可以通過 minecraft-serverAUR 包來安裝。它附帶一個 systemd unit 文件,並包含一個小巧的控制腳本。

另請參閱 #可替代伺服器 以了解其他可替代伺服器。

部署[編輯 | 編輯原始碼]

介紹[編輯 | 編輯原始碼]

在安裝過程中,minecraft 用戶及組被引入。出於安全考慮,我們推薦並創建一個 Minecraft 特殊用戶,通過在一個無特殊權限的用戶下運行 Minecraft,當其他人攻破你的 Minecraft 伺服器時,他們最多只能取得該用戶的權限,從而保證了其他用戶以及伺服器的安全。 不過你需要安全地將你的用戶添加到 minecraft 組,並給予該組 /srv/minecraft (默認) 目錄的寫入權限以允許其修改 Minecraft 伺服器的設置。同時確保所有在 /srv/minecraft 目錄下的文件的所有者為 minecraft 用戶,或者通過其他手段讓該用戶擁有前面所提的目錄下所有文件的讀寫權限。如果伺服器無法訪問某些文件同時沒有足夠的權限將該錯誤消息寫入日誌,伺服器將會出錯。

該軟件包提供了一個 systemd 服務和一個計時器用於自動備份。默認情況下,備份位於伺服器根目錄下的 backup 文件夾。儘管為了保持硬盤空間不被佔用過多,保險起見 10 個最近的備份是必要的 (可以通過修改 KEEP_BACKUPS 來控制備份數量)。相關的 systemd 文件分別為 minecraftd-backup.timerminecraftd-backup.service。我們可以根據自己喜好非常愉快地來 調整,例如:自定義備份時間間隔。

啟動伺服器[編輯 | 編輯原始碼]

要啟動伺服器,你可以通過 systemd 或者直接從命令行。無論哪種方式,伺服器都是通過一個封裝在 minecraft 用戶下發起的 GNU Screen 會話的形式來運行的。通過 systemd ,你可以 start 和 enable 其包含的 minecraftd.service 服務。或者,從命令行啟動:

# minecraftd start

接受 EULA[編輯 | 編輯原始碼]

為了運行我的世界伺服器,你必須接受 EULA 。這只需要在安裝後執行一次。軟件包會在 /srv/minecraft/eula.txt 創建 EULA 文件。你需要編輯這個文件以聲明你同意這份協議來運行伺服器。你需要做的就是修改

eula=false

的值為 true 。在 /srv/minecraft/eula.txt 以下是一份已接受的 EULA 的示例:

#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula).
#Sat Sep 11 11:11:11 PDT 2011
eula=true

服務端世界的防火牆配置[編輯 | 編輯原始碼]

server.properties 中有三個設置,這些設置確定你的伺服器會使用的端口。

server-port 確定監聽傳入的連接的 TCP 端口,默認為 25565

query.port 確定伺服器傳輸信息和廣告的端口 UDP,默認為 25565。 注意因為伺服器和查詢端口分別為 TCP 和 UDP,所以它們共用端口。若要啟用伺服器查詢,你必須修改設置 enable-query=true

如果你選擇允許遠程訪問管理控制台,rcon.port 將用於確定rcon的 TCP 端口,默認為 25575。若要啟用 rcon, 你還需要修改設置 enable-rcon=truercon.password=....

你至少需要允許 server-port 上的傳入連接。允許伺服器查詢和它的 query.port 也是不錯的選擇。另一方面,啟用遠程控制台訪問具有安全風險,你在啟用它前應該再三考慮。

上面的信息適用於官方 Minecraft 伺服器。如果你使用其他伺服器,請參閱它的設置的文檔和細節。

參閱 [2][3] 以獲取更多訊息。

伺服器管理腳本[編輯 | 編輯原始碼]

為了方便的控制伺服器,你或許會用到 minecraftd 提供的一些腳本。它可以執行一些基本的命令,比如 startstoprestart 還可以將會話附加到 console 上。此外,它也可以通過 status 顯示狀態信息,使用 backup 來備份伺服器世界的目錄,通過 restore 來從備份中恢復世界的數據或者在伺服器控制台中運行 command do-something 這條命令。

注意: 關於伺服器看着他 (可以通過 minecraftd console 來訪問),請記住你可以通過 ctrl+b d 來退出任何 GNU Screen 會話。

調整[編輯 | 編輯原始碼]

通過編輯 /etc/conf.d/minecraft 來做一些小的調整 (比如:最大內存,線程數之類的)。

舉個例子,許多高級用戶傾向於啟用 IDLE_SERVER 通過設置其為 true。這會啟用管理腳本,當沒有玩家在線超過 IDLE_IF_TIME (默認 20 分鐘) 後掛起伺服器。當伺服器掛起時, idle_server 會通過來自 nmapncat(1) (或任意的 netcat 實現) 監聽 Minecraft 的端口,並立刻監測到一個接入的連接時立刻啟動伺服器。雖然在掛起後一次加入會有明顯的延遲,但它顯着地降低了 CPU 和內存的使用量,從而使得資源分配更加合理減少系統功耗。

注意: 如果初次運行時啟用了這些選項, /srv/minecraft/eula.txt 文件將不會被創建。你在初次運行時需要禁用這些設置。

可替代伺服器[編輯 | 編輯原始碼]

Spigot ( 區別於 Craftbukkit)[編輯 | 編輯原始碼]

Spigot (也就是我們國內玩家常說的水龍頭服) 是在世界上使用最廣泛的 改裝版 Minecraft 伺服器,因此 AUR 中有一個 spigotAUR 包。這個 spigot 的 PKGBUILD 建立在 minecraft-serverAUR 包之上。這意味着,spigot 伺服器也提供自己的 systemd unit 文件,spigot 腳本和相應的腳本配置文件。二進制文件叫做 spigot,有着與 minecraftd 相同的命令,其配置文件位於 /etc/conf.d/spigot 下。

請務必閱讀 #部署 部分,並且在執行命令時,將 minecraftd 替換為 spigot

它和 Bukkit (也就是我們國內玩家常說的水桶服) 有些故事,而且自 Bukkit 隕落以來越來越受歡迎。

Cuberite[編輯 | 編輯原始碼]

Cuberite 是一個高性能且定製度極高的 Minecraft 伺服器,由 C++ 和 Lua 編寫而成。它有着比 vanilla Minecraft 伺服器更好的性能,不過令人遺憾的是它與最新的 Minecraft 客戶端不完全兼容 (某些功能缺失或無法正常工作)。

Cuberite minecraft 伺服器可以通過 cuberiteAUR 包來安裝,默認情況下還提供了一個在 8080 端口的簡易 web 界面,大多數伺服器操作都可以在其中輕鬆完成。cuberite 的 PKGBUILD 同樣建立在 minecraft-serverAUR 包之上。這意味着 cuberite 伺服器也提供自己的 systemd unit 文件,cuberite 腳本和相應的腳本配置文件。二進制文件叫做 cuberite,有着與 minecraftd 相同的命令,其配置文件位於 /etc/conf.d/cuberite 下。

請務必閱讀 #部署 部分,並且在執行命令時,將 minecraftd 替換為 cuberite

PaperMC[編輯 | 編輯原始碼]

PaperMC 是一個 Minecraft 伺服器, 兼容 Spigot 的優化插件。它可以通過 papermcAUR 包安裝。

請務必閱讀 #部署 部分, 並且在執行命令時,將 minecraftd 替換為 papermc

Forge[編輯 | 編輯原始碼]

Forge 是一個被廣泛使用的 Minecraft Mod API。有下列伺服器的軟件包可用:

請務必閱讀 #部署 部分, 並且在執行命令時,將 minecraftd 替換為 forged (老版本請用 forge-x.x.xd)。

Fabric[編輯 | 編輯原始碼]

Fabric 是一個輕量的,實驗性的 Minecaft Mod 製作工具鏈.伺服器的軟件包包可以通過 fabric-serverAUR 安裝。

請務必閱讀 #部署 部分, 並且在執行命令時,將 minecraftd 替換為 fabricd

Quilt[編輯 | 編輯原始碼]

Quilt 是一個開源的,社區驅動的主要用於 Minecaft 的 Mod 製作工具鏈。伺服器的軟件包可以通過 quilt-serverAUR 安裝。

請務必閱讀 #部署 部分, 並且在執行命令時,將 minecraftd 替換為 quiltd

Quilt 最初由 Fabric 分支而來,意味着它向後兼容大多數 Fabric 模組。

額外說明[編輯 | 編輯原始碼]

  • 有幾個 server wrapper 可用,它們提供從自動備份到並行管理數十個伺服器的一切東西,閱讀 Server Wrappers 以獲得更多信息。然而 AUR 所提供的管理腳本應該能夠滿足你的絕大多數需求。
  • 你也許想要一個 systemd timer,比如 mapper 可以在你的世界周期性地生成地圖。
  • 務必定期備份,比如,使用提供地管理腳本 (參見 #介紹) 或者 rsync

Minecraft mod 啟動器[編輯 | 編輯原始碼]

你可以從許多不同的啟動器啟動 Minecraft,這些啟動器通常包含一系列的 mod 包以提高遊戲的可玩性並添加 mods.

  • ATLauncher — 由社區製作的多個不同的模組包組成的 Minecraft 模組包啟動器。
https://atlauncher.com/ || atlauncherAUR
  • Badlion Client — 適用於所有現代版本的 Minecraft 的 PvP 整合包。
https://client.badlion.net || badlion-clientAUR
  • GDLauncher — 用 Electron/React 編寫的開源的 Minecraft 啟動器。
https://gdevs.io || gdlauncher-binAUR
  • Feed The Beast — 起源於 Minecraft 中的挑戰地圖,由大量科技 mod 組成並逐漸演變為一個 mod 啟動器。
https://www.feed-the-beast.com/ || ftbaAUR, ftba-electronAUR, feedthebeast-classicAUR
  • Lunar Client — 適用於所有現代版本的 Minecraft 的 PvP 整合包。
https://lunarclient.com || lunar-clientAUR
  • MultiMC — 用於管理可分離包關聯的沙盒環境。
https://multimc.org/ || multimc5AUR and multimc-gitAUR
  • PolyMC — 具有 mod 管理等功能的高級用戶啟動器,最初為 MultiMC 的分支。
https://polymc.org/ || polymcAUR,polymc-qt5AUR
  • Prism Launcher — 具有模組管理等功能的高級用戶啟動器。最初由 MultiMC 分支而來,現在是 PolyMC 的分支。
https://prismlauncher.org/ || prismlauncher-gitCNRepo, prismlauncherAUR, prismlauncher-qt5AUR
  • Technic Launcher — 從流行程度排名發掘 mod 的 Modpack 安裝程序。
https://www.technicpack.net/ || minecraft-technic-launcherAUR

其它程序和編輯器[編輯 | 編輯原始碼]

有幾個 程序和編輯器 可以讓你的 Minecraft 之旅更加輕鬆。其中最常見的是地圖生成器。使用其中之一可以加載的 Minecraft 文件並渲染其位 2D 圖像,展現給你一個自上而下的世界地圖。

  • AMIDST — (出色的 Minecraft 接口和數據/結構追蹤) (amidstAUR) 是一個有助於在 Minecraft 世界中尋找建築,生物群系和玩家的程序。它可以繪製世界的生物群落並通過給出一個隨機種子標註哪裏可能是個有意思的地方,或者從現有世界讀取隨機種子 (這種情況下,它可以顯示這個世界的玩家)。該項目有很多分支,其中最引人注目的是 「Amidst Exporter」 (amidstexporterAUR) 它包含一個用於計算 1.8+ 世界海洋紀念碑位置的補丁。
https://github.com/toolbox4minecraft/amidst || amidstAUR
  • Mapcrafter — 是一個用 C++ 編寫的高性能 Minecraft 地圖渲染器,它將世界渲染為具有 3D 等距透視的地圖。你可以在任何瀏覽器中查看這些地圖,因此可以輕鬆地在一台伺服器上部署它們。Mapcrafter 有一個簡單的配置文件格式來指定要渲染的世界,不同的渲染模式,如白天/黑夜/洞穴,也可以從不同角度渲染世界。
http://mapcrafter.org/[失效連結 2022-09-22 ⓘ] || mapcrafter-gitAUR
  • Minutor — 是一個輕量級的 Minecraft 地圖生成器。有一個簡單的基於 GTK+ 的界面,用於查看你的世界。可以使用多種渲染模式,以及自定義着色模式和切割 z-levels 的功能。
http://seancode.com/minutor/ || minutor-gitAUR

故障排除[編輯 | 編輯原始碼]

日誌[編輯 | 編輯原始碼]

Screen 日誌存儲在 /tmp/spigot_spigot_command_dump.txt 文件中。如果 systemctl 無法啟動服務,請檢查screen 日誌.

Journal 日誌存儲在 spigot.service.

Minecraft 客戶端或伺服器無法啟動[編輯 | 編輯原始碼]

這可能是 Java 版本的問題。不同的 Minecraft 版本有不同的 JRE 需求。

Minecraft 版本 最低兼容的 JRE 版本
< 1.17 8
1.17 16
>= 1.18 17

請注意 客戶端/服務端 可以使用更新版本的 Java,例如 jre-openjdk,但 Minecraft 遊戲啟動器(以及模組)可能只能使用 Java 8。 Minecraft 伺服器和實際遊戲都可以與最新版本的 Java 完美搭配,比如 jre-openjdk,但是 Minecraft 遊戲啟動器 (以及所有其它的 mod) 可能只適用於 Java 8。

MinecraftForge 字體損壞[編輯 | 編輯原始碼]

在語言菜單中啟用強制使用 Unicode 字體。

如果你無法閱讀菜單選項:在主菜單中,左下角的按鈕就是設置,左側倒數第二個按鈕是語言選項。強制使用 Unicode 字體 是左側底部的選項。

無法構建 MultiMC[編輯 | 編輯原始碼]

如果你嘗試安裝 multimc5AUR 得到了與下方類似的報錯:

No CMAKE_Java_COMPILER could be found.
Tell CMake where to find the compiler by setting either the environment
variable "JAVA_COMPILER" or the CMake cache entry CMAKE_Java_COMPILER to
the full path to the compiler, or to the compiler name if it is in the
PATH.

這個報錯可能是因為 Java 丟失,可以通過安裝 jdk8-openjdk 修復。 如果錯誤並沒有被修復或者一開始就已經正確安裝了 Java ,可能是由於默認的環境變量使用了錯誤的版本:

$ archlinux-java status
Available Java environments:
  java-13-openjdk (default)
  java-8-openjdk

你可以通過 archlinux-java set <version> 設置默認的 Java 版本。

無法修改 pulseaudio 設置[編輯 | 編輯原始碼]

如果你無法切換音頻輸出設備 (命令 pacmd list-sink-inputs 的輸出中具有 DONT_MOVE 標記)那麼以下 openalsoft 配置可能會有所幫助

~/.alsoftrc
[pulse]
allow-moves=yes

PipeWire 上的音頻卡頓[編輯 | 編輯原始碼]

OpenAL 默認使用 JACK 作為 Pipewire 的 PulseAudio 後端。如果這對你造成了問題,你可以讓 OpenAL 使用 Pulse 作為替代:

~/.alsaftrc
drivers=pulse

如果你不想將所有應用程式的設置都修改,你可以設置這個環境變量 ALSOFT_DRIVERS=pulse

參見[編輯 | 編輯原始碼]