Pondus Inventory [Sable]
Мод позволяет добавить расчёт предметов в хранилищах на кораблях в физические расчёты Sable.
- Загрузчики
- NeoForge
- Скачиваний на Modrinth
- 3 тыс.
- Подписчиков на Modrinth
- 21
- версий
- 15
- Обновлён
- 4 июля 20264 июл.
- Опубликован
- в 2026
Коротко о моде
Нужен и в игре, и на сервере
Pondus Inventory FI
Аддон для Sable, который заставляет каждый блок, предмет и жидкость тянуть свою лямку — буквально.
⚠️ Предупреждаю: мод всё ещё в активной разработке. Чтобы он работал с другими модами, придётся вручную править настройки. Вы предупреждены!
ℹ️ Если хотите помочь с заготовками весов для предметов, блоков и жидкостей из разных модов — напишите об этом в канале ⌬・synthesis-of-ideas. Все, чьи конфиги попадут в список, будут указаны на странице мода и в его описании.
Что всё это значит?
Pondus Inventory FI — компаньон-мод для физического движка Sable. Он предоставляет невероятно детальную систему определения того, сколько на самом деле весят блоки, предметы и жидкости.
Вы можете менять массу блока, предмета или жидкости на лету через настройки или игровые команды. Мод также заглядывает внутрь сундуков, бочек, резервуаров для жидкостей и любых других контейнеров и добавляет вес тому, что их держит — так что ваш дирижабль внезапно становится куда тяжелее, когда трюм забит нефтью, а переносной бак с водой перевешивает чашу весов, когда заполнен.
Идеально для построек с TerraFirmaCraft, Create, Sable или чем угодно ещё, где важны реалистичная масса, баланс и динамика жидкостей.
Что он умеет?
⚖️ Крутите массу блоков и жидкостей как хотите
Задайте собственный базовый вес почти для любого блока или жидкости через конфиг или команду /pondus mass. Можно даже нацелиться на целые группы по тегам вроде #minecraft:planks, #tfc:ores или #forge:water. Конфиг поддерживает математические выражения — пишите прямо в JSON-файле что-то вроде "2.5 * stack_size".
📦 Считает вес всего, что лежит в контейнерах
Любой контейнер (сундук, бочка, движущаяся конструкция из Create, резервуар для жидкости и т.д.) автоматически прибавляет суммарный вес всех хранящихся внутри предметов и жидкостей. Можно подкрутить inventory_multiplier для баланса (скажем, учитывается только 80% содержимого) и решить, включать ли в расчёт собственную массу блока-контейнера.
💧 Расчёт массы жидкостей
Pondus теперь поддерживает жидкости через capability Fluid Handler из NeoForge. Задайте массу на ведро для любой жидкости, и мод автоматически посчитает вес исходя из фактического объёма в милливедрах (mB). Идеально для реалистичных водонапорных башен, топливных баков, резервуаров с лавой или химических производств.
🌍 Глобальные модификаторы массы
Нужно сделать весь мир на 20% тяжелее, не редактируя сотни отдельных записей? Используйте global.json! В этом файле три множителя — block_mass_modifier, item_mass_modifier и fluid_mass_modifier — которые применяются к каждому блоку, предмету и жидкости в игре. Идеально для тонкой настройки общего физического баланса модпака одним изменением числа.
🗂️ Хранение конфигов по неймспейсам
Файлы конфигов теперь organised по модам внутри config/pondus_inventory_fi/. Каждый мод (например, minecraft, create, tfc) получает свою подпапку, а внутри неё вы кладёте стандартные blocks.json, items.json и fluids.json. Преимущества:
- Больше никаких конфликтов ID между модами.
- Проще управлять, делиться или версионировать конфиги каждого мода отдельно.
- Мод автоматически переносит старые плоские конфиги (если они есть) в новую структуру и сохраняет их резервные копии в
_migrated_backup.
Пример структуры папок:
config/pondus_inventory_fi/
├── global.json # глобальные множители для всех блоков/предметов/жидкостей
├── minecraft/
│ ├── blocks.json
│ ├── items.json
│ └── fluids.json
├── tfc/
│ ├── blocks.json
│ ├── items.json
│ └── fluids.json
├── create/
│ ├── blocks.json
│ └── items.json
└── _migrated_backup/ # создаётся автоматически, если были старые конфиги
├── blocks.json
├── items.json
└── fluids.json
### ⚙️ Конфиги, которые действительно имеют смысл
Каждый JSON-файл использует чистый и простой формат. Выражения вроде `"base_mass": "2.5 * stack_size"` или `"mass_per_bucket": "0.8 + density_factor"` вполне допустимы. А ещё всё можно перезагрузить на лету командой `/pondus reload` — перезапуск сервера не нужен.
### 🚀 **Помощник импорта при первом запуске**
Когда вы впервые запустите игру после установки Pondus, появится экран с вопросом, хотите ли вы импортировать массы из данных внешнего физического движка. Это избавит вас от ручного ввода масс для сотен блоков и предметов. Если пропустите — всегда сможете выполнить `/pondus import_external` позже (требуются права OP).
### 📥 **Автозаполнение отсутствующих записей**
Команда `/pondus populate` просканирует все зарегистрированные блоки, предметы и жидкости и добавит недостающие в конфиги со стандартными массами (0.5 для блоков, 0.01 для предметов, 1.0 для жидкостей за ведро). Существующие записи не трогаются, так что запускать её можно в любой момент. Идеально, чтобы быстро создать базу масс для нового модпака или после добавления кучи новых модов.
---
## Настройка
### Требования
Нужен **Sable**. И всё.
*(Поддержка жидкостей требует модов/блоков, реализующих capability `IFluidHandler` из NeoForge)*
### Конфиг-файлы
Все конфиги лежат в `config/pondus_inventory_fi/<mod_namespace>/`.
#### `global.json` – глобальные множители массы. Пример:
{ "block_mass_modifier": 1.0, "item_mass_modifier": 1.0, "fluid_mass_modifier": 1.0 }
Эти значения умножают итоговую рассчитанную массу **всех** блоков, предметов и жидкостей соответственно. Меняете одно число — масштабируете всю физическую систему вверх или вниз.
#### `blocks.json` – задаёт правила для блоков. Пример:
{ "minecraft:chest": { "block_id": "minecraft:chest", "base_mass": "2.5", "inventory_multiplier": 0.8, "include_container_mass": true }, "tfc:sand/red": { "block_id": "tfc:sand/red", "base_mass": "0.1", "inventory_multiplier": 1.0, "include_container_mass": false }, "#minecraft:planks": { "block_id": "#minecraft:planks", "base_mass": "0.5", "inventory_multiplier": 1.0, "include_container_mass": false } }
#### `items.json` – веса предметов. Пример:
{ "minecraft:iron_ingot": { "item_id": "minecraft:iron_ingot", "mass": "0.5", "per_stack": true }, "tfc:metal/ingot/cast_iron": { "item_id": "tfc:metal/ingot/cast_iron", "mass": "1.2", "per_stack": true } }
#### `fluids.json` – веса жидкостей. Пример:
{ "minecraft:water": { "fluid_id": "minecraft:water", "mass_per_bucket": "1.0" }, "minecraft:lava": { "fluid_id": "minecraft:lava", "mass_per_bucket": "3.5" }, "tfc:olive_oil": { "fluid_id": "tfc:olive_oil", "mass_per_bucket": "0.92" }, "#forge:crude_oil": { "fluid_id": "#forge:crude_oil", "mass_per_bucket": "0.85" } }
#### Кратко о параметрах:
| Параметр | Описание |
| --- | --- |
| `base_mass` / `mass` | Число или выражение (`"2.5"`, `"0.5 * stack_size"`, `"1.0 + nbt_power"`). |
| `mass_per_bucket` | Масса в кг для 1000 mB (1 ведро). Поддерживает выражения. |
| `per_stack` | Если `true`, масса умножается на количество предметов в стаке. |
| `inventory_multiplier` | Множитель для общего веса содержимого контейнера (например, `0.8` = 80%). |
| `include_container_mass` | Учитывается ли собственная масса блока-контейнера поверх его содержимого. |
| `block_mass_modifier` | Глобальный множитель, применяемый к итоговой массе **всех** блоков. |
| `item_mass_modifier` | Глобальный множитель, применяемый к итоговой массе **всех** предметов. |
| `fluid_mass_modifier` | Глобальный множитель, применяемый к итоговой массе **всех** жидкостей. |
> 💡 **Заметка о математике жидкостей:** Масса рассчитывается как `mass_per_bucket × (millibuckets / 1000.0)`. Так, 500 mB воды (`mass_per_bucket: 1.0`) весит ровно 0.5 кг.
---
## Команды в игре
Все команды требуют прав оператора (уровень 2). Вот что можно делать:
| Команда |Что она делает |Пример |
| ------------------------------------------------------ |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |---------------------------------------------------------------------------- |
| `/pondus mass <value> block [storage_modifier]` | Задать массу блока, на который вы смотрите. Необязательный `storage_modifier` задаёт множитель инвентаря (насколько тяжёлое содержимое). | `/pondus mass 5.0 block` или `/pondus mass 10.0 block 0.8` |
| `/pondus mass <value> item` | Задать массу предмета, который вы держите. | `/pondus mass 0.3 item` |
| `/pondus mass <value> fluid <fluid_id>` | Задать массу на ведро для жидкости. | `/pondus mass 1.0 fluid minecraft:water` |
| `/pondus mass <value> tag <id>` | Применить массу ко всем блокам/предметам/жидкостям с этим тегом. | `/pondus mass 1.0 tag #tfc:ores` |
| <code>/pondus populate [block_mass] [item_mass] [fluid_mass]</code> |Автоматически сканирует все зарегистрированные блоки, предметы и жидкости и добавляет недостающие записи в конфиги с указанными массами по умолчанию.<br>• Если масса не указана, используются разумные значения по умолчанию: <strong>0.5</strong> для блоков, <strong>0.01</strong> для предметов и <strong>1.0</strong> для жидкостей (кг на ведро).<br>• Существующие записи <strong>пропускаются</strong> — добавляются только недостающие.<br>• Конфиг сохраняется автоматически после сканирования.<br>• <strong>Когда использовать:</strong> Идеально для быстрого создания базы масс для нового модпака или после добавления множества модов — вы получаете основу для всего без ручного редактирования. |<code>/pondus populate</code> (использует значения по умолчанию)<br><code>/pondus populate 2.5 0.1 1.5</code> (свои массы) |
| `/pondus import_external` | Импортировать массы из данных внешнего физического движка (например, Sable) в конфиги Pondus. Полезно, если вы пропустили экран подтверждения при первом запуске. | `/pondus import_external` |
| `/pondus reload` | Горячая перезагрузка всех конфигов (включая `global.json`) и очистка кэшей. | `/pondus reload` |
| `/pondus sync` | Перестраивает физику для всех SubLevels (используйте после изменения масс). | `/pondus sync` |
| `/pondus config showmass <true/false>` | Включить или выключить показ массы предметов в подсказках. | `/pondus config showmass true` |
| `/pondus config showblockmass <true/false>` | Включить или выключить показ массы блоков в подсказках (для BlockItems). | `/pondus config showblockmass true` |
---
## Для разработчиков модов и сборок
### Регистрируйте массы прямо из кода:
```java
// Регистрация блока
MassRegistry.registerBlock("minecraft:stone",
new BlockMassEntry("minecraft:stone", "3.0", 1.0, true));
// Регистрация предмета
MassRegistry.registerItem("minecraft:diamond",
new ItemMassEntry("minecraft:diamond", "0.3", true));
// Регистрация жидкости
MassRegistry.registerFluid("minecraft:water",
new FluidMassEntry("minecraft:water", "1.0"));
// Регистрация по тегу
MassRegistry.registerBlock("#minecraft:logs",
new BlockMassEntry("#minecraft:logs", "0.8", 1.0, false));
Работа с кастомными данными NBT:
// Чтение
double power = InventoryMassCalculator.getCustomDataValue(stack, "power", 1.0);
// Запись
InventoryMassCalculator.setCustomDataValue(stack, "power", 2.5);
Внутренняя кухня расчёта массы жидкостей:
// FluidMassEntry автоматически конвертирует милливедра → кг
FluidMassEntry water = new FluidMassEntry("minecraft:water", "1.0");
double massFor500mb = water.getMass(500); // Возвращает 0.5 кг
// Выражения тоже поддерживаются
FluidMassEntry oil = new FluidMassEntry("tfc:olive_oil", "0.92 * density_mod");
Изменение конфигов на лету:
Если меняешь конфиги во время работы, не забудь сбросить кэши:
ModConfig.CONFIG.reload();
InventoryMassCache.clear();
// Затем выполни /pondus sync на сервере
💡 Про глобальные модификаторы:
block_mass_modifier,item_mass_modifierиfluid_mass_modifierизglobal.jsonприменяются автоматически во время расчёта массы. Тебе не нужно обрабатывать их в своём коде — просто регистрируй базовые значения, а глобальные множители сами их отмасштабируют.
Нашёл баг?
Отлично! (Ну, не отлично, но ты понял.) Вот что поможет мне больше всего:
- Возьми лог из
logs/latest.logи поищиpondus_inventory_fi. - Скажи мне версию мода, версию Minecraft, версию NeoForge и версию Sable.
- Опиши точно, что ты делал, что ожидал и что случилось вместо этого. Если есть ошибка, вставь нужный кусок лога.
- По проблемам с жидкостями: Укажи, с каким баком/блоком для жидкости ты тестировал и реализует ли он
IFluidHandler.
Лицензия: MIT. Используй, переделывай, делись — только не убирай упоминание авторства.
Разработчик: CatCosYT & Fractal Interactive Discord: https://discord.gg/pZ42QYZTD6
Частые вопросы
Как установить Pondus Inventory [Sable]?
Установите NeoForge под свою версию Minecraft, скачайте Pondus Inventory [Sable] под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть Pondus Inventory [Sable]?
У Pondus Inventory [Sable] есть сборки для Minecraft 1.21–1.21.11.
Нужен ли Pondus Inventory [Sable] на сервере?
Нужен и в игре, и на сервере