Language

Pondus Inventory [Sable]

Pondus Inventory [Sable]

Modrinth

The mod allows you to add the calculation of items in storage on ships to the Sable physics calculations.

852 downloads 18 followers updated 3d ago
latest v0.11-Beta Modrinth
Neoforge 1.21 – 1.21.1 ManagementStorageUtility

Pondus Inventory FI

An addon for Sable that makes every block, item, and fluid pull its weight—literally.

⚠️ I warn you: this mod is still under active development. To make it work with other mods, you will need to manually adjust the settings. You have been warned!

ℹ️ If you want to help with the blanks for the weights of items, blocks, and liquids from various mods, write about it in the channel ⌬・synthesis-of-ideas. All whose configs will be listed on this mod page and in the mod description.


What does it all mean?

Pondus Inventory FI is a companion mod for the Sable physics engine. It provides an incredibly detailed system for determining how much blocks, items, and fluids actually weigh.

You can change the mass of a block, item, or fluid on the fly using settings or in-game commands. The mod also looks inside chests, barrels, fluid tanks, and any other containers and adds weight to whatever is holding them up — so your airship suddenly becomes much heavier when the cargo hold is full of oil, or your portable water tank tips the scales when filled.

Ideal for builds using TerraFirmaCraft, Create, Sable, or anything else where realistic mass, balance, and fluid dynamics are important.


What can it do?

⚖️ Mess with block & fluid mass any way you like

Set a custom base weight for almost any block or fluid using the config or the /pondus mass command. You can even target entire groups with tags like #minecraft:planks, #tfc:ores, or #forge:water. The config supports math expressions — write things like "2.5 * stack_size" directly in the JSON file.

📦 Count the weight of everything inside containers

