LocoPillars v26.05.1

Pillars of the Fortune, a core of Lucky Pillars! The #1 Free Pillars of the fortune plugin!



LocoPillars
Pillars of Fortune plugin for Paper 1.21+




What is LocoPillars?

LocoPillars is a feature-complete, production-ready Pillars of Fortune server plugin. Players spawn in isolated cages, get released into the arena, and compete to build the tallest pillar while fighting off every other player. Last one standing wins.

Under the hood it runs multi-instance arena management, fully scriptable LuckyBlocks, a drag-and-drop cosmetics shop, 27+ achievements, a per-player stats database, 100+ PlaceholderAPI placeholders, and an in-game map editor. All configurable without touching a single line of code.


Feature Overview

CategoryHighlights
GameplaySolo & team modes · Multi-instance arenas · Cage countdown
LuckyBlocks50 pre-designed effects · Fully scriptable via Kotlin .kts
Cosmetics64 pre-designed cosmetics · Kill / Death / Win effects · Custom cages
Achievements27+ achievements · 4 difficulty tiers · Reward system
StatisticsFull stats DB · Leaderboards · Streaks · Playtime · Multi-kills
Voting Eventsfully scriptable via modules
ChatContext-aware formats · Team chat · Social spy · Profanity filter
EditorIn-game map editor · WorldEdit/FAWE schematics · Validation
Scoreboards5 dynamic scoreboard types · Live team status · Timers
PlaceholderAPI100+ placeholders covering stats, teams, maps, achievements
DatabaseH2 (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.

Settings.json
JSON:
{
  "id": "firework_frenzy",
  "display_name": "Firework Frenzy",
  "description": "Colorful fireworks explode in every direction!",
  "icon": {
    "material": "FIREWORK_ROCKET",
    "custom_model_data": 0
  },
  "block_type": "LUCKY_BLOCK",
  "rarity": "COMMON"
}

Rarity options: COMMON UNCOMMON RARE EPIC LEGENDARY. Chances per rarity are configured in config.yml.

Luckyblock.kts

The script receives player (who broke the block) and game (utility helper). The full Bukkit/Paper API is available.

Code:
repeat(5) {
    val offset = player.location.clone().add(
        Math.random() * 4 - 2, 0.0, Math.random() * 4 - 2
    )
    game.spawnFirework(offset)
}
game.playSound(player, org.bukkit.Sound.ENTITY_FIREWORK_ROCKET_LAUNCH, 1.0f, 1.0f)
game.sendTitle(player, "§6Firework Frenzy!", "§7Celebrate!", 5, 50, 10)


Cosmetics

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.

TypeCountTrigger
Kill effects20Triggered when the player gets a kill
Death effects20Triggered when the player is eliminated
Win effects20Triggered when the player's team wins
Cages4The skin used for the spawn cage


Settings.json
JSON:
{
  "id": "firework_kill",
  "type": "KILL",
  "display_name": "§6Firework Kill",
  "lore": ["§7Launch a firework on every kill!"],
  "price": 300,
  "required_level": 3,
  "permission": "",
  "rarity": "UNCOMMON",
  "active": true,
  "icon": {
    "material": "FIREWORK_ROCKET",
    "custom_model_data": 0
  }
}

Cosmetic.kts

The script receives player (the cosmetic owner, killer for kill effects or the eliminated player for death effects) and game.

Code:
game.spawnFirework(player.location.add(0.0, 0.5, 0.0))
game.spawnParticles(player.location.add(0.0, 1.0, 0.0), org.bukkit.Particle.FIREWORK, 20, 0.5, 0.5, 0.5, 0.1)


Voting Events (Coming Soon)

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
JSON:
{
  "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:
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)
}

game.registerEventListener<org.bukkit.event.entity.EntityDamageEvent> { event ->
    val entity = event.entity
    if (entity is org.bukkit.entity.Player &&
        game.isPlayerInGame(entity) &&
        event.cause == org.bukkit.event.entity.EntityDamageEvent.DamageCause.FALL
    ) {
        event.isCancelled = true
    }
}


Achievements

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/.

DifficultyExamples
Easyfirst_win · builder_basics · explorer
Normalwarrior · demolisher · team_player
Hardchampion · survivor · multi_killer
Extremelegendary · perfect_game · comeback_king



Commands

Player Commands
CommandAliasesDescription
/pillars join <type|random>/pof, /gamesJoin a game or a random available game
/pillars leaveLeave your current game
/pillars listList available game types
/pillars statusView current game status
/pillars statsView server-wide statistics
/pillars helpShow help overview
/spawn/hub, /lobbyTeleport to the lobby
/stats/mystatsView personal statistics
/achievements/achOpen achievements overview
/cosmetics/cosmBrowse and equip cosmetics
/luckyblocks/luckybOpen the LuckyBlocks menu
/teamchat/tcToggle team chat mode
/hideme/hmHide yourself from other players
/hideothers/hoHide all other players from your view
/showothers <player>/soShow a specific player while hideothers is on


