文章目錄

架好 Minecraft 伺服器後,我們常會想修改人數上限、難度、種子碼,或伺服器清單上的說明文字 MOTD,這些都寫在伺服器資料夾的 server.properties。但修改後重新啟動時,設定常常沒有變化,原因可能是那個設定已經改成遊戲規則、只在建立新世界時有效,或是值寫錯了。我在 26.3 的伺服器逐一修改常用的設定,發現以前用來關閉 PvP 的 pvp=false 已經不會作用,寫錯的值也不會出現任何錯誤訊息。
測試環境是 Windows 11 與 Java 25,伺服器是官方與 Paper 的 26.3。還沒有伺服器的話,可以先架設 Java 原版伺服器。
設定沒生效的原因
修改設定後卻沒有變化時,可以先對照自己的情況:
| 情況 | 處理方式 |
|---|---|
| 在伺服器執行中修改 | 先輸入 stop 停止伺服器再修改,見「修改設定的步驟」 |
加上 pvp=false 想關閉 PvP |
新版已改成遊戲規則,見「新版移除的設定」 |
修改 level-seed、level-type 或 hardcore 後,世界沒有改變 |
這三項只在建立新世界時有效,見「建立新世界」 |
用 difficulty 或 defaultgamemode 指令改的值,重新啟動後變回原本的值 |
原版伺服器每次啟動都會套用設定檔的值,因此要改在設定檔裡 |
修改 gamemode 後,進入過的玩家模式沒有改變 |
把 force-gamemode 改成 true,玩家每次進入時都會套用 gamemode |
| 設定變回預設值,或是那一行完全沒有作用 | 設定的名稱或值打錯了,見「設定寫錯時」 |
| MOTD 的中文變成亂碼 | 改用 UTF-8 存檔,見「MOTD 的中文與顏色」 |
修改設定的步驟
伺服器只在啟動時讀取 server.properties,reload 指令也不會重新讀取,因此在執行中修改的值,要到下次啟動時才會套用。此外,有人輸入 whitelist on 或 whitelist off 時,伺服器還會用啟動時讀到的值覆寫整個檔案,執行中修改的內容就會消失。修改設定前,要先停止伺服器:
- 在伺服器視窗輸入
stop,等伺服器關閉。 - 用記事本打開伺服器資料夾裡的
server.properties,修改=後面的值。存檔前,先確認記事本右下角的狀態列顯示「UTF-8」。 - 啟動伺服器,看到
Done後確認設定的結果,例如在伺服器視窗輸入difficulty,就會印出目前的難度。
伺服器啟動時會依字母順序重寫整個檔案,檔案開頭以 # 起頭的兩行是標題與存檔時間,不用理會。改壞的設定可以整行刪掉,下次啟動時伺服器會再補上預設值。
常用設定對照
26.3 第一次啟動時產生的預設值與生效方式如下:
| 設定 | 用途 | 預設值 | 常用值 | 生效方式 |
|---|---|---|---|---|
server-port |
連接埠 | 25565 | 同一台電腦開第二台伺服器時改成 25566 | 重新啟動後生效 |
max-players |
人數上限 | 20 | 10 | 重新啟動後生效 |
motd |
伺服器清單上的說明文字 | A Minecraft Server | 見「MOTD 的中文與顏色」 | 重新啟動後生效 |
white-list |
只讓白名單上的玩家進入 | true | false | 重新啟動後生效,或輸入 whitelist off 立即生效 |
online-mode |
驗證正版帳號 | true | 設成 false 時,任何名稱都能進入 | 重新啟動後生效 |
gamemode |
玩家第一次進入時的模式 | survival | creative、adventure | 重新啟動後生效 |
force-gamemode |
玩家每次進入都套用 gamemode |
false | true | 重新啟動後生效 |
difficulty |
難度 | easy | normal、hard | 原版重新啟動後生效,Paper 只對新世界有效 |
hardcore |
極限模式 | false | true | 只對新世界有效,原版會把難度固定為困難 |
level-name |
世界資料夾的名稱 | world | world2 | 重新啟動後生效,資料夾不存在時會建立新世界 |
level-seed |
種子碼 | 空白,代表隨機產生 | 數字或文字 | 只對新世界有效 |
level-type |
地形類型 | minecraft\:normal,一般地形 |
minecraft:flat,超平坦 |
只對新世界有效 |
spawn-protection |
重生點周圍不能破壞的範圍 | 16 | 0 | 重新啟動後生效,但伺服器沒有管理員時不會作用 |
view-distance |
傳給玩家的區塊範圍 | 10 | 8 | 重新啟動後生效 |
pause-when-empty-seconds |
沒有玩家在線幾秒後暫停伺服器 | 原版是 60,Paper 是 -1 | 設成 -1 時不會暫停 | 重新啟動後生效 |
white-list 從 26.3 的 Snapshot 2 起預設為 true,玩家要先加入白名單才能進入。spawn-protection 擋住地圖的機關時,處理方式可以參考把單人世界搬上伺服器。
新版移除的設定
以前常用的幾個設定裡,有四個在 1.21.9 的開發版 25w35a 改成了遊戲規則,1.21.2 的開發版 24w33a 則移除了另外兩個。這些設定寫在 26.3 的檔案裡不會報錯,但伺服器不會讀取,因此要改用下面的指令:
| 舊設定 | 26.3 的做法 |
|---|---|
pvp=false |
輸入 gamerule pvp false |
spawn-monsters=false |
輸入 gamerule spawn_monsters false |
allow-nether=false |
輸入 gamerule allow_entering_nether_using_portals false |
enable-command-block=false |
指令方塊預設會運作,要關閉時輸入 gamerule command_blocks_work false |
spawn-animals、spawn-npcs |
這兩個設定已經移除,也沒有對應的遊戲規則 |
如果世界是用 1.20.1 伺服器搭配 pvp=false、spawn-monsters=false 與 allow-nether=false 建立的,換成 26.3 啟動後,這三個設定雖然還留在檔案裡,但對應的遊戲規則都是 true,因此 PvP、怪物生成與地獄傳送門都會重新開啟:

