Real casino roulette for Minecraft · 1.21+

RouletteMachine

A real European roulette, built in your world. The wheel spins, the ball rolls and drops into a pocket, and players bet by clicking the felt. Winnings paid in real money via Vault.

1.1.2Version
1.21+Minecraft
VaultRequired
ES·EN·FR·ZHLanguages
🎡
Physical wheelIt really spins
⚪
Rolling ballLands in a pocket
🪙
Click-to-bet feltChips on the table
🎲
Secure RNGCan't be gamed
💰
Vault payoutsReal money prizes

A roulette that is actually built in the world

🎡
Physical wheel & ballThe ball is a real entity that circles the wheel, slows down and drops into a pocket. Not a menu pretending to be a game.
🔴
True European layout37 pockets in the real wheel order, so reds and blacks alternate exactly like the genuine thing. Single zero, real house edge.
🪙
Bet by clicking the feltRight-click a spot to place your chip, left-click to take it back, sneak to change chip value. A chest menu works too.
🎯
Every bet typeStraight up, red/black, even/odd, high/low, dozens and columns — all paid at the correct odds.
👥
Per-player coloured chipsEach player's chips show in their own colour with the amount above the pile, just like a real table.
⏱️
Fair betting windowThe first bet opens a 30-second round; anyone can join, then the wheel spins on its own. Nobody spins while others choose.
🎲
Secure & fair RNGResults use a cryptographically secure random source. The draw is decided first and can't be predicted by watching.
🪄
No holograms pluginNative display entities. Nothing is written into your world file, and everything redraws itself if removed.
🌍
4 languagesEnglish, Spanish, French and Chinese — every message editable, and your edits survive updates.
💎
Free & Premium. The free version is the full roulette. Premium adds stats, a leaderboard, PlaceholderAPI, Discord alerts and reward commands.

Installation

Up and running in a minute. It only needs Vault and an economy plugin.

Steps

  • Make sure you have Vault and an economy plugin (EssentialsX, CMI…) installed.
  • Download RouletteMachine.jar (free or premium) and drop it into plugins/.
  • Restart the server (Java 21 required for 1.21+).
  • Create your first table — see Create a table.
ℹ️
Tables are saved in tables.yml. Language files are generated on first start in lang/, and the config updates itself on new versions, keeping your settings.

Create a table

Two commands build a full table: the spinning wheel and the betting felt next to it.

  • Run /roulette create <name>, then right-click a block where you want the wheel's centre. The felt is laid out facing the way you were looking.
  • Run /roulette build <name> to build the wheel and the felt out of blocks.
  • Done. Players right-click the table to open betting, or bet directly on the felt.
# create and build a table called casino1 /roulette create casino1 # then right-click the wheel block /roulette build casino1 # builds wheel + felt

Move or restyle it

Nudge the felt with felt.nudge-right / felt.nudge-forward in the config, or change the block colours under the build style. Then /roulette unbuild <name> and /roulette build <name> again.

🎡
The wheel numbers and the table board are floating labels — no holograms plugin needed. They redraw themselves if anything removes them, and nothing is saved into your world file.

Betting

Players bet by clicking the felt directly, or through a chest menu. The first bet opens a 30-second round; when it closes, the wheel spins on its own.

On the felt

ActionWhat it does
Right-click a spotPlaces a chip of your current value
Left-click a spotTakes your own chips back off it (refunded)
Sneak + right-clickSwitches to the next chip value

Bet types & payouts

BetCoversPays
Straight upA single number (0–36)35 : 1
Red / Black18 numbers of a colour1 : 1
Even / Odd18 numbers1 : 1
1–18 / 19–36Low or high half1 : 1
Dozen1–12, 13–24 or 25–362 : 1
ColumnOne of the three columns2 : 1
🎲
The single zero is what gives the house its edge — bet on it straight up for 35:1 like any other number. Chip values and the min/max bet are set in the config.

Commands

Main command /roulette (aliases /rm, /ruleta).

CommandWhat it does
/roulette create <name>Start creating a table (right-click the wheel block)
/roulette build <name>Build the wheel and felt out of blocks
/roulette unbuild <name>Remove the built blocks
/roulette delete <name>Delete a table (refunds any open bets)
/roulette listList all tables
/roulette spin <name>Force a spin now, without waiting for the window
/roulette top PREMIUMLeaderboard by net profit
/roulette stats PREMIUMYour own spins, wins and profit
/roulette reloadReload config and language files

Permissions

Players only need to be able to play; admins get the build commands.

PermissionGrantsDefault
roulettemachine.usePlay at a table and place betseveryone
roulettemachine.adminCreate, build, delete, spin and reloadop
roulettemachine.limit.bypassIgnore the per-round max betop

Free vs Premium

The free version is the complete game. Premium adds the tools a bigger server wants — nothing about the roulette itself is locked.