Admin Commands
CommandAliasesDescription
/editor toggle/admineditEnter / exit admin editor mode
/editor create <name>Create a new arena map
/editor edit <name>Edit an existing arena
/editor delete <name>Delete an arena
/editor listList all arenas
/editor saveSave current editor session
/editor cancelCancel without saving
/editor spawnManage spawn / cage positions
/editor validateValidate arena configuration
/editor settingsOpen editor settings GUI
/editor hotbarOpen the editor hotbar tool manager
/editor filesManage arena schematic files
/editor doctorRun auto-diagnostics on arena
/editor setupQuick-setup wizard
/editor resizeResize a schematic
/editor infoShow arena info
/setspawnSet the lobby spawn point
/vanish [player]/vToggle vanish for yourself or another player
/chatadmin reload/ca reloadReload chat configuration
/chatadmin announce <msg>/ca announceSend a server announcement
/chatadmin mute <player>/ca muteMute a player
/chatadmin unmute <player>/ca unmuteUnmute a player
/chatadmin clear/ca clearClear chat for all players
/chatadmin stats/ca statsView chat statistics
/chatadmin cooldown <player> <s>Set a player chat cooldown
/socialspy/spy, /ssToggle social spy
/cosmetics give <player> <id>Give a cosmetic to a player
/cosmetics coins <player> <amount>Modify a player coin balance
/cosmetics reloadReload cosmetics configuration
/luckyblocks getluckyblockGive yourself a LuckyBlock item
/memory check|clear|status/memView / manage plugin memory usage
/tab reloadReload TAB plugin config



Admin Editor (/editor)

LocoPillars ships with a full in-game map editor, no external tools needed.

  1. Run /editor setup for the guided quick-setup wizard.
  2. Use /editor create <name> to start a new arena.
  3. Place cage spawn points with the hotbar tools (/editor hotbar).
  4. Import WorldEdit / FAWE schematics and attach them to the arena.
  5. Run /editor validate to catch configuration errors.
  6. Save with /editor save and the arena is immediately available in-game.

Supports multiple schematics per arena, schematic resizing, and live hotbar-based spawn-point editing, all without leaving the game.


Scoreboards

ScoreboardShown WhenKey Info
LobbyPlayer is in the lobbyRank · Coins · Level · XP · Achievements · Online count
Game LobbyWaiting for a game to startGame name · Map · Player count · Min players
CageCountdown before game startsStart countdown · Game info
Active GameDuring a live gameLive timer · Item drop timer · Team status
SpectateSpectating a gameLive timer · Item timer · All team statuses



PlaceholderAPI

Requires PlaceholderAPI. All placeholders use the %locopillars_ prefix.

PlaceholderReturns
%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



PlaceholderReturns
%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



PlaceholderReturns
%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.:

PlaceholderReturns
%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):
PlaceholderReturns
%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



PlaceholderReturns
%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):

PlaceholderReturns
%locopillars_achievement_<id>_completed%1 if unlocked, 0 if not
%locopillars_achievement_<id>_progress%Raw progress value
%locopillars_achievement_<id>_percent%Progress as a percentage
%locopillars_achievement_<id>_name%Achievement name
%locopillars_achievement_<id>_description%Achievement description
%locopillars_achievement_<id>_difficulty%EASY / NORMAL / HARD / EXTREME
%locopillars_achievement_<id>_category%Achievement category
%locopillars_achievement_<id>_type%Achievement type
%locopillars_achievement_<category>_category_status%Percentage of a category completed
%locopillars_achievement_<difficulty>_difficulty_status%Percentage of a difficulty tier completed




Requirements & Dependencies


