
Every essential your server needs, in one free plugin
Donut Essentials is a free, open-source essentials plugin for Paper, Folia and Purpur, from Minecraft 1.20.1 to 26.3, in one jar.
Homes, warps, spawn and random teleport. Teleport requests with clickable [Accept] [Deny]. Kits that keep every item detail. A built-in economy for Vault. Chat formats, private messages, offline mail and AFK. And the moderation suite Donut Essentials is known for, now with history, alts, freeze and reports. All of it has menus, all of it runs on Folia, and none of it takes over vanilla commands unless you ask.
3.0 "The All-in-One Update" turns the moderation toolkit into a complete essentials plugin:
- teleports: TPA with buttons,
/back, a title countdown that moving or damage cancels, rank tiers and combat tags; - homes, warps and spawn with menus, and a safe random teleport;
- kits made from your inventory, with a kits menu, previews, cooldowns, once-only kits and costs;
- an economy with
/pay,/baltop(a menu) and payments shown to offline players; - chat formats with LuckPerms prefixes, mentions,
[item],/msg,/mail,/ignoreand AFK; - moderation history, warning escalation, alt alerts, freeze, reports, staff chat and Discord logs;
- a rules screen new players accept (a native dialog on 1.21.7+), server links and a player hub;
/donutessentials import essentials: switch from EssentialsX with one command.
Each release is played by bots on 16 Paper and Folia servers from 1.20.1 to 26.3, including an upgrade from 2.0.0, a switch from EssentialsX and MySQL storage.




/menu opens a player hub: homes, warps, kits, spawn, random teleport, money, mail and settings, with the
player's balance, homes and play time on their head. Buttons for switched-off commands disappear by themselves.
- Every menu is in
menus.yml: titles, sizes, slots, items, names and lore, with pages for long lists. /settingsgives every player personal switches: teleport requests, auto-accept, private messages, mention pings, payments and join messages.


/tpaand/tpaherewith [Accept] [Deny] buttons, and [Cancel] for the sender./tptogglerefuses requests,/tpautoaccepts them all.- One teleport engine for homes, warps, spawn, requests,
/backand random teleport: a title countdown that moving or taking damage cancels, cooldowns and costs per kind. - Rank tiers (
donutessentials.tier.vip): shorter warmups, cooldowns and costs, more homes. /backreturns to where you teleported from, or where you died.- Combat tags: hitting or being hit by a player tags both for 15 seconds, with an action-bar timer. Tagged players can't teleport or use the commands you list, and logging out in combat kills them.


/sethome,/home,/delhome, and a homes menu: click to go, shift + right-click to delete, a button to set one where you stand. Each icon shows the dimension.- Limits from a default, rank tiers and
donutessentials.homes.<n>; worlds where homes are off. - Staff reach anyone's homes:
/home Kiri:base,/homes Kiri.


/setwarp shopuses the item in your hand as the icon./warpslists each warp with its place and visit count; optional per-warp permissions./spawnand/setspawn, plus/setspawn firstfor where new players start. Spawn on first join, on every join (optional) and on respawn without a bed./rtp: a safe random spot (no water, lava or cactus; blocked biomes) within a ring around spawn, per world. Chunks load in the background. With Donut RTP installed, it steps aside.


/createkit warrior 1dmakes a kit from your inventory; the held item is its icon./editkitopens it to change it.- Every detail of every item is kept: enchantments, attributes, names, lore, custom model data, books and potions, stored in Paper's versioned item format so kits survive Minecraft updates.
- A kits menu shows each kit as ready, on cooldown, claimed or locked; right-click to preview the items.
- Cooldowns, once-only kits, costs, per-kit permissions, a first-join kit, and
/kit warrior Kirifor staff.


- A built-in economy registered with Vault, so shops and jobs plugins use it. If another economy plugin is installed, it wins and Donut Essentials uses it.
/balance,/pay Kiri 2.5k,/paytoggle, and the richest players menu (/baltop).- Payments made while you were offline are listed when you join.
/eco give|take|set|resetworks on offline players and from the console. A daily economy log.- Starting balance, a balance limit, the smallest payment and the currency format are yours to set.