FeatureFreePremium
Physical wheel, ball & felt betting✔✔
Every bet type & correct odds✔✔
30-second betting window✔✔
Secure RNG & Vault payouts✔✔
Stats & /roulette top leaderboard—✔
PlaceholderAPI—✔
Discord webhook for big wins—✔
Reward commands / items on a win—✔
💎
Both editions play identically at the table. Premium is about tracking, showing off and rewarding — not about unlocking the game.

Placeholders

PREMIUM — with PlaceholderAPI installed, these work in any scoreboard, tab list or HUD plugin.

PlaceholderShows
%roulette_wins%The player's total wins
%roulette_spins%The player's total spins played
%roulette_profit%The player's net profit
%roulette_tables%How many tables exist on the server

Configuration

One clean, commented config.yml. Everything below is editable.

🔄
Updating is safe: your config.yml is never overwritten. New options from a new version are added automatically, keeping the settings and comments you already have.

Betting

betting: chips: [ 10, 50, 100, 500, 1000 ] # chip values a player can pick min-bet: 10 # smallest allowed bet max-bet: 0 # max per player per round (0 = none) window-seconds: 30 # length of the betting window announce-nearby: true # shout to nearby players when a round opens announce-radius: 40 # announce radius (blocks)

The wheel & the spin

wheel: radius: 6.0 # block wheel radius (min 5) spin-seconds: 6.0 # how long a spin lasts ball-material: SNOWBALL # the ball's item ball-linger-ticks: 60 # how long the ball rests after landing (20 = 1s) show-numbers: true # a floating number over each pocket default-theme: classic # default block build style

The felt & chips

felt: enabled: true # build the betting felt nudge-right: 0 # shift the felt to the right (blocks) nudge-forward: 0 # push the felt away from the wheel click-to-bet: true # bet by clicking the felt protect-blocks: true # stop players breaking the table show-chips: true # show coloured chips on the felt max-names: 3 # names per spot before it collapses chip-colours: [ RED, BLUE, LIME, ... ] # one colour per player

Rewards & Discord PREMIUM

rewards: # [PREMIUM] on a straight-up win on-straight-win-commands: [] # console commands. {player} {amount} {number} discord: # [PREMIUM] big-win announcements big-win-threshold: 0 # announce wins at/above this (0 = off) webhook-url: "" # your Discord webhook URL
ℹ️
After editing, run /roulette reload. The build style (block colours of the wheel and felt) lives at the bottom of the file.
RouletteMachine / Changelog

Version history

Every release and what changed in it.

v1.1.2 2026-09-29 Latest
  • ✨No licence key needed any more: install the jar and it works. The licence terms stay the same: one purchase covers one server (or one network under the same owner).
v1.1.0 2026-09-29
  • 🐛/roulette unbuild and delete no longer leave holes in the floor: a build now remembers every block it replaced and puts it back, and nothing standing next to the table is touched.
  • 🐛Changing wheel.radius or the felt nudges after building no longer moves the felt away from the real table. A table keeps the geometry it was built with.
  • 🐛Tables in a world loaded by another plugin (Multiverse, InfiWorlds...) are no longer erased from tables.yml, and come up on their own once that world loads.
  • 🐛A tables.yml that cannot be read is no longer overwritten with an empty one at shutdown. The plugin leaves it untouched and says so in the console.
  • 🐛/roulette build refuses a wheel.radius that cannot fit all 37 numbers (5 and 6.5 left numbers off the wheel) and suggests one that does.
  • 🐛Deleting a table during the betting countdown or a spin no longer leaves its holograms floating. The spin is stopped and the bets are refunded.
  • 🐛With wheel.show-numbers: false, the felt labels no longer disappear after a restart.
  • 🐛Two tables standing close together no longer wipe each other's felt labels.
  • 🐛Table names with a dot are refused: those tables were lost after a restart.
  • 🐛Building a table that is already built takes the old build down first, instead of leaving the old wheel orphaned.
  • 🐛A table the plugin did not build no longer locks the floor in front of it, nor takes bets on a felt that is not there.
  • 🐛RouletteMachine no longer switches itself off when the economy plugin loads after it.
  • 🐛Pocket numbers in a neighbouring chunk come back when that chunk loads.
  • 🐛Winnings are now paid before the end-of-spin effects, so an error there can never skip a payout.
  • ✨/roulette cancel drops a table you are creating. A pending creation also expires after 60 seconds, and when you log out.
  • 🔧/roulette reload now adds new config options and redraws the labels in view with the new display settings.
  • 🔧Language files refresh themselves when an update changes their text, keeping your old file as a .old backup.
  • 🔧/roulette top and /roulette stats now say they are Premium, instead of showing empty stats.
  • 🔧The ball carries the roulettemachine tag too, so anti-lag plugins can be told to leave it alone.
  • 🔧Lighter block-protection checks on busy servers.
  • 🔧Just replace the jar. Tables built before 1.1.0 kept no record of the floor: unbuilding them removes only the table's own blocks, not what was under them.
  • 🔧Your language files are refreshed on this update; the old ones are kept as lang/<code>.yml.old. Customised messages? Copy them across.
