1.5.0
Compatibility
Changes
🌍 P_Randomtp
Plugin de Random Teleport (RTP) otimizado para servidores Paper/Spigot 1.21+.
Permite que jogadores se teleportem para locais aleatórios seguros em um mundo, evitando lag e falhas típicas de plugins de RTP.
✨ Recursos
- 🔄 Teleporte Aleatório Seguro – evita líquidos, blocos perigosos e tetos do Nether.
- 🧭 Raio adaptativo – expande automaticamente a área de busca se não encontrar local válido.
- ⚡ Busca fatiada por tick – executa tentativas de forma distribuída, sem travar o servidor.
- 📦 Carregamento assíncrono de chunks – garante RTP rápido mesmo em distâncias grandes.
- 🛡️ Integração com WorldGuard (opcional) – respeita regiões protegidas.
- 💰 Integração com Vault (opcional) – cobra valores customizados por mundo.
- ⏳ Warmup, cooldown e tiers por permissão – configurações flexíveis para balancear o uso.
- 🌐 Multi-idioma (pt_br, en_us) – mensagens personalizadas por idioma ou forçadas no
config.yml.
📥 Instalação
- Baixe o arquivo
.jarcompilado do plugin. - Coloque em
plugins/no seu servidor Paper 1.21+. - Reinicie o servidor para gerar os arquivos de configuração.
- Edite
config.ymlconforme necessário. - (Opcional) Instale Vault para cobrar por RTP e WorldGuard para respeitar proteções.
⚙️ Configuração
O arquivo config.yml possui várias opções.
Exemplo de configuração otimizada (trecho):
settings:
cooldown-seconds: 60
warmup-seconds: 3
per-tick-attempts: 6
loaded-chunks-only: false
allow-chunk-load: true
async-chunk-loads-parallel: 8
max-attempts: 120
adaptive-radius:
enabled: true
step-percent: 25
max-multiplier: 3.0
| Permissão | Descrição | Default |
|---|---|---|
prandomtp.use |
Permite usar /rtp |
✅ todos |
prandomtp.bypass |
Ignora cooldown | ❌ apenas OP |
prandomtp.free |
Usa RTP sem custo (Vault) | ❌ apenas OP |
prandomtp.world.* |
Permite selecionar qualquer mundo com /rtp |
❌ apenas OP |
prandomtp.admin |
Acesso ao /rtp reload |
❌ apenas OP |
prandomtp.tier.vip |
Tier customizado (cooldown menor, +raio) | ❌ apenas VIP |
prandomtp.tier.legend |
Tier customizado (cooldown muito menor, +raio) | ❌ apenas Legend |
| Comando | Uso | Descrição |
|---|---|---|
/rtp |
/rtp |
Teleporta para um local aleatório no mundo atual |
/rtp <mundo> |
/rtp world_nether |
Teleporta para outro mundo (se permitido) |
/rtp reload |
/rtp reload |
Recarrega a configuração e mensagens |
🧩 Integrações
-
Vault – cobra valor configurado por mundo (economy.cost.per-world).
-
WorldGuard – impede teleporte em áreas protegidas.
-
bStats – envia métricas anônimas (opcional).
🔌 API Pública (para outros plugins)
-
Interface disponível via ServicesManager:
-
RtpService service = Bukkit.getServicesManager().load(RtpService.class);
-
// Encontrar um local seguro Location safe = service.findSafeLocation(player, world);
-
// Solicitar RTP completo (como se fosse /rtp) service.requestRtp(player, world);
-
Eventos disponíveis (RtpEvents):
-
WarmupStartEvent
-
WarmupCancelEvent
-
SuccessEvent
-
FailEvent
🚀 Otimização
-
Use allow-chunk-load: true e async-chunk-loads-parallel ajustado conforme o hardware.
-
Ajuste per-tick-attempts (4–8 é ideal).
-
Use adaptive-radius para reduzir falhas em seeds com muitos oceanos.
-
Se for servidor com muito player simultâneo, limite RTPs concorrentes (semáforo global).
❓ FAQ
❓ - O RTP falha em mundos com muito oceano, e agora?
Ative adaptive-radius e aumente max-attempts para permitir expandir além dos oceanos.
❓ - Dá lag quando o jogador usa RTP de 2000 blocos.
Certifique-se de estar no Paper 1.21+ e habilite allow-chunk-load: true. O carregamento é assíncrono, não trava o tick.
❓ - Como adicionar mais idiomas?
Crie arquivos em plugins/P_Randomtp/idiomas/ com o código da língua, ex.: es_es.yml.
❓ - Posso desativar RTP em mundos específicos?
Sim, configure worlds.<nome>.allow: false no config.yml.
📊 bStats
👨💻 Autor
- Desenvolvido por Pedro. Sugestões, bugs ou PRs são bem-vindos!
🌍 P_Randomtp
An optimized Random Teleport (RTP) plugin for Paper/Spigot 1.21+ servers.
Allows players to safely teleport to random locations in a world, avoiding lag and common RTP plugin issues.
✨ Features
- 🔄 Safe Random Teleport – avoids liquids, dangerous blocks, and Nether ceilings.
- 🧭 Adaptive radius – automatically expands the search area if no valid spot is found.
- ⚡ Per-tick sliced search – spreads attempts across ticks to avoid server freezes.
- 📦 Asynchronous chunk loading – ensures fast RTP even at large distances.
- 🛡️ WorldGuard integration (optional) – respects protected regions.
- 💰 Vault integration (optional) – charge custom prices per world.
- ⏳ Warmup, cooldown, and permission tiers – flexible settings to balance usage.
- 🌐 Multi-language (pt_br, en_us) – customizable messages per language or forced in
config.yml.
📥 Installation
- Download the compiled
.jarfile of the plugin. - Place it inside the
plugins/folder of your Paper 1.21+ server. - Restart the server to generate the configuration files.
- Edit
config.ymlas needed. - (Optional) Install Vault to charge for RTP and WorldGuard to respect protections.
⚙️ Configuration
The config.yml file contains several options.
Example of an optimized setup (snippet):
settings:
cooldown-seconds: 60
warmup-seconds: 3
per-tick-attempts: 6
loaded-chunks-only: false
allow-chunk-load: true
async-chunk-loads-parallel: 8
max-attempts: 120
adaptive-radius:
enabled: true
step-percent: 25
max-multiplier: 3.0
🔑 Permissions
| Permission | Description | Default |
|---|---|---|
prandomtp.use |
Allows using /rtp |
✅ everyone |
prandomtp.bypass |
Ignores cooldown | ❌ OP only |
prandomtp.free |
RTP without cost (Vault) | ❌ OP only |
prandomtp.world.* |
Allows teleporting to any world with /rtp |
❌ OP only |
prandomtp.admin |
Access to /rtp reload |
❌ OP only |
prandomtp.tier.vip |
Custom tier (shorter cooldown, larger radius) | ❌ VIP only |
prandomtp.tier.legend |
Custom tier (much shorter cooldown, big radius) | ❌ Legend |
⌨️ Commands
| Command | Usage | Description |
|---|---|---|
/rtp |
/rtp |
Teleports to a random location in the current world |
/rtp <world> |
/rtp world_nether |
Teleports to another world (if allowed) |
/rtp reload |
/rtp reload |
Reloads configuration and messages |
🧩 Integrations
- Vault – charges configured cost per world (
economy.cost.per-world). - WorldGuard – prevents teleportation into protected regions.
- bStats – sends anonymous metrics (optional).
🔌 Public API (for other plugins)
Available through ServicesManager:
RtpService service = Bukkit.getServicesManager().load(RtpService.class);
// Find a safe location
Location safe = service.findSafeLocation(player, world);
// Request a full RTP (same as /rtp)
service.requestRtp(player, world);
📡 Events (RtpEvents)
WarmupStartEventWarmupCancelEventSuccessEventFailEvent
🚀 Optimization
- Use
allow-chunk-load: trueand tuneasync-chunk-loads-parallelaccording to your hardware. - Adjust
per-tick-attempts(4–8 is ideal). - Use
adaptive-radiusto reduce failures on seeds with large oceans. - For high player count servers, limit concurrent RTPs (global semaphore).
❓ FAQ
❓ RTP fails in worlds with too many oceans, what now?
Enable adaptive-radius and increase max-attempts to expand beyond oceans.
❓ There's lag when players RTP 2000+ blocks away.
Make sure you are on Paper 1.21+ and enable allow-chunk-load: true.
Loading is asynchronous and will not freeze the main tick.
❓ How to add more languages?
Create files in plugins/P_Randomtp/languages/ with the language code, e.g. es_es.yml.
❓ Can I disable RTP in specific worlds?
Yes, set worlds.<name>.allow: false in config.yml.
📊 bStats
(Optional) Anonymous metrics are collected via bStats.
👨💻 Author
- Developed by Pedro. Suggestions, bug reports, and PRs are welcome!
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:hV8zxsFG:8hMijJma"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:hV8zxsFG:8hMijJma"
}