- Chat formats with prefixes and suffixes from your permissions plugin (LuckPerms through Vault) and PlaceholderAPI, and a format per group.
- [item] shows your held item with its full tooltip. Mentions highlight and ping the player.
- Colours by permission, anti-spam, a word filter, link blocking,
/chat clear|lock|slow,/broadcastwith a title, and auto announcements. /msg,/r,/ignore,/msgtoggleand social spy. Mail (/mail send) waits for offline players and is announced with a [Read] button.- AFK:
/afk [reason], automatic after idle minutes,[AFK]in the tab list, and AFK players don't hold up night skipping. /nickwith colours by permission (no copying other players' names) and/realname.


- Bans, temp-bans, mutes, warnings, notes, kicks and IP bans with IDs, silent mode (
-s), reason layouts (@cheating) and time layouts (#1st-offence). - History for every player (
/history,/check,/banlist),/change-reasonand record deletion. - Warning escalation: e.g. the third warning mutes for an hour.
- Alts:
/altslists accounts seen on the same addresses, and staff are alerted when someone joins from a banned account's address. - Freeze a player (no moving, building or commands); logging out is reported or banned.
- Reports:
/report Rook flying; staff get [Teleport] [Claim] buttons and a/reportsmenu. - Staff chat (
/sc), command spy, and Discord logs of punishments and reports through a channel webhook, no bot needed.


- Vanish hides you everywhere: join and leave messages, the tab list, item pickups, mobs and the online count. It stays on when you rejoin.
/invsee(live, editing by permission),/endersee,/whois,/seen,/offlinetpand/playerlist.- Maintenance mode with a whitelist, timers and its own server-list message, and IP lock for staff accounts
(addresses, wildcards
1.2.3.*and ranges1.2.3.0/24). /fly,/god,/heal,/feed,/speed,/gm,/hat,/repair,/top,/near,/day,/nightand more.


- With
rules.require-accept, new players get a rules screen they must accept before they can chat, build or use commands: a native dialog on 1.21.7+, clickable buttons before that. Change the rules and bump the version, and everyone accepts again. - Server links in the pause menu (Minecraft 1.21+): Discord, website, store…
- A message of the day on join (
/motd) and first-join messages with the player's number.


- Every module can be switched off in
config.yml: its commands, listeners and tasks are gone. commands.yml: switch off or rename any command and add aliases. Vanilla commands (/gamemode,/give,/tp…) are never taken over unless you list them; ours stay reachable as/donutessentials:<name>.- Command rules: a cooldown or a cost for any command, other plugins' included.
- Every message is MiniMessage (or
&codes) inmessages.yml, every menu inmenus.yml, every sound inconfig.yml. New settings are added on every update without touching yours. - One database: SQLite, or MySQL/MariaDB with a table prefix.


- Install Donut Essentials next to EssentialsX and start the server.
- Run
/donutessentials import essentialsfor a dry run: what would be imported, and nothing changed. - Run
/donutessentials import essentials confirm. Balances, homes, nicknames, ignores, warps, the spawn, kits and bans come over. Names Donut Essentials already has are kept. - Remove EssentialsX.


Replace the jar and restart. Donut Essentials (or Fssentials) 2.x upgrades on the first start:
- Punishments, IP locks and the maintenance whitelist move into the database (the old files are renamed
.imported). config.ymlkeeps your values (the old file is saved asconfig-2.x.yml);messages.ymlis replaced with the 3.0 messages (yours is saved asmessages-2.x.yml).- 2.x commands, punishment syntax and permission nodes (
fssentials.*,donutessentials.punish.*) keep working. - Every new feature is on. Switch off what you don't want under
modules:.


All of these are optional:
| Plugin | What Donut Essentials does with it |
|---|---|
| Vault (or VaultUnlocked) | Registers its economy; reads prefixes, suffixes and groups for chat |
| LuckPerms (or any Vault permissions plugin) | Chat prefixes and group formats, rank tiers |
| PlaceholderAPI | 30+ placeholders (balance, baltop, homes, AFK, combat, play time…), and placeholders in chat formats, the MOTD and announcements |
| MariaDB or MySQL | Storage instead of SQLite, with a table prefix |
| Discord | Moderation and report logs through a channel webhook |
| Donut RTP | Takes over /rtp when installed |
For developers: DonutEssentials.getApi() (players, homes, warps, kits, balances, punishments, AFK, vanish,
combat) and nine events, from EssentialsTeleportEvent and KitClaimEvent to PaymentEvent and
PunishmentCreateEvent.


