RTPQueue
v1.0.0Permanent links
- How to install it (takes about a minute)
- Full command list (/rtpqueue, /rtpq)
- Config reference (every option explained)
- Permission nodes
- Download the jar (RTPQueue-1.0.0.jar)
- Frequently asked questions
A random-teleport queue for duels.
RTPQueue is a small standalone plugin. Players run one command to hop in a queue, and the second a full team is waiting (2 by default, you can change it) everyone gets teleported together to a random spot in one of your arena worlds. No delay, no chat spam, no titles popping up. Just a clean drop into the map.
When players land there is a short window where they cannot take damage, so nobody gets hit before the whole group has finished teleporting. It is the same RTP queue I used inside PracCore, pulled out into its own plugin so you can run it on its own.
What it does
- One command to join or leave the queue.
- Teleports a full team together once enough players are waiting.
- Picks a random safe spot inside a radius and skips lava, water, fire, cactus and other unsafe blocks.
- Spaces players out a little so they do not land on top of each other.
- Gives everyone a few seconds of damage immunity right after the teleport.
- Drops you from the queue automatically if you disconnect.
RTPQueue does not handle kits, scoreboards or win tracking. It only does the queue and the teleport. Pair it with whatever match plugin you already run.
What you need first.
- Java 21 at runtime. This is required even if you are on 1.20.1.
- A Paper, Spigot or Bukkit server. Paper is recommended.
- Minecraft 1.20.1 up to 1.21.x.
This is a server plugin, not a proxy plugin. Velocity and BungeeCord are proxies, not a place to load server plugins. A cross-server RTP would need a separate proxy module, which is not part of this.
Drop it in, set your worlds, restart.
- Stop your server. Do a full stop, not a reload.
- Put the jar in your plugins folder. Copy
RTPQueue-1.0.0.jarintoplugins/. - Start the server once. This creates
plugins/RTPQueue/config.yml. - Edit the config. Set your arena worlds and tweak the radius, team size and so on. See the config reference.
- Restart again so the new config loads. You are done.
Do not use /reload to apply changes to the jar. It can throw "zip file closed" errors. Stop and start the server fully instead. To reload just the config you can use /rtpqueue reload.
Everything you can type.
The main command is /rtpqueue, with /rtpq as a shorter alias. Run it with no argument and it just toggles you in or out of the queue.
| Command | Alias | What it does |
|---|---|---|
/rtpqueue | /rtpq | No argument. Toggles you in or out of the queue. |
/rtpqueue join | Joins the queue. | |
/rtpqueue leave | quit | Leaves the queue. |
/rtpqueue status | info | Tells you whether you are currently in the queue. |
/rtpqueue reload | Reloads config.yml. Needs the rtpqueue.reload permission. |
Tab completion works on the subcommands, and reload only shows up for people who have permission for it.
The config, line by line.
Everything lives in plugins/RTPQueue/config.yml under the rtp-queue block. Here is the default file:
rtp-queue: enabled: true worlds: - world_minecraft_desert - world_minecraft_snowy_fields - world_minecraft_badlands - world_minecraft_mushroom - world_minecraft_plains center: "spawn" radius: 5000 players-per-match: 2 min-spacing: 3 max-spacing: 5 protection-seconds: 3 announce-delay-seconds: 5 max-attempts: 40 unsafe-blocks: [ LAVA, WATER, FIRE, CACTUS, MAGMA_BLOCK, POWDER_SNOW ] sounds: joined: "block.note_block.bit" teleport: "block.note_block.chime" leave: "block.note_block.didgeridoo" messages: joined: "5FF49you have joined the rtpqueue" left: "FF3D3Dyou have left the rtpqueue" status-in: "&7you are in the rtpqueue" status-out: "&7you are not in the rtpqueue" disabled: "&7the rtpqueue is disabled" announce: "#FF5B<player> is waiting for an opponent in the rtpqueue!"
| Option | Default | What it controls |
|---|---|---|
enabled | true | Turns the whole queue on or off. If off, joining tells the player it is disabled. |
worlds | 5 listed | The worlds players can get sent to. Leave the list empty to use the player's current world instead. |
center | "spawn" | Where the random area is measured from. Use "spawn" or coordinates like "0,0" (x,z). |
radius | 5000 | How far out, in blocks, a player can be dropped from the center. |
players-per-match | 2 | Exact number of players per teleport. This is both the minimum and the maximum. |
min-spacing / max-spacing | 3 / 5 | How far apart players land from each other, in blocks. |
protection-seconds | 3 | Seconds of damage immunity after landing. Set to 0 to turn it off. |
announce-delay-seconds | 5 | If someone waits alone longer than this, the announce message is sent to chat. |
max-attempts | 40 | How many times it tries to find a safe spot before giving up on that pick. |
unsafe-blocks | lava, water, etc. | Block types the plugin refuses to land on. Unknown names are just skipped, which is why it works across 1.20 and 1.21. |
sounds | note blocks | Vanilla sound names played on join, teleport and leave. |
messages | see above | Every message. Supports & color codes and &#RRGGBB hex. |
Two nodes, that is it.
| Permission | Default | Role |
|---|---|---|
rtpqueue.use | true | Lets a player use the queue. On for everyone by default. |
rtpqueue.reload | op | Lets someone run /rtpqueue reload. Ops only by default. |
Grab the jar.
Heads up: swap the download link above for your real BuiltByBit or Discord link when the plugin is up.
Common questions.
Do I really need Java 21? +
Yes, even on 1.20.1. The plugin is built against Java 21, so the server has to be running on it or RTPQueue will not load.
Can it teleport players across different servers? +
No. RTPQueue runs on a single server. Velocity and BungeeCord are proxies, not plugin servers, so a cross-server RTP would need a separate proxy module that is not included here.
How do I change how many players are in a match? +
Set players-per-match in the config. It is the exact size, so 2 means it waits for 2 and sends exactly 2. Set it to 3 or 4 for small group fights.
What stops people landing in lava? +
The unsafe-blocks list. The plugin checks the landing spot and retries up to max-attempts times to find one that is not on those blocks. Add more block names if you want it to avoid others.
Can I change or translate the messages? +
Yep, everything under messages is editable. You can use & color codes and &#RRGGBB hex. There is also a <player> placeholder in the announce message.
Will /reload work? +
Do not reload the whole server to swap the jar, it can break with "zip file closed". For config changes use /rtpqueue reload. For jar changes, stop and start the server.
What happens if someone leaves mid queue? +
If they disconnect they are removed from the queue automatically, so you never end up with a match waiting on a player who already left.
Need a hand?
Open a ticket on Discord and I will help. When you do, please include your server software (Paper, Spigot, etc.), your Minecraft version, your Java version and any error lines from the console. It saves a lot of back and forth.
Thanks for using RTPQueue. Bug reports and ideas are always welcome.