⚔ Scword — Custom Items Management
Scword is a high-performance Paper 1.21.4 plugin for creating, managing, and tracking custom items with advanced features like crafting recipes, item limits, exclusive lifetime tracking, a modular ability system, Discord webhook notifications, and a full-featured GUI editor.
Features Weapon Creation & Editing
- Create weapons from scratch or capture items directly from your hand
- Full MiniMessage support for names, lore, and text formatting
- Custom model data and ItemsAdder integration
- Enchantments, attributes, and per-item NBT-tracked statistics
- Modular system with 9+ abilities and configurable triggers
- Abilities: Fire (ignite), Freeze (slow), Poison, Vampire (heal on kill), AOE (area damage), Throw (boomerang), Solar Flare, Fortitude (defense), Leveling
- Trigger types: ON_HIT, RIGHT_CLICK, LEFT_CLICK, ON_KILL, ON_BLOCK_BREAK, ON_SNEAK, ON_TAKE_DAMAGE
- Per-ability cooldowns, activation chances, and configurable parameters
- Visual 3×3 recipe editor GUI (SHAPED and SHAPELESS support)
- Quick-Craft GUI — pre-fills materials from the player's inventory
- Auto-detect when a player has enough materials (craft notifications)
- Shift-click bulk crafting with limit/exclusivity enforcement
- GLOBAL (server-wide) or LOCAL (per-player) concurrent item caps
- Reset modes: NEVER, FULL_RESET (cooldown-based cycles), PER_CRAFT (cooldown between crafts)
- Configurable cooldown durations
- Permission bypass: scword.bypass.limit
| Type | Behavior | Best For |
| TOTAL_SERVER | Only X copies can ever exist server-wide | Event items, one-time rewards |
| PER_PLAYER | Each player can only obtain Y copies ever | Starter weapons, rank rewards |
| TIMED | Only obtainable within a date/time window | Seasonal items, holiday events |
| COMBINATION | All three enforced simultaneously | Ultra-rare limited items |
- Exclusivity takes priority over normal limits — when both are enabled, only exclusivity is checked
- Counts persist in exclusive_data.yml (debounced auto-save, crash-safe)
- prevent_give flag controls whether /scword give bypasses exclusivity
- Exclusive lore line (✦ Limited Edition: 3/10 remaining) auto-appends to items
- Admin reset command: /scword exclusivereset <id> --confirm
- Automatically notifies players when they have materials for a craftable weapon
- Clickable chat message opens the Quick-Craft GUI
- Configurable cooldown (default: 30s) and sound effect
- Real-time notifications for crafting, destroying, and availability of limited items
- Fully customizable embed templates, colors, thumbnails, and mentions
- Per-weapon thumbnail and notification overrides
- Weapon list with pagination, search, and quick actions
- Inline chat input for names, lore, and numeric configuration
- Sections: Properties, Name/Lore, Limits, Exclusive, Recipe, Abilities, Save/Give
- Config migration: Missing config keys are auto-added from defaults on reload (never overwrites user values)
- Weapon migration: Old weapon YAML files automatically get the exclusive section with defaults
| Command | Permission | Description |
| /scword gui | scword.gui | Open the weapon management GUI |
| /scword list | scword.use | List all weapons with current counts |
| /scword give <id> [player] [amount] | scword.give | Give a weapon to yourself or another player |
| /scword craft <id> | scword.use | Open the quick-craft GUI for a weapon |
| /scword create <id> <material|[hand]> | scword.admin | Create a new weapon |
| /scword limit <id> <max> | scword.admin | Set the concurrent item limit |
| /scword webhook <test|status|reload> | scword.admin | Manage Discord webhook |
| /scword reload | scword.reload | Reload plugin configs and weapons |
| /scword exclusivereset <id> [--confirm] | scword.admin | Reset exclusive lifetime counts |
| /scword help | — | Show the help menu |
| Permission | Default | Description |
| scword.use | OP | Basic plugin usage (list, craft) |
| scword.admin | OP | Full admin access (create, limit, webhook, exclusivereset) |
| scword.give | OP | Give weapons to players |
| scword.reload | OP | Reload the plugin |
| scword.gui | OP | Access the GUI editor |
| scword.bypass.limit | OP | Bypass item limits and exclusivity |
⚙️ Configuration config.yml
Code (YAML):
settings:
debug : false # Extra console logging
limit-check-interval : 100 # Ticks between limit scans (20 = 1s)
count-inventory-items : true # Count items in player inventories toward limits
ability-tick-rate : 1 # Ability cooldown tick rate (ticks)
ability-action-bar : true # Send action bar messages for abilities
craft-notification-cooldown : 30 # Seconds between re-notifications
craft-notification-sound : "BLOCK_NOTE_BLOCK_PLING,1.0,2.0" # SOUND,vol,pitch or "none"
prefix : "<gradient:#ff6b6b:#ffd93d>[Scword]</gradient> "
messages:
no-permission : "<red>You don't have permission to do that."
weapon-given : "<green>Gave <yellow>{weapon}</yellow> to <aqua>{player}</aqua>."
weapon-not-found : "<red>Weapon '<yellow>{weapon}</yellow>' not found."
limit-reached : "<red>The item limit for <yellow>{weapon}</yellow> has been reached! <gray>({current}/{max})"
limit-cooldown : "<red>You must wait <yellow>{cooldown}s</yellow> before crafting <yellow>{weapon}</yellow> again!"
plugin-reloaded : "<green>Plugin reloaded successfully!"
weapon-saved : "<green>Weapon '<yellow>{weapon}</yellow>' saved successfully!"
weapon-crafted : "<green>Successfully crafted <yellow>{weapon}</yellow>!"
invalid-material : "<red>Invalid material: <yellow>{material}"
exclusive-reached : "<red>This exclusive item <yellow>{weapon}</yellow> has reached its lifetime limit and can no longer be obtained!"
exclusive-lore-first : "<dark_gray>✦ <gold>First Edition — <white>{obtained_plus_one}/{max}"
exclusive-lore-last : "<dark_gray>✦ <red>The Last — <white>{max}/{max}"
exclusive-lore-none-left : "<dark_gray>✦ <dark_red>No More Remain — <white>{max}/{max}"
exclusive-lore-singular : "<dark_gray>✦ <gold>The One and Only — <white>1/1"
exclusive-lore : "<dark_gray>✦ <gray>Limited Edition: <white>{obtained_plus_one}/{max} <gray>remaining"
gui:
weapon-list:
title : "<bold><gradient:#ff6b6b:#ffd93d>Custom Weapons</gradient></bold>"
size : 54
background-item:
material : BLACK_STAINED_GLASS_PANE
name : " "
navigation:
prev-page : { slot : 45, material : ARROW, name : "<red>« Previous Page" }
next-page : { slot : 53, material : ARROW, name : "<green>Next Page »" }
close : { slot : 49, material : BARRIER, name : "<red>Close" }
weapon-editor:
title : "<bold><gradient:#6b9fff:#a78bfa>Edit: {weapon}</gradient></bold>"
size : 54
recipe-editor:
title : "<bold><gradient:#6bffb8:#6b9fff>Recipe: {weapon}</gradient></bold>"
size : 54
Weapon YAML Structure (weapons/example_weapon.yml)
Code (YAML):
id : "hellfire_blade"
name : "<gradient:#ff4500:#ff8c00>Hellfire Blade</gradient>"
material : NETHERITE_SWORD
custom-model-data : 0
properties:
unbreakable : true
hide-flags : true
hide-item-stats : true
hide-enchants : false
hide-enchant-glint : true
hide-unbreakable : true
lore :
- ""
- "<dark_red>✦ <red><bold>Hellfire Blade</bold></red> ✦</dark_red>"
- ""
- "<gray>A blade forged in the depths of the Nether...</gray>"
- ""
- "<gold>⚔ Damage : <yellow> {stat:base_damage }</yellow> "
- "<red> Kills : <yellow> {stat:kills }</yellow> "
- " "
enchantments:
SHARPNESS: 5
FIRE_ASPECT: 2
attributes:
ATTACK_DAMAGE:
amount: 12.0
operation: ADD_NUMBER
slot: MAINHAND
stats:
base_damage: 12
kills: 0
limit:
enabled: true
max: 3
type: GLOBAL # GLOBAL or LOCAL
reset_mode: NEVER # NEVER, FULL_RESET, PER_CRAFT
reset_cooldown: 0
exclusive:
enabled: false
type: TOTAL_SERVER # TOTAL_SERVER | PER_PLAYER | TIMED | COMBINATION
lifetime_max: 10 # -1 = unlimited
player_max: -1 # -1 = unlimited
time_start: " " # ISO-8601: "2026-07-01T00:00:00Z " or "2026-07-01 "
time_end: " "
prevent_give: true # Block /scword give when exclusivity exceeded
abilities:
- type: FIRE
trigger: ON_HIT
duration: 60
cooldown: 40
chance: 100
- type: VAMPIRE
trigger: ON_KILL
heal-amount: 4.0
cooldown: 0
chance: 100
recipe:
enabled: true
type: SHAPED
shape:
- "NRN "
- "NBS "
- "NRN "
ingredients:
N: NETHERITE_INGOT
R: BLAZE_ROD
B: NETHER_STAR
S: NETHER_BRICK
result-amount: 1
webhook:
enabled: true
announce_on_craft: true
announce_on_destroy: true
announce_on_available: true
thumbnail_url: " "
| Slot | Setting | Controls |
| Properties | Unbreakable, hide flags/stats/enchants/glint | Click to toggle |
| Name | Display name (MiniMessage) | Click to type in chat |
| Lore | Lore lines (MiniMessage, {stat:key} placeholders) | Click to edit |
| Limits | Toggle on/off, max, type (GLOBAL/LOCAL), reset mode, cooldown | Click/cycle |
| Exclusive | Toggle, type (shift+click), lifetime max (click), player max (right-click), time window (shift+right-click) | Multi-interaction |
| Recipe | Open the 3×3 visual recipe editor | Click to open |
| Abilities | Manage all abilities with parameters | Click to configure |
| Save | Save to disk | Click |
| Give | Give yourself the weapon | Click |
- Left-click Exclusive Config button → cycle lifetime max presets (1→5→10→25→50→100→unlimited)
- Shift+left-click → cycle exclusive type (TOTAL_SERVER→PER_PLAYER→TIMED→COMBINATION)
- Right-click → set per-player max via chat input
- Shift+right-click → set time window (start,end) via chat input
- limit_max: 12 (normal — max 12 concurrent)
- lifetime_max: 14 (exclusive — only 14 ever)
- Result: All 14 can be crafted, regardless of the normal limit of 12
- Counts are stored in plugins/Scword/exclusive_data.yml
- Auto-saved via debounced write (2 ticks after last craft)
- Also saved on plugin disable and reload
- Admin reset: /scword exclusivereset <id> --confirm
| Scenario | Default Lore | Config Key |
| Only 1 can ever exist | ✦ The One and Only — 1/1 | exclusive-lore-singular |
| First one crafted | ✦ First Edition — 1/10 | exclusive-lore-first |
| Last remaining copy | ✦ The Last — 10/10 | exclusive-lore-last |
| All copies exhausted | ✦ No More Remain — 10/10 | exclusive-lore-none-left |
| Normal (mid-range) | ✦ Limited Edition: #3/10 remaining | exclusive-lore |
| Placeholder | Description |
| {max} | Total lifetime_max configured |
| {remaining} | How many more can be obtained |
| {obtained} | How many have been obtained (0-indexed) |
| {obtained_plus_one} | This item's sequence number (1-indexed) |
Craft Notifications When a player picks up items, clicks in an inventory, or closes a chest, the plugin checks if they have materials for any enabled recipe:
⚔ Hellfire Blade is ready to craft! ┃ [⚡ Craft Now] — Click to place materials and craft!Click to expand...
- Cooldown: craft-notification-cooldown (seconds, default 30)
- Sound: craft-notification-sound ("SOUND,volume,pitch" or "none" to disable)
- Tracks per-player state — won't re-notify until materials are lost and regained
| File | Purpose |
| plugins/Scword/config.yml | Main plugin configuration |
| plugins/Scword/weapons/*.yml | Individual weapon definitions |
| plugins/Scword/webhook.yml | Discord webhook configuration |
| plugins/Scword/exclusive_data.yml | Exclusive lifetime counts (auto-managed) |
- config.yml: Missing keys are auto-merged from defaults on every load — never overwrites user values
- weapon YAML files: Old weapons without the exclusive section get it added automatically with defaults on load
%scword_exclusive_<type>_<weaponId>%Click to expand...
| Placeholder | Returns | Example |
| %scword_exclusive_obtained_<id>% | Server-wide lifetime crafts | %scword_exclusive_obtained_hellfire_blade% → 3 |
| %scword_exclusive_remaining_<id>% | Remaining lifetime capacity | %scword_exclusive_remaining_hellfire_blade% → 7 |
| %scword_exclusive_max_<id>% | Configured lifetime_max | %scword_exclusive_max_hellfire_blade% → 10 |
| %scword_exclusive_canobtain_<id>% | Whether anyone can still obtain it | %scword_exclusive_canobtain_hellfire_blade% → true |
| %scword_exclusive_lore_<id>% | The dynamic exclusive lore line (MiniMessage) | %scword_exclusive_lore_hellfire_blade% → ✦ First Edition — 1/10 |
| Placeholder | Returns | Example |
| %scword_exclusive_playerobtains_<id>% | How many times the player has obtained it | %scword_exclusive_playerobtains_hellfire_blade% → 1 |
| %scword_exclusive_playermax_<id>% | Configured player_max | %scword_exclusive_playermax_hellfire_blade% → 3 |
| %scword_exclusive_playerremaining_<id>% | Remaining per-player capacity | %scword_exclusive_playerremaining_hellfire_blade% → 2 |
| %scword_exclusive_canobtainplayer_<id>% | Whether the player can obtain it | %scword_exclusive_canobtainplayer_hellfire_blade% → true |
Code (Text):
%scword_exclusive_lore_hellfire_blade%
Code (Text):
&7Hellfire Blade Remaining: &e%scword_exclusive_remaining_hellfire_blade%
Code (Text):
%scword_exclusive_canobtain_hellfire_blade% → use this to show/hide craft buttons
Note from developer: The plugin is built for my minecraft server and is experimental! If you encounter any bugs kindly report it to me thank you! (ONLY TESTED ON A 1.21.11 SERVER)
Quick facts
- Edition: Minecraft Java
- File type: .jar
- Minecraft versions listed: 1.17, 1.18, 1.19
- How to install: Install the matching mod loader (Forge, Fabric or NeoForge) for your Minecraft version. → Download the .jar. → Put it in the .minecraft/mods folder and launch that loader profile.
- Where to get it: Opens on Spigot — not every file is mirrored on our own servers.
Install steps are the general flow for this file type — How to install Minecraft Java mods & modpacks walks through it step by step.
⚔ Scword — Custom Items Management is a free Minecraft Java mod. Compatible with Minecraft 1.17, 1.18, 1.19, 1.20 and newer. Downloaded 10 times (via Spigot). Download it and open it directly in the game.