Progressive Mechanics Library: контроль урона и совместимость с модами
Если вы собираете сборку с нестандартным боем, боссами или RPG‑механиками, рано или поздно упираетесь в «тонкую настройку» цифр: криты, волны удара, броня и зачарования должны вести себя предсказуемо и для игрока, и для других модификаций. Библиотека Progressive Mechanics Library (сокращённо PML) как раз об этом: она задаёт единый каркас для расчёта и модификации урона до того, как он попадёт в события Minecraft, и связывает известные особые случаи вроде критического удара и размашистого удара с понятными типами урона.
Новичку достаточно знать главное: это не «контентный» мод с новыми кирками, а техническая основа. Его ставят ради совместимости и предсказуемости боевой математики, особенно когда в сборке есть несколько дополнений, которые хотят менять урон по‑своему.
Критические удары и размашистый удар как отдельные типы урона
По умолчанию PML меняет то, как помечается урон при приземлении критического удара: тип урона становится pml:player_critical. Аналогично для размашистого удара используется тип pml:sweeping_damage. Зачем это нужно? Чтобы другие моды могли без хрупких «угадываний» понять источник и характер попадания: крит или волна по области, и уже поверх этого навешивать свои эффекты, штрафы или бонусы. Для сборщика это означает меньше конфликтов и более читаемые логи отладки, когда что‑то «ломает» урон.
DamageControl: ядро для разработчиков модов
Центральная сущность для авторов дополнений — класс DamageControl. Он даёт структурированный способ изменять и считать урон до его фактического применения к существу. В отличие от разрозненных правок по месту, здесь можно последовательно накладывать несколько модификаторов: плоские бонусы, процентные множители, отдельные ветки для снижения от брони, зачарований и «особых» механик вроде щитов или кастомных защит.
Гибкость понятна по сценарию: один мод добавляет плоский бонус к базе, второй — процент после базы, третий учитывает уникальный сет, четвёртый согласует это с другой библиотекой. Когда всё сведено в одну цепочку расчёта, проще балансировать ваниль+моды и не получать «необъяснимые» скачки цифр.
Как проходит расчёт урона по шагам
Пайплайн начинается с «сырых» базовых значений. Сначала может применяться масштабирование от оружия (часто это снижение или нормализация до дальнейших формул). Далее идут базовые бонусы: плоские и процентные. Потом — дополнительные бонусы, снова плоские и процентные, уже после базовых вычислений. Затем система считает снижения: броня, зачарования, специальные редукции. Итог фиксируется и далее доступен в логике вокруг LivingDamageEvent, где другие моды могут доукрашивать или интерпретировать результат.
Такой порядок важен для баланса: если перепутать этапы, маленький плоский бонус неожиданно превращается в огромный после процентов, или наоборот — зачарование гасит не то, что задумывал автор. PML как раз пытается держать эту математику в предсказуемых рамках.
Модификаторы на увеличение и уменьшение урона
Для роста урона в типичной схеме фигурируют: baseFlatBonus — плоский бонус до процентных множителей; basePercentBonus — процентная прибавка на ранней стадии; flatBonus — плоский бонус после базовых бонусов; percentBonus — процентная прибавка после базовых расчётов. Для снижения — weapondamagecontrol (масштабирование урона оружием до остальных шагов), отдельно учитываемые armorReduction и enchReduction, а также specialReduction, которое вычитает уже близко к финалу и поэтому требует аккуратности: при завышенных значениях оно может «обнулить» урон целиком.
Для ориентира разработчики опираются на originalDamage — итог после всех вычислений, готовый к событию урона, и originalAbsorption — значение поглощения до правок. Это удобно, когда нужно сравнить «как было» и «как стало», или вывести отладочную панель.
Ключевые методы и зачем они сборщику
- getArmorReduction() — показывает, сколько урона сняла броня по задуманной моделью; значение задаётся через
setArmorReduction. Полезно для UI, аналитики и модов, которые добавляют нестандартную броню. - getEnchantmentReduction() — отражает вклад защитных зачарований или кастомных аналогов Protection. Это помогает не только балансировать эффекты, но и честно показывать игроку, что именно «съело» урон.
- getSpecialReduction() — самый сильный рычаг конца цепочки; с ним стоит обращаться осторожно, иначе защита станет «непробиваемой» без явной видимости причин.
Когда речь заходит о подборе технических библиотек для боевой сборки, многие игроки хотят минимизировать ручные шаги: если вы тестируете несколько вариантов зависимостей, удобно иметь единое место, откуда ставить сборку и дополнения. В таких случаях этот мод можно легко установить через лаунчер foxygame.net — удобный, гибкий и современный лаунчер для Minecraft, где можно скачать моды прямо из меню, без лишних переходов между страницами и распаковок.
Совместимость с First Aid и урон по частям тела
Отдельная сильная сторона — связка с модом First Aid, который меняет модель здоровья на травмы по частям тела. PML добавляет способ согласовать расчёты DamageControl с тем, какая зона пострадала. Метод getDamagedBodyPart(Player player) во время LivingDamageEvent (и при наличии First Aid) возвращает соответствующий EquipmentSlot для повреждённой области; если игрок не сопоставлен, придёт null. Это закрывает типичную боль сборок «бой + медицина»: ванильный «один ползунок HP» уже не отражает реальность, и библиотека помогает не ломать контекст попадания.
Кому это нужно в первую очередь
Обычному игроку PML имеет смысл ставить как зависимость к модам, которые прямо на неё ссылаются. Сборщику — как стабилизатор боевой математики, если в списке есть кастомное оружие, сложные защиты и несколько систем, вмешивающихся в урон. Разработчику — как готовый каркас регистрации бонусов и редукций с понятными этапами и методами интроспекции.
Вывод
Progressive Mechanics Library — это не «ещё один бойцовский мод», а фундамент: она приводит к общему знаменателю криты и размашистые удары, структурирует расчёт DamageControl и помогает стыковаться с First Aid, когда важен не только размер урона, но и локализация повреждения. Если ваша цель — предсказуемый PvE/PvP, честные цифры в подсказках и меньше тайных взаимных подавлений между модификациями, такая библиотека становится скрытым, но очень заметным качеством всей сборки.