YoTPA

# YoTPA
YoTPA is a lightweight and powerful teleport request plugin with adaptive performance optimization. Simple to use, easy to configure, and built for modern Minecraft servers.
## Features
### Adaptive Performance System
The plugin automatically detects your server’s available RAM and optimizes itself accordingly – zero configuration needed!
**4 Performance Modes:**
– **ULTRA_LIGHT** – For 512 MB – 1 GB RAM (Free/Cheap VPS)
– Best for: 5-10 players, minimal plugins
– **LIGHT** – For 1-2 GB RAM (Low-end servers)
– Best for: 10-15 players, light plugins
– **BALANCED** – For 2-4 GB RAM (Mid-range servers)
– Best for: 15-25 players, moderate plugins
– **HIGH_PERFORMANCE** – For 4+ GB RAM (High-end servers)
– Best for: 25+ players, any plugins
**Performance Benefits:**
– 30-70% less memory usage
– 25-60% less CPU usage
– Up to 83% faster maintenance tasks
– Dynamic optimization based on your server specs
### Core Features
– **Simple TPA System** – Request to teleport to other players or invite them to you
– **Countdown Timer** – Configurable delay before teleporting with visual feedback
– **Title Display** – Clear visual indication of teleport countdown
– **Movement Detection** – Teleport cancels if player moves during countdown
– **Custom Sound Effects** – Fully customizable audio feedback using Minecraft’s sound registry
– **Config Validation** – Prevents server crashes from broken configs with detailed error messages
– **Permission System** – Fine-grained access control
– **Request Management** – Toggle receiving requests, cancel outgoing requests
– **Multi-Threading Support** – Thread-safe for more concurrent players
– **Customizable Messages** – Fully localizable and configurable messages
### Internationalization (NEW in 1.4.0)
Customize all plugin messages in any language with full MiniMessage support:
“`yaml
prefix: “[YoTPA] ”
commands:
tpa:
sent: “Teleport request sent to {target}”
received: “{requester} wants to teleport to you.”
“`
**MiniMessage Features:**
– Rich text formatting (bold, italic, underlined)
– Color gradients: `text`
– Rainbow effect: `text`
– Hex colors: `<#FF5733>text#FF5733>`
### Custom Sound Effects
Customize all plugin sounds using Minecraft’s sound IDs:
“`yaml
sounds:
countdown: “block.note_block.pling”
success: “entity.enderman.teleport”
cancel: “entity.villager.no”
request: “entity.experience_orb.pickup”
“`
Test sounds in-game: `/playsound minecraft:block.note_block.pling master @s`
## Configuration
YoTPA’s `config.yml` file allows you to customize various aspects of the plugin:
– Request timeout duration
– Cooldown between requests
– Teleport delay countdown
– Performance mode settings
– Sound effects for different actions
– Feature toggles (statistics, bStats, titles, sounds)
### Configuration File
“`yaml
# YoTPA Configuration v1.3.0-Adaptive
# Smart Auto-Optimization for All Server Sizes
# Request timeout in seconds (how long before a request expires)
# Recommended: 30-120 seconds
request-timeout: 60
# Request cooldown in seconds (how long before sending another request)
# Recommended: 15-60 seconds
request-cooldown: 30
# Teleport delay in seconds (countdown before actual teleport)
# Recommended: 3-10 seconds
teleport-delay: 5
# Performance mode settings
performance:
# Options: AUTO, ULTRA_LIGHT, LIGHT, BALANCED, HIGH_PERFORMANCE
mode: AUTO
# Sound effects (use Minecraft sound names)
sounds:
countdown: “block.note_block.pling”
success: “entity.enderman.teleport”
cancel: “entity.villager.no”
request: “entity.experience_orb.pickup”
# Feature toggles
features:
statistics: true
bstats: true
titles: true
sounds: true
“`
### Messages Configuration (messages.yml)
“`yaml
# Customize your prefix
prefix: “[YoTPA] ”
# All messages are customizable
commands:
tpa:
usage: “Usage: /tpa ”
sent: “Teleport request sent to {target}”
received: “{requester} wants to teleport to you.”
teleport:
countdown:
title: “Teleporting…”
subtitle: “Don’t move!”
message: “Teleporting in {seconds} seconds”
“`
## Customization Examples
### Change Language to Spanish
Edit `messages.yml`:
“`yaml
prefix: “[YoTPA] ”
commands:
tpa:
usage: “Uso: /tpa ”
sent: “Solicitud enviada a {target}”
received: “{requester} quiere teletransportarse a ti.”
“`
Then use `/tpareload` to apply changes!
### Add Beautiful Gradients
“`yaml
prefix: “✦ YoTPA ✦ ”
teleport:
countdown:
title: “Teleporting…”
message: “Teleporting in {seconds} seconds”
“`
### Customize Colors
“`yaml
prefix: “[TPA] ”
commands:
tpa:
sent: “Request sent to {target}”
“`
### Use Hex Colors
“`yaml
prefix: “[YoTPA] ”
teleport:
success: “Teleported to {target} successfully!”
“`
**Placeholders:**
– `{player}` – Player name
– `{target}` – Target player name
– `{requester}` – Requester player name
– `{seconds}` – Number of seconds
– `{cooldown}` – Cooldown duration
### Configuration Sections Explained
**General Settings:**
– `request-timeout` – How long (in seconds) teleport requests remain valid (recommended: 30-120)
– `request-cooldown` – Time (in seconds) before a player can send another request (recommended: 15-60)
– `teleport-delay` – Countdown time (in seconds) before teleportation happens (minimum: 1)
**Performance Settings:**
– `performance.mode` – AUTO (recommended), ULTRA_LIGHT, LIGHT, BALANCED, or HIGH_PERFORMANCE
– AUTO automatically detects your server’s RAM and selects the best mode
**Sound Settings:**
– All sounds use Minecraft’s sound registry format (lowercase with dots)
– The plugin validates sounds on config reload
– Full sound list: https://minecraft.wiki/w/Sounds.json
**Feature Toggles:**
– `statistics` – Enable or disable statistics tracking
– `bstats` – Enable or disable bStats metrics
– `titles` – Enable or disable title animations during countdown
– `sounds` – Enable or disable all sound effects
### Config Validation
When reloading with `/tpareload`, the plugin validates:
– YAML syntax
– All values are in valid ranges
– Sounds exist in Minecraft’s registry
– Shows detailed error messages if invalid
Example validation output:
“`
Configuration validation failed!
✗ teleport-delay must be at least 1 second
✗ Sound ‘countdown’ (invalid.sound) not found in registry
Warnings:
• request-timeout (5) is very low, recommended: 30-120
Config not applied. Fix errors and try again.
Using previous configuration.
“`
## How to Edit and Reload
1. Edit the `plugins/YoTPA/config.yml` file
2. Save your changes
3. Use `/tpareload` in-game to apply changes with validation
## Commands Overview
| Command | Description | Permission |
| :—— | :———- | :——— |
| `/tpa ` | Request to teleport to another player | `yotpa.tpa` |
| `/tpaccept` | Accept a pending teleport request | `yotpa.tpaccept` |
| `/tpadeny` | Deny a pending teleport request | `yotpa.tpadeny` |
| `/tpahere ` | Request a player to teleport to you | `yotpa.tpahere` |
| `/tpacancel` | Cancel your outgoing teleport request | `yotpa.tpacancel` |
| `/tpatoggle` | Toggle receiving teleport requests | `yotpa.tpatoggle` |
| `/tpareload` | Reload the plugin configuration | `yotpa.reload` |
| `/tpainfo` | View plugin information and statistics | `yotpa.info` |
| `/tpastats` | View teleport statistics | `yotpa.stats` |
**Default:** All permissions are granted to all players by default.
## Detailed Commands
### TPA Command
Send a request to teleport to another player.
“`
/tpa
“`
| Parameter | Type | Description |
| :——– | :— | :———- |
| `player` | `string` | **Required**. The player name you want to teleport to |
**Examples:**
“`
/tpa Steve # Request to teleport to player named Steve
/tpa Alex123 # Request to teleport to player named Alex123
“`