在伺服器視窗執行上表的指令後,遊戲規則會存在世界裡,重新啟動後也會保留。如果伺服器是 1.21.9 或 1.21.10,規則名稱和 26.3 不同,可以查 gamerule 新舊名稱對照。另外,升級時伺服器會改寫世界資料,因此升級前要先備份世界。
建立新世界
要使用新的種子碼、地形類型或極限模式時,就讓伺服器建立一個新的世界資料夾:
- 在伺服器視窗輸入
stop。 - 修改
level-seed這類設定,並把level-name改成新的名稱,例如world2。原本的world不用刪除,之後把level-name改回world就會回到舊世界。 - 啟動伺服器,在伺服器視窗輸入
seed確認種子碼。
建立新世界時,伺服器視窗會先印出 No existing world data, creating new world。種子碼也可以寫成文字,伺服器會把它換算成數字:
![伺服器視窗印出 No existing world data, creating new world 後啟動完成,輸入 seed 顯示文字種子碼 vervecode 換算成的 Seed: [-1325265281]](/games/minecraft-server-properties/console-new-world-seed.png)
建立超平坦世界時,伺服器視窗會印出一行 No key layers in MapLike[{}] 的 ERROR,但世界仍會正常建立,不用理會。
MOTD 的中文與顏色
伺服器清單上的說明文字寫在 motd,中文可以直接輸入,也可以寫成跳脫碼:
| 寫法 | 範例 | 結果 |
|---|---|---|
| 以 UTF-8 存檔 | motd=偵錯桐人的伺服器 |
正常顯示 |
\u 跳脫碼 |
motd=\u5075\u932f\u6850\u4eba\u7684\u4f3a\u670d\u5668 |
正常顯示,伺服器啟動後會把檔案裡的跳脫碼換成中文字 |
| 以 ANSI 編碼存檔 | motd=偵錯桐人的伺服器 |
伺服器清單顯示為亂碼,伺服器啟動後還會改寫檔案裡的中文,改寫後就無法復原 |
§ 顏色代碼 |
motd=§6偵錯桐人§r的伺服器 |
「偵錯桐人」顯示為金色 |
\u00a7 顏色代碼 |
motd=\u00a7a偵錯桐人\u00a7r的伺服器 |
「偵錯桐人」顯示為綠色 |
& 顏色代碼 |
motd=&a偵錯桐人&r的伺服器 |
&a 與 &r 原樣顯示,沒有顏色 |
\n 換行 |
motd=\u00a76\u00a7l偵錯桐人的伺服器\n\u00a77歡迎加入 |
分成兩行顯示 |
顏色代碼的對照可以參考 Minecraft Wiki 的格式代碼,例如 6 是金色、7 是灰色、l 是粗體,r 則會清除前面的格式。§ 不好輸入時,可以改寫成 \u00a7。
照表格最後一列設定 MOTD,並把 max-players 改成 10 後,遊戲的伺服器清單會顯示如下:

以 ANSI 編碼存檔時,記事本裡的中文看起來仍然正常,只有狀態列會顯示「ANSI」。這時要用「另存新檔」,把對話框下方的「編碼方式」改成「UTF-8」再存檔,並重新輸入被改寫的中文。
設定寫錯時
設定寫錯時,伺服器仍會照常啟動,也不會指出是哪一行寫錯:
| 寫錯的方式 | 例子 | 結果 |
|---|---|---|
| 值打錯或大小寫不同 | difficulty=hardd、difficulty=Hard |
難度變成預設的 easy,檔案裡的值也被改成 easy |
| 值的後面多了空白 | difficulty=hard 後面多一個空白 |
難度變成預設的 easy |
| 數字的欄位寫了文字 | max-players=abc |
人數上限變成預設的 20 |
true 打錯 |
online-mode=ture |
被當成 false,因此伺服器會以離線模式啟動 |
| 設定名稱打錯 | max-player=5 |
這一行會原樣保留,但伺服器不會讀取,人數上限維持原本的值 |
| 同一個設定寫兩次 | 兩行 max-players= 寫了不同的值 |
以後面那一行為準,檔案只會留下這一行 |
| 用了全形等號 | max-players=10 |
整行被當成名稱不明的設定,人數上限維持 20 |
等號前後的空白,以及 true、false 的大小寫都不影響讀取。以前用數字表示模式的 gamemode=1 這類寫法也能讀取,伺服器會把它改寫成 creative。
online-mode 打錯時,伺服器會以離線模式啟動,任何人都能用別人的名稱進入。這時伺服器視窗的離線模式警告是唯一的線索,看到這段警告時,就要先停止伺服器,把 online-mode 改回 true 再重新啟動:

實測紀錄
實測的伺服器是官方 26.3 與 Paper 26.3 的 build 238,舊設定的差異則另外用 1.20.1 與 1.21.11 的官方伺服器比對。Paper 的結果和原版相同,只有難度與極限模式世界的難度不同。伺服器清單的人數上限與 MOTD,是用 Server List Ping 協定讀回伺服器的回應來確認,顏色、兩行的 MOTD 與玩家進入後的模式,則再用 26.3 的遊戲確認。ANSI 的情境是在繁體中文 Windows 上,用記事本的 ANSI 編碼存檔,這個編碼就是 Big5。
總結
修改伺服器設定時,要先停止伺服器再修改,並依設定的生效條件重新啟動、建立新世界或改用遊戲規則。實測官方與 Paper 的 26.3,照表中的生效方式處理後,設定都會生效,兩者只有難度的生效方式不同。