| Server | Minecraft | Java |
|---|---|---|
| Paper, Purpur and other Paper forks | 1.20.1 – 1.20.4 | 17 |
| Paper, Purpur and other Paper forks | 1.20.5 – 1.21.11 | 21 |
| Paper, Purpur and other Paper forks | 26.1 – 26.3 | 25 |
| Folia | 1.20.1 – 26.3 | 17 – 25 |
One jar for all of them. Native dialogs need 1.21.7 or newer and server links 1.21; older servers get chat buttons. Spigot and Bukkit are not supported (they lack Paper's API): the plugin says so and stops.
Each release is played by bots on Paper 1.20.1, 1.20.4, 1.20.6, 1.21.1, 1.21.4, 1.21.8, 1.21.11, 26.1.2, 26.2 and 26.3 and Folia 1.20.4, 1.21.4, 1.21.11 and 26.3, with SQLite and MySQL, with Vault, VaultUnlocked or no Vault at all: about 40 checks each, from the first join to a restart, including an upgrade from 2.0.0 and a switch from EssentialsX. The console must stay free of errors.

| Area | Players | Staff |
|---|---|---|
| Teleports | /tpa, /tpahere, /tpaccept, /tpdeny, /tpacancel, /tptoggle, /tpauto, /back, /rtp |
/tphere, /tpo |
| Homes | /sethome, /home, /delhome, /homes |
/home <player>:<home>, /homes <player> |
| Warps and spawn | /warp, /warps, /spawn |
/setwarp, /delwarp, /setspawn [first] |
| Kits | /kit [kit], /kits |
/createkit, /editkit, /delkit, /kit <kit> <player> |
| Economy | /balance, /pay, /paytoggle, /baltop |
/eco give|take|set|reset |
| Chat and messages | /msg, /r, /ignore, /msgtoggle, /mail, /afk, /realname |
/chat, /broadcast, /nick, /socialspy |
| Moderation | /report |
/ban, /tempban, /mute, /tempmute, /warn, /kick, /note, /banip, /unban… /history, /check, /alts, /freeze, /reports, /sc, /commandspy |
| Staff | /vanish, /invsee, /endersee, /whois, /offlinetp, /maintenance, /iplock |
|
| Everything else | /menu, /settings, /rules, /motd, /seen, /playtime, /ping, /trash |
/fly, /god, /heal, /feed, /speed, /gm, /craft, /enderchest, /hat, /repair, /top, /near, /day, /night |
| Admin | /donutessentials info|reload|import essentials (/dess) |
Every command has the permission donutessentials.command.<name>: player commands default to everyone, staff ones to
operators. A few more:
| Permission | Default | |
|---|---|---|
donutessentials.tier.<name> |
nobody | A rank tier: faster, cheaper teleports and more homes |
donutessentials.homes.<n> |
nobody | Home limit |
donutessentials.bypass.warmup, .cooldown, .cost |
op | Teleport rules |
donutessentials.kit.<name> |
nobody | Per-kit access (when switched on) |
donutessentials.chat.color, .item |
op, everyone | Chat colours, [item] |
donutessentials.vanish.see, donutessentials.invsee.edit |
op | Staff |
donutessentials.* |
op | Everything except the exempt and bypass nodes |

Can it replace EssentialsX? For most servers, yes: teleports, homes, warps, spawn, kits, economy, chat, messages,
mail, AFK, moderation and the everyday utilities. /donutessentials import essentials brings your data over. Jails,
portals, holograms and sign shops are left to plugins that do them better.
Does it work on Folia? Yes, every feature, on every Folia version from 1.20.1 to 26.3.
Will it break /gamemode or /tp? No. Vanilla commands stay vanilla unless you add them to
commands.take-over-vanilla.
I only want the moderation tools. Switch the other modules off under modules: in config.yml. Nothing of a
switched-off module stays loaded.
Does it need Vault? No. It needs Vault (or VaultUnlocked) only for other plugins to see its economy, and for chat prefixes from your permissions plugin.
Several servers? Use one database per server for now; punishments shared across a network are on the roadmap.
Will my 2.x punishments survive? Yes. They move into the database on the first start; back up
plugins/DonutEssentials/ first anyway.





!Chat with prefixes, a mention and [item]



Discord: discord.gg/TJc3CxR4jK · Source: GitHub (Apache 2.0) · Support the project: nightbeam.dev/support

