UltraCoinFlip is the most advanced and feature-rich coinflip gambling plugin for Minecraft servers.
Bring the thrill of high-stakes gambling to your server. Players create and join coinflip games, betting their in-game currency against each other. Every flip is powered by a cryptographically secure random algorithm, guaranteeing provably fair outcomes. Ideal for economy, survival, skyblock, factions, prison, and any server looking to boost player engagement.
Why choose UltraCoinFlip over other coinflip plugins?
- Most feature-rich coinflip plugin available
- Optimized performance with smart caching and async operations
- Actively maintained with regular updates and new features
- 17 languages ready to use
- Free & Fastest support via Discord
⭐ Features
- Multi-currency support: Vault, PlayerPoints, TokenManager, BeastTokens, CoinsEngine, and PlaceholderAPI with unlimited custom currencies
- Database support: SQLite and MySQL with HikariCP connection pooling
- Comprehensive statistics: Track wins, losses, profit, net profit, and winstreaks with 60+ PlaceholderAPI placeholders
- Leaderboard system: Top 15 players with customizable GUI, filter by wins/losses/profit/largest win/winstreak
- Winstreak tracking: Consecutive wins for each player, resets on loss
- Dynamic tax system: Tier-based tax rates based on bet amount
- Fully customizable GUI: Layout, items, colors, animations, all visual elements
- Discord webhook integration: Send game results to your Discord server
- Folia compatible: Full support for Paper's Folia server software
- High performance: Smart caching, batch updates, async operations, minimal resource usage
- Game history: Complete game history with custom GUI and advanced filtering
- Security features: Anti-exploit protection, automatic refunds, backup system, transaction safety
- Anvil GUI input: Alternative to chat input for better user experience
- Multiple notifications: Title, ActionBar, BossBar, and Sound notifications
- Per-currency config: Enable/disable tax, min/max bets, settings per currency
- World restrictions: Restrict currencies by world (whitelist/blacklist) and permissions
- Amount formatting: Supports k, M, B, T (thousands, millions, billions, trillions)
- Player settings: 17 toggleable settings for messages and notifications
- Play with Bot: Play against server bot with customizable name, head, and animations
- Private coinflips & invites: Invite specific players with clickable
[Accept]/[Deny]chat buttons, lock games invite-only, optional persistence across server restart - Betting limits: Daily/weekly limits per player per currency with permission bypass
- Earnings & loss limits: Cap cumulative win/loss per period with smart auto-tune from real activity data
- Public developer API: Other plugins can integrate via JitPack with events, queries, and custom currency hooks
- Smart update notifications: Severity-aware GitHub release alerts, [CRITICAL] fixes stand out from cosmetic ones
- Admin dashboard: Real-time monitoring GUI for server status and active transactions
- 17 Languages: 🇬🇧 English, 🇻🇳 Vietnamese, 🇫🇷 French, 🇳🇱 Dutch, 🇷🇺 Russian, 🇨🇳 Chinese (Simplified), 🇹🇼 Chinese (Traditional), 🇪🇸 Spanish, 🇩🇪 German, 🇸🇦 Arabic, 🇮🇹 Italian, 🇱🇹 Lithuanian, 🇧🇷 Portuguese (Brazil), 🇵🇱 Polish, 🇹🇷 Turkish, 🇰🇷 Korean, 🇯🇵 Japanese
📝 Commands
| Command | Description |
|---|---|
/coinflip |
Open the coinflip menu |
/coinflip help |
Display all available commands |
/coinflip create <currency> <amount> |
Create a new coinflip game |
/coinflip create <currency> <amount> bot |
Play against the server bot |
/coinflip delete |
Cancel your active coinflip game |
/coinflip invite <player> |
Invite a specific player with clickable Accept/Deny in chat |
/coinflip uninvite <player> |
Remove a player from your invite list |
/coinflip accept [id] |
Accept a coinflip invite (id optional with single pending) |
/coinflip deny [id] |
Deny a coinflip invite |
/coinflip private [on\|off] |
Toggle invite-only mode on your coinflip |
/coinflip reload |
Reload plugin configuration |
/coinflip history |
View your game history |
/cf settings |
Open player settings GUI |
/cf leaderboard |
View top players leaderboard |
/cf stats [player] |
View player coinflip statistics |
/cf limit me |
View your earnings/loss limits and current usage |
/cf limit player <name> |
Staff: view another player's limits |
/cf limit reset <name> |
Admin: reset a player's earnings in the current period |
/cf limit auto-tune <currency> |
Admin: suggest cap values from your last 30 days of activity |
/cf audit |
Admin dashboard (real-time monitoring) |
🔑 Permissions
| Permission | Description | Default |
|---|---|---|
ultracoinflip.use |
Use basic coinflip commands | true |
ultracoinflip.reload |
Reload plugin configuration | op |
ultracoinflip.admin |
Access admin commands | op |
ultracoinflip.command.menu |
Use /cf (open the main menu) |
true |
ultracoinflip.command.create |
Use /cf create |
true |
ultracoinflip.command.delete |
Use /cf delete |
true |
ultracoinflip.command.history |
Use /cf history |
true |
ultracoinflip.command.leaderboard |
Use /cf leaderboard |
true |
ultracoinflip.command.settings |
Use /cf settings |
true |
ultracoinflip.command.stats |
Use /cf stats |
true |
ultracoinflip.command.help |
Use /cf help |
true |
ultracoinflip.command.invite |
Use /cf invite and /cf uninvite |
true |
ultracoinflip.command.accept |
Use /cf accept and /cf deny |
true |
ultracoinflip.command.private |
Use /cf private |
true |
ultracoinflip.silent |
Disable notifications | false |
ultracoinflip.bypass.tax |
Bypass tax, receive full winnings | false |
ultracoinflip.bypass.bettinglimit |
Bypass daily/weekly betting limits | false |
ultracoinflip.limit.me |
View your own earnings/loss limits | true |
ultracoinflip.limit.staff |
View other players' earnings/loss limits | op |
ultracoinflip.admin.limit |
Reset / auto-tune earnings limits | op |
ultracoinflip.house.use |
Use "play with bot" feature | true |
ultracoinflip.house.bypass.limit |
Bypass daily bot game limit | false |
ultracoinflip.house.bypass.delay |
Bypass delay between bot games | false |
ultracoinflip.stats.others |
View other players' stats | false |
ultracoinflip.settings.bypass |
Bypass all player settings | false |
📊 PlaceholderAPI Placeholders (60+)
Basic Statistics
%coinflip_wins%— Total wins%coinflip_losses%— Total losses%coinflip_total_games%— Total games played%coinflip_winstreak%— Current winstreak
Win Percentage
%coinflip_winrate%— Overall win percentage%coinflip_winrate_formatted%— Win percentage with % symbol%coinflip_winrate_<currency>%— Winrate for specific currency%coinflip_winrate_<currency>_formatted%— Winrate for specific currency with % symbol
Supported currencies: money, playerpoints, tokenmanager, beasttokens, and custom placeholder currencies.
Profit Tracking
%coinflip_profit_<currency>%— Total profit%coinflip_loss_<currency>%— Total loss%coinflip_net_profit_<currency>%— Net profit (profit - loss)%coinflip_profit_<currency>_formatted%— Formatted profit%coinflip_loss_<currency>_formatted%— Formatted loss%coinflip_net_profit_<currency>_formatted%— Formatted net profit
Currencies: money (alias: m), playerpoints (pp), tokenmanager (tm), beasttokens (bt).
Combined Statistics
%coinflip_total_profit%— Total profit across all tracked currencies%coinflip_total_loss%— Total losses across all tracked currencies%coinflip_total_net%— Total net profit across all tracked currencies
Player Ranking
%coinflip_position%— Player's rank by wins (default)%coinflip_position_wins%— Player's rank by wins%coinflip_position_losses%— Player's rank by losses%coinflip_position_winstreak%— Player's rank by winstreak%coinflip_position_profit_<currency>%— Player's rank by profit%coinflip_position_largest-win_<currency>%— Player's rank by largest win%coinflip_position_worst-profit_<currency>%— Player's rank by worst profit
Leaderboard
%coinflip_top_<rank>_<filter>_<currency>_name%— Top player name%coinflip_top_<rank>_<filter>_<currency>_value%— Top player value%coinflip_top_<rank>_<filter>_<currency>_value_formatted%— Formatted value%coinflip_top_<rank>_wins_name%— Top player by wins%coinflip_top_<rank>_losses_name%— Top player by total losses%coinflip_top_<rank>_winstreak_value%— Top player's winstreak%coinflip_leaderboard_refresh_in%— Live countdown to the next leaderboard cache refresh (e.g.2m20s). Format customizable inconfig.yml
Filters: wins, losses, profit, largest-win, worst-profit, winstreak.
Optional period: add daily, weekly, monthly or yearly after the filter, e.g. %coinflip_top_1_wins_monthly_name% (no period = all-time).
Custom Currency Placeholders
%coinflip_coinsengine_<id>_unit%— CoinsEngine currency unit%coinflip_coinsengine_<id>_display%— CoinsEngine currency display name%coinflip_placeholder_<id>_unit%— Custom currency unit%coinflip_placeholder_<id>_display%— Custom currency display name%coinflip_<id>_unit%— Custom currency unit (short format)%coinflip_<id>_display%— Custom currency display name (short format)%coinflip_winrate_<id>%— Winrate for custom placeholder currency%coinflip_winrate_<id>_formatted%— Winrate with % symbol
🔌 Developer API
Other plugins integrate via JitPack:
<dependency>
<groupId>com.github.hiiamken</groupId>
<artifactId>UltraCoinFlip-API</artifactId>
<version>5.1.0</version>
<scope>provided</scope>
</dependency>
Full integration guide (Gradle, listener examples, all 9 events, API stability promise): github.com/hiiamken/UltraCoinFlip-API
📋 Requirements
| Requirement | Version |
|---|---|
| Java | 8 or higher |
| Server | 1.8.x – 26.2 (Spigot / Paper / Folia) |
| Required | Vault + Economy plugin (EssentialsX, CMI, etc.) |
| Optional | PlaceholderAPI, PlayerPoints, TokenManager, BeastTokens, ExcellentEconomy (CoinsEngine) |
All Versions
+ Add Version| Name | Game version | Platforms | Published | Downloads | Actions |
|---|---|---|---|---|---|
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 |
- Fix!** Settings no longer show toggles for features you turned off, like bot games or the **bossbar**
- Fix!** Turning off bot games fills its main menu slot with glass instead of leaving a gap
- Fix!** Menu buttons no longer play their sound twice, like going back to the main menu
- Fix!** Fixed a typo in the sound notifications setting name
- Fix!** The plugin starts even when another plugin ships a library that can't read your server version
- Fix!** A pending refund no longer goes missing when the same player starts another coinflip
- Fix!** Daily and weekly bet limits survive a restart instead of resetting to zero
- Fix!** Cancelling or expiring a coinflip gives that amount back to the player's bet limit
- Fix!** Amounts like **2.01k** are read as 2010 instead of 2009.99
- New!** Full **Minecraft 26.3** support out of the box
- New!** **/cf support** gives you one link with everything we need to help you faster
- Fix!** Head textures like the bot head and menu arrows show up again on **1.8–1.17**
- Fix!** Menus no longer show a skeleton skull where a player head belongs on **1.8–1.12**
- Fix!** Typing a custom bet amount in the anvil works again on **26.x**
- Optimize!** Refreshed the libraries the plugin ships with
- Fix!** On **Folia**, joining a coinflip whose host is far away no longer errors and loses both bets
- Fix!** A coinflip that fails to start now gives the bet back and puts the game back in the list
- Fix!** The plugin starts again on **Paper 1.16.5–1.18.1** instead of failing to enable
- Fix!** **MySQL** servers (not MariaDB) now create their tables instead of running without them
- Fix!** The plugin now stops if its database can't start instead of taking unprotected bets
- Fix!** **persist-games** keeps waiting coinflips across restarts and no longer loses bets after a crash
- Fix!** A database hiccup no longer resets a player's **stats**
- Fix!** Closing the flip menu no longer sends admins a false exploit alert
- Fix!** The coinflip list refreshes live again in every language
- Fix!** Menu items can no longer be taken out after a plugin reload or from a shared roll menu
- Fix!** **HeadDatabase** heads now show on every menu button instead of a plain head
- Fix!** **/cf limit** works for regular players, and six settings toggles now work for ops too
- Fix!** Players with **ultracoinflip.admin** can now use /cf reload
- Fix!** A typo in a language or menu file no longer resets it back to defaults
- Fix!** Currency **message overrides** and **event command** switches no longer vanish on restart
- Fix!** Coinflips that expire now run their **on-cancelled** event commands
- Fix!** Per-currency limits you add yourself now survive **config** updates
- Fix!** **Earnings limit** warnings now play their sound, and a **money** block works like vault
- Fix!** The earnings limit **auto-tune** multiplier is no longer wiped from config.yml
- Fix!** Boss bar messages now show up, and action bars work on **Spigot**
- Fix!** Long menu titles, player heads and dye icons display correctly on **1.8–1.12**
- Fix!** Custom bet amounts fall back to chat properly on **26.x** and **Folia**
- Fix!** Running a command while the bet prompt is open no longer eats the command
- Fix!** **/cf create playerpoints** and the other currency names from the help message now work
- Fix!** Extra command names in **command_aliases** now actually register
- Fix!** Custom currency balances like **1.5k** and currency file amounts like **10M** are read correctly
- Fix!** **CoinsEngine** wins and losses from player games now count in stats
- Fix!** The custom currency **win rate** placeholder no longer always shows 0
- Fix!** Daily to yearly **profit** leaderboards now count profit the same way as the all-time board
- Fix!** Bot game history now saves on **MySQL** even with a long bot name
- Fix!** Plugins listening for limit events now get the real reset time
- Fix!** Config comments now match what really happens when players leave or close a flip
- Fix!** Errors from other plugins show in the console again instead of disappearing
- Optimize!** The stats and heads-or-tails menus no longer log a sound warning every time they open
- Fix!** Creating and joining games works again on **1.8.8–1.11.2** servers
- Fix!** A refund from one **bot** game could pay out another player's bet a second time
- Fix!** Starting a second flip while one was still rolling could swallow the bet
- Fix!** A flip that was already refunded could still pay out when its animation ended
- Fix!** Relogging during a flip no longer cancels it and burns the loser's bet
- Fix!** Leaving mid-flip now pays your full winnings instead of only your bet back
- Fix!** Winnings that fail to deposit are now saved in full for your next join
- Fix!** Cancelling a coinflip right as you joined could refund it twice
- Fix!** **/cf reload** during a flip now refunds online players right away
- Fix!** **Custom currencies** handle comma-decimal servers and very large balances correctly
- Fix!** A mistyped **custom currency** command no longer lets bets through for free
- Fix!** Decimal **Points** and **Tokens** bets on older configs no longer take points without a game
- Fix!** **Earnings limits** now apply to bot games and count real profit, not the whole payout
- Fix!** **Betting limits** now apply to players who join a coinflip
- Fix!** Turning off **house.tax.enabled** now actually removes tax from bot games
- Fix!** Very large bets no longer get paid less than they should
- Fix!** The update checker now actually tells you when a new version is out
- Fix!** A player name containing a placeholder can no longer freeze the server
- Fix!** Rejoining right after a refund could hand the same bet back over and over
- Fix!** Stopping or reloading the server could pay a bet back twice on **bot** games
- Fix!** One failed refund on shutdown no longer stops everyone else from getting theirs
- Fix!** The first game after a restart no longer wipes that player's lifetime **stats**
- Fix!** **SQLite** servers no longer lose stats and history writes at random
- Fix!** The update checker no longer breaks on **Java 8** servers
- Fix!** Currency limits you add yourself stay in **config.yml** instead of vanishing on restart
- Fix!** Earnings limit **permission groups** now actually raise the cap
- Fix!** The currency arrow in the create menu now moves your bet inside that currency's limits
- Fix!** **/cf limit player** showed your own limits when the target was offline
- Fix!** Leaderboard placeholders for **custom currencies** now return a value
- Fix!** The audit menu no longer fails to open on **1.8-1.12**
- Fix!** Translated two leftover English messages in **5 languages**
- Optimize!** The history menu only loads the page you're on instead of your whole history
- Optimize!** **Discord** messages no longer pause the server looking a player name up
- Optimize!** Chat and menu text is turned into colours faster on busy servers
- Optimize!** Player data is dropped from memory on quit so it stops building up
- Fix!** Betting a decimal amount of **Points** or **Tokens** no longer charges less than the game pays out
- Fix!** Bot games now round winnings to whole numbers like normal games already did
- Fix!** Switching currency in the create menu now moves your bet inside that currency's limits
- Optimize!** Player lookup commands no longer pause the server when the target is online
- New!** Set the amount the create menu opens on with **default-bet**, or -1 to use the currency's min-bet
- Fix!** The create menu no longer opens below a currency's **min-bet**
- Fix!** Limit warnings now show **80%** instead of the broken **80%%**
- Fix!** Menus with a named player head no longer stall the server looking that name up
- Fix!** Translated a leftover English message in **German**, **Spanish**, **French**, **Dutch** and **Russian**
- Optimize!** The skin cache now has a size limit so it stops growing on busy servers
- New!** Waiting coinflips can now expire on their own and hand the bet back to the host
- New!** Set how long a coinflip may sit with **after-hours**, default is 3 days
- New!** Hosts who are offline when their coinflip expires get the money on their next join
- Fix!** Placeholder currency and event commands no longer spam errors on **Folia** servers
- Optimize!** Opening menus no longer freezes the server while a player skin is downloaded
- Fix!** Custom bet amounts in the create menu no longer get rejected as an invalid format
- Fix!** Copied amounts with hidden characters in them now work instead of failing
- Fix!** Emptying **prefix** to turn it off no longer throws a validation error on startup
- Fix!** Problems while opening the create menu now show up in console instead of staying hidden
- New!** Turn off the **+/- preset buttons** so players only set their bet with the custom amount
- New!** Hide a single preset with **enabled: false** if you just want fewer of them
- New!** Hidden preset slots fill in with your filler item instead of leaving a hole
- New!** One switch in config.yml now turns off every coinflip **broadcast** at once
- New!** Net profit has an uncoloured **<net_money_raw>** so you can pick your own colour
- Fix!** Dialog titles and buttons came out blank, and their colour codes never showed
- New!** The on/off toggles now take **glowing**, **custom model data** and **item-model** like every other item
- New!** Toggle icons also accept a **HeadDatabase** head with **material: 'hdb-1234'**
- Fix!** The private button stayed on **Public** when clicked, so games went private with no sign of it
- Fix!** Typing a custom bet amount no longer quietly sets your game back to public
- Fix!** **settings-slots** now actually moves the toggles instead of being ignored
- New!** Bedrock players on **Geyser/Floodgate** get native phone-friendly menus instead of chests
- New!** Works both when Geyser runs on your proxy and when it runs on the server itself
- New!** Any menu icon accepts a **HeadDatabase** head with **material: 'hdb-1234'**
- New!** Bedrock menu buttons can show your own images, set per button in the gui files
- New!** Other plugins can finally react to coinflips: create, join, cancel, refund and finish all fire now
- Fix!** A bet could vanish with no refund when a limit blocked the game right after paying
- Fix!** Creating a bet with **/cf create** no longer says it worked when it did not
- Fix!** Items in the **stats** menu now respect their glow and custom model settings
- New!** Menu items can now use the **item-model** component for custom models on **1.21.4+**
- New!** Set it on any item that already supports custom model data, in every GUI file
- Fix!** Items in the **stats** menu now respect their glow and custom model settings
- New!** Optional modern pop-up menus on **1.21.7+** for betting, joining, and picking heads or tails
- New!** Bet amounts can be set with a slider instead of typing, so no more mistyped numbers
- New!** Turn it on with **dialog.enabled** in config — older servers keep the classic chest menus
- Fix!** Leaderboards and placeholders no longer risk stalling the database on MySQL servers
- Fix!** The largest-win and worst-profit leaderboard placeholders work again
- Fix!** Leaderboard placeholders no longer glitch when many are shown at once
- Fix!** Custom menu icons now work on every Minecraft version
- Fix!** Bot game profit in the list now matches the currency shown next to it
- Fix!** A typo in the house bet amount no longer breaks bot games
- Fix!** Coinflip menus always refresh correctly, even right after a player logs out
- Fix!** Points and Tokens winnings round cleanly instead of dropping a leftover
- Optimize!** Faster leaderboard and placeholder loading on busy MySQL servers
- Optimize!** Smoother menu and leaderboard rendering with less memory use
- Fix!** Tab-completing /coinflip create no longer suggests a bet amount where the currency should go
- New!** Leaderboard placeholders can now show daily, weekly, monthly or yearly rankings
- Fix!** Leaving and rejoining during a coinflip can no longer pay your bet back twice
- New!** The server can now announce when a player wins or loses against the bot
- New!** The create coinflip menu now has a Back button to return to the main menu
- New!** Full **Minecraft 26.2** support out of the box
- Optimize!** Updated bundled libraries to their latest stable versions
- New!** Menus can now have extra filler items, each with its own material, slots and lore
- New!** The Public/Private button text in the Create menu is now editable in the language files
- Fix!** The click hint line on game tiles no longer shows up as a blank line
- Fix!** Win and loss action bar messages no longer show up in chat
- New!** Previous and Next page buttons can now show custom lore
- Fix!** Quickly clicking the page buttons no longer drops you on an empty page
- Fix!** The Previous button no longer stays on page 1 after going forward then back
- Fix!** Hex colors written as <##rrggbb> now render cleanly instead of leaving stray brackets in chat
- New!** /coinflip info shows plugin version, server, database and detected economies at a glance
- New!** /coinflip help is now grouped by section and shows admin commands when an admin runs it
- New!** Every GUI now has a filler.enabled switch so you can turn off the glass background in one line
- Fix!** Plugin no longer crashes when opening the Create menu on 1.8.x servers
- Fix!** /cf reload now applies the new language to the GUI right away instead of keeping English captions until restart
- Fix!** Stats menu currency slots no longer force glass behind the scenes when you turn the filler off
- New!** /cf invite <player> sends a clickable Accept/Deny invite to a specific player
- New!** /cf private hides your coinflip from the list so only invited players can join
- New!** Private toggle in the Create GUI starts your game invite-only in one click
- New!** /cf accept and /cf deny respond to invites, no ID needed for a single pending invite
- New!** /cf uninvite <player> removes someone from your invite list
- New!** Optional setting keeps waiting games alive across a full server restart
- New!** Master toggle in config.yml turns the invite system off for pure public coinflip
- New!** "Usage:" hints for every /cf command are now translatable per language
- Fix!** Coinflips kept alive after host disconnect now show in the list instead of a blank barrier
- Fix!** Joining a coinflip whose host is offline now shows a clear message instead of crashing
- Fix!** Discord webhooks no longer leak raw &b color codes from LuckPerms prefixes into messages
- Fix!** /coinflip help now runs from console too instead of refusing with "Console may not execute"
- Optimize!** Chat commands and the list GUI now share one join path so dupe protection is identical
- New!** /cf create <amount> now works with a single argument, using the default currency from config
- Fix!** Plugin now loads on Paper 1.20.5 and newer instead of failing the remap step at startup
- Fix!** Setting filler slots to an empty list now actually clears the panes instead of falling back to the default layout
- Fix!** Leaderboard menu now respects the filler slots option in the config instead of always filling every empty slot
- Fix!** PlaceholderAPI placeholders inside the Play with Bot button lore now resolve correctly instead of showing the raw text
- Fix!** Filler items in every GUI now show the correct texture from custom-model-data, including on Paper 1.21.4 and newer
- Fix!** Glowing setting on filler items is now respected across all GUIs
- Fix!** /cf reload now refreshes filler textures right away instead of keeping the old ones cached
- Fix!** /cf limit alone now shows the available subcommands instead of "unknown command"
- Fix!** /cf limit player and reset now show <player> instead of <arg1> in the usage hint
- Fix!** /cf limit auto-tune now shows <currency> instead of <arg1> in the usage hint
- Fix!** Player heads in the GUI now load correctly on Arclight and other hybrid servers
- Optimize!** Player heads in the history GUI no longer flood the console with Mojang 403 errors when their session server is unreachable
- Optimize!** Faster MySQL reads, multiple players can fetch data at the same time
- New!** Cap how much players can win or lose per day, week, or month
- New!** /cf limit auto-tune scans recent activity and suggests sensible cap values for you
- New!** Players get a heads-up when they reach 50%, 75%, or 90% of their limit
- New!** /cf limit subcommands let players check their own limits and admins reset them
- New!** Eight new placeholders for showing limit caps and remaining amounts on HUD or scoreboard
- New!** Console highlights critical and important updates so urgent fixes stand out
- New!** Other plugins can now integrate with UltraCoinFlip through a public API
- Fix!** Setting the game lore to empty no longer leaves a stray cancel hint for the host
- Fix!** Server no longer freezes when many players open the coinflip list at once
- Optimize!** Stats save in the background so they don't slow down active games
- Optimize!** Faster MySQL reads, multiple players can fetch data at the same time
- Fix!** Server thread freeze when many players opened the coinflip list - Bot stats are cached briefly and refreshed in the background instead of querying the database on the main thread
- Optimize!** Player stats batch save no longer blocks the main thread - Saves now run on a background thread so heavy stats traffic doesn't cause lag spikes
- Optimize!** Removed unnecessary database lock that was bottlenecking MySQL queries - Multiple players can now read the database in parallel for noticeably smoother performance
- New!** Winner head option for the history GUI - Set player-head.type to 'Winner' in history.yml to show whoever actually won each game instead of the opponent
- Fix!** Blank lore lines using '' or '&f ' were silently removed from item tooltips
