Plugins / SMPForge
SMPForge Coming soon
Set your SMP's rules in game: 64 mechanic switches, item and enchant limits, potion bans, rituals.
Get SMPForge
Coming soon Not on sale yet. This page gets a buy button the day it is.
Try it live
SMPForge runs on a public demo server, set up so you can use it yourself. Join, try it, then decide.
Address: try.zeropvp.xyz:25570 (Java Edition 1.21.11)
In Minecraft: Multiplayer, Add Server, paste the address, Join. Type /demo go smpforge to land at its booth, or right-click the compass and pick it. The world resets every night.
Overview
SMPForge
Settle every SMP rules argument on one screen, live, without another plugin or a restart
Every SMP ends up with the same list of arguments. Crystals or no crystals. How many totems is too many. Should elytras exist. Mending or not. Normally each answer costs another plugin, another config file and another restart.
SMPForge puts all of it on one screen. Open the panel, flip a switch, and the server changes while people are playing.
The control panel: combat, world, player and mob rules, presets, managers.
- Latest version
- 1.1.0
- Server
- Paper or Purpur, Java 21
- BuiltByBit
- coming soon
What changed in 1.1.0
- New: presets. Set the whole board in one click from the new Presets button on the panel, or with /smpforge preset <name>. Built in: vanilla, friendly, lifesteal, hardcore, uhc and no-crystals. A preset sets every switch and tuning number; item rules, enchant caps, recipes and rituals are never touched.
- Save your own board with /smpforge preset save <name> (or the field on the Presets screen) and load it again later. Saved presets keep their potion bans and live in data/presets.yml, so they can be copied to another server. /smpforge preset delete <name> removes one.
- /smpforge preset undo puts the board back to how it was before the last preset.
- New: PlaceholderAPI support (optional). %smpforge_combat%, %smpforge_combat_seconds%, %smpforge_vanished%, %smpforge_rule_<id>% (for example %smpforge_rule_pvp%), %smpforge_rule_<id>_raw%, %smpforge_number_<id>%, %smpforge_rules_on% and %smpforge_rules_total%.
- New: on a fresh install, the first admin who joins gets one chat message with buttons that open the panel and the presets. It shows once and can be switched off with first-run-tip: false. Servers that already ran SMPForge do not see it.
- Tab completion for /smpforge preset.
- Your existing config.yml keeps working and every new message works on it. The help line in an old config.yml does not mention presets until the file is regenerated.
Features
Why server owners pick it
- 64 mechanic switches on one control panel
- Changes apply while people play, no restart
- Item, enchant and potion limits
- Custom recipes and rituals
- Staff tools included
What makes it different
- 64 rule switches on one panel, applied while people play, instead of one plugin and one restart per rule
- Presets (vanilla, friendly, lifesteal, hardcore, uhc, no-crystals) set the whole board in one click, with an undo
- Your own boards can be saved and copied to another server
Works with
- Paper or Purpur 1.21.11, Java 21+
- The dialog panel needs a 1.21.6 or newer client; the item and enchant managers are chest screens and work on any client
- No other plugins required
- No DRM, no licence key and no licence server; the code is not obfuscated
What you get: the control panel
Combat rules as switches, live at once.
Built on Minecraft's own dialog screens, not a chest full of renamed glass. Four categories with 64 switches between them, and every one takes effect the moment you click it.
- New in v1.2.0: Presets: vanilla, friendly, lifesteal, hardcore, uhc and no-crystals set the whole board in one click
- New in v1.2.0: Your own presets: save a board, load it later or copy it to another server, and undo the last preset
- New in v1.2.0: PlaceholderAPI (optional): combat, rule and tuning placeholders
- Combat (22): PvP, crystal damage, anchor and bed explosions, totems, shields, the mace smash, wind charges, elytra, riptide, a 1.8 combat switch that removes the attack cooldown, sweep attacks, ender pearls, tier 2 potions, tipped arrows, netherite, maces that disable shields, breach swapping, a combat tag, water while tagged, AFK protection, golden heads
- World (19): Nether and End access, TNT damage, creeper and wither griefing, fire spread, lava placing, crop trampling, lighting new nether portals, TNT minecarts, Paper's anti-xray, one player sleep, death drops that never despawn, death drops that survive lava and explosions, instant XP, villager trades that never lock, villager killing, easy enchanted golden apples, easy cobwebs
- Player (16): keep inventory, fall damage, hunger, natural regen, pearl damage, chorus teleports, the anvil level cap, death messages, spectator on death, ban on death, health under name tags, instant shields, hiding invisible killers in death messages, a join kit for new players, Xaero's minimap allowed or not, warden hearts that give a permanent extra heart
- Mobs (7): hostile spawning, phantoms, raids, villager trading, wandering traders, mob griefing, spawners
Presets set every switch at once: Vanilla, Friendly SMP, Lifesteal, Hardcore, UHC, No crystal PvP.
Tuning
Numbers, not just switches: PvP damage multiplier, knockback multiplier, ender pearl cooldown, invulnerable seconds after respawn, a ceiling height for elytra flight, combat tag length, minutes before AFK protection starts, a cap on mace damage and the anti-xray engine mode. Plus and minus buttons, no decimals typed into a config.
Item manager
Item manager: a cooldown and carry limit per item.
Every item in the game on pages, each one with:
- a use cooldown in seconds, shown on the player's own item cooldown overlay
- a carry limit, enforced live; anything over the limit drops rather than vanishing
- a ban, which stops the item being used at all
- a no crafting switch, which greys the recipe out in the crafting table
- one craft only: the item can be crafted once on the whole server, and the server is told who made it
- glow: every copy of the item gets the enchantment shimmer
Left-click raises the cooldown, right-click raises the limit, shift lowers either. Filter with /smpforge items totem, or switch the view to only the items you have already configured.
Enchant manager
One book per enchantment with its own cap. Lower Sharpness to 3, ban Mending outright, leave the rest vanilla. Caps apply at the enchanting table, at the anvil, and to gear that is already in someone's inventory, so an old Mending pickaxe does not survive the rule change. One button puts every cap back to vanilla.
Potion bans
Pick any effect and nobody can get it from a potion, a tipped arrow or a beacon.
Custom recipes
Draw your own crafting recipe in a 3x3 editor, put the result next to it, save, and it works in every crafting table at once.
Rituals
Turn a pattern of items into an event. Drop the items around an altar block, right-click it with the trigger item, and the ritual runs whatever commands you set: give a reward, start an event, revive a player, broadcast a line.
- Built in the ritual editor: hold an item, click a slot in the 3x3 board, done
- Any block as the altar, any item as the trigger
- Consume the items or leave them; particles and sound on or off
- Commands support {player}, {x}, {y}, {z} and {world}, and can run as the player or from console
Staff tools
/smpforge start gathers everybody and counts down on screen.
- Join kit: save your own inventory as the kit; new players get it when the Join kit switch is on
- Start countdown: /smpforge start gathers everybody at spawn (switchable), holds them in place, counts down on screen, then lets them go, with the kit, an optional inventory wipe and an optional scatter around spawn
- Vanish: players cannot see you, other admins still can
- Inventory and ender chest view: a live, read-only copy of a player's inventory, or their ender chest
- Admin command log: optional. Set a Discord webhook address and every command an op or admin runs is posted there. Off until you set one, and nothing is sent anywhere else
FAQ
Which servers does it run on?
Paper or Purpur 1.21.11, with Java 21.
Do I need other plugins?
No. It runs on its own.
Is there DRM or a licence key?
No. There is nothing to activate and no licence server to reach, and the code is not obfuscated.
How long does setup take?
Drop the jar into /plugins and restart. The setup guide above has 4 short steps.
Can I try it before I buy?
Yes. This page has a test server with the plugin installed.
Where do I get help?
In the active support Discord, in the discussion tab on this page, or in the documentation.
Is there a quick start for a lifesteal or hardcore SMP?
Yes. Built-in presets (vanilla, friendly, lifesteal, hardcore, uhc, no-crystals) set every switch and tuning number in one click.
Updates
Released on September 16, 2026 and updated 4 times since. The latest version is v1.2.0 (October 16, 2026). Every update is free, new Minecraft versions included.
Also by Frostyh
- Graves: death chests with a floating label
- Crates: crates with the real chances shown
- SentinelAC: a lightweight anticheat with clear staff alerts
- Complete Collection: all my published plugins in one purchase, 40% off
If this plugin helps your server, a short review on this page would mean a lot. Thank you!
Installation
Requirements
- Server software
- Paper, or a Paper fork such as Purpur. Spigot and CraftBukkit are not supported: the plugin uses Paper-only APIs.
- Minecraft version
- plugin.yml api-version 1.21; built against Paper API 1.21.11
- Java
- 21 or newer
- Required plugins
- none
- Optional plugins
PlaceholderAPI
Steps
- Download
SMPForge.jarfrom BuiltByBit. There is no licence key to enter. - Stop the server and put the jar into the
pluginsfolder. - Start the server. The plugin creates
plugins/SMPForge/config.ymlwith the defaults shown under Configuration. - Edit
config.ymlto suit your server. - Apply the changes with
/smpforge reload(Reload config and data), or restart the server.
Setup guide
- Drop SMPForge.jar into /plugins and restart.
- Run /smpforge and go through the four categories once. It takes a few minutes and it is the whole setup.
- Optional: /smpforge items to give totems a cooldown or a carry limit, /smpforge enchants to cap what you do not want.
- Optional: /smpforge ritual new revive, build the pattern, add a command.
Lifesteal and hardcore SMPs: ban totems, cap Mending, limit gapples to a handful, and build a revive ritual that gives a heart back.
Story and content SMPs: close the End until the plot opens it, switch off crystal damage for a scene, turn PvP on for the finale.
Normal survival: turn off creeper griefing and phantoms, cap enchants, leave the rest alone.
Commands
From plugin.yml. "Not set" in the permission column means plugin.yml attaches no permission to the command itself; the nodes the plugin checks are listed under Permissions.
| Command | Aliases | Usage | Description | Permission |
|---|---|---|---|---|
/smpforge | /forge, /smpf | /smpforge [items|enchants|ritual|rule|preset|kit|start|vanish|invsee|endersee|webhook|once|reload] | The SMPForge control panel. | not set |
Subcommands in detail
/smpforge Open the control panel.
/smpforge items [filter] Open the item manager, optionally filtered.
/smpforge enchants Open the enchant manager.
/smpforge ritual new <id> Create a ritual and open its editor.
/smpforge ritual <id> Edit a ritual.
/smpforge ritual <id> command <command> Add a command to a ritual.
/smpforge ritual <id> clearcommands Remove its commands.
/smpforge rule <id> [on|off] Flip a rule from console or a command block.
/smpforge kit save|give [player]|clear Save, hand out or forget the join kit.
/smpforge start [seconds] The start countdown (3 to 60 seconds, default 10).
/smpforge vanish Vanish or reappear.
/smpforge invsee <player> Look at a player's inventory.
/smpforge endersee <player> Open a player's ender chest.
/smpforge webhook <url|off> Set or remove the admin command log webhook.
/smpforge once reset <item> Let a one-craft-only item be crafted again.
/smpforge reload Reload config and data.
/smpforge preset <name> · preset save <name> · preset delete <name> · preset undo
Permissions
From plugin.yml.
| Node | Default | Description | Children |
|---|---|---|---|
smpforge.admin | operators | Open the panel and change every rule. | none |
smpforge.bypass | operators | Ignore every rule, item limit and enchant cap. | none |
Placeholders
Registered with PlaceholderAPI under the identifier smpforge (SMPForgePlaceholders.java). PlaceholderAPI must be installed for these to work.
| Placeholder | Returns |
|---|---|
%smpforge_combat% | true or false: combat tagged right now |
%smpforge_combat_seconds% | seconds of combat tag left, 0 when free |
%smpforge_vanished% | true or false |
%smpforge_rule_<id>% | the on/off message for a rule, e.g. %smpforge_rule_pvp% |
%smpforge_rule_<id>_raw% | true or false for a rule |
%smpforge_number_<id>% | a tuning number, e.g. %smpforge_number_pvp-damage% |
%smpforge_rules_on% | how many switches are on |
%smpforge_rules_total% | how many switches there are |
Configuration reference
The default files as they ship in the jar, with their comments. The plugin writes them to plugins/SMPForge/ on first start.
config.yml
Top-level keys:
| Key | Default | Comment above it |
|---|---|---|
worlds | [] (empty list) | SMPForge - the rules of your SMP, set from inside the game. Run /smpforge to open the control panel. Everything you change there is written to plugins/SMPForge/data/, so this file only holds the things you set once. Worlds the rules apply in. Empty means... |
items | section, 3 keys | none |
enchants | section, 2 keys | none |
rituals | section, 1 key | none |
combat | section, 2 keys | none |
start | section, 4 keys | none |
warden-heart | section, 1 key | none |
webhook | "" (empty) | A Discord webhook that hears every command an op or admin runs. Set it with /smpforge webhook <url>. |
webhook-format | "**{player}** ran `{command}`" | none |
webhook-hello | "SMPForge is listening to admin commands." | none |
theme | section, 11 keys | Every message below is written against these names, not against hex codes: <accent>Open</accent> rather than <#e0a333>Open</#e0a333>. Change a colour here and it changes on every screen at once. Ordinary MiniMessage still works, so <gradient:#a:#b> and... |
messages | section, 249 keys | none |
first-run-tip | true | On the very first start: one console line and one chat message for the first admin who joins, with buttons that open the panel and the presets. Each shows once ever. false turns both off. |
review-reminder | true | One thank-you line with the BuiltByBit review link: once in the console after install and once in chat for the first operator who joins. It never repeats and sends nothing anywhere. false turns it off. |
# SMPForge - the rules of your SMP, set from inside the game.
#
# Run /smpforge to open the control panel. Everything you change there is written to
# plugins/SMPForge/data/, so this file only holds the things you set once.
#
# Worlds the rules apply in. Empty means every world.
worlds: []
items:
cooldown-step: 5 # seconds added per click in the item manager
limit-step: 1 # carry limit added per right-click
limit-check-ticks: 40 # how often carry limits are checked (20 ticks = 1 second)
enchants:
scan-inventories: true # trim items that already break a cap
scan-ticks: 100
rituals:
radius: 3.0 # how far from the altar dropped items count
combat:
# Commands a combat-tagged player may still run. Everything else is refused until the tag ends.
allowed-commands: [msg, r, tell, w, reply]
kill-on-logout: true # logging out while tagged counts as dying
start:
teleport-to-spawn: true # gather everybody at spawn for the countdown
clear-inventory: false # wipe inventories when the SMP begins
give-kit: true # hand out the saved kit when it begins
spread-radius: 0 # scatter players this far from spawn (0 = leave them at spawn)
warden-heart:
max-health: 30 # the most health a player can reach with warden hearts (20 = 10 hearts)
# A Discord webhook that hears every command an op or admin runs. Set it with /smpforge webhook <url>.
webhook: ""
webhook-format: "**{player}** ran `{command}`"
webhook-hello: "SMPForge is listening to admin commands."
# ------------------------------------------------------------------------------------------------
# THEME
# ------------------------------------------------------------------------------------------------
# Every message below is written against these names, not against hex codes: <accent>Open</accent>
# rather than <#e0a333>Open</#e0a333>. Change a colour here and it changes on every screen at
# once. Ordinary MiniMessage still works, so <gradient:#a:#b> and <#ff0000> are fine anywhere.
theme:
accent: "#e0a333" # your colour: headings and anything the player is meant to click
accent2: "#eecc8f" # a lighter accent, for a second level of emphasis
title: "#f4f7ff" # screen titles
text: "#c2ccdd" # ordinary prose
muted: "#6b7a94" # hints, separators, anything the eye should skip
value: "#ffffff" # the numbers and names the player opened the screen to read
good: "#57e08a"
warn: "#ffc857"
bad: "#ff6b6b"
small-caps: false # ᴇхᴀᴍᴘʟᴇ - a garnish; whole menus in it read badly
# Real Minecraft item pictures beside the buttons and in the chest screens. Drawn from the
# client's own textures, so there is nothing to install and no resource pack: it needs a
# 1.21.9 or newer client, and older ones simply see the buttons as words.
item-icons: true
messages:
prefix: "<#c98b2e><bold>Forge</bold></#c98b2e> <muted>»</muted> "
no-permission: "<bad>You cannot do that.</bad>"
reloaded: "<value>Config and data reloaded.</value>"
help: "<text>/smpforge · items [filter] · enchants · ritual <id|new <id>> · rule <id> [on|off] · preset <name|list|save|undo> · kit save|give|clear · start [seconds] · vanish · invsee <player> · endersee <player> · webhook <url|off> · once reset <item> · reload</text>"
help-rule: "<text>/smpforge rule <id> [on|off]</text><newline><muted>{rules}</muted>"
help-ritual: "<text>/smpforge ritual new <id> · /smpforge ritual <id> · /smpforge ritual <id> command <command> · clearcommands</text>"
help-kit: "<text>/smpforge kit save · give [player] · clear</text>"
help-webhook: "<text>/smpforge webhook <url|off></text>"
help-once: "<text>/smpforge once reset <item></text>"
help-preset: "<text>/smpforge preset <name> · preset list · preset save <name> · preset delete <name> · preset undo</text>"
# ---- presets ----
panel-presets: "<white><icon:board></white><value>Presets</value>"
panel-presets-tip: "<text>Set the whole board at once: friendly, lifesteal, hardcore, UHC and your own.</text>"
presets-title: "<#c98b2e><bold>Presets</bold></#c98b2e>"
presets-intro: "<text>A preset sets every switch and number at once. Item rules, enchant caps, recipes and rituals stay as they are, and undo puts the board back.</text>"
presets-apply: "<white><icon:board></white><value>{title}</value>"
presets-apply-saved: "<white><icon:save></white><value>{title}</value><muted> (saved)</muted>"
presets-saved-tip: "<text>A board you saved, potion bans included.</text>"
presets-undo: "<white><icon:back></white><warn>Undo the last preset</warn>"
presets-undo-tip: "<text>Puts every switch and number back to how it was before.</text>"
presets-field: "<text>Save the current board as</text>"
presets-save: "<white><icon:save></white><good>Save the current board</good>"
presets-save-tip: "<text>Under the name above, to use again later. It is kept in data/presets.yml, so it can be copied to another server.</text>"
preset-row: "<value>{preset}</value><text>: {help}</text>"
preset-row-saved: "<value>{preset}</value><muted> (saved)</muted>"
preset-applied: "<text>Preset </text><value>{preset}</value><text> applied: {on} of {all} switches on. </text><muted>/smpforge preset undo puts the board back.</muted>"
preset-undone: "<text>The board is back to how it was before the last preset.</text>"
preset-no-undo: "<bad>There is no preset to undo.</bad>"
preset-unknown: "<bad>No preset called </bad><value>{preset}</value><bad>.</bad> <muted>/smpforge preset list</muted>"
preset-bad-name: "<bad>A preset name is 1 to 24 lower case letters, digits, - or _.</bad>"
preset-reserved: "<bad>{preset} is a built-in preset. Pick another name.</bad>"
preset-saved: "<text>The board is saved as preset </text><value>{preset}</value><text>.</text>"
preset-deleted: "<text>Preset </text><value>{preset}</value><text> deleted.</text>"
# The one-time tip for the first admin who joins (first-run-tip below turns it off).
first-run: "<text>SMPForge is installed. Set your SMP's rules in game: </text><click:run_command:'/smpforge'><hover:show_text:'Open the control panel'><accent><u>open the panel</u></accent></hover></click><text> or </text><click:run_command:'/smpforge preset'><hover:show_text:'Friendly, lifesteal, hardcore, UHC and more'><accent><u>start from a preset</u></accent></hover></click><text>. This tip only shows once.</text>"
# These four names stay in quotes: YAML reads a bare on, off, yes or no as true or false,
# and the message would never be found.
"on": "on"
"off": "off"
"yes": "<good>yes</good>"
"no": "<bad>no</bad>"
none: "none"
banned: "<bad>banned</bad>"
every-world: "every world"
close: "<white><icon:close></white><text>Close</text>"
back: "<white><icon:back></white><text>Back</text>"
back-tip: "<text>Back to the panel.</text>"
# ---- panel ----
panel-title: "<#c98b2e><bold>SMPForge</bold></#c98b2e>"
panel-intro: "<text>Rules apply in: </text><value>{worlds}</value>"
panel-category: "<white><icon:combat></white><value>{category}</value><text> ({on}/{all} on)</text>"
panel-category-tip: "<text>Switch {category} mechanics on and off.</text>"
panel-numbers: "<white><icon:settings></white><value>Tuning</value>"
panel-numbers-tip: "<text>Damage, knockback, cooldowns.</text>"
panel-items: "<white><icon:items></white><value>Item manager</value>"
panel-items-tip: "<text>Cooldowns, carry limits and bans per item.</text>"
panel-enchants: "<white><icon:enchant></white><value>Enchant manager</value>"
panel-enchants-tip: "<text>Cap or ban enchantments.</text>"
panel-rituals: "<white><icon:ritual></white><value>Rituals</value>"
panel-rituals-tip: "<text>Items on an altar that run commands.</text>"
panel-potions: "<white><icon:empty></white><value>Potion bans</value><text> ({count} banned)</text>"
panel-potions-tip: "<text>Effects nobody may have from a potion, arrow or beacon.</text>"
panel-recipes: "<white><icon:bind></white><value>Custom recipes</value><text> ({count})</text>"
panel-recipes-tip: "<text>Draw your own crafting recipes.</text>"
panel-tools: "<white><icon:staff></white><value>Staff tools</value>"
panel-tools-tip: "<text>The join kit, the starting gun, vanish.</text>"
# ---- potion bans ----
potions-title: "<#c98b2e><bold>Potion bans</bold></#c98b2e>"
potions-intro: "<text>ON means players may have the effect. OFF bans it from potions, arrows and beacons.</text>"
potions-tip: "<muted>Click to flip {effect}.</muted>"
effect-banned: "<bad>That effect is banned on this server.</bad>"
# ---- custom recipes ----
recipes-title: "<#c98b2e><bold>Custom recipes</bold></#c98b2e>"
recipes-intro: "<text>Every recipe here works in any crafting table, live.</text>"
recipes-empty: "<text>No custom recipes yet. Name one below.</text>"
recipes-field: "<text>Name for a new recipe</text>"
recipes-new: "<white><icon:yes></white><good>New recipe</good>"
recipes-new-tip: "<text>Opens the editor for the name above.</text>"
recipes-edit: "<white><icon:bind></white><value>{id}</value><text> makes {result}</text>"
recipes-edit-tip: "<text>Open the recipe editor.</text>"
recipe-gui-title: "<muted>Recipe: <value>{id}</value></muted>"
recipe-slot-empty: "<text>Empty</text>"
recipe-result-empty: "<text>Result</text>"
recipe-slot-tip: "<muted>Hold an item and click to put it here.</muted>"
recipe-slot-clear: "<muted>Right-click to clear.</muted>"
recipe-arrow: "<muted>makes</muted>"
recipe-info: "<value>Recipe {id}</value>"
recipe-info-count: "<text>{count} ingredient(s) in the grid.</text>"
recipe-info-no-result: "<muted>Put the result in the slot on the right.</muted>"
recipe-info-live: "<good>Saved recipes work at once.</good>"
recipe-save: "<good>Save</good>"
recipe-save-tip: "<muted>Registers the recipe as drawn.</muted>"
recipe-delete: "<bad>Delete this recipe</bad>"
recipe-delete-tip: "<muted>Cannot be undone.</muted>"
recipe-incomplete: "<bad>A recipe needs at least one ingredient and a result.</bad>"
recipe-saved: "<text>Recipe </text><value>{id}</value><text> saved: it makes {item}.</text>"
recipe-deleted: "<text>Recipe </text><value>{id}</value><text> deleted.</text>"
# ---- staff tools ----
tools-title: "<#c98b2e><bold>Staff tools</bold></#c98b2e>"
tools-kit-saved: "<text>Join kit: </text><value>{count} item(s)</value>"
tools-kit-none: "<text>Join kit: </text><muted>none saved</muted>"
tools-webhook-set: "<text>Admin webhook: </text><good>on</good>"
tools-webhook-none: "<text>Admin webhook: </text><muted>off · /smpforge webhook <url></muted>"
tools-kit-save: "<white><icon:save></white><good>Save my inventory as the kit</good>"
tools-kit-save-tip: "<text>Armour and off hand included.</text>"
tools-kit-get: "<white><icon:kit></white><value>Give me the kit</value>"
tools-kit-get-tip: "<text>To check what new players get.</text>"
tools-kit-clear: "<white><icon:delete></white><bad>Forget the kit</bad>"
tools-kit-clear-tip: "<text>Nothing is handed out until a new one is saved.</text>"
tools-vanish: "Vanish"
tools-vanish-tip: "<text>Players cannot see you; admins still can.</text>"
tools-start-field: "<text>Countdown seconds</text>"
tools-start: "<white><icon:announce></white><good>Start the SMP</good>"
tools-start-tip: "<text>Counts down on every screen, then lets everybody go.</text>"
kit-saved: "<text>Kit saved: </text><value>{count} item(s)</value><text>.</text>"
kit-given: "<text>Here is your kit.</text>"
kit-gave: "<text>Gave the kit to </text><value>{player}</value><text>.</text>"
kit-cleared: "<text>Kit cleared.</text>"
kit-none: "<bad>No kit saved. /smpforge kit save</bad>"
kit-who: "<text>/smpforge kit give <player></text>"
staff-who: "<text>Name an online player.</text>"
vanish-on: "<text>You are </text><value>vanished</value><text>.</text>"
vanish-off: "<text>You are </text><value>visible</value><text> again.</text>"
invsee-title: "<muted>{player}'s inventory</muted>"
webhook-set: "<text>Webhook set. Admin commands are reported there.</text>"
webhook-off: "<text>Webhook off.</text>"
once-reset: "<text>{item} can be crafted once more.</text>"
start-already: "<bad>A countdown is already running.</bad>"
start-title: "<value>{seconds}</value>"
start-title-soon: "<#c98b2e><bold>{seconds}</bold></#c98b2e>"
start-subtitle: "<text>The SMP starts soon</text>"
start-go: "<#c98b2e><bold>GO!</bold></#c98b2e>"
start-go-sub: "<text>Good luck.</text>"
start-began: "<value>The SMP has begun.</value>"
# ---- combat tag ----
combat-tagged: "<bad>You are in combat. No commands, and logging out is a death.</bad>"
combat-free: "<text>You are out of combat.</text>"
combat-bar: "<bad>⚔ In combat </bad><value>{seconds}s</value>"
combat-no-commands: "<bad>You cannot use commands in combat.</bad>"
combat-no-water: "<bad>No water in a fight.</bad>"
combat-logged: "<value>{player}</value><text> logged out in combat and died for it.</text>"
# ---- the rest of the board ----
afk-protected: "<text>{player} is AFK and cannot be hurt.</text>"
breach-swap: "<bad>No breach swapping: hold the mace before you swing it.</bad>"
death-invisible: "<text>{player} died.</text>"
ban-on-death-reason: "<bad>You died. This SMP is one life only.</bad>"
spectator-on-death: "<text>You died. You can watch, but that was your one life.</text>"
health-tag: "<red>❤</red>"
golden-head-name: "<#ffd25f><bold>Golden Head</bold></#ffd25f>"
golden-head-lore: "<muted>Right-click: Regeneration II for 8s, Absorption for 2m.</muted>"
golden-head-eaten: "<text>You feel the gold work.</text>"
warden-heart-name: "<#3ee4d4><bold>Warden Heart</bold></#3ee4d4>"
warden-heart-lore: "<muted>Right-click: one extra heart, for good.</muted>"
warden-heart-used: "<text>You now have </text><value>{hearts} hearts</value><text>.</text>"
warden-heart-full: "<text>Your heart cannot take any more.</text>"
item-once-gone: "<bad>{item} has already been crafted on this server. There is only one.</bad>"
item-once-single: "<bad>{item} is a one-off: craft it one at a time.</bad>"
item-once-crafted: "<value>{player}</value><text> crafted the only </text><value>{item}</value><text>.</text>"
# The icon rows: a small item beside a bold name and a grey line, so a screen can be scanned.
row-category: "<accent><bold>{category}</bold></accent>"
row-category-detail: "<text>{on} of {all} switched on</text>"
row-number: "<accent><bold>{title}</bold></accent><text> · </text><value>{value}</value>"
row-number-detail: "<muted>{help}</muted>"
row-ritual: "<accent><bold>{name}</bold></accent><muted> {id}</muted>"
row-ritual-detail: "<text>{items} item(s) on {altar}, trigger {trigger}</text>"
category-title: "<#c98b2e><bold>{category}</bold></#c98b2e>"
category-intro: "<text>Click a switch to flip it. Changes are live at once.</text>"
switch-on: "<white><icon:yes></white><good><bold>ON</bold></good> <value>{title}</value>"
switch-off: "<white><icon:no></white><bad><bold>OFF</bold></bad> <text>{title}</text>"
switch-tip: "<muted>Click to flip.</muted>"
numbers-title: "<#c98b2e><bold>Tuning</bold></#c98b2e>"
numbers-intro: "<text>Numbers that change how the game feels.</text>"
numbers-line: "<value>{title}</value><text>: </text><#c98b2e>{value}</#c98b2e><text> · {help}</text>"
numbers-down: "<white><icon:down></white><text>-</text> <value>{title}</value>"
numbers-up: "<white><icon:up></white><text>+</text> <value>{title}</value>"
rituals-title: "<#c98b2e><bold>Rituals</bold></#c98b2e>"
rituals-intro: "<text>Drop the items around the altar, right-click it with the trigger.</text>"
rituals-line: "<value>{name}</value><text> ({id}): {items} item(s) on {altar}, trigger {trigger}</text>"
rituals-empty: "<text>No rituals yet. /smpforge ritual new <id></text>"
rituals-edit: "<white><icon:ritual></white><value>Edit {name}</value>"
rituals-edit-tip: "<text>Open the ritual editor.</text>"
# ---- item manager ----
item-gui-title: "<muted>Item manager <text>{page}/{pages}</text></muted>"
item-name: "<value>{item}</value>"
# An item that already has a rule on it is named in the accent colour and lit up, so the grid
# says which ones you have touched without opening them one by one.
item-name-ruled: "<accent>{item}</accent>"
item-gui-help: "<white><icon:help></white><value>How this works</value>"
item-gui-none: "<white><icon:items></white><muted>Nothing picked</muted>"
item-gui-none-tip: "<text>Click an item in the grid. It shows up here.</text>"
item-line-cooldown: "<text>Cooldown: </text><#c98b2e>{value}</#c98b2e>"
item-line-limit: "<text>Carry limit: </text><#c98b2e>{value}</#c98b2e>"
item-line-banned: "<text>Banned: </text>{value}"
item-line-craft: "<text>Craftable: </text>{value}"
item-help-left: "<muted>Left-click: cooldown +5s (shift: -5s)</muted>"
item-help-right: "<muted>Right-click: carry limit +1 (shift: -1)</muted>"
item-help-shift: "<muted>Middle-click: favourite</muted>"
item-gui-filter: "<white><icon:search></white><value>All items</value>"
item-gui-filter-tip: "<text>Filter: {filter}. Use /smpforge items <filter>.</text>"
item-gui-configured: "<white><icon:items></white><value>Only configured</value>"
item-gui-configured-tip: "<text>{count} item(s) have a rule.</text>"
item-gui-ban: "<white><icon:ban></white><bad>Ban selected item</bad>"
item-gui-ban-tip: "<text>Click an item first, then this.</text>"
item-gui-craft: "<white><icon:items></white><value>Toggle crafting</value>"
item-gui-craft-tip: "<text>Stops the selected item being crafted.</text>"
item-gui-once: "<white><icon:tier></white><value>One craft only</value>"
item-gui-once-tip: "<text>The selected item can be crafted once on the whole server.</text>"
item-gui-glow: "<white><icon:hologram></white><value>Toggle glow</value>"
item-gui-glow-tip: "<text>Gives every one of the selected item the enchantment shimmer.</text>"
item-line-once: "<text>One craft only: </text><#c98b2e>{count} made</#c98b2e>"
item-line-glow: "<text>Glows</text>"
item-pick-first: "<text>Click an item in the grid first.</text>"
item-updated: "<text>Updated </text><value>{item}</value><text>.</text>"
gui-prev: "<white><icon:back></white><value>Previous page</value>"
gui-next: "<white><icon:next></white><value>Next page</value>"
gui-page: "<text>Page {page} of {pages}</text>"
# ---- enchant manager ----
enchant-gui-title: "<muted>Enchant manager <text>{page}/{pages}</text></muted>"
enchant-name: "<value>{enchant}</value>"
enchant-line-cap: "<text>Max level: </text><#c98b2e>{value}</#c98b2e><text> (vanilla {vanilla})</text>"
enchant-help-left: "<muted>Left-click: cap +1</muted>"
enchant-help-right: "<muted>Right-click: cap -1</muted>"
enchant-help-shift: "<muted>Shift-click: ban</muted>"
enchant-gui-reset: "<white><icon:enchant></white><value>Reset every cap</value>"
enchant-gui-reset-tip: "<text>Back to vanilla levels.</text>"
enchant-reset: "<text>Every enchant is back to vanilla.</text>"
enchant-capped: "<text>An enchantment on your gear was lowered to this server's cap.</text>"
# ---- rituals ----
ritual-gui-title: "<muted>Ritual: <value>{name}</value></muted>"
ritual-slot-empty: "<text>Empty slot</text>"
ritual-slot-tip: "<muted>Hold an item and click to place it here.</muted>"
ritual-slot-clear: "<muted>Right-click to clear.</muted>"
ritual-altar: "<white><icon:ritual></white><value>Altar: {block}</value>"
ritual-altar-tip: "<muted>Hold a block and click to change it.</muted>"
ritual-trigger: "<white><icon:ritual></white><value>Trigger: {item}</value>"
ritual-trigger-tip: "<muted>Hold an item and click to change it.</muted>"
ritual-consume-on: "<good>Consumes the items</good>"
ritual-consume-off: "<text>Leaves the items</text>"
ritual-consume-tip: "<muted>Click to flip.</muted>"
ritual-effects-on: "<good>Particles and sound</good>"
ritual-effects-off: "<text>Silent</text>"
ritual-effects-tip: "<muted>Click to flip.</muted>"
ritual-delete: "<white><icon:delete></white><bad>Delete this ritual</bad>"
ritual-delete-tip: "<muted>Cannot be undone.</muted>"
ritual-info: "<value>Ritual {id}</value>"
ritual-info-items: "<text>Needs {count} item(s) on the ground.</text>"
ritual-info-command: "<text> - {command}</text>"
ritual-info-no-commands: "<text>No commands yet: /smpforge ritual <id> command <command></text>"
ritual-created: "<text>Ritual </text><value>{name}</value><text> created.</text>"
ritual-deleted: "<text>Ritual </text><value>{name}</value><text> deleted.</text>"
ritual-unknown: "<bad>No ritual called </bad><value>{id}</value>"
ritual-command-added: "<text>{name} now runs {count} command(s).</text>"
ritual-commands-cleared: "<text>Commands of {name} cleared.</text>"
ritual-hold-block: "<text>Hold a block first.</text>"
ritual-hold-item: "<text>Hold an item first.</text>"
ritual-missing: "<text>The ritual needs </text><value>{count}x {item}</value><text> on the ground.</text>"
ritual-done: "<#c98b2e>{ritual}</#c98b2e><text> completed.</text>"
# ---- rules in play ----
rule-unknown: "<bad>No rule called </bad><value>{rule}</value>"
rule-set: "<value>{rule}</value><text> is now </text><value>{state}</value><text>.</text>"
rule-off: "<bad>{what} are disabled on this server.</bad>"
pvp-off: "<bad>PvP is off on this server.</bad>"
too-high: "<bad>You cannot glide above Y {height}.</bad>"
item-banned: "<bad>{item} is banned on this server.</bad>"
item-no-craft: "<bad>{item} cannot be crafted here.</bad>"
item-limit: "<text>You may only carry </text><value>{limit}x {item}</value><text>; the rest dropped.</text>"
# On the very first start: one console line and one chat message for the first admin who joins,
# with buttons that open the panel and the presets. Each shows once ever. false turns both off.
first-run-tip: true
# One thank-you line with the BuiltByBit review link: once in the console after install and once
# in chat for the first operator who joins. It never repeats and sends nothing anywhere. false turns it off.
review-reminder: trueConfig guide
The annotated summary from the store page. Where it and the default file above differ, the file is what the plugin ships.
Almost nothing lives in config.yml, because the point is that you set the rules in game. What is there:
worlds: [] which worlds the rules apply in; empty = all of them
items:
cooldown-step: 5 seconds added per click in the item manager
limit-step: 1
limit-check-ticks: 40
enchants:
scan-inventories: true trim gear that already breaks a cap
rituals:
radius: 3.0 how far from the altar dropped items count
combat:
allowed-commands: [msg, r, tell, w, reply]
kill-on-logout: true
start:
teleport-to-spawn: true
clear-inventory: false
give-kit: true
spread-radius: 0
warden-heart:
max-health: 30
webhook: "" set with /smpforge webhook <url>
messages: every line the plugin says, MiniMessage
Your rules, item rules, enchant caps and rituals are written to plugins/SMPForge/data/ as plain YAML, so you can copy them to another server.
FAQ
Which servers and versions does it run on?
It needs Paper or a Paper fork such as Purpur, because it uses Paper-only APIs (the dialog API for its menus, Adventure text components). Spigot and CraftBukkit are not supported. plugin.yml declares api-version 1.21, the jar is built against Paper API 1.21.11, and it needs Java 21 or newer.
Does it need other plugins?
No other plugin is required (plugin.yml has no hard dependencies). Optional: PlaceholderAPI (plugin.yml softdepend), used when present.
How do I apply config changes?
Edit plugins/SMPForge/config.yml and run /smpforge reload (reload config and data). A restart works too.
Does it run on Folia, or for Bedrock players?
Not tested on Folia, and plugin.yml does not declare folia-supported. Bedrock players (through Geyser) have not been tested either.
What licence do I get?
The licence terms are the BuiltByBit EULA shown on the listing. There is no licence key to enter, and the plugin never contacts a licence server.
Links
- BuiltByBit: listing coming soon
- Support Discord: discord.gg/KG4ubAZEuw
- All plugins on BuiltByBit: the collection
- More plugins: all plugins
- Custom work: commissions
Support
Questions, bugs or ideas: the active support Discord or the discussion tab on this page. When something breaks, include your server version and the error from the console.
Full setup guide, commands, permissions and config reference: documentation.