v1.0.6 2026-09-05
  • 🐛The felt labels vanished on restart and never came back. They were only ever drawn by /roulette build, so nothing redrew them and only rebuilding the table helped.
  • 🐛Labels sat in a dull grey box. A transparent background colour does not switch off the one the client draws by itself; that needed turning off explicitly.
  • 🔧Labels are now lit at full brightness instead of by the block under them, so they read the same at midnight and indoors as they do at noon.
  • 🔧Default view range raised from 0.6 to 1.0: the numbers were only visible from close up.
  • 🔧New display options: label-background-opacity, board-background-opacity and full-brightness, if you want the old look back.
v1.0.5 2026-09-05
  • 🔧The whole build - felt, border and wheel - is now protected on its own, without needing WorldGuard or any region plugin drawn around it.
  • 🔧Staff are protected too now. Hold sneak while breaking to get through, or use /roulette unbuild <name> to take a whole table down properly.
  • 🔧An explosion next to a table still blows up everything around it. Only the table's own blocks are spared, so you do not get a suspiciously tidy crater.
  • 🐛Explosions, pistons, fire, endermen and flowing water could all take blocks out of a table. Only a player breaking one by hand was ever refused.
  • 🐛Staff bypassed the protection entirely, so an admin testing it saw no protection at all and one stray swing put a hole in a live table.
v1.0.4 2026-09-05
  • 🐛The table labels stacked on top of each other after a restart. The felt sits in its own chunks, and a redraw could not clear labels in a chunk that was not loaded.
  • 🐛Existing tables repair themselves on start: every table is wiped and redrawn once, so a table already carrying stacked labels comes good just by updating.
  • 🐛The board above the wheel was never deduplicated, only the pocket numbers, so a second one sat on top of the first drawing the same lines.
  • 🔧Labels are no longer drawn while part of the felt is out of memory. The redraw waits for the last chunk instead of doing half the job twice.
v1.0.3 2026-09-05
  • 🐛Building the table left four holes in it, at the corners of the two outside-bet rows. Those positions belong to no bet, so nothing was ever painting them.
  • 🐛Betting on the layout with a block in hand no longer places that block on the table. Spamming a bet used to tile the felt with whatever you were holding.
  • 🐛The off-hand could still place blocks on a table: a right-click fires once per hand, and only the main hand was being blocked.
  • 🐛The border framing the felt was not protected either, only the betting areas, so a click on the trim built on the table.
  • 🔧Building on a table is now blocked outright, from any route, including the block directly above the felt where it would hide a bet.
  • 🔧The 'this is part of a roulette table' warning no longer floods the chat when you spam-click. Once every two seconds is enough.
v1.0.2 2026-09-05
  • ✨/roulette delete <name> now also removes the wheel and felt the plugin built. Deleting the table and leaving the stone wheel standing was no use to anybody.
  • 🐛Deleting a table used to leave its build with no way to remove it: /roulette unbuild needs a registered table to know where to sweep, and it was already gone.
  • 🐛/roulette unbuild used the radius from config.yml instead of the one the table was built with. Changing wheel.radius in between left the real ring standing.
  • 🔧Only blocks the plugin placed are ever swept. If an admin raised the wheel by hand, nothing is touched and you are told how to force it.
  • 🔧New option tables.delete-removes-build, and /roulette delete <name> keep or build to decide per command. Both appear in tab-complete.
v1.0.1 2026-08-17
  • 🐛Restarting the server no longer eats the bets. A stake is charged the moment the chip goes down, and bets lived only in memory: stopping the server with chips on the felt — or mid-spin — kept the mone
  • 🐛One failed payout no longer costs the rest of the table. If settling a bet went wrong, every player after it went unpaid with their stake already taken. Each bet settles on its own now, and failures a
  • 🐛Pulling a chip back now checks the money actually arrived. Placing a bet verified the charge but taking it back did not, so a failed refund cost the player both the chip and the money. The chip now st
v1.0.0 2026-07-24

No notes for this version.

RouletteMachine / Discussion

Discussion

Comment and share your experience on each plugin version.

Log in to comment on this version.Log in

No comments on this version yet — be the first!

RouletteMachine / Reviews

Player reviews

What server owners think of this plugin.

5.0
★★★★★
1 reviews
Log in to leave a review.Log in
IN
infinity3113 ⭐ Staff🎰 SlotMachine⚔️ ElementalArms🛡️ GuardianStones🎯 RouletteMachine 05 Aug 2026
★★★★★

Buen plugin