ModsJava
ItemSmith
Free, custom items for Paper — a schema-driven ability engine plus a full in-game chest-GUI item creator.
⬇ Download on HangarOpen in MCModsHubGet it on Google Play →# ItemSmith
**Custom items for Paper: an ability engine and a real in-game item creator.**
Give a sword a poison strike. Make an axe that freezes what it hits. Build a pickaxe that vein-mines and auto-smelts, a wand that blinks you through walls, a totem that heals everyone nearby. Then hand the item to your players through a craft, a mob drop, a fishing catch, or a chest, and let them discover it in the vanilla recipe book.
You build all of it **in-game, through a chest GUI**, or by hand-editing a small, readable YAML file. Both write the same file. Both `/reload` instantly.
> **Pre-release.** ItemSmith is in final pre-launch polish. This page describes the plugin as built and tested on Paper 1.21.8; it is not yet a public release.
---
## How the engine works
Every item is a **base material + display text + a list of abilities**. Each **ability** is a small pipeline:
> **Activator** *(when)* → **Conditions** *(if)* → **Targeter** *(who)* → **Actions** *(what)*, with an optional **Gate** *(may I?)*.
- **Activator**: the trigger. *On hit, on right-click, on kill, on sneak, on take-fall-damage, on block break, every tick while held…*
- **Conditions**: pass/fail checks. *Only in this world, only below 30% health, only if it's night, only if the target is a player…*
- **Targeter**: who the actions run on. *The entity you hit, yourself, everyone in a radius, the block you're looking at, a projectile…*
- **Actions**: what happens. *Deal damage, apply an effect, launch the target, break an area of blocks, teleport, spawn an entity, play a sound…*
Because every component **declares its own typed parameters**, the GUI can render an editor for it automatically and the YAML serializer can read/write it automatically. That's how ItemSmith reaches this scale without hand-building a menu per feature:
| Component | Count | Examples |
|---|---:|---|
| **Activators** | ~150 | right/left click, hit/be-hit, kill, death, block break/place, consume, sneak, drop/pickup, projectile, equip, hold-tick |
| **Actions** | ~160 | damage, potion effect, knockback, pull, lifesteal, ignite, freeze, teleport/blink/dash, area-break, vein-break, auto-smelt, spawn entity, give item, economy |
| **Conditions** | ~70 | health/hunger, world, region, time, item, target type, charges, cooldown, balance, permission |
| **Targeters** | 18 | self, target, nearby entities, looked-at block, area, look direction |
**≈400 registered engine components in total.** The plugin logs the exact count on boot.
### Flow control (abilities that branch)
Actions aren't just a flat list; several are **nested flow-control blocks**, so an ability can make decisions and sequence itself:
- **delay**: wait, then continue
- **repeat**: run a sub-list N times
- **if**: run a sub-list only when a condition holds
- **random / chance**: pick a branch, or fire only some of the time
- **abort**: stop the ability early
Combine them and a single ability can stagger effects over time, roll for a critical, or fan out a combo, with no code and just nested blocks.
### Gating & economy (balance your items)
Every ability can be **gated** so power costs something:
- **Permission**: restrict who can trigger it.
- **World / region**: restrict where (region gating via **WorldGuard**, optional).
- **Use-cost via Vault**: charge **money, XP, items, or hunger** per activation.
- **Charges & custom durability**: limited-use items that deplete and can break.
- **Cooldown groups**: share one cooldown across several abilities, or give each its own.
*(Admin `itemsmith.bypass.*` permissions let staff skip cost, cooldown, or region gates for testing.)*
### Obtaining: put items into the world's economy
An item nobody can get is just a screenshot. ItemSmith makes custom items **reachable** through every Bukkit-native path:
- **Recipes** across all native families: **shaped, shapeless, furnace / blasting / smoking / campfire, smithing transform, and stonecutter**. Multiple recipes per item, and they show up in the **vanilla recipe book**.
- **Mob & block drops**: by chance and count, optionally player-kill-only, with **silk-touch** handling for blocks.
- **Loot-table injection**: inject items into **chest, mob, and fishing** loot tables.
- **Player catalog GUI**: a browsable, searchable in-game catalog (behind `itemsmith.catalog`, granted by default) where players see every custom item, **how to obtain each one**, and can add known recipes to their recipe book.
### The in-game creator
An admin-only chest-GUI creator, built on `triumph-gui` and the **native Paper Dialog API**, so text entry, search boxes and confirmations look like vanilla, with **no resource pack required for the GUI itself**:
- Start from a **template** (Weapon / Tool / Armor / Consumable / Wearable) or a blank item.
- Edit **id, material, name, lore, cooldown, item settings, recipe, drops, loot, and the full ability tree**, including drilling into nested flow-control blocks.
- Pick activators, conditions, targeters and actions from **categorized folders with search**, so there are no names to memorize.
- **Simple + Advanced** progressive disclosure keeps the common path short.
- **Immutable ids + Save-As** protect existing items; edits write the same YAML and reload live.
- In-GUI **recipe / drops / loot editors** and **admin give** round it out.
Everything the GUI does, you can also do by hand in YAML; they're two doors into the same file.
---
## A minimal example item
`plugins/ItemSmith/items/venom_blade.yml`:
```yaml
material: DIAMOND_SWORD
name: "Venom Blade"
lore:
- "Coated in a lethal toxin."
- "On hit: Poison + bonus damage"
abilities:
- activator: player_hit_entity # when you hit something in melee
targeter: target # act on the entity you hit
cooldown: 1.5 # seconds; shows the vanilla cooldown sweep
actions:
- type: add_damage # extra damage on the hit
amount: 2 # 2.0 = one heart
- type: potion_effect # then poison the target
effect: poison
duration: 5 # seconds
amplifier: 0 # 0 = level I
recipe:
type: shaped
shape:
- " F "
- " D "
- " S "
ingredients:
F: FERMENTED_SPIDER_EYE
D: DIAMOND
S: STICK
```
Drop that file in, run `/itemsmith reload`, and `/itemsmith get venom_blade`. Or build the exact same thing in the GUI and it writes this file for you. Share the file and anyone else's server has the item.
---
## Textures: Bring Your Own Pack (for now)
ItemSmith does **not** generate resource packs yet. Custom **textures and models are Bring-Your-Own-Pack**: point an item at `item-model:` or `custom-model-data:` and supply your own pack, and it renders. Out of the box, items use their **base material's** look, and the **GUI is native-styled** so it needs no pack at all. Automatic resource-pack generation is on the roadmap (see below).
---
## Requirements & compatibility
- **Server:** **Paper 1.21.8**. ItemSmith uses Paper-only APIs (Adventure/MiniMessage text, the native Dialog API), so **Spigot is not supported**.
- **Java:** **21+**.
- **Install:** drop the **single jar** into `/plugins` and restart. The GUI library is shaded and relocated inside it, with nothing else to install.
- **Optional soft-depends (graceful if absent):** **Vault** (economy costs), **WorldGuard** (region gating), **GriefPrevention** (protection).
- **Client:** a server-side plugin, so **players install nothing**. The admin creator uses the native Dialog API for text and number entry, which needs a 1.21.6+ client; on older clients it shows a clear message rather than failing silently.
- **Folia:** not yet confirmed.
---
## Commands & permissions
**Commands** for `/itemsmith` (aliases `/ismith`, `/citems`):
| Subcommand | What it does |
|---|---|
| `catalog` | Open the player catalog (browse / search / how-to-obtain) |
| `open` | Open the admin creator GUI |
| `create` | Start a new item in the creator |
| `get ` | Give yourself a custom item |
| `give [player]` | Give a custom item to a player |
| `list` | List all defined items |
| `reload` | Reload item files from disk |
**Permissions:**
| Node | Default | Purpose |
|---|---|---|
| `itemsmith.admin` | op | Creator GUI + all admin commands |
| `itemsmith.catalog` | true | Open the player catalog |
| `itemsmith.bypass.all` | false | Bypass all ability gates |
| `itemsmith.bypass.cost` | false | Bypass use-costs |
| `itemsmith.bypass.cooldown` | false | Bypass cooldown groups |
| `itemsmith.bypass.region` | false | Bypass region gating |
---
## Roadmap
Built and working today: the full ability engine, ~150 activators / ~160 actions / ~70 conditions / 18 targeters, nested flow control, gating & economy, the in-game creator GUI, all Bukkit-native recipes, mob/block drops, loot-table injection, the player catalog and recipe-book integration.
Planned (not yet in the plugin, listed so you know what's coming, not implying it's here):
- **Resource-pack generation**: automatic custom textures/models (today it's BYO-pack).
- **PlaceholderAPI placeholders** and deeper MythicMobs integration.
- **Localization** (translatable messages).
- **Import / export** of item files.
- **Custom blocks & mobs** (post-launch).
---
## TL;DR
A custom-items plugin for Paper 1.21.8 with a schema-driven ability engine (Activator → Conditions → Targeter → Actions), ~400 components, nested flow control, cost/cooldown/region gating, every native recipe type plus drops and loot injection, an in-game chest-GUI creator, and a player catalog. Items are shareable YAML. Bring your own resource pack for custom textures.
ItemSmith is a free Minecraft Java mod. Compatible with Minecraft 1.21.8. Available via Hangar. Download it and open it directly in the game.
Explore more