EverGrims WerksTHE CROSSPLAY WERKSHOP

EverGrims Werks

Grims Casino Games

Public release 0.8.8 · Admin guide · Paper 26.3

Slots, table games and a house ledger, built for a server economy.

This guide covers installation, physical layouts, sign registration, linked displays, management commands, and permissions for GrimsCasinoGames.

For 0.8.6, install GrimsClientChecker and Floodgate to enable touch forms. Routing reads ClientChecker's current usesTouchMenu(player) result whenever a menu opens. The forms share the inventory menu's choices, lore, payment options, and action handlers. A failed form falls back to the standard inventory and logs a warning. Mobile Bingo/cards include a refresh action for changing game state.

Update the AskNixie identity to CasinoGames: com.evergrims.grimscasinogames.CasinoSlotsPlugin. If your Nixie project catalog manages CasinoGames, update its allowed main classes there as well; a managed catalog entry takes precedence over the local setting. See review notes and the supplied configuration fragment.

Operational failures always use the plugin logger: serious financial, persistence, startup, and shutdown failures use SEVERE with the cause; recoverable failures use WARNING with the cause. Repeated minor warnings are counted and summarized every minute. Expected player rejections, such as insufficient chips or a closed betting window, remain player feedback. Casino text audit logging can be disabled without disabling console error reporting.

1. Server requirements

  • Paper 26.3.build.194-stable
  • Java 25
  • WorldEdit and WorldGuard 7.0.17
  • Optional: PlaceholderAPI 2.12+
  • Optional economy: Vault or VaultUnlocked 2.20.2 plus a provider such as EssentialsX
  • Crossplay Golf/Range: BedrockEnchantBridge is required for Geyser/Floodgate players; Java-only servers do not need it

Most casino games must be registered inside a WorldGuard region with the custom flag enabled:

/rg flag <region> casino allow

Golf is the exception. It uses regions named golf0 through golf99 and does not require the casino flag.

2. Universal setup rules

  • Build and validate the physical structure before placing its registration/admin sign.
  • For detector-based games, place the registration sign last.
  • Registration generates a unique ID. Use that exact ID on linked signs and in commands.
  • Most games register disabled. Inspect the new ID, then enable it with the game’s management command.
  • Sign markers are case-insensitive. Keep brackets and line placement exactly as shown.
  • Registered coordinates are saved; the plugin does not continuously rescan completed builds.
  • Linked hanging signs and front/back sign sides are supported where noted. Only a side containing a marker is controlled; a blank opposite side is left alone.
  • Prefer the documented remove command when one exists. Some game listeners also remove saved records or links when their signs are physically broken, but commands give the clearest administrative audit trail.

3. Shelf Slots

Allowed backing materials are configured in games/slots/config.yml. Defaults are iron, gold, diamond, emerald and netherite blocks, plus prismarine, prismarine bricks, and dark prismarine. Mixed backers are allowed by default.

Regular slot

Viewed from the player side, build a 3x3 face. L is a redstone lamp and S is a shelf attached to its backing block:

L L L
L S L
L L L
  1. Place the solid backing block and attach one shelf to its front.
  2. Build the complete eight-lamp frame in the same plane as the backing block. The bottom-center position is a lamp.
  3. Attach a wall sign with [Display] to the player-facing side of any frame lamp.
  4. Attach a lever or button to the player-facing side of the right-edge lamp at shelf height or the row immediately below it. The control must face the player.
  5. Place a rear wall sign with [slots] on line one on the back of the shelf’s backing block.

Large slot

Build four backers and four player-facing shelves in a 2x2 square, surrounded by 12 lamps:

L L L L
L S S L
L S S L
L L L L

Attach [Display] to the front of any frame lamp. Attach the lever/button to the front of either right-edge lamp aligned with a shelf row. Place [Lslots] on the rear of any one of the four backers. The default large-machine limit is one.

After registration:

/casino machine theme <id> <classic|overworld|ocean|nether|end|deep-dark>
/casino machine demo <id> <enable|disable>
/casino machine lights scan <id>
/casino machine lights status <id>
/casino machine lights test <id> <1|2|3|jackpot>
/casino machine lights demo <id> <off|1|2|3>
/casino machine lights clear <id>
/casino machine remove <id>