**Notes:**
– You cannot send a request to yourself
– There is a configurable cooldown between sending requests (default: 30 seconds)
– Request will expire after a configurable time (default: 60 seconds)
– Target player will receive a notification with clickable accept/deny buttons
—
### TPAccept Command
Accept a pending teleport request from another player.
“`
/tpaccept
“`
No parameters required – accepts the most recent teleport request.
**Examples:**
“`
/tpaccept # Accept the pending teleport request
“`

**Notes:**
– Only works if you have a pending teleport request
– After accepting, the teleportation will begin with a countdown
– The player must stay still during the countdown or it will be cancelled
– If accepting a `/tpa` request, the requester will teleport to you
– If accepting a `/tpahere` request, you will teleport to the requester
—
### TPADeny Command
Deny a pending teleport request from another player.
“`
/tpadeny
“`
No parameters required – denies the most recent teleport request.
**Examples:**
“`
/tpadeny # Deny the pending teleport request
“`

**Notes:**
– Only works if you have a pending teleport request
– The requester will be notified that their request was denied
– Request is immediately removed from the system
—
### TPAHere Command
Request another player to teleport to your location.
“`
/tpahere
“`
| Parameter | Type | Description |
| :——– | :— | :———- |
| `player` | `string` | **Required**. The player name you want to request to teleport to you |
**Examples:**
“`
/tpahere Steve # Request Steve to teleport to you
/tpahere Alex123 # Request Alex123 to teleport to you
“`

