Donut RTP & RTP Zone
2.0.0A powerful and polished teleportation plugin designed for Minecraft servers.
2.0.0latest2 days ago DonutRTP 2.0.0: The Zone Update
A full rewrite of DonutRTP. One jar runs on Paper, Folia, Purpur, Spigot and Bukkit, Minecraft 1.20.1 to 26.3, and your 1.x setup upgrades itself on the first start.New
Group RTP zones
- GROUP zones: one countdown for everyone on the pad. When it ends, everyone still inside lands together, a few blocks apart (spread). - Minimum players: the countdown waits formin-players, and the zone shows how many more it needs. - INDIVIDUAL zones still work like 1.x: your own countdown starts when you walk in. - Any number of zones, made in game. Mark two corners with/rtpadmin pos1and/rtpadmin pos2, then run/rtpadmin zone create <name> <destination>. You can use a WorldGuard region instead (... region <id>). - Every setting changes with/rtpadmin zone set <name> <key> <value>, without a restart. - Countdown on the title, action bar and boss bar, each switchable per zone. - Per-zone cooldown and permission. Players on cooldown are told how long is left, and join the zone when it runs out. - Jumping never counts as leaving a zone.Destinations
- Any number of destinations, not just Overworld, Nether and End. Each has its own: - world, square or circle shape, centre (or the world spawn), minimum and maximum distance, and heights; - biome allow and deny lists (oceans and rivers are denied in the Overworld by default); - permission, cooldown, Vault cost and menu item. - The world border is always respected, with a margin. -/rtp <destination>teleports without the menu, with tab completion. -/rtp player <player> [destination]lets admins send someone, with no warmup, cooldown or cost.The menu
- Each item shows the player's cooldown ("Available in 4m 12s"), the cost, and a lock when they lack the permission. - It updates every second while open. - Icons can be any item, a HeadDatabase head (hdb-1234), or a player head from a texture, UUID or name.Safety
- Landing protection: no fall damage for 5 seconds and no damage at all for 3 seconds after landing (both configurable). - Claims and regions avoided: never land inside a WorldGuard region or a GriefPrevention claim. - Never land somewhere unsafe: water, lava, fire, magma, powder snow, cobwebs, berry bushes, cactus, the Nether roof, the void, or a tree. - Never beside lava, or under lava that would pour down once the chunk starts ticking.Cooldowns, costs and ranks
- Cooldowns are saved to disk and survive restarts. - Cooldowns can be shared or per destination. - Shorter cooldowns per rank:cooldown.ranks: { vip: 120 }gives players withdonutrtp.cooldown.vipa two-minute cooldown. The lowest one a player has wins. - Costs through Vault, taken only once the player has landed, and refunded if the teleport fails. - Bypass permissions:donutrtp.cooldown.bypass,donutrtp.cost.bypassanddonutrtp.warmup.bypass.Warmup
- Taking damage cancels the warmup (it can be turned off). - Being teleported away by something else also counts as moving. - The countdown can show on the action bar, a title or both, with an optional tick sound.Integrations
- PlaceholderAPI: -%donutrtp_cooldown%and%donutrtp_cooldown_seconds%; -%donutrtp_cooldown_<destination>%; -%donutrtp_zone%; -%donutrtp_zone_<name>_countdown%and%donutrtp_zone_<name>_players%, for holograms and scoreboards. - Developer API: -RtpPreTeleportEventis cancellable and can change where the player lands; -RtpTeleportEventfires after landing; - both carry the destination and the source (command, menu, admin or zone). - Landing commands: console commands run after each teleport, with{player},{world},{x},{y},{z}and{destination}.Admin
-/rtpadmin infoshows the platform, the hooks, each destination with its ready spots, and the zones. - A typo never wipes your setup. Ifconfig.ymlorzones.ymlis not valid YAML,/rtpadmin reloadsays where the mistake is and keeps the previous settings.zones.ymlis never overwritten while it cannot be read. - When a player's search finds nothing, the console says why, at most every five minutes per destination: - no safe ground; - denied biomes; - claims and regions; - or chunks still generating on a busy server.Fixed
- Lag spikes on `/rtp`. 1.x loaded up to 60 chunks one after another on the main thread for every teleport. 2.0 loads them asynchronously on Paper and Folia, uses each loaded chunk fully, and keeps a few spots per destination ready in advance. Spigot loads at most one chunk per tick. - 1.20.1 to 1.20.4 servers on Java 17 could not load 1.5.x: it was built for Java 21. 2.0 is built for Java 17. - Spigot errors on the warmup: the action bar used a Paper-only API. Spigot now uses its own chat API. - Folia: zone state was shared between region threads without protection. Every player, block and chunk is now touched only from the thread that owns it.Changed
- Admin commands moved to/rtpadmin;/donutrtpis an alias, so/donutrtp reloadstill works. Zone commands have a new form:/rtpadmin zone create|set|delete|info|list. - Zones live inzones.yml. Messages use{placeholders}(1.x%placeholders%still work). - New permissions: -donutrtp.zone.use(everyone) anddonutrtp.zone.admin(ops); -donutrtp.cost.bypass(ops) anddonutrtp.warmup.bypass(nobody).Upgrading from 1.x
1. Replace the jar and start the server. Keepplugins/DonutRTP/. 2. DonutRTP upgrades your files on the first start and logs what it did: -config.ymlbecomes the 2.0 layout: warmup, cooldown, attempts, sounds, worlds, radius, minimum height and menu items carry over. - The 1.x WorldGuard zone becomes a zone named after its region. Each 1.x cuboid zone becomes a zone with its own name and permission. Zones that were off stay off. -messages.ymlis replaced by the 2.0 messages, keeping your prefix. - The old files are kept asconfig-1.x.ymlandmessages-1.x.yml. 3. The new defaults apply on top: - a 300-block minimum distance (capped at a quarter of your radius); - ocean and river biomes denied in the Overworld; - landing protection; - three ready spots per destination.Tested
- 22 unit tests. - A bot matrix boots a 1.x install 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. On each server it runs up to 23 checks, from the upgrade and the menu to group zones and Vault costs, with WorldGuard and GriefPrevention on Paper. Then it scans the console for errors.1.5.24 weeks ago DonutRTP Patch Notes
1.5.2
Platform
Minecraft 26.3* support (Paper API26.3.build.49-alpha, the latest published 26.3 API artifact) Boot-tested on Paper 26.3 ALPHA build #133*, Paper 26.2 build 129, Paper 1.20.1 build 196, and Folia 26.2 build 7 * Folia 26.3 is not published yet (Paper Fill API returns 404) * Existing support for 1.20.1–26.2, Folia, Bukkit, Spigot, and Purpur is unchanged (api-version: 1.20,folia-supported: true)Upgrade Notes
1. Replace the jar with 1.5.2. Keepplugins/DonutRTP/. 2. Paper / Folia 26.x servers require Java 25; the plugin jar still runs on Java 21 for 1.20.5–1.21.x. ---1.5.1
Bug Fixes
RTP zone no longer cancels when you jump.* Countdown tracks the height where it started; jumping in place keeps it running. Walking out still cancels. "Failed to find a safe location" is far less frequent.* Surface finder scans from the true surface (ignoring leaf canopies) and lands feet on solid ground.Platform
bStats metrics (plugin ID 33560*) Modrinth update check for [donut-rtp-and-rtp-zone](https://modrinth.com/plugin/donut-rtp-and-rtp-zone) with console warning and `donutrtp.admin` join notify (`update-check.`) Confirmed support matrix: Bukkit / Spigot / Paper / Purpur / Folia on Minecraft 1.20.1–26.2* * Apache-2.0 OSS cleanup (LICENSE, NOTICE, README, contributor docs)Behaviour Notes
*rtp-zone.countdown.cancel-on-moveonly reacts to horizontal movement. Jumping never counts as moving.Upgrade Notes
1. Replace the jar with 1.5.1. Keepplugins/DonutRTP/. 2. Optional new keys underupdate-checkare backfilled by defaults if missing. ---1.5.0
Store release covering early zone/safe-location work. Prefer 1.5.1 for the complete jump-tolerant countdown, safer landings, bStats, and update check. ---1.4.0
New Features
WorldGuard RTP zone* — configure an existing WorldGuard region as an RTP pad */donutrtp zone set <region>or/donutrtp zone set <world> <region>*/donutrtp zone remove,/donutrtp zone info,/donutrtp zone reload* Trigger on region enter (ENTER / BOTH); no re-trigger while remaining inside * Zone-specific cooldown, action-bar countdown, and messages WorldGuard is an optional softdepend* — the plugin starts without it and only disables region zonesConfiguration
* Newrtp-zonesection inconfig.yml(enabled by default; region empty until set) * Legacyrtp-zonescuboid zones still work when no WorldGuard region is configuredPermissions
*donutrtp.zone.admin— manage zone commands (default: op) *donutrtp.cooldown.bypass— bypass cooldown whenrtp-zone.cooldown.bypass-enabledis trueCommands
*/rtpalias:donutrtp*/donutrtp zone set|remove|info|reloadNotes
* INTERACT trigger mode disables region-entry RTP only; the/rtpGUI remains available * There is still no physical in-world RTP block/head interact listener ---1.3.0
New Features
* RTPZone mechanic — configurable cuboid zones that start a title/subtitle countdown on entry and random-teleport players when it completesConfiguration
* Newrtp-zonessection inconfig.yml(disabled by default) * Per-zone: world, center, half-size (X/Y/Z), countdown-seconds, world-type, optional permissionPermissions
*donutrtp.zone.use— allows triggering RTP zones (default: true) ---1.2.1
Bug Fixes
* Fixed frequent "Failed to find a safe location" by loading chunks before checks, using world-aware height scanning (Nether cave scan), and allowing passable decorative blocks at feet/headConfiguration
* Defaultcooldown-secondschanged from 30 to 300 * Defaultmax-attemptsincreased from 30 to 60 * Existing servers: updatecooldown-seconds: 300in your config.yml to apply the new cooldown ---1.2.0
Added
- HeadDatabase ID support — GUI items can use a HeadDatabase head viamaterial: "hdb-<id>"(requires HeadDatabase plugin). Existing material andheadblock formats are unchanged. - Action bar cooldown sound — Optional sound played each second during the warmup countdown (actionbar-cooldowninconfig.yml). Disabled by default for backwards compatibility. - Instant teleport option — Setinstant-teleport: trueto skip the warmup countdown and teleport immediately after a safe location is found.Configuration
- Newinstant-teleportkey inconfig.yml(default:false) - Newactionbar-cooldownsection inconfig.yml(see inline comments for examples) - HeadDatabase example undergui.itemsinconfig.yml- Missing config keys are backfilled with sensible defaults on reload ---1.1.0
Added
- Configurable GUI items — Per-world RTP buttons (Overworld, Nether, End) can be customized inconfig.yml: - Slot, display name, and lore - Any valid Minecraft material as the icon - Custom player heads via texture hash, full base64 value, UUID, or player name - Configurable teleport sound — Play a sound on successful RTP with adjustable volume and pitch (teleport-soundinconfig.yml) - Action bar warmup countdown — Remaining seconds are shown on the action bar during the teleport warmup (configurable viacountdown-actionbarinmessages.yml)Changed
- Warmup countdown no longer spams chat each second; the "don't move" warning still appears once in chat - Invalid materials, player heads, sounds, or GUI slots log a console warning and fall back to defaultsConfiguration
- Newgui.itemssection inconfig.yml(see inline comments for examples) - Newteleport-soundsection inconfig.yml- Newcountdown-actionbarkey inmessages.yml---1.0.1
- Folia compatibility improvements for async teleport handling1.0.0
- Initial release: DonutSMP-style RTP GUI for Paper and Folia1.5.1Aug 21, 2026 DonutRTP Patch Notes
1.5.1
Bug Fixes
RTP zone no longer cancels when you jump.* Countdown tracks the height where it started; jumping in place keeps it running. Walking out still cancels. "Failed to find a safe location" is far less frequent.* Surface finder scans from the true surface (ignoring leaf canopies) and lands feet on solid ground.Platform
bStats metrics (plugin ID 33560*) Modrinth update check for [donut-rtp-and-rtp-zone](https://modrinth.com/plugin/donut-rtp-and-rtp-zone) with console warning and `donutrtp.admin` join notify (`update-check.`) Confirmed support matrix: Bukkit / Spigot / Paper / Purpur / Folia on Minecraft 1.20.1–26.2* * Apache-2.0 OSS cleanup (LICENSE, NOTICE, README, contributor docs)Behaviour Notes
*rtp-zone.countdown.cancel-on-moveonly reacts to horizontal movement. Jumping never counts as moving.Upgrade Notes
1. Replace the jar with 1.5.1. Keepplugins/DonutRTP/. 2. Optional new keys underupdate-checkare backfilled by defaults if missing. ---1.5.0
Store release covering early zone/safe-location work. Prefer 1.5.1 for the complete jump-tolerant countdown, safer landings, bStats, and update check. ---1.4.0
New Features
WorldGuard RTP zone* — configure an existing WorldGuard region as an RTP pad */donutrtp zone set <region>or/donutrtp zone set <world> <region>*/donutrtp zone remove,/donutrtp zone info,/donutrtp zone reload* Trigger on region enter (ENTER / BOTH); no re-trigger while remaining inside * Zone-specific cooldown, action-bar countdown, and messages WorldGuard is an optional softdepend* — the plugin starts without it and only disables region zonesConfiguration
* Newrtp-zonesection inconfig.yml(enabled by default; region empty until set) * Legacyrtp-zonescuboid zones still work when no WorldGuard region is configuredPermissions
*donutrtp.zone.admin— manage zone commands (default: op) *donutrtp.cooldown.bypass— bypass cooldown whenrtp-zone.cooldown.bypass-enabledis trueCommands
*/rtpalias:donutrtp*/donutrtp zone set|remove|info|reloadNotes
* INTERACT trigger mode disables region-entry RTP only; the/rtpGUI remains available * There is still no physical in-world RTP block/head interact listener ---1.3.0
New Features
* RTPZone mechanic — configurable cuboid zones that start a title/subtitle countdown on entry and random-teleport players when it completesConfiguration
* Newrtp-zonessection inconfig.yml(disabled by default) * Per-zone: world, center, half-size (X/Y/Z), countdown-seconds, world-type, optional permissionPermissions
*donutrtp.zone.use— allows triggering RTP zones (default: true) ---1.2.1
Bug Fixes
* Fixed frequent "Failed to find a safe location" by loading chunks before checks, using world-aware height scanning (Nether cave scan), and allowing passable decorative blocks at feet/headConfiguration
* Defaultcooldown-secondschanged from 30 to 300 * Defaultmax-attemptsincreased from 30 to 60 * Existing servers: updatecooldown-seconds: 300in your config.yml to apply the new cooldown ---1.2.0
Added
- HeadDatabase ID support — GUI items can use a HeadDatabase head viamaterial: "hdb-<id>"(requires HeadDatabase plugin). Existing material andheadblock formats are unchanged. - Action bar cooldown sound — Optional sound played each second during the warmup countdown (actionbar-cooldowninconfig.yml). Disabled by default for backwards compatibility. - Instant teleport option — Setinstant-teleport: trueto skip the warmup countdown and teleport immediately after a safe location is found.Configuration
- Newinstant-teleportkey inconfig.yml(default:false) - Newactionbar-cooldownsection inconfig.yml(see inline comments for examples) - HeadDatabase example undergui.itemsinconfig.yml- Missing config keys are backfilled with sensible defaults on reload ---1.1.0
Added
- Configurable GUI items — Per-world RTP buttons (Overworld, Nether, End) can be customized inconfig.yml: - Slot, display name, and lore - Any valid Minecraft material as the icon - Custom player heads via texture hash, full base64 value, UUID, or player name - Configurable teleport sound — Play a sound on successful RTP with adjustable volume and pitch (teleport-soundinconfig.yml) - Action bar warmup countdown — Remaining seconds are shown on the action bar during the teleport warmup (configurable viacountdown-actionbarinmessages.yml)Changed
- Warmup countdown no longer spams chat each second; the "don't move" warning still appears once in chat - Invalid materials, player heads, sounds, or GUI slots log a console warning and fall back to defaultsConfiguration
- Newgui.itemssection inconfig.yml(see inline comments for examples) - Newteleport-soundsection inconfig.yml- Newcountdown-actionbarkey inmessages.yml---1.0.1
- Folia compatibility improvements for async teleport handling1.0.0
- Initial release: DonutSMP-style RTP GUI for Paper and Folia1.5.0Aug 14, 2026 DonutRTP v1.5.0
Bug Fixes
RTP zone no longer cancels when you jump.* The warmup countdown now tracks the height where it started, so jumping in place (or any vertical-only movement) keeps the countdown running. Walking out of the zone still cancels as before. "Failed to find a safe location" is far less frequent.* The surface finder had an off-by-one that placed the player's feet inside the ground block, causing ordinary flat terrain to be rejected. It now scans downward from the true surface (ignoring leaf canopies) and correctly lands players on solid ground.Behaviour Notes
*rtp-zone.countdown.cancel-on-movenow only reacts to horizontal (walking) movement. Jumping never counts as moving. Leaving the zone always cancels regardless of the setting. * Surface scanning usesMOTION_BLOCKING_NO_LEAVESplus a short downward window, improving success in forests, snowy biomes, and on carpets/slabs.Compatibility
* Same loaders as 1.4.0 (Paper / Folia / Purpur family, api-version 1.20). Folia-safe: safe-location search and per-player countdowns still run on the correct region/entity threads.Upgrade Notes
1. Replace the DonutRTP jar with 1.5.0. Keep your existingplugins/DonutRTP/folder. 2. No config changes are required. Thecancel-on-movecomment was clarified but the key and default (false) are unchanged. 3. If you previously saw frequent "no safe location" errors, verify your worldradiusandmin-ystill make sense; the finder is now more reliable within those bounds.1.4.0Donut RTP & RTP Zone 1.4.0Jul 10, 2026 New Features
WorldGuard RTP zone* — configure an existing WorldGuard region as an RTP pad */donutrtp zone set <region>or/donutrtp zone set <world> <region>*/donutrtp zone remove,/donutrtp zone info,/donutrtp zone reload* Trigger on region enter (ENTER / BOTH); no re-trigger while remaining inside * Zone-specific cooldown, action-bar countdown, and messages WorldGuard is an optional softdepend* — the plugin starts without it and only disables region zonesConfiguration
* Newrtp-zonesection inconfig.yml(enabled by default; region empty until set) * Legacyrtp-zonescuboid zones still work when no WorldGuard region is configuredPermissions
*donutrtp.zone.admin— manage zone commands (default: op) *donutrtp.cooldown.bypass— bypass cooldown whenrtp-zone.cooldown.bypass-enabledis true1.3.0Donut RTP & RTP Zone 1.3.0Jun 22, 2026 New Features
* RTPZone mechanic — configurable cuboid zones that start a title/subtitle countdown on entry and random-teleport players when it completesConfiguration
* Newrtp-zonessection inconfig.yml(disabled by default) * Per-zone: world, center, half-size (X/Y/Z), countdown-seconds, world-type, optional permissionPermissions
*donutrtp.zone.use— allows triggering RTP zones (default: true)1.2.1Donut RTP 1.2.1Jun 18, 2026 Bug Fixes
* Fixed frequent "Failed to find a safe location" by loading chunks before checks, using world-aware height scanning (Nether cave scan), and allowing passable decorative blocks at feet/headConfiguration
* Defaultcooldown-secondschanged from 30 to 300 * Defaultmax-attemptsincreased from 30 to 60 * Existing servers: updatecooldown-seconds: 300in your config.yml to apply the new cooldown1.2.0Donut RTP 1.2.0Jun 10, 2026 Added
- HeadDatabase ID support — GUI items can use a HeadDatabase head viamaterial: "hdb-<id>"(requires HeadDatabase plugin). Existing material andheadblock formats are unchanged. - Action bar cooldown sound — Optional sound played each second during the warmup countdown (actionbar-cooldowninconfig.yml). Disabled by default for backwards compatibility. - Instant teleport option — Setinstant-teleport: trueto skip the warmup countdown and teleport immediately after a safe location is found.Configuration
- Newinstant-teleportkey inconfig.yml(default:false) - Newactionbar-cooldownsection inconfig.yml(see inline comments for examples) - HeadDatabase example undergui.itemsinconfig.yml- Missing config keys are backfilled with sensible defaults on reload1.1.0Donut RTP 1.1.0Jun 9, 2026 Added
- Configurable GUI items Per-world RTP buttons (Overworld, Nether, End) can be customized inconfig.yml: - Slot, display name, and lore - Any valid Minecraft material as the icon - Custom player heads via texture hash, full base64 value, UUID, or player name - Configurable teleport sound Play a sound on successful RTP with adjustable volume and pitch (teleport-soundinconfig.yml) - Action bar warmup countdown Remaining seconds are shown on the action bar during the teleport warmup (configurable viacountdown-actionbarinmessages.yml)Changed
- Warmup countdown no longer spams chat each second; the "don't move" warning still appears once in chat - Invalid materials, player heads, sounds, or GUI slots log a console warning and fall back to defaultsConfiguration
- Newgui.itemssection inconfig.yml(see inline comments for examples) - Newteleport-soundsection inconfig.yml- Newcountdown-actionbarkey inmessages.yml1.0.1Donut RTP 1.0.1Apr 3, 2026 - fixed TP on Folia didn't work properly.1.0.0Donut RTP 1.0.0Mar 9, 2026
Similar projects
Plugin →VeinMiner
Mine the whole vein on mining a single ore/block. Make the tedious mining experience to something satisfying and fun! FTB Ultimine alternative
99.3MSueta
Simple Voice Chat
A working voice chat in Minecraft!
76.8MSueta
VeinMiner Enchantment
Veinminer Addon - Adds vineminer enchantment to enchanting tables. Only tools with the enchantment can veinmine
18MSueta
JourneyMap
Real-time map used for mapping in-game or your browser as you explore.
14.7MSueta
Plasmo Voice
A proximity voice chat mod with audio positioning and lots of features
4.1MSueta
ItemSwapper
Inventory update concept for hotswapping items.
2.1MSueta