DependencyTypeNotes
PaperServer1.21+
WorldEdit or FastAsyncWorldEditRequiredAuto-detected at startup
PlaceholderAPIRequired2.11+
TAB[/TD>
[TD]Optional
5.2+, enhanced player list
ProtocolLibOptional5.4+, tab visibility management
VaultOptional1.7+, economy reward integration
ItemsAdderOptional3.6+, custom cosmetic item textures



Permissions

Players (default: true)
PermissionDescription
locopillars.pillars.*All /pillars subcommands
locoPillars.playJoin and play games
locopillars.spawnTeleport to lobby
locopillars.chat.useSend chat messages
locopillars.chat.teamchatUse team chat
locopillars.hidemeHide yourself from others
locopillars.hideothersHide other players
locopillars.showothersShow a specific player
locopillars.achievements.useUse achievement commands
locopillars.luckyblocks.menuOpen the LuckyBlocks menu


Staff (default: op)
PermissionDescription
locopillars.adminAll administrative access
locopillars.editorUse /editor and all map tools
locopillars.setspawnSet the lobby spawn location
locopillars.spawn.othersTeleport other players to spawn
locopillars.vanishToggle vanish mode
locopillars.memory.useMemory management commands
locopillars.chat.adminAll chat administration
locopillars.chat.socialspyView all player chat
locopillars.chat.bypass-cooldownSkip chat cooldown
locopillars.chat.bypass-filterSkip profanity filter
locopillars.achievements.adminAdminister achievements
locopillars.luckyblocks.getluckyblockGet a LuckyBlock via command
locopillars.notify.updateReceive in-game update notifications
locopillars.tabReload TAB configuration



Database

Set in config.yml, no code changes needed.

BackendNotes
H2Default, embedded, zero setup
MySQLRecommended for production / network servers
MariaDBFully supported
PostgreSQLFully supported


All backends use HikariCP connection pooling.


Configuration

Code:
plugins/LocoPillars/
├── config.yml              Main settings (database, arenas, chat, scoreboard, TAB)
├── language.yml            All player-facing messages
├── items.yml               GUI item definitions
├── Games/
│   └── <GameType>.yml      Per-game-type config (timers, build limits, rewards, teams)
├── Achievements/
│   └── <id>.yml            One file per achievement
├── Cosmetics/
│   ├── cages/<name>/       Settings.json
│   ├── kill/<name>/        Settings.json + Cosmetic.kts
│   ├── death/<name>/       Settings.json + Cosmetic.kts
│   └── win/<name>/         Settings.json + Cosmetic.kts
├── Luckyblocks/
│   └── <name>/             Settings.json + Luckyblock.kts
└── modules/
    └── voting/
        └── <name>/         settings.json + script.kts


Automatic Update Checker

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.



Made by kloppie74



EULA: Free EULA
453 Views
14 Downloads
Oct 23, 2024 Published
May 29, 2026 Updated
Not yet rated
66.6 MB File size
Open source
  1. No
DRM-free
  1. Yes
Unobfuscated
  1. No
Type
  1. Gameplay
  1. Minigame
  1. Fun
Game mode
  1. Minigame
Supported software
  1. Bukkit
  1. Spigot
  1. Paper
  1. Purpur
Supported versions
  1. 26.1
  1. 1.21.11
  1. 1.21.8
  1. 1.21.5
  1. 1.21.4
  1. 1.21.2
  1. 1.21
  1. 1.20
  1. 1.19
  1. 1.18
Supported languages
  1. English
Crediting original
Kloppie74
Creator
Struggling to cover the costs of your server? Set up your own webstore with Tebex in under 30 seconds.
Lag-free, customizable servers ready in minutes.
Host your adventure today!
Recommended for you
Modern and unique theme for MineStore Webstore
Not yet rated
1 purchase
#1 BuiltByBit Plugin ~ Protects your server from crash packet exploits ~ Folia Support
5.00 star(s) 141 ratings
4,169 purchases
Create items, blocks, mobs, emojis, and more with automatic resourcepack generation!
5.00 star(s) 52 ratings
3,088 purchases
Protect your server from crash/dupe/packet exploits with the ultimate security fix plugin.
5.00 star(s) 44 ratings
3,029 purchases
High Performance | Customizable | Cross-Version | GeyserMC | Folia Support
4.50 star(s) 72 ratings
2,800 purchases
453 Views
14 Downloads
Oct 23, 2024 Published
May 29, 2026 Updated
Not yet rated
66.6 MB File size
Open source
  1. No
DRM-free
  1. Yes
Unobfuscated
  1. No
Type
  1. Gameplay
  1. Minigame
  1. Fun
Game mode
  1. Minigame
Supported software
  1. Bukkit
  1. Spigot
  1. Paper
  1. Purpur
Supported versions
  1. 26.1
  1. 1.21.11
  1. 1.21.8
  1. 1.21.5
  1. 1.21.4
  1. 1.21.2
  1. 1.21
  1. 1.20
  1. 1.19
  1. 1.18
Supported languages
  1. English
Crediting original
Kloppie74
Creator
Struggling to cover the costs of your server? Set up your own webstore with Tebex in under 30 seconds.
Lag-free, customizable servers ready in minutes.
Host your adventure today!
Recommended for you
Modern and unique theme for MineStore Webstore
Not yet rated
1 purchase
#1 BuiltByBit Plugin ~ Protects your server from crash packet exploits ~ Folia Support
5.00 star(s) 141 ratings
4,169 purchases
Create items, blocks, mobs, emojis, and more with automatic resourcepack generation!
5.00 star(s) 52 ratings
3,088 purchases
Protect your server from crash/dupe/packet exploits with the ultimate security fix plugin.
5.00 star(s) 44 ratings
3,029 purchases
High Performance | Customizable | Cross-Version | GeyserMC | Folia Support
4.50 star(s) 72 ratings
2,800 purchases
Top