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!
What does it all mean?
Pondus Inventory FI is a companion mod for the Sable physics engine. It provides you with an incredibly detailed system for determining how much blocks, items, and fluids actually weigh.
Do you want to change the mass of a block or fluid on the fly using settings or in-game commands? You can. It 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. And the config doesn't just take numbers—you can write simple math expressions right in the file.
📦 Count the weight of everything inside containers
Any container (chest, barrel, Create's moving contraption, fluid tank, you name it) 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 or not.
💧 Fluid mass calculations (NEW!)
Pondus now supports fluids via the NeoForge Fluid Handler capability. Define mass per bucket for any fluid, and the mod will automatically calculate the weight based on the actual amount in millibuckets (mB). Perfect for realistic water towers, fuel tanks, lava reservoirs, or chemical processing setups.
⚙️ Configs that actually make sense
There are separate config files for blocks (blocks.json), items (items.json), and fluids (fluids.json), all using a clean JSON 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
You'll find them in config/pondus_inventory_fi/.
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 (NEW!). 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 (NEW!)
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:
- Grab the log from
logs/latest.log and search for pondus_inventory_fi.
- Tell me the mod version, Minecraft version, NeoForge version, and Sable version.
- Describe exactly what you did, what you expected, and what happened instead. If there's an error, paste the relevant part of the log.
- 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