Modscraper Modscraper Minecraft
FFItemWeight logo

FFItemWeight

Mod

Adds weight and encumbrance built dynamically from crafting recipes and data. Insanely configurable.

Type

Mod

Modrinth Downloads

82

Modrinth ID

h0IDTSdb

Last Updated

Sep 27, 2026

Description

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. (This was done specifically so players have a visual reminder to what is affecting them.)

All Items have weight, either by a base configuration or determined by the weight of their crafting ingredients. 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

  • Tooltips: category and numeric weight (Shift for precise values)
  • Inventory slots: optional outline or background by item weight band
  • HUD: encumbrance icon, optional label and total. The icon can shake from a chosen band upward (default Heavy Load). Custom icons go in assets/ffitemweight/textures/gui/encumbrance/<name>.png (Heavy Load becomes heavy_load.png)

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: [email protected]

Compatibility

Mod Loaders

Neoforge

Game Versions

1.21.1

Recommended Gear

Affiliate

Hardware and extras that pair well with this mod.

As an Amazon Associate I earn from qualifying purchases.

Screenshots

Similar Mods

Included in Modpacks (1)

External Resources