Описание
# Infused Power
#### Adds attributes to all armor, weapons and tools
*Empower your items with **Arcane Power**, forge your own build,
and prove it against the powerful invaders of the **Rift**.*






> *ℹ️ This mod is in **beta** and can still have bugs. Back up worlds you care about before adding it.*
---
### 🎲
**Classed Gear**
Every weapon, tool, and armor becomes a class item
### ✦
**Empower & Reforge**
Infuse your gear with Arcane Power, then reforge it
### ⚔️
**The Rift**
A near endless gauntlet of challenge and reward
### ☀️
**The Sunstone**
The stone that shows the invisible world
### 🕯️
**Rituals**
A summon or a drain, running on Numen
### ✒️
**The 12 Glyphs**
Each of the 12 kinds adds its own bonus
### 💍
**Accessories Too**
Rings, amulets, gloves, capes and charms get classes
### ⭐
**50+ Attributes**
Crit, Lifesteal, Execution, Spellsurge, Bleed, Backstab, Armor Pen and many more
### 📖
**No Knowledge Needed**
An in-game Guidebook teaches you on first join
---
## What Is This?
Infused Power adds attributes to all armor, weapons and tools. Become a **Battlemage**, a **Paladin**, a lethal **Assassin** or an unbreakable **Juggernaut**. Every class is built from a curated pool of **50+ attributes**.

**Set bonuses:** wearing matching armor classes together grants bonuses
**Unique drops:** rare unique armor classes can be found in chests
**Material matters:** early-game materials roll better stats, so early gear can stay useful
| Material | Bonus to rolled values |
|:---:|:---:|
| **Leather** | +30% |
| **Gold** | +20% |
| **Iron** | +10% |
⚔️ A taste of the arsenal
| Category | Examples |
|---|---|
| **Combat** | Crit, Crit Damage, Super Crit, Backstab, Execution, Armor Pen, Combo, Fury, Bloodlust, Stat Steal |
| **On-Hit** | Bleed, Poison, Wither, Ignite, Freeze, Spellsurge, Chain Lightning, Blight, Plague, Whirlwind |
| **Defense** | Dodge, Barrier, Block, Magic Resist, Thorn Armor, Frost / Flame / Decay / Venom Armor, Riposte, Reckoning |
| **Summons** | Necromancy, Elementalist |
| **Ranged** | Explosive Arrow, Lightning Arrow, Gravity Arrow, Arrow Pierce |
| **Utility** | Lifesteal, Life on Hit, Heal on Kill, XP on Kill, Pack Leader, Dig Speed, Smelter's Touch |
---
## The Forge
*Where ordinary gear becomes greater.*
### Infusion Table
Feed gems or essence to gather **Arcane Power**, then infuse your item to strengthen its attributes and raise its level.



### Arcane Anvil
The reforge bench. **Reroll** a single stat with a **Lucky Gem**, reroll everything with a **Chaos Orb**, strip a flaw with a **Nullifying Gem**, wipe an item clean with a **Void Orb**, or reach a new level of power with a **Constellation Core**.
### Arcane Cauldron
**Dissolve** the gear you don't want into **essences** and **shards**, then craft them into the materials that improve your own gear.
Note : You need a heat source (such as fire) below your Arcane Cauldron to activate it.

---
## The Sunstone
The stone that shows the invisible world: creatures and their **Numen**, ore through the ground, and trails to cult sites, ancient cities and meteorite craters.

---
## Rituals
Set up powerful rituals that summon creatures and items, drain the Numen out of the creatures and dropped items near them, and help you gather resources. Glyphs make them stronger.

---
## The Rift Altar
*A trial for every stage of the journey.*
Open the Rift from your earliest levels and keep coming back as you grow. Scout a level before you commit: the altar shows its boss, theme, and wave count once you have reached it, while deeper levels stay a mystery until you arrive. Chase your **best clear time** and see how far you can push.
Survive timed waves of mobs and mini-bosses, then face the boss waiting at the end. The earlier levels are easier, but the deeper levels are a true endgame **challenge**. Clearing higher level rifts gives you greater **rewards**.

