HomeJavaModsFFItemWeight
FFItemWeight
ModsJava

FFItemWeight

by Fyxe · on Modrinth

Adds weight and encumbrance built from crafting recipes and data. Insanely configurable. Free Minecraft Java mod for 1.21.1.

⬇ Download on Modrinth
FFItemWeight — screenshot 1FFItemWeight — screenshot 2FFItemWeight — screenshot 3FFItemWeight — screenshot 4FFItemWeight — screenshot 5FFItemWeight — screenshot 6FFItemWeight — screenshot 7FFItemWeight — screenshot 8

The goal of this mod was to make players think about inventory management and equipment, without being too punishing. By default only potion effects are applied such that the player can visually understand their encumberance, but attributes can be modified as well if desired.

All Items have weight, either by configuration or determined by their crafts. Carry too much and you become encumbered. Highly configurable, almost every feature can be modified or disabled.

Tooltip, basic Tooltip, Advanced

Overview

Every item has a unit weight. Stack weight is unit times count, plus contents of shulkers, bundles, and other nested inventories when that option is on. Your total is inventory plus optional armour, offhand, Accessories, and Curios.

Totals map to encumbrance bands (default Unencumbered through Immobile). Capacity can raise those thresholds from player level, armour, equipment overrides, accessory bonuses, and the Burden Bearing / Crushing Load enchantments.

Heavy bands can apply potion effects and attribute modifiers from server config. Creative mode ignores carry weight unless you turn that on.

Client display

Weights are computed on the server (datapack bases plus optional recipe derivation) and synced. Display is client-only.

Soft compatibility

Mod Notes
EMI Weights on item tooltips
Accessories / Curios Equipped slot weight and capacity. Accessories wins if both are loaded so Compatibility Layer does not double-count
Create Default recipe modifiers and filters
Universal Sawmill sawmill:woodcutting ignored by default

Commands (permission 2): /ffitemweight defaults [page] lists items still on defaultWeight. /ffitemweight help.

Client config: ffitemweight-client.toml (tooltips, slots, HUD). Server config: ffitemweight-server.toml (calculation, nested inventories, tracking, capacity, effects).

Datapack makers

Path: data/<namespace>/item_weights/<name>.json

{
  "comment": "optional",
  "weights": [
    { "id": "mymod:widget", "weight": 2.5 },
    { "id": "mymod:.*_ore", "weight": 6.0, "regex": true },
    { "id": "mymod:boss_core", "weight": 50.0, "force": true }
  ]
}
Field Default Meaning
id required Item id, or a Java regex on the full registry id when regex is true
weight required Unit weight (one item). Clamped by maxUnitWeight
regex false Treat id as a regex
force false Lock the base. Recipes cannot overwrite it

Resolution order: forced exact, forced regex (HEAVIEST or LIGHTEST), non-forced exact, longest non-forced regex, recipes, then defaultWeight.

Use force: true for balance anchors and items with bad recipe graphs. Leave normal craft chains unforced so tools and armour can derive from ingredients.

Shipped defaults: data/ffitemweight/item_weights/default.json. Override the same exact id (optional force).

Recipe derivation (server calculation): multi-pass HEAVIEST or LIGHTEST, type modifiers, ignored types, and skip patterns for recycling. Repairs and dyes (result is also an ingredient) are skipped in code. Diamond to netherite smithing still applies unless the result is forced.

ignoredRecipeTypes = ["minecraft:smithing_trim", "sawmill:woodcutting", "mymod:assembler"]
containerContentModifiers = [".*:.*_shulker_box=0.5"]

Encumbrance bands: Name:maxTotal:#RRGGBB. Effects and attributes use the same names (Category=effect:amplifier;... and Category=attr:operation:amount;... with add / multiply_base / multiply_total).

If many items stay on default weight, add JSON bases and use /ffitemweight defaults. If a machine mod inflates materials, ignore its recipe types or force anchors.

Modding API

Package com.fyxe.ffitemweight.api. Prefer ItemWeightAPI over internal classes.

[[dependencies.yourmod]]
    modId="ffitemweight"
    type="optional"
    versionRange="[0,)"
    ordering="NONE"
    side="BOTH"
ItemWeightAPI.getUnitWeight(item);
ItemWeightAPI.getWeight(stack); // count plus nested contents
ItemWeightAPI.getPlayerTotalWeight(player);
ItemWeightAPI.getPlayerEncumbrance(player);
ItemWeightAPI.isPlayerEncumbranceAtLeast(player, "Heavy Load");
ItemWeightAPI.invalidatePlayerCache(player);
ItemWeightAPI.getEquipmentCapacityBonus(stack);

EncumbranceChangedEvent fires on NeoForge.EVENT_BUS when the player's band name changes (not on first observation after join, not cancellable). Client HUD helpers live in com.fyxe.ffitemweight.api.client.ClientItemWeightAPI.

What's with the FF prefix?

It stands for Fyxe's Features! Its a clean way to easily find all of my mods when changing configs or creating packs. Mods that are a part of the "FF" system are usually smaller and unintrusive.

Feedback

If you have any ideas for improvements, questions, or concerns, I am open to communicating through email: FyxeINCFeedback@gmail.com

Verified by MCModsHub

These come from our own check of the pack file, not from the source page.

Explore more