
CoinFlips
⚠️ Warning: Vault plugin required 📦 Minecraft Versions: 1.16.5 – 1.21.x Advanced CoinFlip plugin with animated duels, configurable betting and taxes, player statistics, leaderboards, and full Vault integration.
- Загрузки
- 678
- Подписчики
- 2
- Обновлён
- 16 июня 2026 г.
- Лицензия
- All-Rights-Reserved
Опубликован 22 октября 2025 г.

- 🎮 Interactive CoinFlip Game: Create and join heads or tails games with custom bets via an intuitive GUI.
- 🖥️ Fully Configurable GUI: Every menu (main, create, join, stats, top) is driven entirely by
guis.yml— patterns, items, actions, textures, all configurable. - 📊 Statistics System: Track wins, losses, ratio, total bet and profit per player.
- 🏆 Leaderboard: Display top players by profit with custom player head textures for empty slots.
- 🤖 Discord Webhook: Automatic embed notifications on game creation, win and loss — fully configurable titles, descriptions and colors.
- 🔌 PlaceholderAPI Support: Use placeholders to display stats in scoreboards, holograms and other plugins.
- ⏱️ Cooldown System: Prevents abuse with a configurable delay between game creations.
- 🔒 Private Games: Create password-protected games to play with a specific player.
- 📢 Automatic Broadcast: Announces wins to the whole server with configurable messages.
- 💾 Database Support: H2, SQLite or MySQL — choose what fits your server.
- 🔄 Update Notifier: Automatically checks for new versions and notifies admins on join.
- 🛠️ Admin Commands: Reload config, bypass bet limits and more.

Player Commands
| Command | Description |
|---|---|
/cf |
Opens the main menu |
/cf create <amount> |
Creates a new game with the specified bet |
/cf join <id> |
Joins an existing game by its ID |
/cf cancel |
Cancels your current waiting game |
/cf stats [player] |
Displays your or another player's statistics |
/cf top |
Shows the leaderboard |
/cf private <amount> |
Creates a private game |
/cf help |
Shows command help |
Admin Commands
| Command | Description |
|---|---|
/cf reload |
Reloads the configuration |

| Permission | Description | Default |
|---|---|---|
coinflips.use |
Use player commands | true |
coinflips.create |
Create games | true |
coinflips.join |
Join games | true |
coinflips.stats |
View statistics | true |
coinflips.top |
View the leaderboard | true |
coinflips.private |
Create private games | true |
coinflips.reload |
Reload the configuration | op |
coinflips.bypass |
Bypass bet min/max restrictions | op |
coinflips.admin |
All admin permissions | op |

| Placeholder | Description |
|---|---|
%coinflip_wins% |
Number of player victories |
%coinflip_losses% |
Number of player defeats |
%coinflip_ratio% |
Win ratio in percentage |
%coinflip_profit% |
Total player profit |
%coinflip_total_bet% |
Total amount bet |
%coinflip_games_active% |
Number of active games waiting |