The light scan requires all 8 or 12 lamps and never replaces a valid saved frame when a new scan fails. One lamp cannot belong to multiple machines.

4. Sheep Patties

  1. Make an exact 5x5 GRASS_BLOCK interior.
  2. Surround it with a complete fence ring, producing a 7x7 footprint.
  3. Put exactly one sheep inside.
  4. Place one [Display1] and one [Display2] within the registration search area.
  5. Place [Sheep] last. This becomes the betting/admin sign.

Manage it with:

/casino sheep <id> <enable|disable|status>

Extra [Display1] and [Display2] sides may be linked within 32 blocks. Put the arena ID on line two when nearby arenas make the target ambiguous. The maximum extra displays per role is configurable.

5. Draw Bingo

  1. Place nine display signs marked [Display1] through [Display9].
  2. Each numbered marker must occur exactly once in the configured search box and casino region.
  3. Place [Bingo] last to register the arena.
/casino bingo <id> <enable|disable|status>

Card prices, call interval, round modes, blackout chance, item pools, and returns live in games/bingo/config.yml.

6. Chicken Plinko

Build an exact 11x19x11 closed enclosure. Its walls and roof may be glass, stained glass, tinted glass, or glass panes. The interior result floor is 9x9 concrete split into nine 3x3 zones.

Common requirements:

  1. Put exactly one chicken inside. A custom-named chicken keeps its name; otherwise the name pool is used.
  2. The plugin generates the centered temporary platforms at floor +4 (7x7), +8 (5x5), +12 (3x3), and +16 (1x1). The configured platform material defaults to grass blocks.
  3. At floor +17, build the connected eight-position fence ring around the top 1x1 start yourself. Temporary scaffold blocks are useful while placing it. All fence states must visibly connect. The plugin records but never edits this ring.
  4. Place unique [Display1] and [Display2] signs.
  5. Place the mode’s admin/betting sign last.

Mode layouts:

  • [Plinko1]: center 3x3 is HOUSE. The eight outer zones use exactly two concrete colors, four zones of each.
  • [Plinko2]: all nine 3x3 zones use different concrete colors.
/casino plinko <id> <enable|disable|status|remove>

Extra [Display1]/[Display2] sides link like Sheep Patties. Arena-specific platform material, pull mode, and name settings are generated in games/chicken-plinko/arenas.yml.

7. Horse Racing

  1. Build four touching starting pens, each with a 3x3 interior.
  2. Put three adjacent fence gates across the front of each pen. All 12 gates must share the same axis and face the same straight track.
  3. On the very back wall—not at the gates—place [Racing] centered across the four pens. The direction behind the readable sign face must point through the pens, gates, and track.
  4. Place the registration sign last. The plugin saves start points two blocks inside the gates and creates a two-block-deep checkered finish line at the configured distance.

Linked signs use the venue ID on line two:

[RaceAdmin]
racing-001

[D1Racing]
racing-001

[D2Racing]
racing-001

D1 shows state and bet count. D2 shows the next or active four-horse field. Each role has its own configurable link limit, and links may be placed in any order.

Optional countdown board: build a 3x4 plane parallel to the gate line. Every row is colored concrete / redstone lamp / colored concrete; top-to-bottom colors are red, yellow, green, lime. The bottom may be up to five blocks above gate level and the board may be one to seven blocks behind the gate plane.

/casino racing <id> <enable|disable|status|rescan>
/casino games ticking <enable|disable|status> <id>
/casino games ticking list

rescan keeps the venue ID, links, bets, round, and state while rebuilding the saved geometry and finish line.

Optional shared stables

Create one WorldGuard region named stalls by default, no larger than 25x4x25. The scan must find exactly 16 stalls:

  • 3x3 hay-bale interior floor; hay is not required under the walls
  • Three air blocks above every interior floor block
  • Complete surrounding ring made from allowed planks, logs, fences, or wall blocks
  • Exactly two adjacent fence gates on one wall

Run:

/casino racing stalls rescan
/casino racing stalls status

A rescan is rejected during a race. Once validation succeeds, it removes non-player entities inside the exact stalls region and gradually rebuilds the 16 named roster horses.

Optional courtyard: one 7x7 interior floor enclosed by a complete 9x9 fence/wall/gate ring one block above the floor. Flooring may mix grass blocks, moss blocks, pale moss blocks, and hay bales. Leave three clear blocks above the interior. Gates are valid but not required. Enable the courtyard Easter egg in the racing config.

