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 |
|---|---|---|---|---|---|
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d 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