prefix: '<gradient:#FCEF00:#FFF652><bold>CoinFlips</bold></gradient> &7» '
database: # h2, sqlite or mysql
type: h2
private-games:
enabled: true
password-length: 4
number-formatting:
mode: 0 # 0 = formatted (1,000), 1 = short (1K), 2 = raw (1000.00)
update-notifier:
enabled: true
on-join: true
discord:
enabled: false
webhook-url: 'https://discord.com/api/webhooks/your-webhook-url'
embed:
create:
title: 'New Coinflip!'
description: '{player} created a coinflip for {amount} {currency}.'
color: 3447003
footer: 'Coinflips'
win:
title: 'Coinflip Won!'
description: '{player} won a coinflip of {amount} {currency}!'
color: 65331
footer: 'Coinflips'
lose:
title: 'Coinflip Lost!'
description: '{player} lost a coinflip of {amount} {currency}.'
color: 15158332
footer: 'Coinflips'
coinflip:
min-bet: 1000
max-bet: 100000000
cooldown: 5
win-chance: 50
multiplier: 2
Ченджлог
6.1.3Релиз26.1, 26.1.1, 26.1.2 · 16 июня 2026 г.
Add bstats Fix Minor
6.1.2Релиз26.1, 26.1.1, 26.1.2 · 23 мая 2026 г.
Minor fixes
Refactored UpdateChecker + /cf update command
- Modrinth URL was hardcoded and incorrect. It now uses the correct endpoint
/v2/project/{id}/version?limit=1. - Modrinth ID is configurable in
config.ymlunderupdate-notifier.modrinth-id. - Added
notify-console: trueinconfig. ymlto monitor console logs. - The HTTP connection uses its own
User-Agentand timeouts (5s connect / 5s read). - New command
/cf update(permissioncoinflips.update): launches a manual check and sends the result to the player. - 4 new messages in
messages.yml:update-notifier.checking,available,up-to-date,check-failed. coinflips.updatepermission added inplugin.ymland included incoinflips.admin.
6.1.1Релиз26.1, 26.1.1, 26.1.2 · 23 мая 2026 г.
#CoinFlips — 6.1.1
Minor fixes
Head did not change in the animation menu
updateAnimationFramechanged the inventory on the server side but the client never received the update.- Added
player.updateInventory()after each slot modification to force sending to the client.
Negative or zero bets allowed
- A player could enter a negative or zero bet, bypassing the min/max check.
- Added a
bet <= 0check inGuiListener(CREATE_GAME),CoinFlipCommand(create, private). - New message
commands.invalid-betadded inmessages.yml.
Double debit of the loser
finishGame still withdrew the loser's stake even though it was already debited at the join.
- Removed
EconomyUtils.withdraw(loser)infinishGame— only the winner receives the pot.
Formatting amounts according to number-formatting.mode
- All amounts displayed in messages and GUIs used
String. valueOf((long) amount)without any formatting. - Redesigned
MessageUtils.formatNumberwith 3 modes:- Mode 0: comma separator —
1,000,000(pattern configurable viaformatted) - Mode 1: short format —
1k,10k,1M,1B - Mode 2: space separator —
1 000 000
- Mode 0: comma separator —
- Added
ConfigManager. formatAmount(double)which reads the mode and pattern fromconfig.ymland formats the amount. - All
%amount%inGameManager,GuiListener,CoinFlipCommandandGuiManagernow go throughformatAmount.
Automatically add missing keys in config.yml and messages.yml
If a key is present in the default file (bundled in the jar) but absent from the server file, it is added automatically at startup and at /cf reload.
- Existing values are never overwritten.
- Works recursively for all nested sections.
A message is logged in the console when keys are added: Added missing keys to config.yml.
- Implemented in
FileManagerviaaddMissingKeys()andcopyMissing().
#CoinFlips — 6.1.0
Major additions & fixes
Folia Compatibility
- New
utils/SchedulerUtils file. java: automatically detects at startup whether the server is running on Folia (RegionizedServer) or Paper/Spigot. - Exposes unified methods:
runAsync,runAsyncTimer,cancelAsyncTimer,runLater,runLaterForPlayer,runTimer,cancelTimer. - On Paper/Spigot → delegates to the classic
BukkitScheduler.
On Folia → delegates to AsyncScheduler (async tasks) and GlobalRegionScheduler (sync tasks).
GameManager: rotating animation and game cleaning useSchedulerUtils.runTimer/runLater. TypeBukkitTaskreplaced byObjectto be agnostic.DiscordWebhook: sending webhook viaSchedulerUtils.runAsync.
UpdateChecker: update check via SchedulerUtils.runAsync / runAsyncTimer / cancelAsyncTimer.
- The plugin now works on Paper, Spigot and Folia without changing the business logic.
Animation — head rotating to the winner
- The animation displayed a static head. The head now alternates between the creator and the opponent every 4 ticks (~0.2s) for 3 seconds, then freezes on the winner's head for 1 second before displaying the result.
- Added
updateAnimationFrame(Player, String)inGuiManagerto change the header in real time in the open inventory.
openAnimationMenu now accepts creatorName and opponentName as parameters.
Checking balance before creating/joining
- A player without enough money could create or join a game without their balance being verified.
- Added
EconomyUtils.hasBalance()check inGuiListener(CREATE_GAME, JOIN_GAME) andCoinFlipCommand(create, join, private). - The balance is now debited at creation of the game (creator) and at join (opponent).
finishGameonly credits the winner the full amount (stake × multiplier) — no more double debit.
/cf cancel correctly reimburses the creator since the stake is already debited.
- New message
commands.not-enough-moneyadded inmessages.yml.
CoinFlips — 6.0.2
Minor fixes
Animation menu opened when joining a coinflip
- When a player joins a game,
startGameopened the main menu (openMainMenu) instead of the animation menu. - Added the
openAnimationMenu(Player)method inGuiManagerwhich opens theanimationGUI defined inguis.ymlwith the%player%placeholder. GameManager.startGame()now usesopenAnimationMenu+ `GuiType. ANIMATION for both players (creator and opponent) from the start of the game.
CoinFlips — 6.0.1
Minor fixes
GUI does not open when accepting a coinflip
- The
startGamelogic did not open any GUI for players, it just sent messages in the chat after a delay . - The
startGamemethod has been moved toGameManagerand now opens the main menu for both players (creator and joiner) upon starting the game. - Both players' inventories are automatically closed once the result is displayed.
The JOIN_GAME action in GuiListener did not call startGame after joining the game — fixed.
Cleaning parts on disconnection
PlayerListeneronly handled thePlayerJoinEventevent, without any processing on disconnection.- Added a
PlayerQuitEventhandler which:- Removes the player from GUI tracking (
GuiTracker)
- Removes the player from GUI tracking (
- Removes any pending challenges linked to the player
- Cancels the player's game if it is still in
WAITINGstate (games alreadyRUNNINGresolve normally)
- Cancels the player's game if it is still in
6.1.0Релиз26.1, 26.1.1, 26.1.2 · 23 мая 2026 г.
Major additions & fixes
Folia Compatibility
- New
utils/SchedulerUtils.javafile: automatically detects at startup whether the server is running on Folia (RegionizedServer) or Paper/Spigot. - Exposes unified methods:
runAsync,runAsyncTimer,cancelAsyncTimer,runLater,runLaterForPlayer,runTimer,cancelTimer. - On Paper/Spigot → delegates to the classic
BukkitScheduler. - On Folia → delegates to
AsyncScheduler(async tasks) andGlobalRegionScheduler(sync tasks). GameManager: rotating animation and game cleaning useSchedulerUtils.runTimer/runLater. TypeBukkitTaskreplaced byObjectto be agnostic.DiscordWebhook: sending webhook viaSchedulerUtils.runAsync.UpdateChecker: update check viaSchedulerUtils.runAsync/runAsyncTimer/cancelAsyncTimer.- The plugin now works on Paper, Spigot and Folia without modification of the business logic.
Animation — head rotating to the winner
- The animation displayed a static head. The head now alternates between the creator and the opponent every 4 ticks (~0.2s) for 3 seconds, then freezes on the winner's head for 1 second before displaying the result.
Added updateAnimationFrame(Player, String) in GuiManager to change the header in real time in the open inventory.
openAnimationMenunow acceptscreatorNameandopponentNameas parameters.
Checking balance before creating/joining
A player without enough money could create or join a game without their balance being verified.
- Added
EconomyUtils.hasBalance()check inGuiListener(CREATE_GAME, JOIN_GAME) andCoinFlipCommand(create, join, private).
The balance is now debited at creation of the game (creator) and at join (opponent).
finishGameonly credits the winner the full amount (stake × multiplier) — no more double debit./cf cancelcorrectly reimburses the creator since the stake is already debited.- New message
commands.not-enough- moneyadded inmessages.yml.
6.0.2Релиз26.1, 26.1.1, 26.1.2 · 23 мая 2026 г.
Fixes
Animation menu opened when joining a coinflip
- When a player joined a game,
startGameopened the main menu (openMainMenu) instead of the animation menu. - Added the
openAnimationMenu(Player)method inGuiManagerwhich opens theanimationGUI defined inguis.ymlwith the%player%placeholder . GameManager.startGame()now usesopenAnimationMenu+GuiType.ANIMATIONfor both players (creator and opponent) from the start of the game.
6.0.1Бета26.1, 26.1.1, 26.1.2 · 23 мая 2026 г.
CoinFlips — 6.0.1
Fixes
GUI does not open when accepting a coinflip
- The
startGamelogic did not open any GUI for players, it just sent messages in the chat after a delay.
The startGame method has been moved to GameManager and now opens the main menu for both players (creator and joiner) upon starting the game.
- Both players' inventories are automatically closed once the result is displayed.
The JOIN_GAME action in GuiListener did not call startGame after joining the game — fixed.
Cleaning parts on disconnection
PlayerListeneronly handled thePlayerJoinEventevent, without any processing on disconnection.- Added a
PlayerQuitEventhandler which:- Removes the player from GUI tracking (
GuiTracker)
- Removes the player from GUI tracking (
- Removes any pending challenges linked to the player
- Cancels the player's game if it is still in
WAITINGstate (games alreadyRUNNINGresolve normally)
- Cancels the player's game if it is still in
6.0.0Релиз26.1, 26.1.1, 26.1.2 · 22 мая 2026 г.
✨ New features Added animation menu Added several new internal features Added database support: H2 SQLite MySQL 🔧 Changes & refactoring Updated system messages Moved GUIs from config.yml to guis.yml Global configuration refactor: config.yml guis.yml lang.yml Improved update system (beta version) 🐛 Fixes Removed /cf about command Fixed Discord webhook issues General improvements and stabilization of Discord webhook system ⚡ Improvements Various performance and internal optimizations Overall system stability improvements
5.4.0Релиз26.1, 26.1.1, 26.1.2 · 22 мая 2026 г.
Fix missing message and minor fix
Комментарии
Загружаем…