| Era | Levels | The challenge | Reward key |
|:---:|:---:|:---:|:---:|
| **Pure** | 1 to 64 | The opening trials | Rift Key |
| **Greater** | 65 to 121 | Armed foes and relentless reinforcements | Twisted Rift Key |
| **Perfect** | 122+ | Amplified enemy stats and mid-fight wave bosses | Cursed Rift Key |
---
## Compatibility
*Right at home with your other mods.*
Every mod here is optional: Infused Power works without any of them.
| Mod | Integration |
|---|---|
| **Accessories** | Rings, amulets, gloves, capes and charms receive their own classes. Add the Accessories Compatibility Layer to extend this to Trinkets items too |
| **Curios** *(NeoForge and Forge)* | The same for every item Curios holds |
| **JEI** | In-game recipe viewing for the Infusion Table, Arcane Anvil, Arcane Cauldron, Athanor, calcination and Rhabdos |
| **EMI** *(1.21.1 and 1.20.1)* | The same recipe viewing in EMI |
| **Aether** | Its rings, gloves and shields get classes, the Enchanted Aethershield has its own, and zanite powers the Infusion Table |
| **Oritech** | Its jetpacks get armor classes |
| **Tech Reborn** | Its 5 gems power the Infusion Table |
| **SimplySwords** | Its unique weapons get no class |
| **Mod Menu** *(Fabric)* | Its Config button opens the mod's settings. On NeoForge and Forge, the mods list's own Config button does it |
---
## Make It Yours
Infused Power is built to be reshaped, and **you do not need to know any code**. Edit a plain-text file, save, and restart the game (or your server) to apply your changes. Open the guide below to begin. The same guide is in the game as a book, the **Modpack Maker's Tutorial**: find it in the Tools & Utilities creative tab, or run `/give @s infusedpower:modpack_makers_tutorial`.
📂 Open the customization guide
The mod ships its own files, and reads your changes from this folder:
```
.minecraft/config/infusedpower/overrides/
```
*(On a launcher with separate instances, look inside that instance's `config` folder.)*
1. In a world with cheats on (or as an operator on a server), run `/infusedpower data export`. The mod's files, with your overrides already merged in, are written to `config/infusedpower/export/`, so you can read them there.
2. Copy the file you want to change into `overrides/`, at the same path, like `overrides/classes/berserker.json`.
3. Keep only the fields you change. Your file is laid over the shipped one field by field, so everything you leave out stays as shipped, and a list you write replaces the shipped list whole. A file with a new name adds a new one, like a new class.
4. Save and restart the game (or your server).
| Inside `overrides/` | What it controls |
|---|---|
| `classes/` | **What each class is**: its name, color, rarity, where it drops, and the stats it can roll |
| `class_mappings/` | **Which classes an item can roll**, plus per-item tuning |
| `class_mappings/blacklisted_from_classes.txt` | Items that should **never** get a class |
The export holds much more: the Rift, gems, essences, Numen values, the Table of Practice and so on, and each one can be changed the same way. A datapack works too: put the file at the same path under `data/infusedpower/`.
> **🔑 Good to know:** edits only affect items you obtain *after* the change, gear you already own keeps the stats it rolled.
Pick a goal below and expand it. Each one has a **Show example** you can click for the exact code.
🚫 Stop an item from ever getting a class
Copy `class_mappings/blacklisted_from_classes.txt` from the export into `overrides/class_mappings/`, and add the item's ID on its own line. This file replaces the shipped one whole, so keep the lines already in it. Save and restart, and that item will never roll a class.
Show example
```
minecraft:netherite_hoe
```
🎯 Make a class drop only from chests (or only from mobs, or only by crafting)
In `overrides/classes/`, make a file named like the class (for example `berserker.json`) with a **`sources`** line. The class will then appear **only** from the sources you list.
| Source | When the class can appear |
|---|---|
| `loot_chest` | Found in generated or structure chests |
| `loot_entity` | Dropped by a defeated mob |
| `loot_equipment` | A mob's worn gear that drops |
| `craft` | Crafted by the player |
| `inventory` | Any other way it enters your inventory (trades, pickup, creative, given) |
| `summon` | Made by a ritual |
List several to allow more than one. Leave the line out entirely to allow **all** sources (the default). If you do list sources, add `summon` too, or the class never comes out of a ritual. This is exactly how rare unique classes are kept chest-only.
Show example
```json
{
"sources": ["loot_chest"]
}
```
Allowing two sources:
```json
{
"sources": ["loot_chest", "loot_entity"]
}
```
🎲 Change which classes an item can roll (and how rare each is)
In `overrides/class_mappings/`, make a file named like the one you are changing (for example `minecraft_swords.json`) with a `classes` list. Each entry's **weight** sets how likely it is (higher means more common). Only the classes you name change, the rest stay as shipped. Set a weight to `0` and that class never rolls on the item.
Show example
```json
{
"classes": {
"paladin": { "weight": 50 },
"lichborn": { "weight": 0 }
}
}
```
🔢 Make a class globally rarer or more common, or turn it off
In the class's file in `overrides/classes/`, **`roll_weight`** sets its base chance everywhere (higher means more common, 100 by default), and **`enabled`** set to `false` switches the class off completely.
Show example
```json
{
"roll_weight": 100,
"enabled": true
}
```
💪 Make an item roll stronger stats (material bonus)
In the item's file in `overrides/class_mappings/`, add a multiplier applied to every rolled value. `1.3` gives 30% stronger rolls, `0.8` makes them weaker. This is how leather, gold, and iron get their material bonuses.
Show example
```json
{
"attribute_multiplier": 1.3
}
```
🚷 Ban or retune specific stats on an item
In the item's file in `overrides/class_mappings/`, **`exclude_attributes`** lists stats that will never roll on this item, and **`attribute_overrides`** changes a stat's `min`, `max`, or `weight` just for this item.
Show example
```json
{
"exclude_attributes": ["infusedpower:generic.lifesteal"],
"attribute_overrides": {
"infusedpower:generic.critical_rate": { "min": 0.05, "max": 0.20, "weight": 30 }
}
}
```
➕ Add support for an item from another mod
Put a file with a new name in `overrides/class_mappings/`. You can target items two ways, and you often do **not** need an exact item ID:
- **By tag (easiest).** The mod reads item tags automatically, so if a modded item already belongs to a tag, one mapping covers every item that shares it.
- **By item ID.** Use this only when you want to single out one specific item.
**Good to know:**
- You rarely need item IDs, most modded gear already carries a tag (its own, or a shared one), and tags are tracked automatically.
- If an item is covered by **both** a tag mapping and an item mapping, the **item mapping wins**, because it is the more specific match.
- Vanilla-style gear (anything that behaves like a sword, axe, armor piece, and so on) and any accessory from the Accessories API are detected automatically, so they roll classes even without a mapping.
Show example
By tag, covering a whole group at once:
```json
{
"tag": "farmersdelight:tools/knives",
"classes": {
"assassin": { "weight": 100 },
"rogue": { "weight": 100 }
}
}
```
By item ID, for one specific item:
```json
{
"item": "supermod:ruby_sword",
"classes": { "warrior": { "weight": 100 } }
}
```
✨ Build a brand-new class
In `overrides/classes/`, add a file with a new name (for example `frostknight.json`), using an exported class as your model. Then add your new class id to a mapping so items can roll it (see the guide above), then restart.
Show example
```json
{
"id": "frostknight",
"display_name": "Frost Knight",
"name_prefix": "Frost Knight",
"color": "#55FFFF",
"roll_weight": 80,
"set_bonus": true,
"weapon_pool": [
{ "attribute": "infusedpower:generic.freeze_on_hit", "min": 0.05, "max": 0.15, "weight": 10 },
{ "attribute": "infusedpower:generic.critical_damage", "min": 0.05, "max": 0.20, "weight": 10 }
],
"armor_pool": [
{ "attribute": "minecraft:generic.max_health", "min": 0.5, "max": 2.0, "weight": 10 }
],
"static_armor_modifiers": [
{ "attribute": "infusedpower:generic.freeze_attacker", "value": 0.05, "set_bonus_eligible": true }
]
}
```
🔣 Understanding values, weights and pools (read this before editing classes)
**What the `min` and `max` numbers mean**
The number you write is not always a percentage. How it shows in-game depends on the stat:
| Stat type | You write | The player sees | Example |
|---|---|---|---|
| Percentage stats (most of them) | a decimal | the value times 100, with `%` | `0.05` becomes `+5%`, `0.15` becomes `+15%` |
| Attack Damage, Attack Speed, Move Speed | a decimal | a percent of the item's base | `0.04` becomes `+4%` |
| Health, Armor, Armor Toughness, Thorns, XP, Arrow Pierce | the raw amount | the number as-is | `2.0` Health becomes `+2` (2 health is 1 heart) |
| Dodge, Block, Armor Pen | a decimal | the value times 100, no `%` | `0.06` becomes `+6` |
| Life on Hit, Heal on Hurt, Bleed, Pack Leader | the raw amount | the number with decimals | `0.5` becomes `+0.50` |
> **The easy way:** do not guess at numbers. Open an exported class that already uses the stat you want (for example `berserker.json` has Lifesteal and Crit Damage), copy its `min` and `max`, then nudge them. The in-game **Attribute Guide** explains what every stat does, and the **Every attribute ID** list further below gives the exact IDs to type.
**`operation` (you can usually ignore this)**
Leave it out and the mod picks the right behavior automatically: Attack Damage, Attack Speed, and Movement Speed scale off the item's base value, while everything else adds a flat amount. Only set `operation` if you specifically want to change that.
**Two kinds of weight (rarity)**
Weight can appear in two places, doing two different jobs:
- **`roll_weight`** in a *class* file is that class's default rarity everywhere (higher means more common).
- **`weight`** inside a *mapping* overrides `roll_weight` for that one item or group. If you list a class with no weight (like `["warrior"]`), it simply uses the class's own `roll_weight`.
**Weapon pool vs armor pool**
A class rolls from `weapon_pool` or `armor_pool` depending on the item:
- **Weapon pool:** swords, axes, maces, bows, crossbows, tridents, knives, and tools (pickaxe, shovel, hoe, fishing rod).
- **Armor pool:** helmets, chestplates, leggings, boots, shields, and every accessory (rings, amulets, capes, and so on).
If you want a class to work on both armor and weapons, fill in both pools.
**Names: `name_prefix`, `name_suffix`, and `naming_mode`**
A class can define a prefix, a suffix, or both. The *mapping's* `naming_mode` decides which actually appear:
- `"prefix"` uses only the prefix, like `Berserker Iron Sword`
- `"suffix"` uses only the suffix, like `Iron Sword of the Guardian`
- `"both"` (the default) allows both
**Set bonuses**
A set bonus needs two things to be true: the class has `"set_bonus": true`, and the specific guaranteed stats are marked `"set_bonus_eligible": true`. Then each matching piece you wear past the first adds 20% to those stats: 2 pieces give x1.2, 3 pieces give x1.4, and so on with no cap. The tooltip shows the count, like `Paladin Set: 2`.
📖 Full field reference
**Class file (`classes/*.json`)**
| Field | Purpose |
|---|---|
| `id` | Unique internal name (used in mappings) |
| `display_name` | Name shown to players |
| `color` | Tooltip color, either hex (`"#55FFFF"`) or a name (`"aqua"`, `"gold"`, `"red"`, and so on) |
| `name_prefix` / `name_suffix` | Text placed before or after the item name |
| `lore` | The description the Class Browser shows for the class |
| `enabled` | `true` or `false`, switch the class on or off |
| `roll_weight` | Base rarity (higher means more common, 100 by default) |
| `sources` | Where it can appear (see the sources guide) |
| `set_bonus` | `true` means wearing 2 or more pieces boosts its set stats |
| `affix_count_weights` | How many stats it rolls, like `[0,65,30,5]` for mostly 2 to 3 |
| `min_positive_affixes` / `max_positive_affixes` | A plain range instead of `affix_count_weights` (these win if both are set) |
| `negative_affix_chance` / `max_negative_affixes` | Chance (0 to 1) and max number of downsides |
| `weapon_pool` / `armor_pool` | Possible stats, entries of `{ attribute, min, max, weight }` |
| `negative_weapon_pool` / `negative_armor_pool` | Possible downsides |
| `static_weapon_modifiers` / `static_armor_modifiers` | Guaranteed stats, `{ attribute, value, set_bonus_eligible }` |
**Mapping file (`class_mappings/*.json`)**
| Field | Purpose |
|---|---|
| `tag` | Apply to a whole item group (like `"minecraft:swords"`) |
| `item` | Apply to one specific item (overrides any tag) |
| `classes` | Which classes can roll, plus their weights |
| `naming_mode` | `"prefix"`, `"suffix"`, or `"both"` (default) |
| `exclude_attributes` | Stats that cannot roll on this item |
| `attribute_overrides` | Change a stat's `min`, `max`, or `weight` for this item |
| `attribute_multiplier` | Scale all rolled values (like `1.3`) |
| `item_multipliers` | A different `attribute_multiplier` for single items inside a tag mapping |
| `numen` | The Numen value of these items |
| `summon_blocked` | `true` stops rituals from summoning these items |
> Attribute IDs look like `infusedpower:generic.lifesteal` (this mod's stats) or `minecraft:generic.attack_damage` (vanilla stats). The in-game **Attribute Guide** explains what each one does; for the exact IDs to type, see **Every attribute ID** below.
📋 Every attribute ID (copy-paste ready)
Every stat from this mod is written as `infusedpower:generic.NAME`, using one of the names below. Vanilla stats use `minecraft:generic.NAME` instead.
**Combat and damage**
`critical_rate` `critical_damage` `super_crit` `double_hit` `combo_damage` `fury` `bloodlust` `lifesteal` `backstab_damage` `execution_damage` `low_hp_damage` `armor_penetration` `magic_resist`
**On-hit effects**
`poison_on_hit` `wither_on_hit` `slowness_on_hit` `weakness_on_hit` `freeze_on_hit` `fire_on_hit` `disorient_on_hit` `bleed_on_hit` `spellsurge` `chain_lightning` `blight` `plague` `stat_steal` `whirlwind`
**Damage vs creature type**
`undead_damage` `arthropod_damage` `aquatic_damage` `illager_damage` `airborne_damage`
**Defense**
`dodge` `barrier` `block_chance` `poison_immunity` `cleanse_on_hurt` `riposte` `reckoning`
**When you are hurt**
`regen_on_hurt` `resist_on_hurt` `speed_on_hurt` `heal_on_hurt` `percent_heal_on_hurt`
**Reactive armor (hurts attackers)**
`thorns` `freeze_attacker` `fire_attacker` `wither_attacker` `poison_attacker`
**Summons**
`necromancy` `elementalist`
**Healing and utility**
`life_on_hit` `life_on_execute` `bonus_xp` `bonus_xp_mining_ore` `smelters_touch` `bonus_durability` `pack_leader` `dig_speed`
**Ranged**
`draw_speed` `accuracy` `arrow_velocity` `arrow_damage` `explosive_arrow` `lightning_arrow` `gravity_arrow` `pierce`
**Movement and water**
`swim_speed` `water_gravity`
**Common vanilla stats** (use the `minecraft:generic.` prefix)
`attack_damage` `attack_speed` `max_health` `armor` `armor_toughness` `movement_speed` `knockback_resistance` `attack_knockback` `luck` `max_absorption`
🧩 Every parameter in one place
Complete reference files using every field at once. You only ever use the fields you need. A couple of notes: for affix counts you normally pick **either** `min_positive_affixes`/`max_positive_affixes` **or** `affix_count_weights` (not both), and `operation` on a stat is optional (defaults are sensible).
Show a class file with every field
```json
{
"id": "example_class",
"display_name": "Example Class",
"name_prefix": "Example",
"name_suffix": "of Power",
"lore": "The description the Class Browser shows.",
"color": "#55FFFF",
"enabled": true,
"roll_weight": 100,
"sources": ["loot_chest", "loot_entity", "loot_equipment", "craft", "inventory", "summon"],
"set_bonus": true,
"min_positive_affixes": 1,
"max_positive_affixes": 3,
"affix_count_weights": [0, 65, 30, 5],
"negative_affix_chance": 0.25,
"max_negative_affixes": 2,
"weapon_pool": [
{ "attribute": "minecraft:generic.attack_damage", "min": 0.04, "max": 0.12, "weight": 10, "operation": "add_multiplied_base" },
{ "attribute": "infusedpower:generic.lifesteal", "min": 0.02, "max": 0.09, "weight": 10 }
],
"armor_pool": [
{ "attribute": "minecraft:generic.max_health", "min": 0.5, "max": 2.0, "weight": 10 }
],
"negative_weapon_pool": [
{ "attribute": "minecraft:generic.attack_speed", "min": -0.06, "max": -0.02, "weight": 10 }
],
"negative_armor_pool": [
{ "attribute": "minecraft:generic.armor", "min": -0.6, "max": -0.2, "weight": 10 }
],
"static_weapon_modifiers": [
{ "attribute": "infusedpower:generic.fury", "value": 0.0135, "set_bonus_eligible": true }
],
"static_armor_modifiers": [
{ "attribute": "infusedpower:generic.fury", "min": 0.005, "max": 0.01, "operation": "add_value", "set_bonus_eligible": true }
]
}
```
**How the trickier fields behave:**
- **`affix_count_weights`** sets how many *positive* stats roll. Each slot is a count: the 1st number is the weight for 1 stat, the 2nd for 2 stats, the 3rd for 3, and so on. `[0, 65, 30, 5]` means never 1 (0%), usually 2 (65%), sometimes 3 (30%), rarely 4 (5%). Weights are relative to their total, so here, where they add up to 100, each is also a percentage. The final count can never exceed the number of stats actually in the pool.
- **Pick one affix-count method.** If you set `min_positive_affixes` and `max_positive_affixes`, those win and `affix_count_weights` is ignored. Set neither and the mod's default spread is used. The example lists all three only for reference, you would normally keep just one.
- **`sources`**: leave it out to allow every source, or list only the ones you want.
- **`negative_affix_chance` and `max_negative_affixes`** only matter when the class has a negative pool. The mod tries to add a downside alongside each positive stat: `negative_affix_chance` (0 to 1) is the chance each time, and `max_negative_affixes` caps the total, and it never adds more negatives than positives.
- **`set_bonus`** only does anything if some `static_..._modifiers` are marked `"set_bonus_eligible": true`.
Show a mapping file with every field
```json
{
"tag": "minecraft:swords",
"item": "minecraft:diamond_sword",
"naming_mode": "both",
"classes": {
"berserker": { "weight": 100 },
"lichborn": { "weight": 10 }
},
"exclude_attributes": ["infusedpower:generic.draw_speed"],
"attribute_overrides": {
"infusedpower:generic.critical_rate": { "min": 0.05, "max": 0.20, "weight": 30 }
},
"attribute_multiplier": 1.3,
"item_multipliers": { "minecraft:wooden_sword": 1.3 },
"numen": 900,
"summon_blocked": false
}
```
> A mapping uses **either** `tag` **or** `item`. Both are shown here for reference, but if you include both, the `item` match takes priority.
📦 For modpack makers
Tune everything to taste, then ship your `config/infusedpower/overrides/` folder with your pack, or the same files as a datapack. Players get your classes, mappings, item support, and balance automatically, with no extra setup on their end. Your files only name what you changed, so the mod's own updates still reach every field you left alone.
---
**Minecraft 1.20.1, 1.21.1, 26.2 & 26.3 · Fabric, NeoForge & Forge**, **Fabric API** *(Fabric only)*, **Java 17, 21 or 25**
English
Early beta, your feedback shapes the mod. Modpacks welcome, see the license for details.