Перейти к содержимому
Mineforgian

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

Features

CoinFlips Paper Discord


  • 🎮 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.

Commands

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

Perms

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

Placeholders

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

Configs

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.yml under update-notifier.modrinth-id.
  • Added notify-console: true in config. yml to monitor console logs.
  • The HTTP connection uses its own User-Agent and timeouts (5s connect / 5s read).
  • New command /cf update (permission coinflips.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.update permission added in plugin.yml and included in coinflips.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

  • updateAnimationFrame changed 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 <= 0 check in GuiListener (CREATE_GAME), CoinFlipCommand (create, private).
  • New message commands.invalid-bet added in messages.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) in finishGame — 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.formatNumber with 3 modes:
    • Mode 0: comma separator — 1,000,000 (pattern configurable via formatted)
    • Mode 1: short format — 1k, 10k, 1M, 1B
    • Mode 2: space separator — 1 000 000
  • Added ConfigManager. formatAmount(double) which reads the mode and pattern from config.yml and formats the amount.
  • All %amount% in GameManager, GuiListener, CoinFlipCommand and GuiManager now go through formatAmount.

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 FileManager via addMissingKeys() and copyMissing().

#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 use SchedulerUtils.runTimer / runLater. Type BukkitTask replaced by Object to be agnostic.
  • DiscordWebhook: sending webhook via SchedulerUtils.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) in GuiManager to 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 in GuiListener (CREATE_GAME, JOIN_GAME) and CoinFlipCommand (create, join, private).
  • The balance is now debited at creation of the game (creator) and at join (opponent).
  • finishGame only 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-money added in messages.yml.

CoinFlips — 6.0.2

Minor fixes

Animation menu opened when joining a coinflip

  • When a player joins a game, startGame opened the main menu (openMainMenu) instead of the animation menu.
  • Added the openAnimationMenu(Player) method in GuiManager which opens the animation GUI defined in guis.yml with the %player% placeholder.
  • GameManager.startGame() now uses openAnimationMenu + `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 startGame logic 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

  • PlayerListener only handled the PlayerJoinEvent event, without any processing on disconnection.
  • Added a PlayerQuitEvent handler which:
    • Removes the player from GUI tracking (GuiTracker)
  • Removes any pending challenges linked to the player
    • Cancels the player's game if it is still in WAITING state (games already RUNNING resolve normally)
6.1.0Релиз26.1, 26.1.1, 26.1.2 · 23 мая 2026 г.

Major additions & fixes

Folia Compatibility

  • New utils/SchedulerUtils.java file: 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 use SchedulerUtils.runTimer / runLater. Type BukkitTask replaced by Object to be agnostic.
  • DiscordWebhook: sending webhook via SchedulerUtils.runAsync.
  • UpdateChecker: update check via SchedulerUtils.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.

  • 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 in GuiListener (CREATE_GAME, JOIN_GAME) and CoinFlipCommand (create, join, private).

The balance is now debited at creation of the game (creator) and at join (opponent).

  • finishGame only 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- money added in messages.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, startGame opened the main menu (openMainMenu) instead of the animation menu.
  • Added the openAnimationMenu(Player) method in GuiManager which opens the animation GUI defined in guis.yml with the %player% placeholder .
  • GameManager.startGame() now uses openAnimationMenu + GuiType.ANIMATION for 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 startGame logic 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

  • PlayerListener only handled the PlayerJoinEvent event, without any processing on disconnection.
  • Added a PlayerQuitEvent handler which:
    • Removes the player from GUI tracking (GuiTracker)
  • Removes any pending challenges linked to the player
    • Cancels the player's game if it is still in WAITING state (games already RUNNING resolve normally)
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

Комментарии

Загружаем…