H2 (embedded) · MySQL · MariaDB · PostgreSQL · HikariCP
Gameplay
Players drop into cages at the start of each round. After the countdown, cages open and everyone scrambles to build a pillar and fight for survival. The last team (or player) alive wins.
Multi-Instance Arenas Run multiple simultaneous games on the same server, each in its own isolated world. Set a number in
config.yml and LocoPillars handles the rest.
Team Support
Configurable players-per-team and number of teams
Team-colored leather armor
Team chat (/teamchat)
Team status on scoreboard & TAB list
LuckyBlocks
LuckyBlocks are fully scriptable. Each block is its own folder containing a
Settings.json for metadata and a
Luckyblock.kts for the effect. The plugin ships with
50 pre-designed LuckyBlocks. Drop a new folder into
plugins/LocoPillars/Luckyblocks/ and it gets picked up automatically with no restart needed.
Cosmetics work the same way as LuckyBlocks. Each cosmetic is a folder under
plugins/LocoPillars/Cosmetics/<type>/ with a
Settings.json and a
Cosmetic.kts script. The plugin ships with
64 pre-designed cosmetics across four categories. Players buy and equip cosmetics through
/cosmetics using in-game coins.
Voting events are mid-game modifiers that players vote on during a game. This system uses the same module-based approach as LuckyBlocks and Cosmetics. Drop a folder into
plugins/LocoPillars/modules/voting/ and it becomes available in-game without a restart.
settings.json
Code (json (Unknown Language)):
{
"id": "no_fall_mode",
"display_name": "No Fall Mode",
"description": "Fall damage is completely disabled for everyone in this round.",
"icon": {
"material": "FEATHER",
"custom_model_data": 0
},
"active": true,
"vote_weight": 1,
"duration": -1,
"announce": {
"title": "§6§lNo Fall Mode!",
"subtitle": "§7Fall damage is disabled!",
"chat": "§6[Event] §eNo Fall Mode is now active!"
}
}
script.kts
The script receives
game and
players. Use
game.registerEventListener to hook into Bukkit events. The listener is automatically cleaned up when the game ends.
Code (Kotlin):
game.
sendTitle("§6§lNo Fall Mode!",
"§7Fall damage is disabled!",
10,
60,
10) game.
broadcast("§6[Event] §eNo Fall Mode is now active!")
game.
getPlayers().
forEach{ player
-> player.
playSound(player.
location, org.
bukkit.
Sound.
ENTITY_PLAYER_LEVELUP, 1.0f, 1.2f
) }
27+ built-in achievements across 4 difficulty tiers, each with configurable XP and coin rewards. Add your own by dropping a
.yml file in
plugins/LocoPillars/Achievements/.
Difficulty
Examples
Easy
first_win · builder_basics · explorer
Normal
warrior · demolisher · team_player
Hard
champion · survivor · multi_killer
Extreme
legendary · perfect_game · comeback_king
PlaceholderAPI
Requires
PlaceholderAPI. All placeholders use the
%locopillars_ prefix.
Placeholder
Returns
%locopillars_db_player_name%
Player name
%locopillars_db_display_name%
Display name
%locopillars_db_games_played%
Total games played
%locopillars_db_games_won%
Total wins
%locopillars_db_games_lost%
Total losses
%locopillars_db_games_quit%
Total quits
%locopillars_db_total_kills%
Total kills
%locopillars_db_total_deaths%
Total deaths
%locopillars_db_total_assists%
Total assists
%locopillars_db_best_killstreak%
Best kill streak
%locopillars_db_current_killstreak%
Current kill streak
%locopillars_db_double_kills%
Double kills
%locopillars_db_triple_kills%
Triple kills
%locopillars_db_quad_kills%
Quad kills
%locopillars_db_current_win_streak%
Current win streak
%locopillars_db_best_win_streak%
Best win streak
%locopillars_db_current_loss_streak%
Current loss streak
%locopillars_db_worst_loss_streak%
Worst loss streak
%locopillars_db_damage_dealt%
Total damage dealt
%locopillars_db_damage_taken%
Total damage taken
%locopillars_db_fall_damage_taken%
Total fall damage taken
%locopillars_db_pillars_destroyed%
Pillars destroyed
%locopillars_db_blocks_broken%
Blocks broken
%locopillars_db_blocks_placed%
Blocks placed
%locopillars_db_total_distance_moved%
Total blocks walked
%locopillars_db_total_playtime%
Total playtime in seconds
%locopillars_db_level%
Player level
%locopillars_db_experience%
Player XP
%locopillars_db_coins%
Cosmetic coins
%locopillars_db_global_rank%
Global leaderboard rank
%locopillars_db_perfect_games%
Perfect games (no deaths)
%locopillars_db_comeback_wins%
Comeback victories
Placeholder
Returns
%locopillars_game_name%
Name of the current game
%locopillars_game_state%
State: WAITING / STARTING / ACTIVE / ENDED / RESETTING
%locopillars_game_map%
Map file name
%locopillars_game_map_name%
Map display name
%locopillars_game_world%
World name of the game instance
%locopillars_game_players_in_game%
Current player count
%locopillars_game_players_max%
Maximum players
%locopillars_game_players_min%
Minimum players to start
%locopillars_game_timer%
Game timer in seconds
%locopillars_game_timer_string%
Game timer as MM:SS
%locopillars_game_lobby_timer%
Lobby countdown in seconds
%locopillars_game_items_timer%
Seconds until next item drop
%locopillars_active_games%
Total active games on the server
Placeholder
Returns
%locopillars_team_name%
The player's team name
%locopillars_team_color%
The player's team color
%locopillars_team_size%
The player's team size
%locopillars_teams_total%
Total number of teams in the game
%locopillars_teams_names%
All team names, comma-separated
%locopillars_teams_colors%
All team colors, comma-separated
%locopillars_teams_sizes%
All team sizes, comma-separated
Replace
team1 with team1, team2, team3, etc.:
Placeholder
Returns
%locopillars_game_team_team1_displayname%
Team display name
%locopillars_game_team_team1_status_symbol%
Status: alive / eliminated / warning / empty
%locopillars_game_team_team1_players_alive%
Players still alive in the team
%locopillars_game_team_team1_players_total%
Total team players
%locopillars_game_team_team1_players_dead%
Eliminated team players
Replace
<mapname> with the map's folder name (e.g.
arena1):
Placeholder
Returns
%locopillars_map_<mapname>_players_in_lobby%
Players in lobby for this map
%locopillars_map_<mapname>_players_playing%
Players currently in a game on this map
%locopillars_map_<mapname>_players_total%
Total players (lobby + in-game) for this map
%locopillars_map_<mapname>_games_active%
Active game instances on this map
%locopillars_map_<mapname>_games_waiting%
Waiting game instances
%locopillars_map_<mapname>_games_starting%
Starting game instances
%locopillars_map_<mapname>_games_total%
Total instances for this map
%locopillars_online_players%
Total online players
%locopillars_player_name%
Shorthand for the player's name
Placeholder
Returns
%locopillars_achievement_total_count%
Total achievements available
%locopillars_achievement_total_completed_amount%
Achievements unlocked by this player
%locopillars_achievement_total_completed_percent%
Completion percentage
Replace
<id> with the achievement ID (e.g.
first_win):
LocoPillars checks Modrinth on startup for new releases. Staff with the
locopillars.notify.update permission receive an in-game notification when an update is available. Can be disabled in
config.yml.