Вне боя
Обзор
Модификация «Вне боя».
Поддерживает почти ВСЕ основные версии, а именно: 1.12.2, 1.16.1-1.16.5, 1.18-1.18.2, 1.20.1, 1.20.6.
Как следует из названия, она добавляет в Minecraft простую, но легко настраиваемую механику состояния «Вне боя».
Простота означает незамысловатую логику и механику:
(T1, T2, T3
— независимые переменные, обозначающие количество игровых тиков Minecraft)
Определяет, не атаковал ли игрок в течение заданного времени
T1
/ не получал ли урон в течение заданного времениT2
.Если игрок не атаковал в течение
T1
и не получал урон в течениеT2
, начинается отсчёт времени «Вне боя».Если игрок атакует или получает урон, соответствующий таймер и таймер «Вне боя» сбрасываются.
Если время «Вне боя» превышает
T3
, игрок считается находящимся вне боя.
3 NBT-тега, обновляемые событиями, служат таймерами для реализации указанной логики.
Дополнительно, таймер обратного отсчёта приостанавливает работу таймера «Вне боя», но не сбрасывает его. Он может использоваться в других боевых механиках.
Например, если в вашем модпаке игрок может получить способности, подобные «Неуязвимости». При их активации игрок может всё ещё находиться в бою, но не получать урон. Чтобы учесть это, можно установить данный таймер на время, равное длительности способностей. Таймер «Вне боя» будет ожидать деактивации способностей и продолжится после неё.
Документация по использованию
Файл конфигурации
Версия 1.12.2: config/out_of_combat.cfg (GitHub)
Версия 1.16.x: config/out_of_combat-common.toml (GitHub)
Версия 1.18+: config/out_of_combat-common.toml (GitHub)
Параметры подробно документированы в комментариях файлов.
Значения по умолчанию велики, что означает неактивность мода до изменения конфигурации.
Имена и структура NBT
Эти 4 NBT-тега сохраняются в постоянных данных игрока: ForgeData/PlayerPersisted
, со следующей структурой:
ForgeData: {
PlayerPersisted: {
out_of_combat: {
noAttackingTime: 0L // Таймер без атак
noAttackedTime: 0L // Таймер без получения урона
stopOutOfCombatTimer: 0L // Таймер обратного отсчёта. Пока не достигнет 0, таймер «Вне боя» не тикает.
outOfCombatTime: 0L // Таймер состояния «Вне боя»
}
}
}
Таким образом, вы можете легко управлять значениями через свои моды, скрипты CraftTweaker/KubeJS или аналоги.
Сложные API или специальные интеграции не требуются.
Планы на будущее
Поддержка других версий Minecraft.