KothS2 ──────────────
Major Database Update!
⚡ Internal optimization: now all zones are cached in memory → faster autocompletion and zero lag.
️ New dual database system : use SQLite or MySQL depending on your config!
Automatic loading and saving of all KOTH zones between SQL/MySQL.
Reload system completely rewritten — no restart needed.
Improved reward system : multiple rewards, chances, and types (`item` or `command`).
Stats system upgraded: player, per-zone, and global tracking.
❌ Removed old single-reward logic → replaced with modern multi-reward handler.
Better PlaceholderAPI integration and performance.
Console commands supported for all KOTH admin actions.
──────────────
⚙️ Migration Notice
If you are updating from an older version of **KothS2** that still used `config.yml` to store KOTH zones,
you have two simple options to migrate your data safely:
Run the command:
Code (Text):
/skothmigrate
→ This will automatically migrate all your old KOTH zones from `config.yml` into the new SQL / MySQL database system.
Alternatively, rename your existing config.yml file to:
and place it in your plugin folder. KothS2 will detect it on the next startup and handle migration automatically.
Example file:
Spoiler: migrate.yml
Code (YAML):
zones :
hola :
corner1 :
==
: org.bukkit.Location
world
: world
x
: -90.60184926253707
y
: 103.0
z
: -283.4997399064077
pitch
: 33.750275
yaw
: 93.601135
corner2 :
==
: org.bukkit.Location
world
: world
x
: -98.59879450568678
y
: 96.0
z
: -276.47200427192143
pitch
: 90.0
yaw
: 92.10007
rewards :
- quantity
: 1
chance
: 1.0
data
: rO0ABXNyABpvcmcuYnVra2l0LnV0aWwuaW8uV3JhcHBlcvJQR+zxEm8FAgABTAADbWFwdAAPTGphdmEvdXRpbC9NYXA7eHBzcgA1Y29tLmdvb2dsZS5jb21tb24uY29sbGVjdC5JbW11dGFibGVNYXAkU2VyaWFsaXplZEZvcm0AAAAAAAAAAAIAAkwABGtleXN0ABJMamF2YS9sYW5nL09iamVjdDtMAAZ2YWx1ZXNxAH4ABHhwdXIAE1tMamF2YS5sYW5nLk9iamVjdDuQzlifEHMpbAIAAHhwAAAABXQAAj09dAALRGF0YVZlcnNpb250AAJpZHQABWNvdW50dAAOc2NoZW1hX3ZlcnNpb251cQB+AAYAAAAFdAAeb3JnLmJ1a2tpdC5pbnZlbnRvcnkuSXRlbVN0YWNrc3IAEWphdmEubGFuZy5JbnRlZ2VyEuKgpPeBhzgCAAFJAAV2YWx1ZXhyABBqYXZhLmxhbmcuTnVtYmVyhqyVHQuU4IsCAAB4cAAAEVh0ABltaW5lY3JhZnQ6bGlnaHRfYmx1ZV93b29sc3EAfgAPAAAAAXEAfgAT
type
: item
- quantity
: 1
chance
: 1.0
data
: /gamemode creative
{ player
}
type
: command
times
: - '14:00'
active-duration
: 100
capture-duration
: 100
──────────────
Community
──────────────
Requirements
Minecraft: 1.16.5 – 1.21 (tested on 1.21.8)
Java: 21+
PlaceholderAPI (optional but recommended)
──────────────
✅ Features
Full support for SQLite and MySQL with instant zone caching.
Automatic event scheduling (daily, weekly, or monthly).
Multiple reward types with configurable chance % .
Advanced stats system per player and per KOTH zone.
In-game command-based setup (no config editing required).
Lightweight, async database operations → no lag on large servers.
Reload command without restart (`/koth reload`).
Full console compatibility .
──────────────
Main Commands
/koth help
Shows the list of all available KOTH commands
/koth create <name>
Create a new empty KOTH zone
/koth setpos1 <zone>
Set first position for the zone region
/koth setpos2 <zone>
Set second position for the zone region
/koth info <zone>
Show complete info of the specified KOTH zone
/koth settime <zone> <duration> <capture>
Set event and capture duration (seconds)
/koth autoschedule <zone> <daily/weekly/monthly> <hours> [day]
Automatically schedule KOTH events
/koth start <zone>
Start the event manually
/koth stop <zone>
Stop the event instantly
/koth list
List all created KOTH zones
/koth rewards <zone>
Show the rewards of a zone
/koth addreward <zone> item|command
Add an item or command reward to the zone
/koth delreward <zone> <id>
Delete a reward from the zone by index
/koth stats <player>
Check player KOTH statistics
/koth clearstats <player|all> <zone|all> [count|all]
Clear or reduce player stats
/koth delete <zone>
Delete a KOTH zone completely
/koth reload
Reload the plugin, database, and all zones
──────────────
KOTH Placeholder List
Global Placeholders
%koth_zones_count%
Total number of registered zones.
%koth_active_count%
Number of zones currently active.
%koth_active%
Returns true if there’s any active zone.
%koth_active_zone%
Name of the first active zone (or a message if none).
%koth_capturer%
Name of the player currently capturing a zone.
%koth_time_left%
Time left for the active event (mm:ss).
%koth_total_server_wins%
Total server-wide wins recorded.
%koth_total_players_with_stats%
Number of players with saved stats.
Player Placeholders
%koth_player_total_wins%
Total wins of the player.
%koth_player_has_stats%
Returns true if the player has any stats recorded.
%koth_player_wins_<zone>%
Wins of the player in a specific zone. Example: %koth_player_wins_arena1%
Zone-Specific Placeholders
%koth_zone_status_<zone>%
Shows if the zone is Active or Inactive .
%koth_zone_capturer_<zone>%
Shows the player currently capturing that zone.
%koth_zone_timeleft_<zone>%
Shows time left before capture ends.
%koth_zone_total_wins_<zone>%
Total wins accumulated in that zone.
Zone Top Players
%koth_top_<zone><position>name%
%koth_top_arena1_1_name%
Name of the player at that ranking position.
%koth_top<zone><position>_wins%
%koth_top_arena1_1_wins%
Number of wins for that player.
Positions start from 1. If there’s no data, it returns your configured message in placeholders.no_data .
Global Top Players
%koth_topglobal_<position>name%
%koth_topglobal_1_name%
Name of the player in the global ranking.
%koth_topglobal<position>_wins%
%koth_topglobal_1_wins%
Total wins of that player across all zones.
⚙️ Messages.yml defaults
Code (YAML):
placeholders :
no_active_zone
:
"No active zone"
no_capturer
:
"No capturer"
no_time
:
"00:00"
zone_active
:
"&aActive"
zone_inactive
:
"&cInactive"
no_data
:
"-"
invalid
:
"Invalid placeholder"
⚙️ Installation
Download the plugin .jar file.
Place it in your server’s /plugins/ folder.
Restart or reload your server.
Run /koth create and set up your first zone.
Use /koth autoschedule to automate your events!
──────────────
⭐ Please consider
rating the plugin and leaving a review!
Your feedback keeps
KothS2 alive and growing ❤️