Minecraft BlueMap 3D 網頁地圖:朋友不用進遊戲也能看世界與玩家位置

摘要

BlueMap 是 Minecraft 伺服器的外掛,能把世界算成 3D 地圖,並用內建的網頁伺服器提供給瀏覽器。只要裝上外掛並同意下載 Minecraft 的資源,朋友不用進遊戲,打開網址就能看到世界的地形與線上玩家的位置。

文章目錄

架好 Minecraft 伺服器後,朋友想看看世界長什麼樣子、現在誰在線上時,都要先開遊戲連線。BlueMap 是 Minecraft 伺服器的外掛,能把世界算成可以轉動視角的 3D 地圖,朋友只要打開一個網址,就能看到世界的地形與線上玩家的位置。

本文的測試環境是 Windows 11、Java 25 與 Paper 26.3。如果伺服器還在用 Spigot,可以先把伺服器轉成 Paper。

BlueMap 外掛的安裝

BlueMap 的版本要支援伺服器的 Minecraft 版本,5.29 的 Paper 版標示支援 26.1.1 到 26.3。照下面的步驟安裝,世界與其他外掛都不用動:

  1. 從 GitHub Releases 下載 bluemap-5.29-paper.jar。
  2. 在伺服器視窗輸入 stop 停止伺服器,再把 jar 檔放進 plugins 資料夾,放好後的樣子如下圖。
  3. 照原本的方式啟動伺服器。

檔案總管的 plugins 資料夾,裡面有 bluemap-5.29-paper.jar,旁邊是 BlueMap、spark 與 bStats 資料夾

啟動後,plugins/BlueMap 資料夾會多出設定檔,伺服器視窗也會印出 BlueMap is missing important resources!,代表 BlueMap 還在等我們同意下載資源,網頁地圖也還沒有啟動。BlueMap 啟動時會存一次世界,因此 A manual (plugin-induced) save has been detected 這行警告不用理會。

想移除 BlueMap 時,停止伺服器後刪掉 jar 檔、plugins/BlueMap 與伺服器資料夾裡的 bluemap,世界仍能正常開啟。

下載資源的同意設定

BlueMap 要用 Minecraft Client 裡的方塊模型與材質來畫地圖,這些資源要從 Mojang 的伺服器下載。我們要打開 plugins/BlueMap/core.conf,把 accept-download 改成 true:

1accept-download: true

設定檔的說明寫明,改成 true 代表我們接受 Minecraft 的 EULA、擁有 Minecraft Java 版的授權,並同意 BlueMap 下載這個 Client 檔案。這個檔案不能轉傳給別人。

存檔後在伺服器視窗輸入 bluemap reload,不用重新啟動伺服器。BlueMap 會把約 40 MB 的 Client 檔案下載到伺服器資料夾的 bluemap 裡,看到 WebServer started 與 BlueMap reloaded! 就代表網頁地圖已經啟動,算圖也會自動開始。

網頁地圖的網址

plugins/BlueMap/webserver.conf 的 port 預設是 8100,因此我們在伺服器的電腦上用瀏覽器開啟 http://localhost:8100 就能看到地圖。如果這個連接埠已被其他程式佔用,就改掉 port 的數字,再輸入一次 bluemap reload。朋友要從別台電腦開啟時,網址要換成伺服器的 IP,這個連接埠也要能被連到,官方安裝文件有提到這個前提。

打開網頁後,用滑鼠左鍵拖曳可以移動地圖,滾輪可以縮放,右鍵拖曳可以旋轉或傾斜視角,介面也會跟著瀏覽器的語言顯示正體中文。線上的玩家會顯示成頭像與名稱,位置變動後約 1 秒就會更新,離線後標記會消失。

BlueMap 網頁地圖的 3D 視角,森林與海岸的地形中央顯示玩家 Player1 的頭像與名稱,右上角是座標

BlueMap 只能畫出 Minecraft 已經生成的區塊,因此還沒有人探索過的地方在地圖上是黑色:

