CurseForge · Minecraft mod
Pufferfish's Unofficial Additions
Additional experience sources and rewards
Quick answer
Which Pufferfish's Unofficial Additions release should I use?
Pufferfish's Unofficial Additions 1.20.1 - 2.2.4 targets 1.20.1, 1.20 with Forge, NeoForge. The project page does not say whether this file belongs on the client, dedicated server, or both. All 1 required mods have matching files.
Where it goes
Is Pufferfish's Unofficial Additions required on the client, server, or both?
The project page does not say whether this file belongs on the client, dedicated server, or both.
The source does not explicitly classify this release as client-only or server-only.
What else does Pufferfish's Unofficial Additions 1.20.1 - 2.2.4 need?
Pufferfish's Unofficial Additions 1.20.1 - 2.2.4. Change the file and its required mods may change too.
Install Pufferfish's Skills [Fabric & Forge & NeoForge] first. We found matching files for this game-version and loader setup. 5 come through another mod in the chain.
5 extra mods were pulled in by other dependencies. Indented rows show who needs each one. We only count dependency files that match this setup. A file for another loader does not fill the gap.
Before you install it
Add Pufferfish's Unofficial Additions without breaking your instance.
Built for Pufferfish's Unofficial Additions 1.20.1 - 2.2.4. Pick another file and the loader, install side or required mods may change.
- 01
Stick to this file
Use Pufferfish's Unofficial Additions 1.20.1 - 2.2.4. It targets 1.20.1, 1.20 with Forge, NeoForge; another release may have different loader, side or dependency requirements.
- 02
Bring the mods it needs
Install Pufferfish's Skills [Fabric & Forge & NeoForge] first. We found matching files for this game-version and loader setup. 5 come through another mod in the chain.
- 03
Put it on the correct side
The project page does not say whether this file belongs on the client, dedicated server, or both.
- 04
Pick the file you checked
Use the “Get this file” button beside Pufferfish's Unofficial Additions 1.20.1 - 2.2.4. It opens that exact file at the source.
About this project
What does Pufferfish's Unofficial Additions add?
General
Addon to https://www.curseforge.com/minecraft/mc-mods/puffish-skills
Contains support for
Recommend checking the documentation:
- https://puffish.net/skillsmod/docs/creators/configuration/calculations/prototypes
- https://puffish.net/skillsmod/docs/creators/configuration/calculations/operations/operation
Attributes have been moved to Additional Attributes
Experience Source
Harvesting Crops
Hooks into the method which gets the items from the loot table
Operations:
player: The player harvesting the crops (prototype is Player)block: The block being harvested (prototype is Block State)tool: The tool being used (prototype is Item Stack)dropped_seeds: Amount of dropped seeds based on#forge:seeds(prototype isnumber)dropped_crops: Amount of dropped crops based on#forge:crops(prototype isnumber)
Example:
{
"type": "pufferfish_unofficial_additions:harvest_crops",
"data": {
"variables": {
"crops": {
"operations": [
{
"type": "block"
},
{
"type": "puffish_skills:test",
"data": {
"block": "#minecraft:crops"
}
}
]
},
"dropped_crops": {
"operations": [
{
"type": "dropped_crops"
}
]
},
"dropped_seeds": {
"operations": [
{
"type": "dropped_seeds"
}
]
}
},
"experience": [
{
"condition": "crops",
"expression": "dropped_crops + (dropped_seeds * 0.2)"
}
]
}
}
Fishing Experience
Gets called per fished item
Operations:
player: The player who is fishing (prototype is Player)tool: The tool being used (prototype is Item Stack)fished: The item being fished (prototype is Item Stack)
Example:
{
"type": "pufferfish_unofficial_additions:fishing",
"data": {
"variables": {
"fishes": {
"operations": [
{
"type": "fished"
},
{
"type": "puffish_skills:test",
"data": {
"item": "#minecraft:fishes"
}
}
]
},
"fished_amount": {
"operations": [
{
"type": "fished"
},
{
"type": "count"
}
]
}
},
"experience": [
{
"condition": "fishes",
"expression": "fished_amount * 4"
},
{
"condition": "!fishes",
"expression": "fished_amount * 2"
}
]
}
}
Rewards
Effect
Apply effects (infinite duration):
- Before removing the reward from the definition you'll have to reset the skills (or manually remove the effects yourself)
{
"type": "pufferfish_unofficial_additions:effect",
"data": {
"effect": "minecraft:regeneration",
"amplifier": 0,
"type": "GRANT"
}
}
Grant immunity up to a certain amplifier:
{
"type": "pufferfish_unofficial_additions:effect",
"data": {
"effect": "minecraft:wither",
"amplifier": 1,
"type": "IMMUNE"
}
}
Modify duration and / or amplifier of incoming effects:
- If the duration reaches
0due to modifications the effect will not be applied- Valid operations are
+,-,xand/ - This element is optional
- Valid operations are
- If the amplifier goes below
0due to modifications the effect will not be applied
{
"type": "pufferfish_unofficial_additions:effect",
"data": {
"effect": "minecraft:slowness",
"amplifier": -2,
"duration_modification": "/2.5",
"type": "MODIFY"
}
}
Walkable Powder Snow
Allows walking on powder snow
{
"type": "puffish_skills:tag",
"data": {
"tag": "walk_on_powder_snow"
}
}
Iron's Spells 'n Spellbooks
Experience Sources
Added an experience source for casting spells
Note: The experience source will trigger for each spell tick, meaning for continuous spells it can happen multiple times (see the expected_ticks parameter)
Operations:
player: The caster (prototype is Player)main_hand: Item in main hand (prototype is Item Stack)spellbook: The currently equipped spell book (prototype is Item Stack)school: The school type of the spell (prototype is custom)- The value is defined with
school
- The value is defined with
spell: The spell (prototype is custom)- The value is defined with
spell - Contains the following sub-operations:
min_level: The minimum level of this type of spell (prototype isnumber)max_level: The maximum level of this type of spell (prototype isnumber)cast_type: The way the spell is being cast (INSTANT,LONG,CONTINUOUS) (prototype is custom) - The value is defined withvalue
- The value is defined with
level: The level of the spell (incl. modifications through items etc.) (prototype isnumber)min_level_rarity: The minimum level of the spell based on the rarity (prototype isnumber)rarity_name: Name of the rarity (COMMON,RARE,EPIC,LEGENDARY) (prototype is custom)- The value is defined with
value
- The value is defined with
rarity: The ordinal of the rarity (0isCOMMONand4isLEGENDARY) (prototype isnumber)mana_cost: Mana cost for the spell at that level (if the cast consumes mana) (prototype isnumber)mana_cost_per_second: Only set for continuous spells (and if the cast costs mana) (prototype isnumber)cast_duration: Duration of continuous spells (in seconds) (prototype isnumber)cast_charge_time: Charge-up time of spells (if they have one) (in seconds) (prototype isnumber)cooldown: Cooldown after the spell was cast (in seconds) (prototype isnumber)expected_ticks: Will be1for instant and long type spells - for continuous it's the amount of spell ticks if the whole duration is used (prototype isnumber)
Example:
{
"type": "pufferfish_unofficial_additions:spell_casting",
"data": {
"variables": {
"level": {
"operations": [
{
"type": "level"
}
]
},
"rarity": {
"operations": [
{
"type": "rarity_name"
},
{
"type": "puffish_skills:test",
"data": {
"value": "LEGENDARY"
}
},
{
"type": "switch",
"data": {
"true": 5,
"false": 1
}
}
]
},
"mana_cost": {
"operations": [
{
"type": "mana_cost"
}
]
},
"mana_cost_per_second": {
"operations": [
{
"type": "mana_cost_per_second"
}
]
},
"spellbook": {
"operations": [
{
"type": "spellbook"
},
{
"type": "puffish_skills:test",
"data": {
"item": "irons_spellbooks:iron_spell_book"
}
}
]
},
"fire_school": {
"operations": [
{
"type": "school"
},
{
"type": "puffish_skills:test",
"data": {
"school": "irons_spellbooks:fire"
}
}
]
},
"blaze_storm": {
"operations": [
{
"type": "spell"
},
{
"type": "puffish_skills:test",
"data": {
"spell": "irons_spellbooks:blaze_storm"
}
}
]
}
},
"experience": [
{
"condition": "spellbook & !blaze_storm & fire_school",
"expression": "level + (mana_cost / 5) + rarity"
},
{
"condition": "blaze_storm",
"expression": "(level + (mana_cost_per_second / 10)) / 2"
}
]
}
}
Project description from CurseForge.
Pick your setup
Pufferfish's Unofficial Additions by Minecraft version and loader
Choose the version and loader you play, then open the matching release.
1.21.1
1 loader build1.21
1 loader build1.20.1
2 loader builds1.20
2 loader builds1.19.2
1 loader buildCheck the dependencies, then try the file in a copied instance before changing a world you care about.
Recent files
Pufferfish's Unofficial Additions versions and loaders
Pufferfish's Unofficial Additions 1.20.1 - 2.2.4
pufferfish_unofficial_additions-1.20.1-2.2.4-all.jar
28 Dec 2025
Pufferfish's Unofficial Additions - 1.21.1 - 2.2.8
pufferfish_unofficial_additions-1.21.1-2.2.8.jar
28 Dec 2025
Pufferfish's Unofficial Additions - 1.21.1 - 2.2.7
pufferfish_unofficial_additions-1.21.1-2.2.7.jar
17 Sept 2025
Pufferfish's Unofficial Additions 1.19.2 - 2.2.0
pufferfish_unofficial_additions-1.19.2-2.2.0-all.jar
19 May 2025
Pufferfish's Unofficial Additions 1.21.1 - 2.2.6
pufferfish_unofficial_additions-1.21.1-2.2.6.jar
15 May 2025
Pufferfish's Unofficial Additions 1.21.1 - 2.2.5
pufferfish_unofficial_additions-1.21.1-2.2.5.jar
10 Mar 2025
Pufferfish's Unofficial Additions 1.20.1 - 2.2.3
pufferfish_unofficial_additions-1.20.1-2.2.3-all.jar
23 Feb 2025
Pufferfish's Unofficial Additions 1.21.1 - 2.2.4
pufferfish_unofficial_additions-1.21.1-2.2.4.jar
22 Feb 2025
Pufferfish's Unofficial Additions 1.21.1 - 2.2.3
pufferfish_unofficial_additions-1.21.1-2.2.3.jar
8 Dec 2024
Pufferfish's Unofficial Additions 1.21.1 - 2.2.2
pufferfish_unofficial_additions-1.21.1-2.2.2.jar
6 Sept 2024
Pufferfish's Unofficial Additions 1.20.1 - 2.2.2
pufferfish_unofficial_additions-1.20.1-2.2.2-all.jar
6 Sept 2024
Pufferfish's Unofficial Additions 1.20.1 - 2.2.1
pufferfish_unofficial_additions-1.20.1-2.2.1-all.jar
6 Sept 2024
Looking for an older file? The official CurseForge project page is in Resources.