Skip to content
LinuxKernel44Public

About

Paper plugin (1.20.1): /rtp for everyone with no cooldown, delay, cost or other restriction. Safe random teleport with async chunk loading.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

FreeRTP

A small Paper plugin for Minecraft 1.20.1 that adds a /rtp command for everyone, with no cooldown, no warm-up delay, no cost and no other restriction.

Features

  • /rtp teleports the player to a random safe location. Available to all players by default.
  • No cooldown, no countdown, no "don't move" rule, no economy, no cancel on combat.
  • Safe landing: solid ground, 2 free blocks of headroom, never in water or lava, never on or in hazards such as magma, cactus, fire, cobweb, powder snow, sweet berries (configurable list).
  • Never lags the server: chunks are loaded asynchronously, and a spot is checked on the main thread only once its chunk is ready. Keep the radius inside a pre-generated area to make it instant.
  • Configurable area: center, minimum and maximum distance, enabled worlds, messages (MiniMessage).
  • /rtp <player> lets admins random-teleport someone else (freertp.others).

Requirements

  • Paper (or a Paper fork) 1.20.1, Java 17 or newer.
  • Spigot/CraftBukkit are not supported (the plugin uses Paper's async teleport and chunk APIs).

Installation

  1. Download FreeRTP-<version>.jar from the releases page (or build it yourself).
  2. Put it in your server's plugins/ folder and restart the server.
  3. Edit plugins/FreeRTP/config.yml if needed and run /freertp reload.

Commands and permissions

Command Permission Default Description
/rtp (alias /randomtp) freertp.use everyone Teleport yourself to a random safe location
/rtp <player> freertp.others operators Randomly teleport another player
/freertp reload (alias /frtp) freertp.admin operators Reload config.yml

Configuration

plugins/FreeRTP/config.yml (excerpt):

enabled-worlds:
  - world          # /rtp only works in these worlds (exact folder names)

center-x: 0
center-z: 0
min-radius: 100    # at least this far from the center on one axis...
max-radius: 6000   # ...and at most this far on both axes (a square area)
max-attempts: 25   # random spots tried before giving up
play-sound: true
debug: false       # log why each random spot was rejected

See the file itself for the unsafe block list and all messages.

How the spot is picked

  1. A random point in the square ring min-radius <= max(|dx|, |dz|) <= max-radius is chosen.
  2. Its chunk is loaded asynchronously.
  3. The highest non-leaf block must be solid and not unsafe, with two free, non-hazardous blocks above it, inside the world border. Otherwise another point is tried (up to max-attempts).
  4. The player is teleported there. If nothing safe was found, they are told to try again.

If players often get "Could not find a safe location", the area is probably mostly water or covered by hazards: turn on debug to see the rejection reasons, or move the center/radius to land.

Building

./gradlew build

The jar is written to build/libs/FreeRTP-<version>.jar. Requires JDK 17 or newer.

License

MIT

About

Paper plugin (1.20.1): /rtp for everyone with no cooldown, delay, cost or other restriction. Safe random teleport with async chunk loading.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages