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!.
Yggdrasil Proxy
# YggdrasilProxy
When starting the game, the proxy in the device is automatically read to speed up Yggdrasil verification.
It extends Vanilla’s behavior and is more automated.
## Specific implementation
There is a setting in Windows, and its path is: “settings-> network-> proxy-> manual settings”.
YggdrasilProxy automatically reads them from the registry and verifies it, if it works, then use it immediately.
It basically works with network tools like Clash, you don’t need to proxy all traffic across the entire network card, you can easily connect to Yggdrasil Server through the proxy.
When registry data is not read, or is a non-Windows operating system, then YggdrasilProxy falls back to read environment variables (it does not need to be set in the JVM startup parameters, because they are annoying enough), it reads the following environment variables in the system and selects a valid variable to set to Proxy:
– http_proxy
– https_proxy
– no_proxy
## Defect
When the proxy server/tool is shut down, you may need to restart Minecraft.
Looking for a solution if I have time…
## Compatibility
Basically compatible with all operating systems.
Specially optimized for Windows.
## Which ModLoaders are supported?
– Fabric (Support, 1.18+)
– Quilt (Built with Fabric, 1.18+)
– Forge (Support, 1.19+)
– NeoForge (Support, 1.21.4+)
YggdrasilProxy is designed to be available for both Server and Client and is compatible with the most ModLoader and Minecraft versions.
If there is no compatibility, then I have not done it yet. If you’re in a hurry, join my DC server and send your ModLoader as well as Minecraft versions, I’ll be there soon.
## I want to use it in Plugin Server
Unfortunately, plugin servers are usually not compatible with mods, and I’m reluctant to use the Mixin framework to write them on the plugin server.
If you have relevant needs, please use two patches I made specifically for this, you only need to comply with GPL 3.0.
– [Patch 1](https://github.com/404Setup/Sewlia/blob/dev/1.21.4/sewlia-server/minecraft-patches/features/0005-Merge-YggdrasilProxy.patch)
– [Patch 2](https://github.com/404Setup/Sewlia/blob/dev/1.21.4/sewlia-server/paper-patches/features/0006-Merge-YggdrasilProxy.patch)
## For Modpack
If you comply with the license, you can use it freely for Modpack.
Modpacks that redistribute Minecraft game body (i.e. packages that package the entire Minecraft game including Mod files, Config, ShaderPacks, ResourcePacks, Library and launcher into a whole zip file) are not allowed to use this mod.
## License
This work has a restrictive license in addition to the original license to prevent some unexpected behavior,
see [404Setup Public License](https://github.com/404Setup/404Setup/blob/main/LICENSE.md)