Additional experience sources and rewards
Addon to Pufferfish's Skills
Contains support for
Recommend checking the documentation:
Attributes have been moved to Additional Attributes
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 is number)dropped_crops: Amount of dropped crops based on #forge:crops (prototype is number)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)"
}
]
}
}
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"
}
]
}
}
Apply effects (infinite duration):
{
"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:
0 due to modifications the effect will not be applied
+, -, x and /0 due 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"
}
}
Allows walking on powder snow
{
"type": "puffish_skills:tag",
"data": {
"tag": "walk_on_powder_snow"
}
}
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)
schoolspell: The spell (prototype is custom)
spellmin_level: The minimum level of this type of spell (prototype is number)max_level: The maximum level of this type of spell (prototype is number)cast_type: The way the spell is being cast (INSTANT, LONG, CONTINUOUS) (prototype is custom)
valuelevel: The level of the spell (incl. modifications through items etc.) (prototype is number)min_level_rarity: The minimum level of the spell based on the rarity (prototype is number)rarity_name: Name of the rarity (COMMON, RARE, EPIC, LEGENDARY) (prototype is custom)
valuerarity: The ordinal of the rarity (0 is COMMON and 4 is LEGENDARY) (prototype is number)mana_cost: Mana cost for the spell at that level (if the cast consumes mana) (prototype is number)mana_cost_per_second: Only set for continuous spells (and if the cast costs mana) (prototype is number)cast_duration: Duration of continuous spells (in seconds) (prototype is number)cast_charge_time: Charge-up time of spells (if they have one) (in seconds) (prototype is number)cooldown: Cooldown after the spell was cast (in seconds) (prototype is number)expected_ticks: Will be 1 for instant and long type spells - for continuous it's the amount of spell ticks if the
whole duration is used (prototype is number)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"
}
]
}
}
Conversation