建立生成點
什麼是自訂生成點?
自訂生成點供事件與全域增援使用,用來設定某個事件應如何、在何處以及何時為該事件生成 Boss。
事件與全域增援透過寫下生成點的檔名來指定它們所使用的生成點。
建立自訂生成點
自訂生成點放在 customspawns 資料夾中。一個自訂生成點可同時被多個事件使用,因此你不必為每個事件各建立一個。
以下是一個自訂生成點範例:
isEnabled: true
validWorldEnvironments:
- NORMAL
- CUSTOM
bypassWorldGuard: false
isSurfaceSpawn: true
建立「任意位置」生成點
若要製作一個可在任何地方發生的生成點,你的設定應類似於以下內容:
isEnabled: true
canSpawnInLight: true
此設定取消亮度限制,不額外加入世界、時間或月相篩選。啟用世界清單、預設 Y 範圍、附近符合條件的玩家、已載入區塊、保護旗標及下方的位置檢查仍然適用。
如果你有興趣建立更客製化的生成點,請繼續閱讀下方內容。
數值
isEnabled
設定生成點是否啟用。
| 鍵 | 值 | 預設值 |
|---|---|---|
isEnabled | 布林值 | true |
範例
isEnabled: true
lowestYLevel
設定最低 Y 座標。預設值 0 排除 Y 為負數的洞窟;使用 -64 等負值可讓地下搜尋進入更深的洞窟。這不會改變初始隨機 Y 範圍或向上搜尋的內建高度上限。
| 鍵 | 值 | 預設值 |
|---|---|---|
lowestYLevel | 整數 | 0 |
範例
lowestYLevel: 0
highestYLevel
設定所使用的最高 Y 軸高度(地圖高度)。
| 鍵 | 值 | 預設值 |
|---|---|---|
highestYLevel | 整數 | 320 |
範例
highestYLevel: 320
validWorlds
篩選一般玩家選擇流程中的世界,定時事件也使用此流程。省略後不加入自己的世界篩選,但 ValidWorlds.yml 和其他資格檢查仍然適用。全域增援直接選擇召喚者世界中的玩家,不使用此篩選。
| 鍵 | 值 | 預設值 |
|---|---|---|
validWorlds | 字串列表 | 無 |
範例
validWorlds:
- WORLD
- FUN_LAND
如果你想讓所有世界都有效,你可以直接不使用此設定,或將它寫成這樣:
validWorlds: []
validWorldEnvironments
篩選一般玩家選擇流程中的世界環境。省略後不額外限制環境。全域增援直接選擇召喚者世界中的玩家,不使用此篩選。
| 鍵 | 值 | 預設值 |
|---|---|---|
validWorldEnvironments | 環境列表 | 無 |
範例
validWorldEnvironments:
- NORMAL
- NETHER
如果你想讓所有環境都有效,你可以直接不使用此設定,或將它寫成這樣:
validWorldEnvironments: []
validBiomesV2
設定自訂生成點可發生的生態域。省略此設定或使用空清單,即不加入生態域限制。
此設定在較舊版本的 EM 中曾被稱為 validBiomes。
每個項目都是一個生態域鍵。沒有命名空間的名稱,例如 plains 或 DEEP_OCEAN,會被讀作 minecraft:<name>,且不區分大小寫。若任何項目不是已註冊的生態域,EliteMobs 會記錄警告並停用整個生成點檔案,使用它的事件與全域增援因此無法生成。
生態域是在隨機取樣的候選點讀取的,此時 EliteMobs 尚未決定最終的 Y 座標。請參閱生成位置是如何被挑選的。
| 鍵 | 值 | 預設值 |
|---|---|---|
validBiomesV2 | 生態域列表 | 無 |
範例
validBiomesV2:
- minecraft:plains
- desert
earliestTime
設定允許生成的最早遊戲時間。時間範圍包含兩個端點,不能跨越午夜:若 earliestTime 大於 latestTime,生成會一直遭到阻止。
找到位置後,EliteMobs 每 tick 檢查 earliestTime、latestTime 和 moonPhase,在該位置等待條件符合。等待後不會重新檢查玩家距離、亮度、區塊載入狀態或 WorldGuard。放置 Boss 前仍會執行最終殭屍測試和和平旗幟檢查。
| 鍵 | 值 | 預設值 |
|---|---|---|
earliestTime | 長整數 | 0 |
範例
earliestTime: 0
latestTime
設定允許生成的最晚遊戲時間,包含該時刻。請保持大於或等於 earliestTime。
| 鍵 | 值 | 預設值 |
|---|---|---|
latestTime | 長整數 | 24000 |
範例
latestTime: 24000
moonPhase
設定自訂生成點發生所需的月相。
| 鍵 | 值 | 預設值 |
|---|---|---|
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 旗標。
| 鍵 | 值 | 預設值 |
|---|---|---|
bypassWorldGuard | 布林值 | false |
canSpawnInLight
控制位置選擇時的亮度檢查。設為 false 時,方塊的綜合亮度等級必須不超過 8,包括天空光。設為 true 則略過此檢查。
| 鍵 | 值 | 預設值 |
|---|---|---|
canSpawnInLight | 布林值 | false |
範例
canSpawnInLight: false
isSurfaceSpawn
設定自訂生成點是否只能發生在世界的地表。
| 鍵 | 值 | 預設值 |
|---|---|---|
isSurfaceSpawn | 布林值 | false |
範例
isSurfaceSpawn: false
isUndergroundSpawn
設定自訂生成點是否只能發生在地下。
| 鍵 | 值 | 預設值 |
|---|---|---|
isUndergroundSpawn | 布林值 | false |
範例
isUndergroundSpawn: false
生成位置是如何被挑選的
EliteMobs 不會掃描世界來尋找地點。它會隨機挑選一位在線玩家,並以他們為基準偏移:
- 隨機選擇符合條件的玩家。如果 EliteMobs 資料未載入、世界不在
ValidWorlds.yml中、位於副本、競技場或職業試煉的實例區域內、世界禁止怪物生成,或遭validWorlds/validWorldEnvironments排除,就略過該玩家。定時事件還會排除 EliteMobs 副本世界內的玩家。此選擇不會依遊戲模式排除玩家。 - X 和 Z 各取 24 到 127 格偏移量,正負方向分別隨機選擇。未載入區塊中的候選位置會遭到拒絕;搜尋不會載入區塊。
- Y 由
isSurfaceSpawn或isUndergroundSpawn決定。兩者都未啟用時,向上尋找不可穿過的方塊上方連續兩格空氣的位置。 - 接著該候選地點會通過下列各項驗證。
全域增援使用召喚者世界中的所有玩家,取代步驟 1 的篩選清單。因此會略過該步驟的資料載入、世界、環境、實例和怪物生成遊戲規則檢查。候選位置仍須通過生態域、高度、距離、亮度和 WorldGuard 檢查。
最多嘗試 100 個候選位置,每 tick 一個。全部失敗後等待一分鐘再試。初始 Y 在 0 到 255 之間。一般向上搜尋從該取樣值開始,在 highestYLevel 或世界建築高度上限下方兩格處停止,以較低者為準。地下向下搜尋即使設定了更低的 lowestYLevel,也會在 Y=-63 停止。地表和地下模式各有自己的搜尋流程,同時啟用時地表優先。
生成驗證行為
EliteMobs 在搜尋期間檢查候選位置。時間和月相允許生成後,才執行最終殭屍測試和和平旗幟檢查:
- 玩家距離:拒絕與任何玩家的三維距離小於 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 會在該位置生成並立即移除一隻普通的原版殭屍。若有其他保護外掛擋下了那隻殭屍,該位置會被捨棄並重新開始搜尋
這些檢查自動執行。亮度和和平旗幟有上述設定開關;bypassWorldGuard 不會關閉 WorldGuard 檢查。