At most two IDs in stalls.linked-racing-venues may share the physical roster. Those venues reserve their next four horses so overlapping draws cannot select horses already racing or reserved elsewhere.

8. Dog Racing

  1. Build five touching pens, each two blocks wide: four dog pens plus a center pace-rabbit pen.
  2. Put two adjacent fence gates on each front. All 10 gates must face the same straight, open track.
  3. Place [DogRacing] centered on the rear wall, facing away from the pens. Behind the readable face must point through the pens and down the track.

The plugin creates the finish line. Do not divide the rabbit from the dogs after they leave the gates.

Linked signs use line one plus the venue ID on line two:

[DogRaceAdmin]
[D1DogRace]
[D2DogRace]

The Horse Racing countdown-board and temporary-ticking rules also apply.

/casino dogracing <id> <enable|disable|status|rescan>

9. EvE Arenas

  1. Choose the exact center of a circular arena.
  2. Build the boundary seven blocks out from center, making a 15-block-wide arena. Every radius boundary position must be a fence/wall or a solid wall at least two blocks tall.
  3. Put one GLASS block flush with the exact floor center and leave three clear blocks above it.
  4. Place [EvE] outside the arena, facing away from it. The detector searches behind the sign, including lateral offsets, the sign Y level, and up to six blocks down. A cardinal wall sign is recommended.
  5. On success, the glass marker changes to the configured floor-center material, STONE_BRICKS by default.

The main sign is the primary D1/admin terminal. Additional links use the arena ID on line two:

[D1EvE]
[D2EvE]
[EvEAdmin]

Only D2 is required for a basic symmetrical setup. D1 and D2 identify the two sides. Links may be added in any order up to independent limits in games/eve/config.yml.

/casino eve <id> <enable|disable|status>
/casino eve next <id> <normal|boss [iron-golem|random|mob]|status>
/casino games ticking <enable|disable|status> <id>

Boss overrides lock after the first wager. Arena radius, equipment rolls, enchantment caps, tie behavior, result display, and cleanup sweep are configurable.

10. Blackjack and Casino Hold'em

