- Загрузчики
- NeoForge
- Скачиваний на Modrinth
- 471
- Подписчиков на Modrinth
- 0
- версии
- 3
- Обновлён
- 20 апреля 202620 апр.
- Опубликован
- в 2026
Коротко о моде
Нужен и в игре, и на сервере
Salinity — общая библиотека
Salinity — моя личная библиотека утилит, предоставляющая общие системы атрибутов и вспомогательные инструменты для моих модов, чтобы избежать дублирования кода.
Текущий статус возможностей
Следующие возможности доступны во всех версиях (ниже 26.1):
mitigation— снижение уронаarrow_damage— бонус к урону стрелarrow_speed— множитель скорости стрелattack_range— дальность атаки в ближнем бою
Следующие возможности, связанные с заклинаниями, доступны только в 26.1 и выше (отсутствуют в версиях ниже 26.1):
1. Атрибуты заклинаний
1.1 Урон заклинаний и сила заклинаний
| ID атрибута | Отображаемое имя | По умолчанию | Описание |
|---|---|---|---|
salinity:spell_damage | Урон заклинаний | 0.0 | Прямой бонус к урону заклинаний (изменяемый) |
salinity:spell_power | Сила заклинаний | 0.0 | Вторичный множитель для всех заклинаний (изменяемый) |
1.2 Сопротивление заклинаниям
| ID атрибута | Отображаемое имя | По умолчанию | Описание |
|---|---|---|---|
salinity:spell_resistance | Сопротивление заклинаниям | 0.0 | Снижает входящий урон от заклинаний; чем выше — тем сильнее снижение |
Все атрибуты поддерживают ванильные модификаторы (ADD_VALUE, ADD_MULTIPLIED_BASE, ADD_MULTIPLIED_TOTAL) для гибкой настройки.
2. Процесс расчёта урона
2.1 Общий процесс
Базовый урон → [Бонус к урону заклинаний] → [Бонус к силе заклинаний] → [Снижение сопротивлением заклинаниям] → Итоговый урон2.2 Бонус к урону заклинаний
Примените атрибут spell_damage заклинателя к базовому урону, обрабатывая все модификаторы по порядку:
- Суммируйте все модификаторы
ADD_VALUE→add - Суммируйте все модификаторы
ADD_MULTIPLIED_BASE→mult_base - Суммируйте все модификаторы
ADD_MULTIPLIED_TOTAL→mult_total
Формула:
after_spell_damage = (base_damage + add) × (1 + mult_base) × (1 + mult_total)2.3 Бонус к силе заклинаний
Примените атрибут spell_power заклинателя к результату выше, используя тот же порядок модификаторов:
after_spell_power = (after_spell_damage + add_power) × (1 + mult_base_power) × (1 + mult_total_power)2.4 Снижение сопротивлением заклинаниям
Примените сопротивление заклинаниям цели, также учитывая ванильную прочность брони цели (minecraft:armor_toughness):
final_damage = after_spell_power × 200 / ( resistance × (1 + toughness/10) × √(after_spell_power) + 200 )Где:
resistance: значениеsalinity:spell_resistanceцелиtoughness: значениеminecraft:armor_toughnessцели (0, если отсутствует)√(after_spell_power): квадратный корень из урона после бонуса к силе заклинаний
Примечание: Если сопротивление равно 0, шаг снижения пропускается и
final_damage = after_spell_power.
3. Примеры таблиц снижения сопротивлением заклинаниям
Таблицы ниже предполагают, что spell_damage и spell_power заклинателя равны 0 (то есть без бонуса, after_spell_power = базовый урон), показывая только эффект сопротивления и прочности.
3.1 Прочность = 0
| Базовый урон | Res=5 | Res=10 | Res=20 |
|---|---|---|---|
| 10 | 9.27 | 8.63 | 7.60 |
| 20 | 17.99 | 16.35 | 13.82 |
| 40 | 34.54 | 30.39 | 24.50 |
3.2 Прочность = 3
| Базовый урон | Res=5 | Res=10 | Res=20 |
|---|---|---|---|
| 10 | 9.07 | 8.30 | 7.09 |
| 20 | 17.46 | 15.50 | 12.65 |
| 40 | 33.18 | 28.35 | 21.95 |
3.3 Toughness = 6
| Base Damage | Res=5 | Res=10 | Res=20 |
|---|---|---|---|
| 10 | 8.88 | 7.98 | 6.64 |
| 20 | 16.97 | 14.73 | 11.66 |
| 40 | 31.93 | 26.56 | 19.88 |
3.4 Toughness = 12
| Base Damage | Res=5 | Res=10 | Res=20 |
|---|---|---|---|
| 10 | 8.52 | 7.42 | 5.90 |
| 20 | 16.05 | 13.41 | 10.08 |
| 40 | 29.68 | 23.59 | 16.73 |
Все значения округлены до двух знаков после запятой; реальные значения в игре — числа с плавающей точкой.
4. Тип урона
- ID типа урона:
salinity:spell Особенности:
- Игнорирует броню
- Не подвержен действию ванильных зачарований Protection
- Не вызывает ванильные эффекты, связанные с магическим уроном (например, защиту от зелий)
5. Добавление атрибутов заклинаний предметам (пример API)
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.entity.ai.attributes.AttributeModifier;
ItemStack staff = new ItemStack(ModItems.DOOM_STAFF.get());
// Add +5 spell damage (ADD_VALUE)
SalinityAPI.addModifier(staff, ModAttributes.SPELL_DAMAGE, "staff_damage", 5.0, AttributeModifier.Operation.ADD_VALUE);
// Add +20% spell power (ADD_MULTIPLIED_BASE)
SalinityAPI.addModifier(staff, ModAttributes.SPELL_POWER, "staff_power", 0.2, AttributeModifier.Operation.ADD_MULTIPLIED_BASE);6. Примечания (только особенности заклинаний)
- Квадратный корень в формуле сопротивления обеспечивает слабое снижение для малого урона и значительное снижение для большого урона.
- Если сопротивление заклинаниям цели равно 0, этап снижения полностью пропускается.
spell_damageиspell_powerзаклинателя могут динамически изменяться через снаряжение, эффекты зелий и т. д.
Использование
- Для Trial Catacombs: Salinity — обязательная зависимость. Если используется версия ниже 26.1, атрибуты, связанные с заклинаниями, не будут работать.
- Для других разработчиков: Смело используйте Salinity как зависимость. Вызывайте зарегистрированные атрибуты по мере необходимости. Для использования системы заклинаний убедитесь, что версия ≥ 26.1.
Техническая информация
- Автор: SaltLamp_Jellyfish
- ID мода:
salinity - Поддерживается: NeoForge 1.21.1
- Лицензия: MIT
- Email: Jellyfishlamp0v0@outlook.com
中文介绍
Salinity — 通用模组库
Salinity 是我为个人模组开发的通用库模组,提供跨模组常用的属性系统和工具类,避免重复造轮子。
当前功能状态
以下功能在所有版本中可用(26.1 以下版本):
mitigation— 减伤arrow_damage— 箭矢伤害加成arrow_speed— 箭矢速度倍率attack_range— 近战攻击距离
以下法术相关功能仅 26.1 及以上版本提供(26.1 以下版本不包含):
1. 法术属性
1.1 法术伤害与法术强度
| 属性ID | 显示名称 | 默认值 | 说明 |
|---|---|---|---|
salinity:spell_damage | 法术伤害 | 0.0 | 直接对法术伤害加成(可受修饰符影响) |
salinity:spell_power | 法术强度 | 0.0 | 对所有法术进行二次加成(可受修饰符影响) |
1.2 法术抗性
| 属性ID | 显示名称 | 默认值 | 说明 |
|---|---|---|---|
salinity:spell_resistance | 法术抗性 | 0.0 | 减免所受法术伤害,值越高减伤越强 |
所有属性均支持原版修饰符(ADD_VALUE, ADD_MULTIPLIED_BASE, ADD_MULTIPLIED_TOTAL),可灵活配置。
2. 伤害计算流程
2.1 总流程
原始伤害 → [法术伤害加成] → [法术强度加成] → [法术抗性减伤] → 最终伤害2.2 法术伤害加成
对原始伤害应用施法者的 spell_damage 属性,按以下顺序处理所有修饰符:
- 累加所有
ADD_VALUE修饰符 →add - 累加所有
ADD_MULTIPLIED_BASE修饰符 →mult_base - 累加所有
ADD_MULTIPLIED_TOTAL修饰符 →mult_total
计算公式:
after_spell_damage = (原始伤害 + add) × (1 + mult_base) × (1 + mult_total)2.3 法术强度加成
对上述结果应用施法者的 spell_power 属性,同样按上述顺序处理所有修饰符:
after_spell_power = (after_spell_damage + add_power) × (1 + mult_base_power) × (1 + mult_total_power)
###### 2.4 Снижение урона сопротивлением магии
К усиленному урону применяется сопротивление магии цели, при этом также учитывается ванильная твёрдость брони цели (`minecraft:armor_toughness`), формула выглядит так:
最终伤害 = after_spell_power × 200 / ( 法抗 × (1 + 韧性/10) × √(after_spell_power) + 200 )
Где:
- `法抗`: значение атрибута `salinity:spell_resistance` цели
- `韧性`: значение атрибута `minecraft:armor_toughness` цели (если отсутствует — 0)
- `√(after_spell_power)`: квадратный корень усиленного урона
> **Внимание**: когда сопротивление магии равно 0, шаг снижения урона пропускается, итоговый урон = after_spell_power.
##### 3. Таблица эффекта снижения урона сопротивлением магии (пример)
В таблицах ниже предполагается, что `spell_damage` и `spell_power` заклинателя равны значению по умолчанию 0 (то есть без бонусов, `after_spell_power` = исходный урон), показано только влияние сопротивления и твёрдости на урон.
###### 3.1 Без твёрдости (твёрдость = 0)
| Исходный урон | Сопр. магии=5 | Сопр. магии=10 | Сопр. магии=20 |
| ---- | --------- | --------- | --------- |
| 10 | **9.27** | **8.63** | **7.60** |
| 20 | **17.99** | **16.35** | **13.82** |
| 40 | **34.54** | **30.39** | **24.50** |
###### 3.2 Твёрдость = 3
| Исходный урон | Сопр. магии=5 | Сопр. магии=10 | Сопр. магии=20 |
| ---- | --------- | --------- | --------- |
| 10 | **9.07** | **8.30** | **7.09** |
| 20 | **17.46** | **15.50** | **12.65** |
| 40 | **33.18** | **28.35** | **21.95** |
###### 3.3 Твёрдость = 6
| Исходный урон | Сопр. магии=5 | Сопр. магии=10 | Сопр. магии=20 |
| ---- | --------- | --------- | --------- |
| 10 | **8.88** | **7.98** | **6.64** |
| 20 | **16.97** | **14.73** | **11.66** |
| 40 | **31.93** | **26.56** | **19.88** |
###### 3.4 Твёрдость = 12
| Исходный урон | Сопр. магии=5 | Сопр. магии=10 | Сопр. магии=20 |
| ---- | --------- | --------- | --------- |
| 10 | **8.52** | **7.42** | **5.90** |
| 20 | **16.05** | **13.41** | **10.08** |
| 40 | **29.68** | **23.59** | **16.73** |
> Все значения в таблицах округлены до двух знаков после запятой, в самой игре используются числа с плавающей точкой.
##### 4. Тип урона
- **ID типа урона**: `salinity:spell`
- **Особенности**:
- игнорирует броню
- не подвержен влиянию ванильных зачарований защиты
- не вызывает ванильные эффекты, связанные с магическим уроном (например, защиту от зелий)
##### 5. Добавление магических атрибутов предметам (пример API)
```java
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.entity.ai.attributes.AttributeModifier;
ItemStack staff = new ItemStack(ModItems.DOOM_STAFF.get());
// 添加 +5 法术伤害(基础值)
SalinityAPI.addModifier(staff, ModAttributes.SPELL_DAMAGE, "staff_damage", 5.0, AttributeModifier.Operation.ADD_VALUE);
// 添加 +20% 法术强度(乘法)
SalinityAPI.addModifier(staff, ModAttributes.SPELL_POWER, "staff_power", 0.2, AttributeModifier.Operation.ADD_MULTIPLIED_BASE);6. Примечания по работе магии
- Квадратный корень в формуле снижения урона сопротивлением магии гарантирует, что при низком уроне снижение слабое, а при высоком — заметное.
- Если сопротивление магии цели равно 0, расчёт снижения не производится, сразу применяется усиленный урон.
- Атрибуты
spell_damageиspell_powerзаклинателя могут динамически изменяться через экипировку, эффекты зелий и т. д.
Инструкция по использованию
- Для Trial Catacombs: Salinity — обязательная библиотека-зависимость. Если используется версия ниже v26.1, атрибуты, связанные с магией, не будут работать.
- Для других разработчиков: можно использовать Salinity как зависимость и вызывать зарегистрированные атрибуты по необходимости. Если нужно использовать магическую систему, убедитесь, что версия ≥ 26.1.
Информация о разработке
- Автор: 盐灯水母
- ID мода:
salinity - Поддерживает NeoForge 1.21.1
- Лицензия: MIT
- Email: Jellyfishlamp0v0@outlook.com
Частые вопросы
Как установить salinity library?
Установите NeoForge под свою версию Minecraft, скачайте salinity library под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть salinity library?
У salinity library есть сборки для Minecraft 1.21.1, 26.1.
Нужен ли salinity library на сервере?
Нужен и в игре, и на сервере