YardWatch
# YardWatch (for server owners)
Implementation of [YardWatchAPI](https://github.com/YouHaveTrouble/YardWatchAPI) for common protection plugins. If any of supported plugins implements the API itself, then this plugin will stop providing its implementation to allow the
plugin to take over.
If you’re a developer looking for information how to implement YardWatchAPI in your plugin, see
[YardWatchAPI](https://github.com/YouHaveTrouble/YardWatchAPI)
## Requirements
– Java 17
– Minecraft 1.16+
## Implementations for:
– GriefPrevention (v16+)
– WorldGuard (7.0.0+)
– LWCX
– FactionsUUID
– SuperiorSkyBlock
– Towny
– PlotSquared (6.0.0+)
## Plugin you’re using is not implementing YardWatchAPI?
Contact the plugin developer and send them [here](https://github.com/YouHaveTrouble/YardWatchAPI/blob/master/readme.md)!
You can also request a temporary implementation within this plugin [here](https://github.com/YouHaveTrouble/YardWatch/issues/new?assignees=&labels=enhancement&projects=&template=implementation-request.yml&title=%5BNEW+IMPLEMENTATION%5D%3A+).
# YardWatchAPI (for developers)
API to unify protection plugins for minecraft bukkit servers to allow easy protection queries without having to import
10 different plugin apis with separate implementations.
Current version: [](https://jitpack.io/#YouHaveTrouble/YardWatchAPI)
If you’re looking for a plugin implementing YardWatchAPI for common protection plugins, see [YardWatch plugin](https://github.com/YouHaveTrouble/YardWatch).
# Usage
### Import the api using dependency manager
In any case of usage you will need to import the API. Replace `VERSION` with current version tag. You should also adjust your `` to `provided` if you’re not implementing the api and just querying it.
#### Maven
“`xml
jitpack.io
https://jitpack.io
com.github.YouHaveTrouble
YardWatchAPI
VERSION
compile
“`
#### Gradle
“`gradle
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
mavenCentral()
maven { url ‘https://jitpack.io’ }
}
}
dependencies {
compileOnly ‘com.github.YouHaveTrouble:YardWatchAPI:VERSION’
}
“`
## For plugins wanting to see if something is protected
### Check if player can break a block
Example handling of block breaking check. There’s no need to depend on any plugins for this.
“`java
public boolean canBreakBlock(Player player, Block block) {
ServicesManager servicesManager = getServer().getServicesManager();
Collection> protections = servicesManager.getRegistrations(Protection.class);
for (RegisteredServiceProvider protection : protections) {
if (protection.getProvider().canBreakBlock(player, block.getState(true))) continue;
return false; // if any protection plugin disallowed breaking the block, return false
}
// If all protection plugins allowed breaking the block, return true
return true;
}
“`
## For protection plugins
### Depend on YardWatch plugin
You can optionally softdepend and check if YardWatch is present to add an optional integration.
“`yml
depend:
– “YardWatch”
“`
### Implement Protection interface
Implement all the methods required by the interface
“`java
public class YourPluginProtection implements Protection {}
“`
### Register your implementation as a service
“`java
@Override
public void onEnable() {
getServer().getServicesManager().register(
Protection.class,
new YourPluginProtection(),
this,
ServicePriority.Normal
);
}
“`
YAML API

# YAML API
YAML API is a specialized library that simplifies working with YAML configuration files in Bukkit/Spigot/Paper plugins. It provides a robust and consistent interface for loading, saving, updating, and managing YAML-based configurations, along with advanced mapping capabilities for configuration sections and configurable units.
—
## Overview
The **YAML API** package offers a set of tools designed to handle YAML configuration files efficiently. It abstracts the complexity of file I/O and reflection-based configuration parsing, allowing you to focus on using configuration data in your plugin.
Key components include:
– **YAMLFile**: A class to load, save, and update YAML configuration files.
– **ResourceUtils**: Utility methods for handling resources and file operations.
– **Configurable & ConfigurableFile**: Interfaces and classes that provide easy access to the underlying `FileConfiguration`.
– **ConfigurableUnit**: An interface representing a configuration unit, useful for handling permissions or groups in the configuration.
– **Mappable, SectionMappable, UnitMappable & HashMappable**: A set of interfaces and classes for mapping configuration sections and units into Java collections.
– **YAMLUpdater**: A class that updates YAML files by merging default values and preserving comments.
—
## Key Features
– **Unified Configuration Management**:
Provides a consistent API for reading, writing, and updating YAML configuration files.
– **Dynamic Mapping and Conversion**:
Supports mapping configuration sections to custom units and collections, making it easier to work with complex configuration structures.
– **Resource and File Utilities**:
Includes helper classes to simplify file loading, resource saving, and directory management.
– **Comment Preservation and Updates**:
YAMLUpdater handles merging of default configuration values while preserving existing comments.
– **Reflection-Based Parsing**:
Uses reflection to dynamically access configuration sections and values, ensuring compatibility across server versions.
—
## Usage Example
Below is an example demonstrating how to use the YAML API to load, update, and work with configuration files.
### Example: Using ConfigurableFile and YAMLFile
“`java
package com.example.myplugin;
import me.croabeast.file.ConfigurableFile;
import me.croabeast.file.YAMLFile;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.plugin.java.JavaPlugin;
import java.io.IOException;
public class MyPlugin extends JavaPlugin {
private ConfigurableFile config;
@Override
public void onEnable() {
try {
// Create a new configuration file located in the “config” folder
config = new ConfigurableFile(this, “config”, “settings”)
// Optionally, override methods to control updatability or other behaviors
{
@Override
public boolean isUpdatable() {
// Retrieve the “update” key from the configuration to decide if updates are allowed
return get(“update”, false);
}
};
// Save the default configuration if not present
config.saveDefaults();
// Update the configuration file (merges defaults and preserves comments)
config.update();
} catch (IOException e) {
e.printStackTrace();
}
// Access configuration values
String prefix = config.get(“lang-prefix”, “&e MyPlugin »&7”);
getLogger().info(“Language prefix: ” + prefix);
}
}
“`
### Example: Working with Mappable and SectionMappable
“`java
package com.example.myplugin;
import me.croabeast.file.SectionMappable;
import me.croabeast.file.ConfigurableFile;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.plugin.java.JavaPlugin;
public class MyPlugin extends JavaPlugin {
private ConfigurableFile config;
@Override
public void onEnable() {
try {
config = new ConfigurableFile(this, “config”, “settings”);
config.saveDefaults();
config.update();
} catch (Exception e) {
e.printStackTrace();
}
// Assume we have a configuration section “advancements”
ConfigurationSection section = config.getConfiguration().getConfigurationSection(“advancements”);
if (section != null) {
// Create a SectionMappable from the configuration section
SectionMappable.Set sectionMap = SectionMappable.asSet(section.getValues(false));
// Process the mapped configuration as needed
getLogger().info(“Loaded advancements: ” + sectionMap);
}
}
}
“`
—
## Maven / Gradle Installation
To include YAML API to the project, add the following repository and dependency to your build configuration. Replace `${version}` with the desired version tag.
### Maven
Add the repository and dependency to your `pom.xml`:
“`xml
croabeast-repo
https://croabeast.github.io/repo/
me.croabeast
YAML-API
${version}
compile
“`
### Gradle
Add the repository and dependency to your `build.gradle`:
“`groovy
repositories {
maven {
url “https://croabeast.github.io/repo/”
}
}
dependencies {
implementation “me.croabeast:YAML-API:${version}”
}
“`
Replace `${version}` with the appropriate module version.
—
## Conclusion
**YAML API** is a powerful library for managing YAML configurations in your Bukkit/Spigot/Paper plugins. It streamlines file operations, mapping, and updates while preserving comments and ensuring compatibility across server versions. Whether you are building simple configuration systems or working with complex, nested settings, YAML API provides the tools you need to efficiently manage your plugin’s configuration.
Happy coding!
— *CroaBeast*
YamatoPlugin
# YamatoPlugin
YamatoPlugin adds a custom Yamato sword to your Minecraft server
The sword is made for fast combat and gives players several active abilities, ultimate charge from kills, and a configurable item description. It fits well for PvP servers, RPG servers, private servers, and any setup where you want one clean custom weapon without extra plugin dependencies
## Features
* Custom Yamato sword
* Active combat abilities
* Ultimate charge from kills
* Charge progress shown in the item lore
* Configurable damage and cooldowns
* Editable item name and description
* Editable plugin messages
* Works without required dependencies
## Commands
`/yamato give`
Gives Yamato to yourself.
`/yamato give `
Gives Yamato to another player.
`/yamato reload`
Reloads the plugin config.
## Permission
`yamato.admin`
This permission is required for the Yamato command. Server operators have it by default
## Compatibility
* Minecraft 1.20.5 to 1.21.1
* Java 21 or newer
* Spigot, Paper and Purpur
## Installation
1. Download the jar file
2. Put it into your server plugins folder
3. Start or restart the server
4. Edit `plugins/YamatoPlugin/config.yml` if needed
5. Use `/yamato give`
## Configuration
Most important parts can be changed in `config.yml`, including the sword name, material, item description, ability damage, cooldowns, ultimate charge and messages
YAdminCore
[](https://discord.gg/kZJhKZ48j8)
# YAdminCore
Plugin with, in my opinion, essential commands for server admins. Using permissions for different command functionalities you should be able to precisely specify what admins can do what.
# Commands
– heal and feed
– item
– memory
– god
– gamemode
– fly
– tp – In vanilla style, with @ selectors
– tphere
– tpoffline
– back – Teleports back, based on the last teleport event
– entityinfo / playerinfo
– enchant
– workbench, enderchest, anvil, grindstone, stonecutter, smithingtable, cartographytable, loom
### Other features
– SQLite or MySQL database for saving player data
– Fully customizable messages with lang file, supporting [PlaceholderAPI](https://github.com/PlaceholderAPI/PlaceholderAPI) and [MiniMessage](https://docs.advntr.dev/minimessage/index.html)
– Commands with tab completions
– API for developers
# Documentation
You can read about plugin’s [permissions](https://github.com/Ynfuien/YAdminCore/wiki/2.-Permissions), [placeholders](https://github.com/Ynfuien/YAdminCore/wiki/3.-Placeholders) etc. on the [wiki](https://github.com/Ynfuien/YAdminCore/wiki) page.
# Media – Example commands
`/entityinfo`

`/item` and `/enchant`

`/tp`

# Integrity with other plugins
I make these plugins for me, according to my needs, meaning, I don’t search for every possible plugin that I don’t care about, that could be somehow better integrated with mine. But, if you care about better integration between this plugin and some other, then just let me know through [Discord](https://discord.gg/kZJhKZ48j8) or [GitHub](https://github.com/Ynfuien/YAdminCore) and I will see what I can do.
Same goes for any features that you think may be missing. If something isn’t outside the scope of the plugin, then I’ll probably do it.
# License
This project uses [GNU GPLv3](https://github.com/Ynfuien/YAdminCore/main/blob/LICENSE) license.
yaay
YAAY (Yes, Another Addon for Yamipa) is a feature-rich addon for the Yamipa plugin that expands the image-claiming experience with a dedicated /imgui menu flow. Built for Paper and Folia servers, it provides a paginated inventory-based interface that makes browsing and claiming images easier and more intuitive for players.

### Key features
– **Paginated /imgui GUI** for browsing and claiming images
– **Visibility filtering** based on public and private path patterns
– **Claim cooldowns** to control how often players can claim images
– **Hourly limits** to help balance usage on busy servers
– **Anti-exploit protections** for safer image claim handling
– **Language support** with persistent per-player preferences
– **Public language sync API** for integration with other plugins
– **Per-file display overrides** through `display.yml`
– **Item overrides** for more flexible presentation
– **Multiple configuration files** for easy customization
### Configuration files
YAAY includes separate files for customizing:
– GUI behavior
– Claim limits
– Messages and translations
– Display settings
– Player locale options
### Compatibility
– **Java 8+**
– **Paper/Folia compatible**
– **Requires YamipaPlugin**
YAAY is designed to extend Yamipa with a cleaner, more configurable, and more user-friendly image management experience.
xWhitelist

# xWhitelist 📋
**xWhitelist** is a high-performance, hybrid whitelist plugin for Minecraft servers. Designed for flexibility and security, it allows server administrators to manage player access through a local whitelist file, a MySQL database, or a staff-only maintenance whitelist.
### Key Features 💫
– **Hybrid Whitelist Support** – Operates in offline/local mode or online MySQL mode.
– **Maintenance Whitelist** – Restrict server access to staff members during maintenance periods.
– **Customizable Messaging** – Multi-line kick messages, configurable prefixes, and command feedback.
– **Permissions Integration** – Fine-grained control over plugin and whitelist commands.
– **Placeholder Support** – Compatible with PlaceholderAPI for dynamic in-game information.
– **User-Friendly** – Simple configuration and intuitive commands for efficient management.
– **Free and Open Source** – Fully available for download and modification under a permissive license.
### Useful Links 🔗
– [GitHub Repository](https://github.com/xDrygo/xWhitelist) – Access the source code, fast releases, and submit **Issues** for bug reports, feature requests, or questions.
– [Wiki Documentation](https://wiki.drygo.dev/xwhitelist) – Detailed guides, configuration examples, and instructions for using xWhitelist.
### Support ❓
For technical issues, unexpected behavior, or enhancement suggestions, please submit an **Issue** on the [GitHub repository](https://github.com/xDrygo/xWhitelist/issues). This ensures your feedback is tracked and addressed efficiently.
—
xWhitelist is engineered to provide a **robust, reliable, and professional whitelist solution**, ensuring secure and efficient player management for your Minecraft server.
xVoidSpawn

# ⭐ xVoidSpawn – Advanced Anti-Void & Spawn Management
xVoidSpawn is a lightweight, optimized, and fully configurable Anti-Void plugin designed for modern Minecraft servers. It automatically rescues players when they fall into the void and safely teleports them to a configured spawn location — preventing unnecessary deaths and keeping your lobby or minigame experience smooth and professional.
Perfect for hubs, SkyBlock, void maps, minigames, and large server networks.
—
## 🚀 Key Features
### 🛡 Intelligent Anti-Void System
Automatically teleports players to a safe spawn when they fall below a configurable Y-level.
### ✈ Spawn on Join
Optionally teleport players to the main spawn every time they join the server. Ideal for lobbies and network environments.
### 💥 Fall Damage Protection
Resets the player’s fall distance after teleportation to ensure they never die from fall damage after being saved.
### 🎨 100% Configurable
Fully editable:
– Prefix
– Console messages
– Help menu
– All player messages
– Join behavior
– Void level trigger
Everything is managed inside `config.yml`.
### 🌈 Modern Color Support
Supports:
– Legacy color codes (`&a`, `&l`, etc.)
– HEX color codes (`&#RRGGBB`) for Minecraft 1.16.5+
### ⚡ Lightweight & Performance Friendly
Built to have minimal impact on server performance. No unnecessary tasks or heavy processes.
—
## 🛠 Commands & Permissions
Main Permission: `xvoidspawn.admin`
| Command | Description |
|———-|————-|
| `/xvs setspawn` | Sets the exact teleport spawn location |
| `/xvs reload` | Reloads the configuration without restarting |
| `/xvs help` | Displays the help menu |
All messages and help lines are fully customizable.
—
> ## ⚙ Configuration Overview (config.yml)
“`yaml
# ___ __ _
# / _____ _ __ / _(_) __ _ ⋆✴︎˚。⋆
# / / / _ | ‘_ | |_| |/ _` | Plugin by ˖⁺‧₊˚♡˚₊‧⁺˖
# / /__| (_) | | | | _| | (_| | xPlugins
# ____/___/|_| |_|_| |_|__, |
# |___/ .yml
# Language setting. Options: ‘en’, ‘es’.
# If you change this to ‘es’ and reload, the config messages will update to Spanish.
locale: en
teleport-on-join: true
void-level: 0
console-messages:
plugin-enabled: “7FF55[xVoidSpawn] &#AAAAAAPlugin enabled successfully.”
plugin-disabled: “&#FF5555[xVoidSpawn] &#AAAAAAPlugin disabled successfully.”
prefix: “ᆒDBxVoidSpawn &8» ”
messages:
no-permission: “&#FF0000 ✘ ¡Error! &fYou do not have permission.”
player-only: “&#FF0000 ✘ ¡Error! &fOnly players can use this.”
spawn-set: “�FF49 ✔ ¡Success! &fVoid spawn set.”
spawn-not-set: “&#FAEDCB ℹ ¡Attention! &fSpawn not set.”
void-teleport: “&#FCD05C ☀ ¡Careful! &fSaved from the void.”
reload: “7FF55 ✔ ¡Success! &fConfiguration reloaded.”
help-message:
– “”
– “&#FF5555&l xVoidSpawn – Help”
– “”
– “&8 • ᆒDB/xvs setspawn &8▸ &fSet spawn.”
– “&8 • ᆒDB/xvs reload &8▸ &fReload config.”
– “&8 • ᆒDB/xvs help &8▸ &fShow help.”
– “”
“`
—
> ## 📥 Installation
1. Download the latest .jar file.
2. Place it inside your server’s plugins folder.
3. Restart your server.
– In-game, run “/xvs setspawn“ at a safe location.
-# Your server is now protected from void deaths.
> ## 🎯 Ideal For
1. Lobby Servers
2. SkyBlock Hubs
3. Minigame Worlds
4. Void Maps
5. Network Setups
## 🔧 Compatibility
1. ✔ Spigot
2. ✔ Paper
3. ✔ 1.16.5+
Credits
Developed with ❤️ by xPlugins
xTranslate
# xTranslate
—————————————————————————————————-
### What is xTranslate ?
_xTranslate is a Minecraft Translation Plugin that translates In-game Chat messages in real time_
### How do i change my language ?
_You can change your language simply by typing /lauguage _
### How many languages are supported ?
_I dont even know the exact count but over 100+ languages are supported_
###
Spoiler
private static final Map SUPPORTED_LANGUAGES = Map.ofEntries(
Map.entry(“af”, “Afrikaans”), Map.entry(“sq”, “Albanian”), Map.entry(“am”, “Amharic”),
Map.entry(“ar”, “Arabic”), Map.entry(“hy”, “Armenian”), Map.entry(“az”, “Azerbaijani”),
Map.entry(“eu”, “Basque”), Map.entry(“be”, “Belarusian”), Map.entry(“bn”, “Bengali”),
Map.entry(“bs”, “Bosnian”), Map.entry(“bg”, “Bulgarian”), Map.entry(“ca”, “Catalan”),
Map.entry(“ceb”, “Cebuano”), Map.entry(“zh”, “Chinese”), Map.entry(“co”, “Corsican”),
Map.entry(“hr”, “Croatian”), Map.entry(“cs”, “Czech”), Map.entry(“da”, “Danish”),
Map.entry(“nl”, “Dutch”), Map.entry(“en”, “English”), Map.entry(“eo”, “Esperanto”),
Map.entry(“et”, “Estonian”), Map.entry(“fi”, “Finnish”), Map.entry(“fr”, “French”),
Map.entry(“fy”, “Frisian”), Map.entry(“gl”, “Galician”), Map.entry(“ka”, “Georgian”),
Map.entry(“de”, “German”), Map.entry(“el”, “Greek”), Map.entry(“gu”, “Gujarati”),
Map.entry(“ht”, “Haitian Creole”), Map.entry(“ha”, “Hausa”), Map.entry(“haw”, “Hawaiian”),
Map.entry(“he”, “Hebrew”), Map.entry(“hi”, “Hindi”), Map.entry(“hmn”, “Hmong”),
Map.entry(“hu”, “Hungarian”), Map.entry(“is”, “Icelandic”), Map.entry(“ig”, “Igbo”),
Map.entry(“id”, “Indonesian”), Map.entry(“ga”, “Irish”), Map.entry(“it”, “Italian”),
Map.entry(“ja”, “Japanese”), Map.entry(“jv”, “Javanese”), Map.entry(“kn”, “Kannada”),
Map.entry(“kk”, “Kazakh”), Map.entry(“km”, “Khmer”), Map.entry(“rw”, “Kinyarwanda”),
Map.entry(“ko”, “Korean”), Map.entry(“ku”, “Kurdish”), Map.entry(“ky”, “Kyrgyz”),
Map.entry(“lo”, “Lao”), Map.entry(“la”, “Latin”), Map.entry(“lv”, “Latvian”),
Map.entry(“lt”, “Lithuanian”), Map.entry(“lb”, “Luxembourgish”), Map.entry(“mk”, “Macedonian”),
Map.entry(“mg”, “Malagasy”), Map.entry(“ms”, “Malay”), Map.entry(“ml”, “Malayalam”),
Map.entry(“mt”, “Maltese”), Map.entry(“mi”, “Maori”), Map.entry(“mr”, “Marathi”),
Map.entry(“mn”, “Mongolian”), Map.entry(“my”, “Myanmar”), Map.entry(“ne”, “Nepali”),
Map.entry(“no”, “Norwegian”), Map.entry(“ny”, “Nyanja”), Map.entry(“or”, “Odia”),
Map.entry(“ps”, “Pashto”), Map.entry(“fa”, “Persian”), Map.entry(“pl”, “Polish”),
Map.entry(“pt”, “Portuguese”), Map.entry(“pa”, “Punjabi”), Map.entry(“ro”, “Romanian”),
Map.entry(“ru”, “Russian”), Map.entry(“sm”, “Samoan”), Map.entry(“gd”, “Scots Gaelic”),
Map.entry(“sr”, “Serbian”), Map.entry(“st”, “Sesotho”), Map.entry(“sn”, “Shona”),
Map.entry(“sd”, “Sindhi”), Map.entry(“si”, “Sinhala”), Map.entry(“sk”, “Slovak”),
Map.entry(“sl”, “Slovenian”), Map.entry(“so”, “Somali”), Map.entry(“es”, “Spanish”),
Map.entry(“su”, “Sundanese”), Map.entry(“sw”, “Swahili”), Map.entry(“sv”, “Swedish”),
Map.entry(“tl”, “Tagalog”), Map.entry(“tg”, “Tajik”), Map.entry(“ta”, “Tamil”),
Map.entry(“tt”, “Tatar”), Map.entry(“te”, “Telugu”), Map.entry(“th”, “Thai”),
Map.entry(“tr”, “Turkish”), Map.entry(“tk”, “Turkmen”), Map.entry(“uk”, “Ukrainian”),
Map.entry(“ur”, “Urdu”), Map.entry(“ug”, “Uyghur”), Map.entry(“uz”, “Uzbek”),
Map.entry(“vi”, “Vietnamese”), Map.entry(“cy”, “Welsh”), Map.entry(“xh”, “Xhosa”),
Map.entry(“yi”, “Yiddish”), Map.entry(“yo”, “Yoruba”), Map.entry(“zu”, “Zulu”)
);
### How does it work and is it free ?
_xTranslate is 100% and uses the offical `GOOGLE TRANSLATOR API`_
XTpaz
# **XTpaz – TPA Plugin**
XTpaz is a TPA (Teleport Ask) plugin for Paper/Spigot 1.20+. It provides simple, configurable player teleports with an optional confirmation GUI and strong anti-abuse options.
—
## 🔥 Key Features
### 👤 User experience
– **Confirmation GUI:** Confirm or cancel before sending a request; shows target world, ping, and player head.
– **Teleport countdown:** Configurable delay with action bar and sounds.
– **Movement check:** Teleport is cancelled if the player moves during the countdown.
– **Sounds:** Separate sounds for request sent/received, accept/deny, teleport, cooldown, etc.
### ⚙️ Requests & toggles
– **TPA & TPAHere:** Request to go to another player or bring them to you.
– **Auto-accept:** `/tpauto` and `/tpahereauto` for trusted players.
– **TPA toggle:** `/tpatoggle` to disable receiving requests.
– **Confirm toggle:** `/tpaconfirmtoggle` to switch between GUI and direct requests.
### 📋 Safety & limits
– **Request expiry:** Requests automatically expire (default 60 seconds).
– **Cooldowns:** Configurable cooldown between requests.
– **Offline cleanup:** Pending requests cleared when players quit.
### 🔧 Backend
– **Configurable messages:** Hex color support and placeholders (`{player}`, `{target}`, `{time}`).
– **Live reload:** `/xtpaz reload` reloads config and messages without restart.
—
## 🔧 Commands & Permissions
| Command | Description | Permission |
|——–|————-|————|
| `/tpa ` | Request to teleport to a player | `xtpaz.tpa` |
| `/tpahere ` | Request a player to teleport to you | `xtpaz.tpahere` |
| `/tpaccept [player]` | Accept a pending TPA request | `xtpaz.tpaccept` |
| `/tpadeny [player]` | Deny a pending TPA request | `xtpaz.tpadeny` |
| `/tpacancel [player]` | Cancel your pending request | `xtpaz.tpacancel` |
| `/tpauto` | Toggle auto-accept for /tpa | `xtpaz.tpauto` |
| `/tpahereauto` | Toggle auto-accept for /tpahere | `xtpaz.tpahereauto` |
| `/tpatoggle` | Toggle receiving TPA requests on/off | `xtpaz.tpatoggle` |
| `/tpaconfirmtoggle` | Toggle confirmation GUI on/off | `xtpaz.tpaconfirmtoggle` |
| `/xtpaz reload` | Reload configuration | `xtpaz.reload` |
—
## 📁 Configuration files
– **`config.yml`** – Request timeout, auto-accept delay, cooldown, teleport countdown, sounds, and message texts.
—
## ⛏️ Requirements
– **Server:** Paper or Spigot 1.20+
– **Java:** 17 or higher
xTntRun

# 💣 xTntRun – The Classic Minigame, Reinvented! 💣
Bring the excitement and chaos of the classic **TNTRun** to your server with **xTntRun**! This plugin allows you to quickly and easily set up the popular minigame where players must run on a platform that vanishes beneath their feet. The last player standing wins!
Designed to be **lightweight, efficient, and extremely customizable**, xTntRun is the perfect solution for any server looking to add a fun and competitive minigame for its community.
—
## ✨ Key Features
* 🚀 **Multi-Arena Support:** Create as many arenas as you want! Each can have its own unique setup to keep the fun going.
* 📋 **Interactive Selector GUI:** A sleek and user-friendly menu that allows players to see all available arenas, view their status (waiting/in-game), and join with a single click.
* 📊 **Detailed & Dynamic Scoreboard:** Display crucial information like the map name, remaining players, and game state. The scoreboard automatically updates for waiting, starting, and in-game phases.
* ⚙️ **Highly Customizable:** Modify **absolutely everything**—from messages and titles to items and menus—through the easy-to-edit `config.yml` and `messages.yml` files. Full HEX color support included!
* ⚔️ **Customizable Skill Items:** Add an extra layer of strategy with items like:
* **Double Jump:** An in-air boost to save yourself from a fall! (Fully configurable).
* **Punch Bow:** Annoy your opponents and knock them into the void!
* 🏆 **PlaceholderAPI Integration:** Use a wide range of placeholders to display TNTRun stats in any other compatible plugin, such as scoreboards or tablists.
* 🎉 **Victory Celebrations:** Make the winner feel special with customizable fireworks, sounds, and particle effects at the end of the match!
* 👨💻 **Simple Admin Commands:** Manage your arenas, set the main lobby, and reload the configuration with intuitive and powerful commands.
—
## 🔗 Dependencies
For xTntRun to work correctly, you will need to install the following plugins:
1. [**PlaceholderAPI**](https://www.spigotmc.org/resources/placeholderapi.624/): (Required) Necessary for all placeholders to function.
2. [**WorldEdit**](https://dev.bukkit.org/projects/worldedit): (Required for setup) Needed to save your arena schematics.
—
## 🛠️ Commands
### Player Commands
“/tntrun join “ – Join a specific arena.
“/tntrun leave“ – Leave your current arena.
“/tntrun menu“ – Open the arena selection menu.
### Admin Commands
“/tntrun create “ – Create a new arena.
“/tntrun setlobby “ – Set the waiting lobby for an arena.
“/tntrun setspectator “ – Set the spectator spawn point for an arena.
“/tntrun save “ – Save the arena and make it available for players.
“/tntrun setlobby“ – Set the main server lobby (where players go after a game).
“/tntrun reload“ – Reload the plugin’s configuration files.
—
## 📈 Available Placeholders
Use these placeholders with PlaceholderAPI to display stats anywhere on your server.
“%tntrun_players%“ – Total players across all TNTRun arenas.
“%tntrun_wins%“ – A player’s total wins.
“%tntrun_losses%“ – A player’s total losses.
“%tntrun_map_name%“ – The name of the map the player is in.
“%tntrun_arena_players%“ – Current players in the player’s arena.
“%tntrun_arena_max_players%“ – Max players in the player’s arena.
“%tntrun_countdown%“ – The current countdown timer.
## ⭐ Config
“`yaml
# ___ __ _
# / _____ _ __ / _(_) __ _
# / / / _ | ‘_ | |_| |/ _` | Plugin by
# / /__| (_) | | | | _| | (_| | xPlugins
# ____/___/|_| |_|_| |_|__, |
# |___/ 1.0.0
# Time in seconds for the countdown before the game starts.
countdown-seconds: 10
# Minimum players required for the countdown to start.
min-players: 2
# Maximum players per arena.
max-players: 40
lobby-location:
world: Hub
x: 0.5
y: 65.0
z: 0.5
yaw: -179.85002
pitch: 3.0000002
# ____ __ _
# / ___|___ _ __ / _(_) __ _
# | | / _ | ‘_ | |_| |/ _` |
# | |__| (_) | | | | _| | (_| |
# _______/|_| |_|_| |_|__, |
# |___/ Scoreboard
scoreboard:
title: ‘&#FF4B4B&lTNT &#FF8E15&lRUN’
lines-waiting:
– ‘&7%tntrun_date%’
– ‘ ‘
– ‘&fMap: &a%tntrun_map_name%’
– ‘&fPlayers: &a%tntrun_players%/%tntrun_max_players%’
– ‘ ‘
– ‘&eWaiting for players…’
– ‘ ‘
– ‘&#FFFF55myserver.net’
lines-starting:
– ‘&7%tntrun_date%’
– ‘ ‘
– ‘&fMap: &a%tntrun_map_name%’
– ‘&fPlayers: &a%tntrun_players%/%tntrun_max_players%’
– ‘ ‘
– ‘&fStarting in &a%tntrun_countdown%s’
– ‘ ‘
– ‘&#FFFF55myserver.net’
lines-ingame:
– ‘&7%tntrun_date%’
– ‘ ‘
– ‘&fPlayers remaining:’
– ‘&a%tntrun_players%/%tntrun_max_players%’
– ‘ ‘
– ‘&cRun for your life!’
– ‘ ‘
– ‘&#FFFF55myserver.net’
# ____ __ _
# / ___|___ _ __ / _(_) __ _
# | | / _ | ‘_ | |_| |/ _` |
# | |__| (_) | | | | _| | (_| |
# _______/|_| |_|_| |_|__, |
# |___/ Celebration
win-celebration:
enabled: true
fireworks:
enabled: true
amount: 5
power: 1
colors:
– ORANGE
– YELLOW
– RED
particles:
enabled: true
particle_type: FLAME
count: 100
sound:
enabled: true
sound_name: ENTITY_PLAYER_LEVELUP
volume: 1.0
pitch: 1.0
# ____ __ _
# / ___|___ _ __ / _(_) __ _
# | | / _ | ‘_ | |_| |/ _` |
# | |__| (_) | | | | _| | (_| |
# _______/|_| |_|_| |_|__, |
# |___/ Items
items:
leave-item:
enabled: true
material: RED_BED
slot: 8
name: ‘&8 ▸ &fLeave Game &8• &fRight Click!’
lore:
– ‘&8 ℹ Information’
– ”
– ‘&fClick to return’
– ‘&fto the main lobby.’
– ”
– ‘&#FF0000 ✔ Click to leave! ‘
– ”
enchanted: false
doublejump-item:
enabled: true
material: FEATHER
slot: 0
name: ‘&8 ▸ &fDouble Jump &8• &fRight Click!’
lore:
– ‘&8 ℹ Information’
– ”
– ‘&fRight-click in the’
– ‘&fair for a boost!’
– ”
– ‘&#FF0000 ✔ Jump now! ‘
– ”
enchanted: true
power: 1.1
cooldown-seconds: 3
sound: ENTITY_GHAST_SHOOT
title:
enabled: true
main-title: ‘CFCCA✈ &lWHOOSH!CFCCA ✈’
sub-title: ”
fade-in: 0
stay: 10
fade-out: 5
punch-bow:
enabled: true
material: BOW
slot: 1
arrow-slot: 10
name: ‘&8 ▸ &fPunch Bow &8• &fRight Click!’
lore:
– ‘&8 ℹ Information’
– ”
– ‘&fAnnoy your friends’
– ‘&fusing this item!’
– ”
– ‘&#FF0000 ✔ Use it now! ‘
– ”
enchanted: true
unbreakable: true
knockback-power: 0.5
cooldown-seconds: 2
# ____ __ _
# / ___|___ _ __ / _(_) __ _
# | | / _ | ‘_ | |_| |/ _` |
# | |__| (_) | | | | _| | (_| |
# _______/|_| |_|_| |_|__, |
# |___/ Messages (Titles)
game-titles:
countdown:
enabled: true
main-title: ‘&#FFA0A0Get Ready!’
sub-title: ‘&fThe game starts in &#FFA0A0%time%s’
fade-in: 5
stay: 20
fade-out: 5
start:
enabled: true
main-title: ‘&f☠ &#FF0000&lRUN! &f☠’
sub-title: ‘&fDon”t let the blocks fall!’
fade-in: 10
stay: 40
fade-out: 10
# ____ __ _
# / ___|___ _ __ / _(_) __ _
# | | / _ | ‘_ | |_| |/ _` |
# | |__| (_) | | | | _| | (_| |
# _______/|_| |_|_| |_|__, |
# |___/ Arena Menu
arena-menu:
title: ‘&8 Arena Selector’
size: 36
filler-item:
enabled: true
material: BLACK_STAINED_GLASS_PANE
name: ‘ ‘
random-join-item:
enabled: true
material: NETHER_STAR
slot: 31
name: ‘&8 ▸ PFF99Quick Match! ☀ ‘
lore:
– ”
– ‘&8 ℹ Information’
– ”
– ‘&fClick to join any’
– ‘&favailable arena!’
– ”
– ‘PFF99 ▸ &nClickPFF99 to play!’
– ”
close-menu-item:
enabled: true
material: ‘head:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvM2VkMWFiYTczZjYzOWY0YmM0MmJkNDgxOTZjNzE1MTk3YmUyNzEyYzNiOTYyYzk3ZWJmOWU5ZWQ4ZWZhMDI1In19fQ==’
slot: 35
name: ‘&#FF0000 ✘ Close Menu!’
lore:
– ”
– ‘&8 ℹ Information’
– ”
– ‘&fClick to close’
– ‘&fthis menu!’
– ”
– ‘&#FF0000 ✔ Click to close! ‘
– ”
item-available:
material: ‘head:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNGI1OTljNjE4ZTkxNGMyNWEzN2Q2OWY1NDFhMjJiZWJiZjc1MTYxNTI2Mzc1NmYyNTYxZmFiNGNmYTM5ZSJ9fX0=’
name: ‘&8 ▸ &fMap &7• &#FF0000%map_name%’
lore:
– ”
– ‘&8 ℹ Information’
– ”
– ‘&7 ▸ &fStatus: 7FF55Available!’
– ‘&7 ▸ &fPlayers: &a%players%/%max_players%’
– ”
– ‘&#FF0000 ✔ Click to join! ‘
– ”
item-unavailable:
material: ‘head:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNjE4NTZjN2IzNzhkMzUwMjYyMTQzODQzZDFmOWZiYjIxOTExYTcxOTgzYmE3YjM5YTRkNGJhNWI2NmJlZGM2In19fQ==’
name: ‘&8 ▸ &fArena &7• &#FF8888%map_name%’
lore:
– ”
– ‘&8 ℹ Information’
– ”
– ‘&7 ▸ &fStatus: &#FF8888✘’
– ‘&7 ▸ &fPlayers: &#FF8888%players%/%max_players%’
– ”
– ‘&#FF8888 ✘ Not available! ‘
– ”
“`
## 💫 Messanges
“`yaml
#
# // ___ ___ ___ __ _ _ __ __ _ ___ ___
# / / _ / __/ __|/ _` | ‘_ / _` |/ _ / __|
# / // __/__ __ (_| | | | | (_| | __/__
# / /___||___/___/__,_|_| |_|__, |___||___/
# |___/ .yml
prefix: ‘&#FF5555xTntRun’ # Set to ” for better aesthetics 🙂
# Error & Warning Messages
no-permission: ‘&#FF5555 ✘ Attention! You do not have permission to execute this command.’
player-only-command: ‘&#FF5555 ✘ Attention! This command can only be executed by a player.’
game-not-found: ‘&#FFBB55 ⚠ Oops! The arena you mentioned does not exist.’
already-in-game: ‘&#FFBB55 ℹ Wait! You are already in a game.’
not-in-game: ‘&#FFBB55 ⚠ Attention! You are not currently in a game.’
game-full: ‘&#FFBB55 ℹ Sorry! The game is full.’
game-in-progress: ‘&#FFBB55 ℹ Attention! The game has already started.’
no-games-available: ‘&#FFBB55 ⚠ Oops! There are no games available at the moment.’
item-on-cooldown: ‘&#FFBB55 ⌚ Wait! You must wait a bit to use this again.’
fly-disabled: ‘&#FF5555 ℹ Attention! You cannot fly during the game.’
# Game Messages
player-join: ‘CFF6F ✔ &n%player%&f has joined the game. &7(%current%/%max%)’
player-leave: ‘&#FF6F6F ✘ &n%player%&f has left the game. &7(%current%/%max%)’
player-eliminated: ‘&#FF0000 ☠ &n%player%&f has been eliminated.’
countdown-starting: ‘&#FAEDCB ℹ Get ready! &fThe game will start in &#FAEDCB%time% &fseconds…’
game-start: ‘&#FCD05C 🔥 The game has started! Run for your life!’
game-win: ‘&#FCD05C ☀ Congratulations, &n%winner%&f! You have won the TNT Run game.’
not-enough-players: ‘&#FAEDCB ⚠ Attention! The countdown has stopped. Not enough players.’
# Admin Command Messages
lobby-set: ‘7FF55 ✔ Success! You have set the main lobby to your position.’
reload-success: ‘7FF55 ✔ Success! The plugin configurations have been reloaded.’
“`
—
> ### Need Help?
> If you have any questions, suggestions, or find a bug, don’t hesitate to post it in th