Механика спавна мобов в ядре UltraMine полностью переписана (однако ванильную механику легко вернуть: spawnEngine: OLD в worlds.yml). В данной статье будут рассмотрены причины изменения механики, подробно описана новая механика и способы ее конфигурирования.
В ванилле действуют общемировые лимиты на количество животных. Из-за того, что животные никогда не деспавнятся и игроки активно размножают их, животные перестают спавниться вскоре после запуска сервера. По тем же причинам имеет место быть многократное превышение лимитов.
В ванилле мобы спавнятся на большом расстоянии от игрока (7 чанков), равномерно распределяясь по этому радиусу. Получается, что игрок наблюдает вокруг себя не так уж много монстров, зато в мире их обитает изрядное количество, и все они создают нагрузку на сервер.
Конфигурация спавна мобов задается в секции mobSpawn
файла worlds.yml. Полное содержимое данной секции:
mobSpawn:
allowAnimals: true
spawnAnimals: true
spawnMonsters: true
allowNPCs: true
spawnEngine: NEW
newEngineSettings:
monsters:
enabled: true
minRadius: 2
maxRadius: 2
minPlayerDistance: 0
performInterval: 20
localCheckRadius: 1
localLimit: 3
nightlyLocalLimit: 5
animals:
enabled: true
minRadius: 5
maxRadius: 6
minPlayerDistance: 0
performInterval: 401
localCheckRadius: 5
localLimit: 3
water:
enabled: true
minRadius: 3
maxRadius: 5
minPlayerDistance: 0
performInterval: 400
localCheckRadius: 4
localLimit: 3
ambient:
enabled: true
minPlayerDistance: 8
performInterval: 1203
localCheckRadius: 4
localLimit: 10
Сначала перечислены ванильные опции: allowAnimals
, spawnAnimals
, spawnMonsters
, allowNPCs
. Опции allowAnimals
и allowNPCs
немного выделяются из остальных, т.к. запрещают животным или NPC в принципе находиться в мире, т.е. удаляют мобов. Опции spawnAnimals
и spawnMonsters
работают как с ванильный спавнилкой, так и UltraMine, отключая спавн животных и монстров соответственно.
Следующая опция, spawnEngine
, позволяет выбрать, какую спавнилку использовать. Если переставить на OLD
(капс обязателен), будет использована ванильная спавнилка.
Далее самое интересное - настройки спавнилки UltraMine. Они делятся на 4 независимые секции, для каждого класса мобов. monsters
- все монстры, animals
- все животные, water
- водные, в ванилле только спруты, ambient
- в ванилле только летучие мыши. Набор опций в каждой секции может немного различаться.
Опции minRadius
и maxRadius
задают минимальный и максимальный радиус (включительно) в чанках от игрока, на котором будут спавниться мобы данного типа. Примеры (P - чанк, в котором находится игрок, O - чанк, в котором не спавнятся мобы, # - чанк, в котором спавнятся мобы):
minRadius: 0 minRadius: 2 minRadius: 2
maxRadius: 1 maxRadius: 2 maxRadius: 3
#######
##### #######
### #OOO# ##OOO##
#P# #OPO# ##OPO##
### #OOO# ##OOO##
##### #######
#######
Если minRadius
установлен в 0, то мобы будут спавниться в т.ч. на том же чанке, где находится игрок. Обратите внимание, мобы в любом случае спавнятся только в активных чанках.
Опция minPlayerDistance
задает минимальное расстояние (в блоках) от игрока, на котором могут спавниться мобы. Имеет смысл, когда minRadius
<= 1, чтобы мобы не спавнились прямо перед игроком.
Опции localLimit
и localCheckRadius
задают локальный лимит на количество мобов. localCheckRadius
- радиус в чанках, на котором производится подсчет количества мобов. Если количество мобов данного типа в данном радиусе превышает число, заданное опцией localLimit
, мобы данного типа не будут спавниться на этом чанке. Для монстров также доступна опция nightlyLocalLimit
, которая задает лимит, действующий в ночное время суток.
Опция performInterval
задает промежуток времени (в тиках) между запусками спавна мобов.
Для мобов типа ambient
действует другая логика - они спавнятся только непосредственно рядом с игроком, когда тот находится в темноте ниже уровня моря, поэтому некоторые опции отсутствуют. Также монстры спавнятся на поверхности гораздо вероятнее чем под землей, а животные и водные спавнятся только на поверхности.