These tables require only a sign inside a casino-enabled region:

  • [Blackjack] registers a Blackjack table.
  • [Holdem] or [Hold'em] registers a single-player Casino Hold’em table.
/casino blackjack <id> <enable|disable|status|remove>
/casino holdem <id> <enable|disable|status|remove>

Deck rules, timers, wagers, dealer behavior, and returns live in their respective games/blackjack/ and games/holdem/ configs.

11. Golf and Mini Golf

Create a WorldGuard region named from golf0 through golf99. A course may contain holes numbered 1 through 99; all holes belonging to one course must be in the same world.

  1. Place [Golf] to register the main admission sign and note the generated course ID.
  2. For each hole, write:
Line 1: [GolfHole]
Line 2: [mini]       # leave blank for standard Golf
Line 3: <course-id>
Line 4: <hole-number>
  1. Place the hole sign. This enters that administrator into a hole draft.
  2. Stand on the centered tee and run /casino golf tee.
  3. Build a 3x2x3 cup. Stand at its center and run /casino golf end.

For Mini Golf, the saved cup-center block must be at least two blocks below the tee center. A two-block difference represents a flat hole; larger differences are downhill. The plugin saves a player arrival point two blocks in front of the hole sign.

/casino golf course <id> <enable|disable|status|remove>

Edit generated hole entries in games/golf/courses.yml to change par, cup-settle-ticks, arrival, or allowed-balls. Global balls, starter clubs, shop clubs, prices, and defaults live in games/golf/config.yml.

12. Driving Ranges

  1. Inside a valid golf0–golf99 region, place [DrRange] to register the admin/vacancy sign.
  2. Build each stall as a clear 3x3x3 interior over a solid 3x3 floor.
  3. Put GLASS flush at the floor’s center; this is the sulfur-cube spawn point.
  4. Place a stall sign:
Line 1: [drstall1]   # use the desired stall number
Line 2: <range-id>
/casino golf range <id> <enable|disable|status|remove>

Ball packages, available materials, vacancy grace time, and cleanup timers are in games/golf/config.yml.

13. Economy and administration

/casino economy list
/casino economy set <AUTO|provider>
/casino give <player> chips <amount>
/casino take <player> chips <amount>
/casino bank
/casino bank reset confirm [reason]
/casino audit
/casino reload

AUTO follows Bukkit’s highest-priority registered Vault economy. A bank reset is an audited performance-metric reset and automatically includes the current progressive jackpot amount in the new bank value.

The command-block deposit form is:

casino deposit @p[distance=..3,sort=nearest,limit=1] <amount>

It only accepts the nearest player within the configured maximum radius.

14. Permissions

The compatibility prefix remains casinoslots.

Player permissions

PermissionPurpose
casinoslots.playPlay slots.
casinoslots.sheep.playBet on Sheep Patties.
casinoslots.bingo.playBuy Bingo cards and use /casino card.
casinoslots.plinko.playBet on Chicken Plinko.
casinoslots.blackjack.playPlay Blackjack.
casinoslots.holdem.playPlay Casino Hold’em.
casinoslots.racing.playBet on Horse Racing.
casinoslots.dogracing.playBet on Dog Racing.
casinoslots.eve.playBet on EvE.
casinoslots.golf.playEnter and play Golf/Mini Golf.
casinoslots.range.playUse Driving Ranges.
casinoslots.economy.depositConvert economy money to chips.
casinoslots.economy.cashoutConvert chips to economy money.

Builder and manager permissions

GameCreateManage
Slotscasinoslots.machine.createcasinoslots.machine.edit, casinoslots.machine.remove
Sheep Pattiescasinoslots.sheep.createcasinoslots.sheep.toggle
Bingocasinoslots.bingo.createcasinoslots.bingo.toggle
Plinkocasinoslots.plinko.createcasinoslots.plinko.manage
Blackjackcasinoslots.blackjack.createcasinoslots.blackjack.manage
Hold’emcasinoslots.holdem.createcasinoslots.holdem.manage
Horse Racingcasinoslots.racing.createcasinoslots.racing.manage
Dog Racingcasinoslots.dogracing.createcasinoslots.dogracing.manage
EvEcasinoslots.eve.createcasinoslots.eve.manage, casinoslots.eve.boss
Golfcasinoslots.golf.createcasinoslots.golf.manage
Driving Rangecasinoslots.range.createcasinoslots.range.manage
Temporary ticking—casinoslots.ticking.manage

Other administrative permissions:

PermissionPurpose
casinoslots.alerts.brokenReceive broken-game alerts.
casinoslots.alerts.bankReceive bank and financial alerts.
casinoslots.alerts.balanceView and receive balance sheets.
casinoslots.house.manageLegacy house-credit operations.
casinoslots.house.resetAudited casino-bank reset.
casinoslots.chips.manageGive or take chips.
casinoslots.economy.manageSelect the economy provider.
casinoslots.adminParent for administrative permissions; deliberately does not grant play permissions.

Example LuckPerms grants:

/lp group default permission set casinoslots.play true
/lp group default permission set casinoslots.sheep.play true
/lp group default permission set casinoslots.bingo.play true
/lp group default permission set casinoslots.plinko.play true
/lp group default permission set casinoslots.blackjack.play true
/lp group default permission set casinoslots.holdem.play true
/lp group default permission set casinoslots.racing.play true
/lp group default permission set casinoslots.dogracing.play true
/lp group default permission set casinoslots.eve.play true
/lp group default permission set casinoslots.golf.play true
/lp group default permission set casinoslots.range.play true
/lp group admin permission set casinoslots.admin true

15. Files, logs, and safe tuning

Runtime data is under plugins/CasinoGames/:

config.yml
casino.db
logs/
games/
  slots/
  sheep-patties/
  bingo/
  chicken-plinko/
  blackjack/
  holdem/
  racing/
  dog-racing/
  eve/
  golf/

SQLite is authoritative for chip balances, wagers, and settlements. Dated human-readable logs are written asynchronously and retained for seven days by default.

Before editing generated venue files, stop the server or make a backup. After changing configuration, run /casino reload; geometry changes may also require that venue’s rescan. Never edit casino.db as YAML or text.

PlaceholderAPI supports both %casinogames_*% and legacy %casinoslots_*% names. Useful values include balance, bank, jackpot, spins_24h, wagers_24h, payouts_24h, net_24h, machine_count, and broken_count.