Compatibility
Minecraft: Java Edition
Platforms
Supported environments
Tags
Creators
Details
Pufferfish's Skills InventoryWeight
Pufferfish's Skills InventoryWeight is a server-side add-on that connects MT Inventory Weight with Pufferfish's Skills.
It lets a player's skill progression increase their maximum inventory weight capacity, in two ways:
- Attribute reward (data-driven) — a skill node grants the Inventory Weight attribute directly. No Java needed; this is how the bundled "Carrying" tree works.
- Java event connector — the add-on reads a skill category's experience level and modifies max weight through MT Inventory Weight's event.
It also ships an optional, built-in "Carrying" skill tree you can enable per world.
This mod is not standalone.
MT Inventory Weight registers a vanilla-style attribute:
inventoryweight:generic.max_weight
Pufferfish's Skills can grant any registered attribute via its puffish_skills:attribute
reward, so a skill node can grant max weight directly.
1. Attribute reward (data-driven, no Java)
In a category's definitions.json, a skill definition lists rewards. Point a
puffish_skills:attribute reward at inventoryweight:generic.max_weight:
{
"type": "puffish_skills:attribute",
"data": {
"attribute": "inventoryweight:generic.max_weight",
"value": 200.0,
"operation": "addition"
}
}
operation |
Effect |
|---|---|
addition / add / add_value |
Flat add (e.g. +200). Recommended. |
multiply_base / add_multiplied_base |
Add a fraction of the attribute base. |
multiply_total / add_multiplied_total |
Multiply the running total. |
Prefer
addition. If the attribute base is0,multiply_*operations may have little or no effect.
2. Java event connector (level-based scaling)
The add-on listens to MT Inventory Weight's max-weight event:
InventoryWeightEvents.MODIFY_MAX_WEIGHT
and scales capacity by a skill category's experience level, read via Pufferfish's
SkillsAPI (Category.getExperience().getLevel(player)). See the config below.
If a node grants the attribute (path 1) AND you scale the same value by level (path 2), the bonuses stack.
Built-in "Carrying" skill tree
The mod bundles an optional Pufferfish category, carrying:
- Registered as a Fabric built-in datapack at
resourcepacks/carrying/in the jar, so it shows up in the world-creation Data Packs screen, disabled by default. - Nodes grant
inventoryweight:generic.max_weight(flat and percent), with a small movement-speed node and a capstone. - Earns experience from mining blocks and crafting items.
- The strong percent/mobility nodes are placed deeper in the tree, gated behind several flat nodes.
Enable it:
- New world → Create World → Data Packs → move "Carrying Skill Tree" to the active side, or
- Existing world →
/datapack list, then/datapack enable "<id>".
Open the skills screen (default key K) to see the Carrying category.
Default pack vs. your own pack (modpack devs / server admins)
You are not locked into the bundled tree:
- Use the default — enable the built-in "Carrying Skill Tree" pack. No files needed.
- Override it — ship a datapack that redefines the
carryingcategory under thepuffish_skillsnamespace. A later-loaded pack overrides the built-in files (last pack wins per file). Keep the built-in pack disabled to avoid mixing. - Add a separate tree — define a NEW category with a different id (and your own
namespace) and leave the built-in
carryingoff. Cleanest for modpacks: no conflicts.
Whichever pack's
config.jsonwins must list every category you want loaded.
Configuration (Java event path)
Synced server config via fzzy_config:
config/pufferfishs-skills-inventoryweight/server-config.*
General
| Option | Default | Description |
|---|---|---|
enabled |
true |
Master switch. |
minimumMaxWeight |
1.0 |
Floor for the final max weight. |
category (default on)
Scales by one configured category's experience level.
| Option | Default | Description |
|---|---|---|
category.enabled |
true |
Enable category-based scaling. |
category.categoryId |
puffish_skills:adventure |
Category id to read. Namespace defaults to puffish_skills if omitted. |
category.additivePerLevel |
0.0 |
Flat bonus per category level. |
category.multiplierPerLevel |
0.05 |
0.05 = +5% per level. |
totalLevel (default off)
Scales by the sum of all categories' experience levels.
| Option | Default | Description |
|---|---|---|
totalLevel.enabled |
false |
Enable combined-level scaling. |
totalLevel.additivePerLevel |
0.0 |
Flat bonus per combined level. |
totalLevel.multiplierPerLevel |
0.0 |
0.01 = +1% per combined level. |
Formula
result = (currentMaxWeight + additive) * multiplier
result = max(minimumMaxWeight, result)
currentMaxWeight is the value MT Inventory Weight already computed, so this stacks with the
base config, armor pockets, and other Inventory Weight add-ons.
Example
Base max weight: 100
category level (adventure): 10
category.multiplierPerLevel: 0.05
multiplier = 1 + 10 * 0.05 = 1.5
result = (100 + 0) * 1.5 = 150
Notes
- A category contributes
0if it doesn't exist or has no experience source. - Negative config values are clamped to neutral.
- Find category ids in your Pufferfish's Skills datapack/config (the
puffish_skills:<id>). - The built-in tree is
NORMAL(off by default); enable it in the Data Packs screen.
Troubleshooting
- A skill grants no weight — confirm the attribute id is exactly
inventoryweight:generic.max_weight, preferoperation: addition, and reset the skill after editing a reward so the modifier reapplies. - Built-in tree missing — it's disabled by default; enable it. Check the log for
Registered built-in 'carrying' datapack: true. pack.mcmetawon't load — the description must be strict JSON (no smart quotes / trailing commas).Unknown variable 'true'in experience.json — conditions must reference a defined variable; for unconditional XP use a bare string like"experience": "1".
Documentation
Full documentation: see docs/pufferfishs-skills.md (or the online docs site).