Any container (chest, barrel, Create's moving contraption, fluid tank, etc.) automatically adds the total weight of all items and fluids stored inside. You can tweak an inventory_multiplier to balance things out (maybe only 80% of the contents count), and decide whether the container block's own mass is included.

💧 Fluid mass calculations

Pondus now supports fluids via the NeoForge Fluid Handler capability. Define mass per bucket for any fluid, and the mod automatically calculates the weight based on the actual amount in millibuckets (mB). Perfect for realistic water towers, fuel tanks, lava reservoirs, or chemical processing setups.

🗂️ NEW: Namespace‑based configuration storage

Config files are now organised per mod inside config/pondus_inventory_fi/. Each mod (e.g. minecraft, create, tfc) gets its own subfolder, and inside that folder you place the standard blocks.json, items.json, and fluids.json.
Benefits:

  • No more ID collisions between mods.
  • Easier to manage, share, or version-control configs for each mod separately.
  • The mod automatically migrates old flat config files (if present) into the new structure and backs them up in _migrated_backup.

Example folder structure:

config/pondus_inventory_fi/
├── minecraft/
│   ├── blocks.json
│   ├── items.json
│   └── fluids.json
├── tfc/
│   ├── blocks.json
│   ├── items.json
│   └── fluids.json
├── create/
│   ├── blocks.json
│   └── items.json
└── _migrated_backup/        # created automatically if old configs existed
    ├── blocks.json
    ├── items.json
    └── fluids.json

⚙️ Configs that actually make sense

Each JSON file uses a clean, simple format. Expressions like "base_mass": "2.5 * stack_size" or "mass_per_bucket": "0.8 + density_factor" are fair game. And you can reload everything on the fly with /pondus reload — no server restart needed.


Getting it set up

Requirements

You need Sable. That's it.
(Fluid support requires mods/blocks that implement NeoForge's IFluidHandler capability)

Config files

All configs live in config/pondus_inventory_fi/<mod_namespace>/.

blocks.json – sets the rules for blocks. Example:

{
  "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 – item weights. Example:

{
  "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 – fluid weights. Example:

{
  "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"
  }
}

Quick rundown of the parameters:

| Parameter | Description |
|-----------|-------------|
| base_mass / mass | A number or an expression ("2.5", "0.5 * stack_size", "1.0 + nbt_power"). |
| mass_per_bucket | Mass in kg for 1000 mB (1 bucket). Supports expressions. |
| per_stack | If true, the mass is multiplied by the number of items in the stack. |
| inventory_multiplier | Multiplier for the total weight of contents inside a container (e.g. 0.8 = 80%). |
| include_container_mass | Whether the container block's own mass counts on top of its contents. |

💡 Fluid math note: Mass is calculated as mass_per_bucket × (millibuckets / 1000.0). So 500 mB of water (mass_per_bucket: 1.0) weighs exactly 0.5 kg.


In-game commands

All commands need operator-level permissions (level 2). Here's what you can do:

| Command | What it does | Example |
|---------|--------------|---------|
| /pondus mass <value> block | Set the mass of the block you're looking at | /pondus mass 5.0 block |
| /pondus mass <value> item | Set the mass of the item you're holding | /pondus mass 0.3 item |
| /pondus mass <value> fluid <fluid_id> | Set the mass per bucket for a fluid | /pondus mass 1.0 fluid minecraft:water |
| /pondus mass <value> tag <id> | Apply a mass to every block/item/fluid with that tag | /pondus mass 1.0 tag #tfc:ores |
| /pondus reload | Hot-reload all configs and clear caches | /pondus reload |
| /pondus sync | Rebuilds physics for all SubLevels (use after mass changes) | /pondus sync |
| /pondus config showmass | Shows the mass of items when hovering over them in the inventory | /pondus config showmass true |
| /pondus config showblockmass | Shows the mass of blocks when hovering over them in the inventory | /pondus config showblockmass true |


For mod & pack developers

Register masses straight from code:

// Register a block
MassRegistry.registerBlock("minecraft:stone", 
    new BlockMassEntry("minecraft:stone", "3.0", 1.0, true));

// Register an item
MassRegistry.registerItem("minecraft:diamond", 
    new ItemMassEntry("minecraft:diamond", "0.3", true));

// Register a fluid
MassRegistry.registerFluid("minecraft:water", 
    new FluidMassEntry("minecraft:water", "1.0"));

// Register by tag
MassRegistry.registerBlock("#minecraft:logs", 
    new BlockMassEntry("#minecraft:logs", "0.8", 1.0, false));

Work with custom NBT data:

// Reading
double power = InventoryMassCalculator.getCustomDataValue(stack, "power", 1.0);

// Writing
InventoryMassCalculator.setCustomDataValue(stack, "power", 2.5);

Fluid mass calculation internals:

// FluidMassEntry handles millibucket → kg conversion automatically
FluidMassEntry water = new FluidMassEntry("minecraft:water", "1.0");
double massFor500mb = water.getMass(500); // Returns 0.5 kg

// Expressions are supported too
FluidMassEntry oil = new FluidMassEntry("tfc:olive_oil", "0.92 * density_mod");

Runtime config changes:

If you change configs at runtime, don't forget to invalidate caches:

ModConfig.CONFIG.reload();
InventoryMassCache.clear();
// Then run /pondus sync on the server

Found a bug?

Great! (Well, not great, but you know what I mean.) Here's what helps me the most:

  1. Grab the log from logs/latest.log and search for pondus_inventory_fi.
  2. Tell me the mod version, Minecraft version, NeoForge version, and Sable version.
  3. Describe exactly what you did, what you expected, and what happened instead. If there's an error, paste the relevant part of the log.
  4. For fluid-related issues: Include which fluid tank/block you tested with and whether it implements IFluidHandler.

License: MIT. Use it, remix it, share it — just keep the credit.

Developer: CatCosYT & Fractal Interactive
Discord: https://discord.gg/pZ42QYZTD6

Versions

Beta
0.11-Beta
neoforge · 1.21, 1.21.1 · 3d ago
- The method for retrieving items from the storage has been changed to ```Capabilities.ItemHandler.BLOCK```_(Thanks for the bug report, Unduper Baby.)_
103
Beta
0.10-Beta
neoforge · 1.21.1 · 25d ago
- Reorganised configuration storage: configs are now stored per mod namespace inside `config/pondus_inventory_fi/<modid>/` (blocks.json, items.json,…
318
Beta
0.9-Alpha
neoforge · 1.21, 1.21.1 · 1mo ago
- Fix item vaults mass calculations
279
Alpha
0.8-Alpha
neoforge · 1.21, 1.21.1 · 1mo ago
- Added calculation of liquids in FluidTank type tanks - Added a config to adjust the mass of liquids per bucket
45
Alpha
0.7-Alpha
neoforge · 1.21, 1.21.1 · 1mo ago
- Add preview block mass(disable in confige or command /pondus config showblockmass false) - Added block mass calculation function to calculate their weight in…
37
Alpha
0.6-Alpha
neoforge · 1.21, 1.21.1 · 1mo ago
- Add mass item preview.
10
Alpha
0.5-Alpha
neoforge · 1.21, 1.21.1 · 1mo ago
- Fixed a bug with the mass of ingot piles and placed items from TerraFirmaCraft - Added item storage from Create
15
Alpha
0.4-Alpha
neoforge · 1.21, 1.21.1 · 1mo ago
- Added support for placed items from TerraFirmaCraft. - Fixed a bug with hopper mass registration.
9
Alpha
0.3-Alpha
neoforge · 1.21, 1.21.1 · 1mo ago
- Add support for TerraFirmaCraft ingot piles and Food shelves.
13
Alpha
0.2-Alpha
neoforge · 1.21, 1.21.1 · 1mo ago
- Fix crash with none Sublevel.
12
Alpha
0.1-Alpha
neoforge · 1.21.1 · 1mo ago
11

Comments 0

No comments yet. Be the first to share your thoughts.