- Загрузчики
- FabricNeoForgeForge
- Скачиваний на Modrinth
- 277
- Подписчиков на Modrinth
- 1
- версий
- 9
- Обновлён
- 23 сентября 202623 сент.
- Опубликован
- в 2026
Коротко о моде
Ставится только на сервер; игрокам ставить не нужно
OneEnoughDamage
Сталкивались ли вы когда-нибудь с жёстко прописанными значениями урона, которые нельзя изменить? Приходилось ли вам мучиться с балансировкой урона от снарядов, клыков, магии, призывов или атак по области, потому что не было удобной точки входа? Знали ли вы, что у Левиафана 11 различных значений урона, а у Игниса — 17? В вашем модпаке сотни мобов, чей урон нужно сбалансировать? С OED настройка урона становится простой. Жёстко прописанный урон из каждого мода сканируется при запуске, и для соответствующих мобов автоматически регистрируются подходящие записи атрибутов. Вы также можете редактировать значения по умолчанию прямо в конфигурационных файлах, включая ванильные атрибуты урона, с перезагрузкой за одну секунду — для авторов модпаков, которым нужно сбалансировать урон любого вида.
Автоматическая регистрация атрибутов
По умолчанию этот мод сканирует жёстко прописанный урон в самом Minecraft и во всех установленных модах при запуске, а затем регистрирует любой урон, который можно привязать к конкретному мобу, как атрибут. Принадлежность отслеживается через статический анализ. Например, клыки, призванные вызывателем, привязываются к вызывателю, и большинство случаев урона от призывов, урона от эффектов и подобных ситуаций также корректно привязываются к каждому возможному мобу-источнику. Пример ID атрибута: oneenoughdamage:fuzs/illagerinvasion/world/entity/monster/invoker_fangs/damage/2/r Правило именования — это точный путь до точки урона, порядок и режим расчёта. r означает фиксированный урон, а m — множительный урон. Множительные атрибуты используются только для динамических случаев, например урона, меняющегося в зависимости от сложности, и по умолчанию равны 1.0. Чем больше у вас модов, тем дольше длится сканирование. Модпак примерно с 200 модами, как ожидается, будет сканироваться около десяти секунд. После первого запуска вы можете включить readCache в конфиге, чтобы последующие запуски читали кэш напрямую и пропускали этап сканирования.
Быстрая настройка урона
После установки этого мода у вас есть два способа настроить урон мобов: редактировать значения урона по умолчанию прямо в конфигурационных файлах или динамически изменять атрибуты через такие инструменты, как KubeJS. Под config/OED/ создаются следующие файлы:
damage_points-cache.json: кэш сканирования, предназначен для машинного чтения. Может быть большим, обычно его можно спокойно игнорировать.damage-point-dictionary.md: словарь привязанных точек урона со встроенными китайско-английскими названиями и уроном, сгруппированным по мобам, для удобного поиска.damage-point-dictionary.toml: редактируемый конфигурационный файл с макетом в виде словаря. Он также включает ванильныйminecraft:generic.attack_damage.damage-point-unattributed.md: точки урона, которые в настоящее время нельзя безопасно привязать к мобу.oneenoughdamage.toml: конфиг поведения мода. Изменение значения атрибута вdamage-point-dictionary.tomlнапрямую меняет значение по умолчанию, используемое при регистрации атрибута, но для вступления в силу игру нужно перезапустить. Это хорошо подходит для простой балансировки, не требующей динамического изменения урона. Если вы всё ещё тестируете, можете включитьdebugModeв конфиге. Тогда изменения значений по умолчанию в файле будут отслеживаться и сразу применяться в игре. Редактируемые записи включают ванильныйminecraft:generic.attack_damage, так что даже если жёстко прописанный урон не является вашей основной заботой, вы всё равно можете быстро настраивать и тестировать урон для многих мобов.damage-point-dictionary.tomlобновляется постепенно. Когда вы добавляете или удаляете моды, существующий конфиг сохраняется в резервной копии, а записи добавляются или удаляются с сохранением ваших изменений значений атрибутов.
Динамическая настройка урона
Если вам нужно настраивать урон динамически, рекомендуется использовать KubeJS для вызова методов, связанных с атрибутами, или использовать команды. Рекомендуемые руководства:
- Руководство по изменению атрибутов в KubeJS
- Руководство по ванильной команде /attribute Следующий пример удваивает урон по области, наносимый Аметистовым крабом из Cataclysm, когда он прячется под землю и выпрыгивает обратно после получения урона. После установки ProbeJS ввод
@attributeможет вызвать автодополнение имён атрибутов.
// server_scripts
EntityEvents.hurt(event => {
if (event.getEntity().is("cataclysm:amethyst_crab")) {
/** @type {Internal.LivingEntity} */
let entity = event.getEntity();
let attr = `oneenoughdamage:com/github/l_ender/cataclysm/entity/animation_monster/boss_monsters/amethyst_crab_entity/area_attack/1/m`;
entity.modifyAttribute(attr, "oneenoughdamage:example", 1, 'addition');
}
});Покрытие
Большинство урона, заданного сырыми числами или простыми комбинациями переменных, можно просканировать. Поскольку у некоторых авторов модов свои подходы к реализации, 100% покрытие невозможно. На данный момент ванильный Minecraft, Cataclysm и Illager Invasion протестированы с очень высоким покрытием. У последних двух модов почти весь урон жёстко прописан. У Cataclysm своя динамическая система урона, поэтому многие зарегистрированные атрибуты используют множительную форму со значением по умолчанию 1.0. Эта часть не может быть гарантированно определена идеально и потребует дальнейшей доработки. Для Cataclysm основной сценарий использования этого мода — балансировка разных значений урона у одного и того же моба. Например, у Левиафана 11 различных значений урона, а у Игниса — 17, тогда как ванильная игра предоставляет лишь единственный minecraft:generic.attack_damage, которого явно недостаточно. На практике всё ещё есть некоторые жёстко прописанные случаи, которые этот мод пока не может решить. Например, моб может призвать сущность-снаряд без поля owner, и этот снаряд может нанести игроку урон с пустым DamageSource. С некоторыми ухищрениями можно отследить, какой тип моба нанёс этот урон. К сожалению, когда одновременно присутствует несколько мобов одного типа, отследить точного моба-цель очень сложно. Для этого есть запасной вариант с поиском поблизости, который работает достаточно хорошо:
inferAttributeHolder: если у урона нет прямого атакующегоLivingEntity, попытаться определить сущность-владельца поблизости.inferAttributeHolderSearchRadius: радиус поиска для определения владельца, измеряется в блоках. Буду рад отзывам, если столкнётесь с другими проблемами покрытия.
Планы
- Продолжать улучшать покрытие
- Добавить внутриигровое визуальное редактирование значений атрибутов по умолчанию
- Портировать на другие версии
Частые вопросы
Как установить One Enough Damage?
Установите Fabric под свою версию Minecraft, скачайте One Enough Damage под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть One Enough Damage?
У One Enough Damage есть сборки для Minecraft 1.20.1–1.20.6, 1.21.1, 26.1.
Нужен ли One Enough Damage на сервере?
Ставится только на сервер; игрокам ставить не нужно