BlueMap 網頁地圖從高空俯視,已生成的世界是一塊正方形的陸地與海洋,周圍未生成的區域全部是黑色

算圖的進度與時間

算圖會在背景進行,不用另外下指令。我們可以在伺服器視窗輸入 bluemap 查看進度,主世界算到一半時的輸出如下:

伺服器視窗的 bluemap 輸出,主世界的 progress 是 58.478%,remaining time 是 54 seconds,另外 2 張地圖等待更新

progress 是目前這張地圖的進度,remaining time 是預估的剩餘時間,這個數字在算圖途中會變動,我測試時曾顯示還剩 16 分鐘,實際不到 4 分鐘就算完了。全部算完時,輸出會變成 render-thread is idle 與 3 maps are updated。

算圖時間與佔用空間都跟已生成的範圍有關。主世界、地獄與終界各算成一張地圖,資料存在伺服器資料夾的 bluemap/web/maps 裡:

地圖 已生成的範圍 算圖時間 佔用空間
主世界 1,024 × 1,024 格,4,096 個區塊 約 5~7 分鐘 約 65 MB
地獄 256 × 256 格,256 個區塊 約 30 秒 約 12 MB
終界 256 × 256 格,256 個區塊 約 14 秒 約 2 MB

BlueMap 預設只用一條執行緒算圖。把 core.conf 的 render-thread-count 改成 4 並輸入 bluemap reload 後,同樣的主世界重新算圖約 1.5 分鐘就會完成。官方 FAQ 寫明算圖和伺服器的主執行緒分開進行,我測試時沒有玩家連線,TPS 維持 20。如果算圖時伺服器變卡,可以用 spark 找出延遲的來源。

世界變更後的地圖更新

玩家蓋好建築後,伺服器存檔時 BlueMap 會讀到變更並自動更新地圖,我測試時從放下方塊到地圖更新約 2 到 6 分鐘。想馬上看到時,在伺服器視窗輸入 save-all,再輸入 bluemap update world,約 6 秒內就會更新完成,開著的網頁也會自動換上新的畫面。指令裡的 world 是地圖的名稱,可以輸入 bluemap maps 查詢。

只顯示部分維度

BlueMap 預設替每個維度建立一張地圖,設定檔放在 plugins/BlueMap/maps,例如 world.conf、world_the_nether.conf 與 world_the_end.conf。想隱藏終界時,照下面的步驟操作:

  1. 把 world_the_end.conf 搬到 maps 以外的資料夾。
  2. 在伺服器視窗輸入 bluemap reload。
  3. 輸入 bluemap storages file delete world_the_end,刪掉已算好的地圖資料來釋放空間。

重新整理網頁後,左上角第二個按鈕的「地圖」清單就只剩下主世界與地獄,重新啟動伺服器後也不會變回來。想恢復終界時,把設定檔搬回 maps,輸入 bluemap reload,再輸入 bluemap update world_the_end 重新算圖。

實測紀錄

測試用的是 BlueMap 5.29,記憶體上限為 2 GB,並關閉沒有玩家時的自動暫停。我用 forceload 生成表格裡的範圍,並把 webserver.conf 的連接埠改成 8108、加上 ip: "127.0.0.1",只讓本機連線。主世界算圖時間的兩個數字,分別是第一次算圖與清除地圖後重新算圖的結果。玩家標記是用一個離線模式的測試 Client 連線確認。

總結

裝上 BlueMap 並同意下載 Minecraft 的資源後,伺服器就會自動算出 3D 地圖,朋友用瀏覽器打開網址就能看到世界與線上玩家。實測 1,024 × 1,024 格的主世界約 5 到 7 分鐘算完,地圖資料約佔 65 MB。

接著可以做什麼

上一篇Minecraft Chunky 指令與預先生成:多人跑圖時地圖跟得上玩家Games下一篇Minecraft 伺服器安裝資料包:確認已經載入,沒有作用時從訊息找出原因Games
Ted Liou

Ted Liou

現役軟體工程師,Unity、AI 技術開發經驗分享與諮詢。