Compatibility
Minecraft: Java Edition
Platforms
Tags
Creators
Details
MineGames

MineGames is a modern Minecraft 1.21 -> 26.2 casino plugin with five casino game types plus physical dice and portable craps:
MineGame: reveal safe blocks, avoid mines, cash out at your chosen point.

Roulette: perpetual rounds where players bet on red/black/green.

Slots: lever-driven reels with configurable widths, rows, frames, and payouts.

Fights: wager on randomly equipped mobs battling inside a protected arena.

Chicken: choose a coloured tile, cash out before lightning, and collect multiplier stars while a chicken roams the board.

Physical Dice and Craps: throw custom-textured, server-simulated dice in the world, then play a portable craps round anywhere with /craps.

Casino games use Vault economy and support per-station cosmetics, holograms, and casino frame animations. Physical dice use vanilla display entities and do not require a client mod or resource pack.
Platform compatibility
The same plugin jar targets Bukkit/CraftBukkit, Spigot, Paper, Purpur, and Folia.
Requirements
- Java 21
- Minecraft 1.21+ on Bukkit/CraftBukkit, Spigot, Paper, Purpur, or Folia
- Vault (for example VaultUnlocked)
- A Vault-compatible economy plugin (for example EconomyProvider by ilius)
Install
- Place
minegames-1.x.x.jarinplugins/. - Ensure Vault + economy plugin are installed.
- Start/restart server.
- Edit
plugins/MineGames/config.ymlas needed. - Create stations:
- MineGame station: stand on your station block and run
/minegameadmin create - Roulette station: stand at board center and run
/rouletteadmin create - Slots station: stand where you want the machine and run
/slotsadmin create [3-8] [1|2] - Fights station: stand at the arena origin and run
/fightadmin create [odd-size] [fighters]
Casino Settings GUI
Operators can open the inventory-based settings menu with:
/casinogui
The GUI includes MineGame, Roulette, Slots, Fights, Chicken, and Dice. Select a game to edit global settings, browse its stations, and edit supported per-station overrides. Global changes override existing station settings. Previous/Next navigate settings pages, and Back/Stations provide navigation. Chicken settings are global; Dice includes physical-dice and craps settings.
Gameplay
Mines
- Stand on a MineGame station block.
- Start a game:
/minegame <mines> <wager> - Break/click tiles to reveal safe blocks.
- Cash out with
/minegame cashoutor by breaking a frame block. - Lose by hitting a mine or timeout, win by clearing all safe tiles.
Roulette
- Stand near a Roulette station.
- Place bet:
/roulette <red|black|green> <amount> - Bets close when countdown ends, then spin/result phase resolves.
- Payouts apply automatically for winning color bets.
- Round resets and repeats continuously.
Slots
- Stand near a Slots station.
- Pull the lever to spin and pay the configured wager.
- Reels animate for a few seconds and then stop from left to right.
- Matching the winning block pays out based on how many appear or which payline lands.
- The station can be customized with outer frame, inner frame, winning block, row count, and lever-side frame animation.
- Shelf mode uses Minecraft shelves instead of solid reel blocks. Each shelf item slot is an independent reel; shelves can be placed side-by-side and stacked vertically with the same payouts, wager buttons, hologram, and optional casino frame as regular Slots.
Fights
- Stand near a Fights station.
- Place a bet:
/fighter <fighter-number> <amount>. - The first accepted bet opens the countdown; fighters spawn only when betting closes.
- Two fighters run as a duel. Three or more fighters run as a free-for-all.
- Fighters receive random weapons, armor, enchantments, colors, and supported variants, then fight until one remains. The pool includes zombie, husk, drowned, zombie villager, skeleton, stray, bogged, wither skeleton, pillager, piglin, piglin brute, and zombified piglin fighters. Winning bets pay automatically, losing bettors are notified, and the winner is celebrated with fireworks.
- Set
fights.show-bettor-name-on-fighterto show the bettor in the mob nameplate. Setfights.fireworks-for-winning-bettorstotrue(the default) to add fireworks from all four arena corners for winning bets. - All rolled weapons, including tridents, use armor- and enchantment-aware damage calculations.
Chicken
- Stand near a Chicken board.
- Bet on a colour with /chicken <red|blue|gold|green> <amount>.
- The first bet opens the countdown. At game start, the board reshuffles red, blue, Gold Block, green, and black dead tiles before the chicken drops in.
- The multiplier rises continuously above the chicken. Nether Star pickups add the configured pickup bonus with sparkle and sound effects.
- Cash out with /chicken cashout or hit the lamp frame. Uncashed wagers win only on their selected colour; black/dead tiles pay nothing.
- Lightning timing is pre-rolled between the configured minimum and maximum. The randomness curve favours early/mid strikes by default.
Physical Dice
- Run
/diceto receive the configured number of individual dice (two by default). /dicefills only a missing amount. Existing inventory dice are reused, and the command will not issue more while you have active dice on the ground; collect them or wait 30 seconds for them to despawn.- Right-click while holding a die to throw it. Dice travel, fall, bounce, tumble, and settle on a server-selected face.
- Right-click a finished die to pick it up. Dice use vanilla
PLAYER_HEADitems andItemDisplayentities; no client mod, resource pack, or chat roll is required. - Dice are marked with PersistentDataContainer data, so their identity is not based on the display name alone. Each die can be thrown and settled independently, including by multiple players at once. Uncollected dice despawn after 30 seconds.
Craps
- Start a portable craps round anywhere with
/craps <bet>; the bet is withdrawn through Vault and two session-specific physical dice are prepared. Existing dice in the player inventory are reused, with only missing dice created. - Throw both dice and wait for them to settle. On the come-out roll, 7 or 11 wins, 2/3/12 loses, and any other total establishes the Point.
- After a Point is established, throw the same two dice again. Matching the Point wins; rolling 7 loses; other totals continue the round.
- Dice are returned between rolls and after the round ends. Use
/craps cancelto cancel an active round and refund its wager. Timed-out or invalid sessions are cleaned up safely.
Winner Math & RNG
-
MineGame
- Mine positions are generated once when the round starts with
Math.random(), usinggenerateMines(mines, gridSize * gridSize). - Mines are placed uniformly without replacement, so the same cell cannot become a mine twice.
- The player wins by revealing enough safe tiles before hitting a mine or timing out.
- Payout is based on revealed safe tiles. If
minegame.game.max-multiplieris set above0, the multiplier scales linearly from1xup to the configured max. Otherwise, it uses the inverse of the survival probability with a house-edge factor applied. - The survival math uses combinations:
surviveProbability = C(safe, revealed) / C(total, revealed).
- Mine positions are generated once when the round starts with
-
Roulette
- Each round builds a full board pattern from the configured color percentages:
roulette.red-percent,roulette.black-percent, androulette.green-percent. - The counts are normalized to the board size, then green cells are assigned randomly and the remaining cells are shuffled with Java
Random. - When the spin resolves, the selector lands on a random board index and the color stored at that index becomes the winning color.
- Payout uses the configured color multiplier, then applies the house-edge factor:
effectiveMultiplier = rawMultiplier * (1 - houseEdgePercent / 100).
- Each round builds a full board pattern from the configured color percentages:
-
Slots
- Each reel cell is filled independently from
slots.blocks.reel-optionsusing JavaRandom. - The configured winning block is always included in the symbol pool, even if it is omitted from the config.
- A win is counted by matching the station’s
slots.blocks.winningmaterial across the final grid. - For single-row stations, the total number of matching symbols is used directly. For two-row stations, the code checks top line, bottom line, diagonal, reverse diagonal, full screen, and mixed line patterns.
- Payout is
wager * multiplier, where the multiplier comes fromslots.payout-multipliersand is then scaled by station size and the detected pattern.
- Each reel cell is filled independently from
-
Fights
- Each fighter is selected independently from the supported zombie, skeleton, pillager, and piglin variants at round reset.
- Weapons and armor are selected independently from the configured in-code pools. Leather armor receives a random color.
- Each rolled item receives a random set of compatible enchantments (up to three), with a random level up to the enchantment maximum.
- Weapon base damage, Sharpness/Smite, Power, Impaling, Fire Aspect, armor points, Protection, Projectile Protection, and Thorns all influence combat damage or retaliation.
- Ranged attacks, including tridents, use the same isolated fighter damage path and apply armor/enchantment mitigation before health is reduced.
- A winning bet pays
bet * fights.payout-multiplier * (fighter-count / 2). The configured multiplier and fighter count determine the potential payout shown on the hologram.
-
Chicken
- The colour/dead-tile layout and lightning countdown are pre-rolled before the chicken spawns.
- Lightning is sampled between the configured minimum and maximum in 0.1-second increments. A randomness curve of 1.0 is uniform; higher values favour earlier strikes.
- The chicken follows server-controlled roaming paths. Its path is visual only and cannot alter the pre-rolled lightning timing.
- The live multiplier grows continuously and every Nether Star adds the configured pickup bonus. A cash-out pays the live multiplier; an uncleared bet must also match the final colour and then receives that colour bonus.
-
Physical Dice and Craps
- Each die selects an independent result from 1 to 6 when it is thrown. The animation is server-side and the die rotates toward the known final orientation for that result while settling.
- Dice use
ThreadLocalRandomfor gameplay results and quaternion-based display transformations for three-dimensional tumbling. - Craps uses standard come-out/Point rules: 7 or 11 wins on the come-out roll, 2/3/12 loses, a Point must be repeated before 7, and other totals continue the round.
-
RNG notes
- MineGame uses
Math.random()for mine placement. - Roulette and Slots use a shared
java.util.Randominstance. - Fighter types, equipment materials, leather colors, enchantment choices, and enchantment levels use Java
ThreadLocalRandom(with compatible enchantments shuffled before selection). - The random rolls are generated when fighters are spawned and equipped; they are not seeded for replayable outcomes.
- None of the games use seeded or cryptographic RNG, so results are game-random rather than replay-deterministic.
- MineGame uses
Commands
Player Commands
- Mines:
/minegame <mines 1-24> <wager>/minegame cashout
- MineGame aliases:
/mine,/mines - Roulette:
/roulette <red|black|green> <amount>
- Fights:
/fighter <fighter-number> <amount>
- Chicken:
- /chicken <red|blue|gold|green> <amount>
- /chicken cashout
- Physical dice:
/dice- Right-click a die to throw it; right-click a finished die to retrieve it.
- Craps:
/craps <bet>/craps cancel
Dice Admin (dice.admin)
Primary command: /diceadmin
- View/reload:
/diceadmin settings/diceadmin reload
- General dice settings:
/diceadmin color <red|black|white|blue|green|yellow|orange|cyan|magenta|lime|light_blue> [craps|all]/diceadmin player-alert <on|off> [craps|all]/diceadmin server-alert <on|off> [craps|all]/diceadmin amount <1-64>/diceadmin players <on|off>/diceadmin glow <on|off> [craps|all]/diceadmin particles <on|off> [craps|all]/diceadmin rate-limit <amount|off> [24h|day]
- Craps:
/diceadmin craps <on|off>/diceadmin housebalance/diceadmin housewithdraw <amount|all>
The optional craps scope changes only craps. The all/default scope changes normal dice; craps settings use inherit by default, so they follow the normal dice setting until overridden.
rate-limit applies separately to each player. It limits successful /dice grants and /craps round starts; off disables it, 24h uses a literal rolling 24-hour window, and day resets at the next Minecraft game day.
MineGame Admin (mine.admin)
Primary command: /minegameadmin (legacy alias: /mineadmin)
- Station lifecycle:
/minegameadmin create/minegameadmin remove/minegameadmin regen/minegameadmin list/minegameadmin reload
- House accounting:
/minegameadmin housebalance/minegameadmin housewithdraw <amount|all>
- Toggles:
/minegameadmin holo <on|off>/minegameadmin debug <on|off>
- Public result announcements:
/rouletteadmin set global announcements.broadcast-win <true|false>/rouletteadmin set global announcements.broadcast-loss <true|false>/slotsadmin set global announcements.broadcast-win <true|false>/slotsadmin set global announcements.broadcast-loss <true|false>
- Global config:
/minegameadmin set [global] <path> <value>/minegameadmin set [global] <path>(shows current value)
- Per-station cosmetics (or all stations):
/minegameadmin setframe [all] <BLOCK|reset>/minegameadmin sethidden [all] <BLOCK|reset>/minegameadmin setsafe [all] <BLOCK|reset>/minegameadmin setmine [all] <BLOCK|reset>
- Per-station casino frame (or all stations):
/minegameadmin casinoframe [all] <BLOCK> <pattern 1-10>/minegameadmin casinoframe [all] mode <idle_only|always>/minegameadmin casinoframe [all] <off|reset>
Roulette Admin (roulette.admin)
- Station lifecycle:
/rouletteadmin create/rouletteadmin remove/rouletteadmin regen/rouletteadmin list/rouletteadmin reload
- House accounting:
/rouletteadmin housebalance/rouletteadmin housewithdraw <amount|all>
- Global config:
/rouletteadmin set [global] <path> <value>/rouletteadmin set [global] <path>(shows current value)- Global settings override existing station overrides; for example,
/rouletteadmin set global announcements.broadcast-win true
- Per-station board cosmetics (or all stations):
/rouletteadmin setframe [all] <BLOCK|reset>/rouletteadmin setred [all] <BLOCK|reset>/rouletteadmin setblack [all] <BLOCK|reset>/rouletteadmin setgreen [all] <BLOCK|reset>/rouletteadmin setselector [all] <BLOCK|reset>
- Per-station board size:
/rouletteadmin set board-size <value>while standing near a station changes that station only
- Per-station casino frame (or all stations):
/rouletteadmin casinoframe [all] <BLOCK> <pattern 1-10>/rouletteadmin casinoframe [all] mode <always|betting_only>/rouletteadmin casinoframe [all] <off|reset>
Slots Admin (slots.admin)
- Station lifecycle:
/slotsadmin create [3-8] [1|2]- /slotsadmin create shelves <shelves-wide> <shelves-high> (each shelf item slot is an independent reel)
/slotsadmin remove/slotsadmin regen/slotsadmin list/slotsadmin reload
- House accounting:
/slotsadmin housebalance/slotsadmin housewithdraw <amount|all>
- Global config:
/slotsadmin set [global] <path> <value>/slotsadmin set [global] <path>(shows current value)- Global settings override existing station overrides; for example,
/slotsadmin set global announcements.broadcast-win true
- Per-station cosmetics (or all stations):
/slotsadmin setouterframe [all] <BLOCK|reset>/slotsadmin setinnerframe [all] <BLOCK|reset>/slotsadmin setwinning [all] <BLOCK|reset>
- Per-station price:
/slotsadmin set cost-per-spin <value>while standing near a station changes that station only
- Per-station casino frame (or all stations):
/slotsadmin casinoframe [all] <BLOCK> <pattern 1-10>/slotsadmin casinoframe [all] mode <idle_only|always>/slotsadmin casinoframe [all] <off|reset>
Chicken Admin (chicken.admin)
- Station lifecycle:
- /chickenadmin create [odd-size]
- /chickenadmin remove <number>
- /chickenadmin regen [number]
- /chickenadmin list
- /chickenadmin reload
- Global config:
- /chickenadmin set <path> <value>
- /chickenadmin set <path> (shows current value)
- Key settings: min/max lightning seconds, lightning randomness curve, multiplier growth, pickup multiplier, colour bonuses, dead-tile count, board materials, and hologram settings.
Fights Admin (fights.admin)
Primary command: /fightadmin
- Station lifecycle:
/fightadmin create [odd-size] [fighters]/fightadmin fighters <arena-number> <2-16>/fightadmin move <arena-number>or/fightadmin move <arena-number> <x> <y> <z>(relative block offset)/fightadmin remove <arena-number>/fightadmin regen [arena-number]/fightadmin list/fightadmin holo <arena-number> [reset]
- Global Fights config:
/fightadmin set <path> <value>- Important paths include
fights.max-fighters,fights.betting-seconds,fights.payout-multiplier,fights.arena-style,fights.blocks.*,fights.casino-frame-animation.*, andfights.hologram.bet-display-mode.
Join Gift
/minegamesjoin true|falseenables or disables the first-join gift./minegamesjoin set <amount>changes the welcome payout.- Seen players are stored in
join_rewards.yml, so each player only receives the gift once. - The welcome message is editable under
messages.join-gift.welcomeinconfig.yml.
Permissions
mine.admin(default: op)roulette.admin(default: op)slots.admin(default: op)fights.admin(default: op)chicken.admin(default: op)dice.admin(default: op)
Config Layout
- Mines:
board.*game.*announcements.*effects.*hologram.*messages.*frame-animation.*
- MineGame frame height toggle:
board.frame-one-highertrue= frame/grid one block above beaconfalse= frame/grid at beacon level
- Roulette:
roulette.*roulette-frame-animation.*
- Slots:
slots.*(includingslots.shelf-mode.*)
- Fights:
fights.*fights.blocks.*fights.casino-frame-animation.*
- Chicken:
chicken.*
- Physical dice and Craps:
dice.command-enableddice.default-amountdice.colordice.player-alertdice.server-alertdice.glowdice.particlesdice.craps.enableddice.craps.min-betanddice.craps.max-betdice.craps.color,dice.craps.player-alert,dice.craps.server-alert,dice.craps.glow, anddice.craps.particles(inheritor an explicit override)dice.rate-limit.amountanddice.rate-limit.period(24horday)
Distance / Activation / Hologram Settings
- Global casino frame activation distance (used by both game types):
casino-frame-activation-distance(default20.0)frame-animation.interval-ticks(MineGame frame animation speed)roulette-frame-animation.interval-ticks(Roulette frame animation speed)
- MineGame hologram visibility:
hologram.view-rangehologram.behind-beacon-distancehologram.base-heighthologram.line-spacing
- Roulette station activation + hologram visibility:
roulette.activation-distance-from-frame(players must be near frame for active spinning)roulette.max-bet-distance(max distance to place bets when not standing directly on board)roulette.hologram-view-rangeroulette.hologram-heightroulette.hologram-line-spacingroulette.hologram-title-gaproulette.hologram-section-gap
- Chicken board activation + hologram visibility:
- chicken.activation-distance
- chicken.hologram-view-range
- chicken.hologram-height
- chicken.hologram-line-spacing
- Fights arena activation + hologram visibility:
fights.activation-distancefights.hologram-view-rangefights.hologram-heightfights.hologram-line-spacing
Hologram Placement Commands
These commands select a station by the same number shown by the corresponding list command. After running a placement command, right-click the block surface where the hologram should appear.
- MineGame:
/minegameadmin hologramsign <number> - Slots:
/slotsadmin hologramsign <number> - Roulette:
/rouletteadmin hologramsign <number> - Restore the original location: add
remove, for example/slotsadmin hologramsign remove 2
Placements are persistent and stored in plugins/MineGames/holograms.yml. Holograms use fixed surface orientation and can be moved by running the assignment command again. Set hologram.see-through-walls to true or false to control wall visibility.
Notes
set ...commands edit the nearest station when the setting is station-local, unless you useset global ...to force a global default.setframe/setred/...andcasinoframecommands edit station overrides.- Adding
allapplies cosmetic override commands to every station of that game type. - Mines, roulette, and slots rebaseline their saved footprints when a size change would otherwise leave old blocks behind.
housebalance/housewithdraware admin-only (mine.admin/roulette.admin/dice.admin).housewithdrawpays the withdrawn amount directly to the admin executing the command.- MineGame board height is controlled by
board.frame-one-higher(settable via/minegameadmin set board.frame-one-higher <true|false>). - Roulette color defaults are percent-based (
48.61 / 48.61 / 2.78) and auto-scale with board size. - Changing Roulette selector block clears old selector blocks from the selector layer before placing new ones.
- Removing MineGame/Roulette/Slots stations restores original world blocks for stations created on current versions (snapshot-based restore).
- Roulette station creation anchors the board directly under the admin's feet (replaces floor blocks there).
- Holograms are configured with no-wrap text display behavior for more consistent spacing.
- Fights support
wallsandfencearena styles. Fence mode is the default, uses connected spruce fences, and places the casino frame below them. - Fights fighters target only fighters in their own arena and are isolated from outside damage, projectiles, potions, mobs, portals, pickups, fire, lava, explosions, and despawning. They drop no items or experience.
- Chicken boards block natural mob spawns, fluid flow, explosions, and non-admin building. Hitting the lamp frame cashes out an active Chicken bet.
- All registered games block non-admin building inside their footprint and in the airspace above it. Lava/water buckets and fluid flow into games are cancelled, and protected game blocks cannot be damaged by explosions.
- Removing Fights stations restores captured original blocks;
regenrebuilds the station from current configuration.
Storage
plugins/MineGames/config.yml(global settings)plugins/MineGames/stations.yml(MineGame stations + overrides)plugins/MineGames/holograms.yml(per-station hologram placement overrides)plugins/MineGames/roulette_stations.yml(Roulette stations + overrides)plugins/MineGames/slots_stations.yml(Slots stations + overrides)plugins/MineGames/fights_stations.yml(Fights stations)plugins/MineGames/chicken_stations.yml(Chicken boards)plugins/MineGames/mines_restore.yml(MineGame original-block snapshots for restore on station removal)plugins/MineGames/roulette_restore.yml(Roulette original-block snapshots for restore on station removal)plugins/MineGames/slots_restore.yml(Slots original-block snapshots for restore on station removal)plugins/MineGames/fights_restore.yml(Fights original-block snapshots for restore on station removal)plugins/MineGames/chicken_restore.yml(Chicken original-block snapshots for board removal)plugins/MineGames/house_balances.yml(separate MineGame/Roulette/Slots/Fights/Craps house balance + wager/payout totals)plugins/MineGames/dice_rate_limits.yml(per-player dice/craps rate-limit windows and counts)
License
GPLv3


