快轉到主要內容

Minecraft基岩版:單人地圖轉成多人伺服器地圖的注意事項

分類   遊戲攻略 Minecraft Self-hosting自架
標籤   Docker Bedrock Dedicated Server Raspberry Pi
🗓️ 民國113年 甲辰年
✍ 切換正體/簡體字
目錄

情況:我有一張玩了很久的Minecraft基岩版地圖,想要將其變成多人地圖,除了方便我在電腦和手機隨時玩以外,也方便多人連線。

那麼最直接的作法就是架BDS伺服器了。BDS是Mojang官方開發的原味生存伺服器軟體,相容Minecraft最新版本。不論是Android、iOS、Windows還是主機版的地圖,都可以用BDS軟體將其變成多人伺服器。

BDS伺服器有點像在自架Realms,自行準備伺服器硬體,再把世界/地圖上傳到私人BDS伺服器,就可以遠端遊玩了,還能設定備份規則自動備份世界。

注意:單人世界轉成多人世界後,伺服器只要開著,世界時間就會一直流逝。

1. 架設BDS伺服器
#

我使用Linux系統+Docker架設,跑在樹莓派上: 以Docker架設Minecraft基岩版BDS伺服器

如果想用Windows系統架設,請參考這篇: Minecraft基岩版BDS伺服器架設教學 & 通訊埠轉發

試跑的時候伺服器會產生一個世界,請將BDS伺服器關閉,之後刪除該世界的目錄。

2. 將單人地圖遷移到BDS伺服器
#

  1. 重要:如果你在玩單人世界的時候,沒有登入Xbox帳號,那麼在轉成伺服器地圖前,請將玩家身上所有東西取出,放到箱子裡面保管,否則身上的物品會消失。(這個有辦法補救,見後文)

  2. 參考 Minecraft世界存放位置,取出地圖目錄

  3. 比方說我的是Android版,利用電腦MTP找到世界目錄,複製到電腦上。一個地圖的目錄應該有這些檔案:

MyWorld
│   ├── db
│   ├── level.dat
│   ├── levelname.txt
│   └── world_icon.jpeg
  1. 地圖的目錄名稱不要有等號結尾,把它放到BDS伺服器的資料目錄。例如我使用scp指令上傳到樹莓派:
scp -r "/home/user/下載/MyWorld" "[email protected]:/home/user/minecraft_bds_server/worlds"
  1. 編輯BDS伺服器的server.properties,如下修改
# 設定遊戲模式
gamemode=survival

# 困難度
difficulty=normal

# 要讀取的世界目錄名稱
level-name=MyWorld

# 預設加入的玩家權限
default-player-permission-level=member
  1. 啟動BDS伺服器,接著就可以在任意Minecraft基岩版的伺服器界面,輸入IP連線了。

  2. 使用docker logs <容器ID>指令,玩家連線進來的時候就會顯示名字和xuid。

  3. 接著強化伺服器安全性,編輯server.properties,啟用白名單機制

white-list=true
  1. 編輯whitelist.json,設定白名單玩家,填入Xbox ID
[
    {
        "ignoresPlayerLimit": false,
        "name": "Ivon Huang",
        "xuid": "114514918"
    },
    {
        "ignoresPlayerLimit": false,
        "name": "Second Player",
        "xuid": "114514918"
    }
]
  1. 如果要賦予特定玩家OP權限,編輯BDS伺服器的permissions.json檔案,將Xbox ID填進去
[
    {
        "permission": "operator",
        "xuid": "114514918"
    }
]
  1. 重新啟動伺服器。

3. 讓伺服器可從外部網路存取
#

在BDS伺服器上 部署內網穿透服務,如此一來不論是用Wifi還是4G網路都能玩Minecraft了。

如果要加強伺服器安全性,僅限有連上「虛擬區域網路」的客戶端能連線的話,那麼編輯server.properties,設定此值:enable-lan-visibility=false關閉區域網路連線。

4. 解決玩家背包物品消失問題
#

Minecraft多人連線是用UUID來認玩家的。不論有無登入Xbox帳號,單人地圖轉成BDS伺服器地圖後,原本玩家的背包東西都會噴掉,寵物也可能會認不得玩家。

根據 Mojang Bugjira,這是已知bug。

Minecraft 1.21之後這個問題似乎解決了?只要遊玩該單人世界的時候有登入Xbox帳號,Minecraft就會保留玩家背包。日後登入伺服器的時候只要使用同一個Xbox帳號,就不用擔心背包不見。


如果你的東西不見,可以考慮用 這個Python程式手動遷移玩家背包資料庫。

  1. 啟動BDS伺服器,嘗試登入遊戲。當你進入世界的時候,背包應該是空的。此時地圖資料已經更新,變為新地圖。

  2. 關閉伺服器

  3. 安裝 bedrock Python套件

  4. 將BDS伺服器的新地圖下載回本機,跟舊地圖的目錄放置在不同的目錄

  5. 執行./compare-worlds.py比較舊地圖與新地圖的差異,應該會印出這個世界曾經遊玩過的玩家UUID

./compare-worlds.py "/home/user/下載/MyWorld" "/home/user/下載/New_MyWorld"
  1. 將ID資訊寫入到新地圖
./convert-local-player.py "/home/user/下載/New_MyWorld" <MSA ID> <self-signed ID> <player server ID>
  1. 將新地圖上傳回BDS伺服器。重新連線,背包應該就回來了。

相關文章

Linux系統如何以Docker架設Minecraft基岩版伺服器 (Bedrock Dedicated Server)
分類   遊戲攻略 Minecraft Self-hosting自架
標籤   Minecraft Bedrock Docker Bedrock Dedicated Server
如何在Ubuntu系統以Docker架設Minecraft Java版伺服器
分類   遊戲攻略 Minecraft Self-hosting自架
標籤   Minecraft Docker
raspberryjammod讓你使用Python撰寫Minecraft程式
分類   遊戲攻略 Minecraft
標籤   Minecraft Java Forge Mod Raspberry Pi

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur或Postimages。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用圖床網站。