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.
Required Dependencies
Pufferfish's Skills is server-authoritative for skill levels, so this add-on runs on the
server. It works for both an integrated server (single player / Open to LAN) and a
dedicated server.
The Inventory Weight attribute
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 is 0, 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
carrying category under the
puffish_skills namespace. 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
carrying off. Cleanest for modpacks: no conflicts.
Whichever pack's config.json wins 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
0 if 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, prefer operation: 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.mcmeta won'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 https://megatrex4.github.io/inventory-weight/guide/addons/pufferfishs-skills (or the online docs site).