建立生成點
什麼是自訂生成點?
自訂生成點供事件與全域增援使用,用來設定某個事件應如何、在何處以及何時為該事件生成 Boss。
事件與全域增援透過寫下生成點的檔名來指定它們所使用的生成點。
建立自訂生成點
自訂生成點放在 customspawns 資料夾中。一個自訂生成點可同時被多個事件使用,因此你不必為每個事件各建立一個。
以下是一個自訂生成點範例:
isEnabled: true
validWorldEnvironments:
- NORMAL
- CUSTOM
bypassWorldGuard: false
isSurfaceSpawn: true
建立「任意位置」生成點
若要製作一個可在任何地方發生的生成點,你的設定應類似於以下內容:
isEnabled: true
canSpawnInLight: true
此設定允許怪物在任何世界、任何時間、任何月相下的任何位置生成。
如果你有興趣建立更客製化的生成點,請繼續閱讀下方內容。
數值
isEnabled
設定生成點是否啟用。
| Key | Values | Default |
|---|---|---|
isEnabled | 布林值 | true |
範例
isEnabled: true
lowestYLevel
設定所使用的最低 Y 軸高度(地圖高度)。請注意,預設值 0 會讓地下生成永遠不會低於海平面——若你想要在深層洞窟中生成,請把它設為負值,例如 -64。
| Key | Values | Default |
|---|---|---|
lowestYLevel | 整數 | 0 |
範例
lowestYLevel: 0
highestYLevel
設定所使用的最高 Y 軸高度(地圖高度)。
| Key | Values | Default |
|---|---|---|
highestYLevel | 整數 | 320 |
範例
highestYLevel: 320
validWorlds
設定自訂生成點可發生的世界列表。此設定可以省略,以允許你所有的世界都有效。
| Key | Values | Default |
|---|---|---|
validWorlds | 字串列表 | 無 |
範例
validWorlds:
- WORLD
- FUN_LAND
如果你想讓所有世界都有效,你可以直接不使用此設定,或將它寫成這樣:
validWorlds: []
validWorldEnvironments
設定自訂生成點可發生的有效世界環境列表。此設定可以省略,以允許所有環境都有效。
| Key | Values | Default |
|---|---|---|
validWorldEnvironments | 環境列表 | 無 |
範例
validWorldEnvironments:
- NORMAL
- NETHER
如果你想讓所有環境都有效,你可以直接不使用此設定,或將它寫成這樣:
validWorldEnvironments: []
validBiomesV2
原意是設定自訂生成點可發生的有效生態域列表。
此設定在較舊版本的 EM 中曾被稱為 validBiomes。
此設定目前沒有任何作用。 EliteMobs 會把該鍵寫進你的生成點檔案,但從不會讀回它,因此你放進去的內容都會被忽略,該生成點的行為就如同沒有設定任何生態域限制一樣。
請不要依賴它把 Boss 限制在特定生態域內。請改用 validWorlds 或 validWorldEnvironments,或以 isSurfaceSpawn / isUndergroundSpawn 與 Y 軸高度設定來限制生成。
| Key | Values | Default |
|---|---|---|
validBiomesV2 | 生態域列表 | 無 |
earliestTime
設定自訂生成點可發生的最早遊戲內時間。與其他設定不同,earliestTime、latestTime 與 moonPhase 是在 Boss 即將被放置的當下才檢查,而非在搜尋位置的過程中檢查,因此已經找到位置的生成點只會等到時間與月相條件被滿足為止。
| Key | Values | Default |
|---|---|---|
earliestTime | 長整數 | 0 |
範例
earliestTime: 0
latestTime
設定自訂生成點可發生的最晚遊戲內時間。
| Key | Values | Default |
|---|---|---|
latestTime | 長整數 | 24000 |
範例
latestTime: 24000
moonPhase
設定自訂生成點發生所需的月相。
| Key | Values | Default |
|---|---|---|
moonPhase | 特殊 [1] | 無 |
範例
moonPhase: FULL_MOON
特殊 [1]
展開表格
| 月相 | 預覽 |
|---|---|
NEW_MOON | 🌑 |
WAXING_CRESCENT | 🌒 |
FIRST_QUARTER | 🌓 |
WAXING_GIBBOUS | 🌔 |
FULL_MOON | 🌕 |
WANING_GIBBOUS | 🌖 |
WANING_CRESCENT | 🌘 |
LAST_QUARTER | 🌗 |
bypassWorldGuard
原意是讓自訂生成點繞過如 WorldGuard 之類的保護系統。
此設定目前沒有任何作用。 EliteMobs 會從你的生成點檔案讀出該鍵,但從不會依它採取行動,因此無論你設定什麼,WorldGuard 旗標一律會被檢查。若要讓生成發生在受保護的區域內,請改為在該區域上設定相關的 WorldGuard 旗標。
| Key | Values | Default |
|---|---|---|
bypassWorldGuard | 布林值 | false |
canSpawnInLight
指定自訂生成點是否可發生在受光源照亮的方塊上。設定為 false 時,僅在亮度等級 8 或以下生成。設定為 true 時,可在任何亮度等級生成。
| Key | Values | Default |
|---|---|---|
canSpawnInLight | 布林值 | false |
範例
canSpawnInLight: false
isSurfaceSpawn
設定自訂生成點是否只能發生在世界的地表。
| Key | Values | Default |
|---|---|---|
isSurfaceSpawn | 布林值 | false |
範例
isSurfaceSpawn: false
isUndergroundSpawn
設定自訂生成點是否只能發生在地下。
| Key | Values | Default |
|---|---|---|
isUndergroundSpawn | 布林值 | false |
範例
isUndergroundSpawn: false
生成位置是如何被挑選的
EliteMobs 不會掃描世界來尋找地點。它會隨機挑選一位在線玩家,並以他們為基準偏移:
- 從符合此生成點條件的玩家中隨機挑選一位。若玩家所在世界不在
ValidWorlds.yml中、玩家位於競技場或副本實例內、玩家所在世界關閉了怪物生成,或該生成點的validWorlds/validWorldEnvironments排除了他們的世界,該玩家就會被略過。定時事件還會額外略過位於 EliteMobs 副本世界中的玩家。 - 在該玩家的 X 與 Z 軸上,於 24 到 128 格之間、任意方向挑選一個候選地點。
- Y 軸高度會依
isSurfaceSpawn、isUndergroundSpawn決定;若兩者皆未設定,則向上搜尋第一個下方為固體地面、上方有兩格空氣的方塊。 - 接著該候選地點會通過下列各項驗證。
最多會嘗試 100 個候選地點,每 tick 4 個。若全都不成立,EliteMobs 會等待一分鐘後再試,因此在繁忙或保護區域密集的伺服器上,事件可能要過一陣子才會真正出現。
生成驗證行為
當 EliteMobs 嘗試使用自訂生成點設定來生成 Boss 時,除了已設定的欄位外,還會執行幾項自動驗證:
- 玩家鄰近度:Boss 不會在任何玩家的 24 格範圍內生成
- 地獄天花板:在地獄維度中,Y=127 以上的生成會被阻擋
- 方塊安全性:確保生成處有堅實的地面以及上方的空氣空間
- Y 軸高度:最終位置必須落在
lowestYLevel與highestYLevel之間 - 遊戲規則:遵守該世界的怪物生成遊戲規則(Minecraft 1.21.11 及更新版本為
spawnMobs,之前為doMobSpawning) - WorldGuard 旗標:檢查
elitemobs-events、elitemob-spawning以及 WorldGuard 自身的mob-spawning旗標 - 和平旗幟:若
PeaceBanner.yml中啟用了suppressEvents(預設為啟用),受和平旗幟保護的區域會被略過 - 最終測試生成:就在 Boss 出現之前,EliteMobs 會在該位置生成並立即移除一隻普通的原版殭屍。若有其他保護外掛擋下了那隻殭屍,該位置會被捨棄並重新開始搜尋
這些驗證會自動進行,且無法透過設定停用。