**Notes:**
– You cannot send a request to yourself
– There is a configurable cooldown between sending requests (default: 30 seconds)
– Request will expire after a configurable time (default: 60 seconds)
– The target player must accept with `/tpaccept`
—
### TPACancel Command
Cancel your outgoing teleport request.
“`
/tpacancel
“`
No parameters required – cancels your most recent outgoing request.
**Examples:**
“`
/tpacancel # Cancel your pending request
“`
**Notes:**
– Only works if you have an active outgoing request
– The target player will be notified that the request was cancelled
– Useful if you sent a request by mistake
—
### TPAToggle Command
Toggle whether you want to receive teleport requests.
“`
/tpatoggle
“`
No parameters required – toggles your request reception status.
**Examples:**
“`
/tpatoggle # Toggle receiving teleport requests on/off
“`
**Notes:**
– When toggled off, other players cannot send you teleport requests
– You will receive a message showing your current status
– Your setting persists across server restarts
—
### TPAReload Command
Reload the plugin configuration with validation.
“`
/tpareload
“`
No parameters required – reloads and validates the configuration file.
**Examples:**
“`
/tpareload # Reload the plugin configuration
“`

**Notes:**
– Requires the `yotpa.reload` permission (default: op only)
– Validates YAML syntax and all configuration values
– Checks that all sounds exist in Minecraft’s registry
– Shows detailed errors if config is invalid
– Only applies config if all validation passes
– Useful after making changes to the config.yml file
—
### TPAInfo Command
View plugin information and real-time statistics.
“`
/tpainfo
“`
No parameters required – displays plugin information.
**Examples:**
“`
/tpainfo # View plugin info and stats
“`
**Shows:**
– Current performance mode (auto-detected based on RAM)
– Optimization level and settings
– Active teleport requests
– Ongoing teleports
– Memory usage statistics
– Plugin version
**Notes:**
– Useful for monitoring plugin performance
– Helps diagnose issues
– Shows how the plugin has optimized itself for your server
—
### TPAStats Command
View teleport statistics and usage data.
“`
/tpastats
“`
No parameters required – displays teleport statistics.
**Examples:**
“`
/tpastats # View teleport statistics
“`
**Shows:**
– Total teleport requests sent
– Total teleport requests received
– Success rate
– Most active players
– Other usage metrics
**Notes:**
– Requires `features.statistics: true` in config
– Statistics are tracked per player
– Data persists across server restarts
## Optimization Tips
### For FREE/LOW-SPEC servers (512 MB – 1 GB):
– Keep mode as AUTO or ULTRA_LIGHT
– Limit total plugins to 5-8
– Set view-distance to 4 in server.properties
– Use Paper instead of Spigot
– Limit players to 5-10 concurrent
### For MID-RANGE servers (2-4 GB):
– Use AUTO or BALANCED mode
– Can run 10-15 plugins
– view-distance 6-8
– 15-25 players should be fine
### For HIGH-END servers (4+ GB):
– Use AUTO or HIGH_PERFORMANCE mode
– No significant plugin limitations
– view-distance 10-12
– 25+ players supported
## Performance
YoTPA is built with performance in mind:
– **Lightweight** – Minimal impact on server TPS
– **Thread-Safe** – No lag from concurrent operations
– **Memory Efficient** – Adapts to your server’s resources automatically
– **Async Operations** – Non-blocking task execution
– **Lock-Free** – No race conditions or deadlocks
## Installation
1. Download the latest JAR from the releases
2. Place the JAR in your server’s `plugins` folder
3. Restart your server
4. That’s it! The plugin will auto-configure based on your server’s specs
—

**Note:** This is my first plugin project!.