Sueta

Donut RTP & RTP Zone

2.0.0

A powerful and polished teleportation plugin designed for Minecraft servers.

·Plugin
  1. 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 for min-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 pos1 and /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 with donutrtp.cooldown.vip a 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.bypass and donutrtp.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: - RtpPreTeleportEvent is cancellable and can change where the player lands; - RtpTeleportEvent fires 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 info shows the platform, the hooks, each destination with its ready spots, and the zones. - A typo never wipes your setup. If config.yml or zones.yml is not valid YAML, /rtpadmin reload says where the mistake is and keeps the previous settings. zones.yml is 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; /donutrtp is an alias, so /donutrtp reload still works. Zone commands have a new form: /rtpadmin zone create|set|delete|info|list. - Zones live in zones.yml. Messages use {placeholders} (1.x %placeholders% still work). - New permissions: - donutrtp.zone.use (everyone) and donutrtp.zone.admin (ops); - donutrtp.cost.bypass (ops) and donutrtp.warmup.bypass (nobody).

    Upgrading from 1.x

    1. Replace the jar and start the server. Keep plugins/DonutRTP/. 2. DonutRTP upgrades your files on the first start and logs what it did: - config.yml becomes 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.yml is replaced by the 2.0 messages, keeping your prefix. - The old files are kept as config-1.x.yml and messages-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.
    58 downloads
  2. 1.5.24 weeks ago

    DonutRTP Patch Notes

    1.5.2

    Platform
    Minecraft 26.3* support (Paper API 26.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. Keep plugins/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-move only reacts to horizontal movement. Jumping never counts as moving.
    Upgrade Notes
    1. Replace the jar with 1.5.1. Keep plugins/DonutRTP/. 2. Optional new keys under update-check are 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 zones
    Configuration
    * New rtp-zone section in config.yml (enabled by default; region empty until set) * Legacy rtp-zones cuboid zones still work when no WorldGuard region is configured
    Permissions
    * donutrtp.zone.admin — manage zone commands (default: op) * donutrtp.cooldown.bypass — bypass cooldown when rtp-zone.cooldown.bypass-enabled is true
    Commands
    * /rtp alias: donutrtp * /donutrtp zone set|remove|info|reload
    Notes
    * INTERACT trigger mode disables region-entry RTP only; the /rtp GUI 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 completes
    Configuration
    * New rtp-zones section in config.yml (disabled by default) * Per-zone: world, center, half-size (X/Y/Z), countdown-seconds, world-type, optional permission
    Permissions
    * 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/head
    Configuration
    * Default cooldown-seconds changed from 30 to 300 * Default max-attempts increased from 30 to 60 * Existing servers: update cooldown-seconds: 300 in your config.yml to apply the new cooldown ---

    1.2.0

    Added
    - HeadDatabase ID support — GUI items can use a HeadDatabase head via material: "hdb-<id>" (requires HeadDatabase plugin). Existing material and head block formats are unchanged. - Action bar cooldown sound — Optional sound played each second during the warmup countdown (actionbar-cooldown in config.yml). Disabled by default for backwards compatibility. - Instant teleport option — Set instant-teleport: true to skip the warmup countdown and teleport immediately after a safe location is found.
    Configuration
    - New instant-teleport key in config.yml (default: false) - New actionbar-cooldown section in config.yml (see inline comments for examples) - HeadDatabase example under gui.items in config.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 in config.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-sound in config.yml) - Action bar warmup countdown — Remaining seconds are shown on the action bar during the teleport warmup (configurable via countdown-actionbar in messages.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 defaults
    Configuration
    - New gui.items section in config.yml (see inline comments for examples) - New teleport-sound section in config.yml - New countdown-actionbar key in messages.yml ---

    1.0.1

    - Folia compatibility improvements for async teleport handling

    1.0.0

    - Initial release: DonutSMP-style RTP GUI for Paper and Folia
    55 downloads
  3. 1.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-move only reacts to horizontal movement. Jumping never counts as moving.
    Upgrade Notes
    1. Replace the jar with 1.5.1. Keep plugins/DonutRTP/. 2. Optional new keys under update-check are 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 zones
    Configuration
    * New rtp-zone section in config.yml (enabled by default; region empty until set) * Legacy rtp-zones cuboid zones still work when no WorldGuard region is configured
    Permissions
    * donutrtp.zone.admin — manage zone commands (default: op) * donutrtp.cooldown.bypass — bypass cooldown when rtp-zone.cooldown.bypass-enabled is true
    Commands
    * /rtp alias: donutrtp * /donutrtp zone set|remove|info|reload
    Notes
    * INTERACT trigger mode disables region-entry RTP only; the /rtp GUI 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 completes
    Configuration
    * New rtp-zones section in config.yml (disabled by default) * Per-zone: world, center, half-size (X/Y/Z), countdown-seconds, world-type, optional permission
    Permissions
    * 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/head
    Configuration
    * Default cooldown-seconds changed from 30 to 300 * Default max-attempts increased from 30 to 60 * Existing servers: update cooldown-seconds: 300 in your config.yml to apply the new cooldown ---

    1.2.0

    Added
    - HeadDatabase ID support — GUI items can use a HeadDatabase head via material: "hdb-<id>" (requires HeadDatabase plugin). Existing material and head block formats are unchanged. - Action bar cooldown sound — Optional sound played each second during the warmup countdown (actionbar-cooldown in config.yml). Disabled by default for backwards compatibility. - Instant teleport option — Set instant-teleport: true to skip the warmup countdown and teleport immediately after a safe location is found.
    Configuration
    - New instant-teleport key in config.yml (default: false) - New actionbar-cooldown section in config.yml (see inline comments for examples) - HeadDatabase example under gui.items in config.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 in config.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-sound in config.yml) - Action bar warmup countdown — Remaining seconds are shown on the action bar during the teleport warmup (configurable via countdown-actionbar in messages.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 defaults
    Configuration
    - New gui.items section in config.yml (see inline comments for examples) - New teleport-sound section in config.yml - New countdown-actionbar key in messages.yml ---

    1.0.1

    - Folia compatibility improvements for async teleport handling

    1.0.0

    - Initial release: DonutSMP-style RTP GUI for Paper and Folia
    5249 downloads
  4. 1.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-move now only reacts to horizontal (walking) movement. Jumping never counts as moving. Leaving the zone always cancels regardless of the setting. * Surface scanning uses MOTION_BLOCKING_NO_LEAVES plus 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 existing plugins/DonutRTP/ folder. 2. No config changes are required. The cancel-on-move comment was clarified but the key and default (false) are unchanged. 3. If you previously saw frequent "no safe location" errors, verify your world radius and min-y still make sense; the finder is now more reliable within those bounds.
    947 downloads
  5. 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 zones
    Configuration
    * New rtp-zone section in config.yml (enabled by default; region empty until set) * Legacy rtp-zones cuboid zones still work when no WorldGuard region is configured
    Permissions
    * donutrtp.zone.admin — manage zone commands (default: op) * donutrtp.cooldown.bypass — bypass cooldown when rtp-zone.cooldown.bypass-enabled is true
    4128 downloads
  6. 1.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 completes
    Configuration
    * New rtp-zones section in config.yml (disabled by default) * Per-zone: world, center, half-size (X/Y/Z), countdown-seconds, world-type, optional permission
    Permissions
    * donutrtp.zone.use — allows triggering RTP zones (default: true)
    1950 downloads
  7. 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/head
    Configuration
    * Default cooldown-seconds changed from 30 to 300 * Default max-attempts increased from 30 to 60 * Existing servers: update cooldown-seconds: 300 in your config.yml to apply the new cooldown
    587 downloads
  8. 1.2.0Donut RTP 1.2.0Jun 10, 2026
    Added
    - HeadDatabase ID support — GUI items can use a HeadDatabase head via material: "hdb-<id>" (requires HeadDatabase plugin). Existing material and head block formats are unchanged. - Action bar cooldown sound — Optional sound played each second during the warmup countdown (actionbar-cooldown in config.yml). Disabled by default for backwards compatibility. - Instant teleport option — Set instant-teleport: true to skip the warmup countdown and teleport immediately after a safe location is found.
    Configuration
    - New instant-teleport key in config.yml (default: false) - New actionbar-cooldown section in config.yml (see inline comments for examples) - HeadDatabase example under gui.items in config.yml - Missing config keys are backfilled with sensible defaults on reload
    950 downloads
  9. 1.1.0Donut RTP 1.1.0Jun 9, 2026
    Added
    - Configurable GUI items Per-world RTP buttons (Overworld, Nether, End) can be customized in config.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-sound in config.yml) - Action bar warmup countdown Remaining seconds are shown on the action bar during the teleport warmup (configurable via countdown-actionbar in messages.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 defaults
    Configuration
    - New gui.items section in config.yml (see inline comments for examples) - New teleport-sound section in config.yml - New countdown-actionbar key in messages.yml
    116 downloads
  10. 1.0.1Donut RTP 1.0.1Apr 3, 2026
    - fixed TP on Folia didn't work properly.
    763 downloads
  11. 1.0.0Donut RTP 1.0.0Mar 9, 2026
    3907 downloads

Similar projects

Plugin →