
Turn your Cobblemon world into a place players want to visit between adventures.
Cobblemon MiniGames adds a fully playable arcade: eight coin-paying minigames, four Pinball tables, four Gacha machines, Arcade Coins, a Coin Case and a reward shop. Win coins at Roulette, Slot Machine, Flappy Bird, Block Stacker, Snake, Derby, Voltorb Flip, Blackjack and Pinball, then spend them on configurable rewards or on Pokemon from the Gacha machines.

Features
- Arcade games inspired by the Pokemon Emerald Game Corner, each with its own themed look.
- Pinball: four tables (Meowth, Diglett, Seel and Gengar), each with its own goal and prize.
- Machines: play everything from the MiniGames Machine, or place a dedicated cabinet for each game.
- Gacha: four machines that give out Pokemon (or items you choose) by rarity.
- Arcade Coins, a Coin Case and a reward shop.
- Easy to set up on servers: games, prices, prizes and recipes can all be adjusted.
Minigames
Roulette

Inspired by the Pokemon Emerald roulette table. Pick a table, bet on a Pokemon column, a color row or an exact square, and spin. Winning pays wager * multiplier.
| Bet |
Payout |
| Pokemon column |
x6, x4 or x3, depending on how many balls in that column are already occupied |
| Color row |
x4 or x3, depending on how many balls in that row are already occupied |
| Exact square |
x12 |
When the player enters, they pick a table first: the red left table uses the normal low wager, the green right table uses a higher wager, and every seventh Minecraft day the right table becomes the service-day table with its own configured wager.
A spin consumes the table wager and drops one ball onto the wheel. The round keeps the landed balls until six balls have been placed or no valid squares remain. When the board is cleared, the next entry returns to table selection. If the player leaves mid-round and comes back later, the active roulette round is resumed.
Slot Machine

Inspired by the Pokemon Emerald slot machine. Insert one to three bet units, start the reels and stop each one with the action button. One unit activates the middle line, two units activate top, middle and bottom, and three units activate all five lines including the diagonals.
| Symbol |
Payout |
| Cherry |
2 coins on the middle line, or 4 coins on top/bottom cherry lines |
| Lotad |
6 coins |
| Azurill |
12 coins |
| Power |
3 coins and adds Pika Power |
| Mixed 7 |
90 coins |
| Red 7 |
300 coins |
| Blue 7 |
300 coins and marks the next Reel Time as lucky |
| Replay |
Counts as a match but pays no coins |
Each bet unit costs the configured `slotmachine.coinToPlay`. `Bet Max` inserts up to three bet units and starts the spin when all three have been accepted. Replay and power matches count as wins for the machine flow, but replay pays zero coins and power builds Pika Power. Pika Power can trigger Reel Time, which gives a short special sequence and may grant slower bonus spins.
Flappy Bird

Flap Butterfree through the obstacle gaps. Each cleared obstacle gives one point and speeds the game up. On crash, the run pays score * multiplier Arcade Coins.
Flappy Bird spends the configured entry cost, then starts a countdown. The speed starts at the configured base speed, increases by the configured step for each cleared obstacle, and is capped at the configured max speed.
Block Stacker

Stop the moving blocks row by row. Missing every block ends the run. By default, reaching row 6 offers a 50-coin cash-out, row 7 offers 250 coins, and row 8 pays the 1000-coin top prize. At each cash-out prompt, take the current reward or keep going.
Block Stacker spends the configured entry cost when the run starts. The prize amounts, shown next to their rows, and the movement speed of those rows can be tuned in the config.
Snake

Guide Onix around the field. Every berry adds one point and grows the snake. Hitting a wall or the snake body ends the run and pays score * multiplier Arcade Coins.
Derby

Six racers, one bet. Choose a racer and place a bet in 10-coin steps, up to the Arcade Coins you currently have. Your racer must finish first to win, and the payout depends on the odds shown on the bet slip.
| Odds |
Multiplier |
A 10-coin bet returns |
| Payout 1 |
x1.1 |
11 |
| Payout 2 |
x1.2 |
12 |
| Payout 3 |
x1.3 |
13 |
| Payout 4 |
x1.5 |
15 |
| Payout 5 |
x2 |
20 |
| Payout 6 |
x3 |
30 |
Voltorb Flip

A risk-and-reward puzzle inspired by Voltorb Flip Rogue. Reveal every 2 and 3 card on a 5x5 board without hitting a Voltorb, then cash out or push on to the next, more dangerous level. Boards are saved if you leave mid-run.
Starting a run spends the configured entry cost, then shows a 5x5 board of hidden cards. Each card is either a Voltorb, a 1, a 2, or a 3. The clues on the right and bottom edges show the total card value and the number of Voltorb cards in each row or column.
Revealing a 1 is safe, but it does not increase the payout. Revealing a 2 or 3 multiplies the current board value. Players can switch between reveal mode and note mode, then mark hidden cards with notes for 1, 2, 3, or Voltorb while solving the board.
Completing a board adds that board's value to the run bank and offers a choice: cash out or continue to the next level. Higher levels have larger possible payouts, but also more Voltorbs. If the player cashes out, the banked Arcade Coins are paid to the player. If the player reveals a Voltorb, the run bank is lost and the payout is 0.
Unlike the original Game Corner game, this version lets players leave during an active board. The board state is preserved, so they can come back later and continue the same run. Leaving does not pay out the current bank; the player must cash out from a completed-board prompt to receive the stored winnings.
Blackjack

Bet in steps of 10 Arcade Coins and play against the dealer: reach 21, or get closer to 21 than the dealer, without going over. Insurance and Double are available, and a bet in progress is saved if you leave.
| Result |
Returns |
| Win |
2x the bet |
| Blackjack |
2.5x the bet |
| Tie |
The original bet |
| Loss or over 21 |
Nothing |
A panel next to the table shows the minimum bet, your current bet and whose turn it is. During the player's turn they can draw another card or stand. The dealer draws until reaching at least 17.
Insurance appears when the dealer's visible card is an Ace and the player has enough Arcade Coins. It costs half of the current bet. If the dealer has Blackjack, the insurance returns the value of the original bet; otherwise, the insurance is lost and the hand continues normally.
Double appears when the player's first two cards have a total of 9, 10, or 11 and the player has enough Arcade Coins to match the current bet. Choosing it doubles the bet, deals exactly one more card, and ends the player's turn.
Pinball

Four Pinball tables based on the pinball of the Pokemon Emerald GameCorner Expansion. Each table has its own machine, and all four can also be played from the MiniGames Machine.
Press Enter, Space, or click the table to start and launch the ball. Use A/Z for the left flipper and D/X for the right one. The round ends when time runs out, when you clear the table, or when you lose Diglett's only ball, and then you get your prize.
| Table |
Objective |
Default time |
Prize |
| Meowth |
Hit Meowth to make him drop jewels, then collect them. Consecutive jewels are worth more. Reach 20 points. |
60 s |
3 coins per point |
| Diglett |
One ball: hit all 31 Diglett, then Dugtrio three times. |
120 s |
3 per Diglett, 100 for clearing the Diglett, 150 for defeating Dugtrio |
| Seel |
Hit Seel when it surfaces. Consecutive hits are worth more. Reach 20 points. |
90 s |
4 coins per point |
| Gengar |
Hit Gastly 10 times, Haunter 10 times, then Gengar 5 times. |
90 s |
3 per Gastly plus 7 per Haunter, 250 for completing the table |
If you close the table in the middle of a round, it is paused and you can finish it later without paying again.
On Meowth and Seel, losing the ball costs four points and a new ball is launched. Meowth's jewels don't last forever: they blink before disappearing.
Gacha

Gacha is opened directly from one of four dedicated machine blocks. Each machine uses a progressively wider set of rarities, and a higher wager raises the chance of getting a species you don't own yet.
| Machine |
Color |
Rarities |
| Basic |
Pink |
common |
| Great |
Blue |
common, uncommon |
| Ultra |
Yellow |
common, uncommon, rare |
| Master |
Purple |
common, uncommon, rare, ultra-rare |
By default, the available Pokemon are generated exclusively from the Cobblemon world spawn pool. Server owners can configure any machine to use a manual species list instead, or to hand out configured items instead of Pokemon.
Each player receives a personalized pool based on the species currently registered in their party and PC. Increasing the wager does not change the machine's rarity probabilities, shiny chance, or aspect chance. Instead, it progressively increases the chance that the selected Pokemon is a species the player does not already own. At the maximum wager, a selected rarity guarantees a new species when that rarity still contains at least one missing Pokemon.
The result may independently be shiny or use an eligible non-standard form. Mega, Gigantamax, and Dynamax forms are excluded from random aspect selection. The Pokemon is only delivered after its reveal animation finishes.
Machines
MiniGames Machine and dedicated cabinets
The MiniGames Machine opens the Home screen, where the player picks any enabled game, including the four Pinball tables.
Each game also has its own dedicated cabinet that opens that game directly. Every cabinet has themed side art featuring the game's Pokemon:
| Machine |
Game |
Pokemon |
| Snake Machine |
Snake |
Onix |
| Flappy Bird Machine |
Flappy Bird |
Butterfree |
| Block Stacker Machine |
Block Stacker |
Rhydon |
| Blackjack Machine |
Blackjack |
Sableye |
| Derby Machine |
Derby |
Ponyta |
| Voltorb Flip Machine |
Voltorb Flip |
Voltorb |
| Slot Machine |
Slot Machine |
Pikachu |
| Roulette Machine |
Roulette |
Wynaut |
Pinball tables
Pinball Meowth, Pinball Diglett, Pinball Seel and Pinball Gengar each have their own themed table and a marquee with animated lights. Right-click the machine to play.
Coin Case
The Coin Case stores virtual Arcade Coins in the item data. If the player has a Coin Case in their inventory, game payouts go into it first. Players can also use the Coin Case screen to deposit physical coins from the inventory or withdraw stored coins back into item stacks.
Coin Case details:
- The shared coin cap is 99999999.
- Payouts are stored in the Coin Case first when one is present.
- Withdrawals only create as many physical coins as the inventory can hold.
Recipes
MiniGames Coin Case

1 Cobblemon Relic Coin and 4 Leather.
MiniGames Coin

1 Cobblemon Relic Coin and 4 Iron Nuggets.
MiniGames Machine

4 any Planks, 2 Gold Ingots, 2 Iron Ingots and 1 Emerald.
Dedicated cabinets
All eight cabinets use the same shape: 4 any Planks, 1 Glass, 2 Iron Ingots, 1 Redstone and 1 dye that picks the game.

| Dye |
Machine |
| Lime Dye |
Snake Machine |
| Light Blue Dye |
Flappy Bird Machine |
| Gray Dye |
Block Stacker Machine |
| Purple Dye |
Blackjack Machine |
| Orange Dye |
Derby Machine |
| Red Dye |
Voltorb Flip Machine |
| Yellow Dye |
Slot Machine |
| Cyan Dye |
Roulette Machine |
Pinball tables
All four tables use the same shape: 2 Glass, 4 Iron Ingots, 1 Redstone and 1 dye that picks the table.

| Dye |
Table |
| Yellow Dye |
Pinball Meowth |
| Brown Dye |
Pinball Diglett |
| Light Blue Dye |
Pinball Seel |
| Purple Dye |
Pinball Gengar |
Gacha machines
All four Gacha machines use the same shape: 3 Glass, 4 Iron Ingots, 1 Redstone and 1 dye that picks the tier.

| Dye |
Machine |
| Pink Dye |
Basic Gacha Machine |
| Blue Dye |
Great Gacha Machine |
| Yellow Dye |
Ultra Gacha Machine |
| Purple Dye |
Master Gacha Machine |
Configuration
Server configuration (config.yml)
Server configuration lives in config/cobblemonminigames/config.yml. Existing config.yml files receive newly introduced missing keys automatically without overwriting values already configured by the server owner.
The enabled setting of each game controls access from Home, from its dedicated cabinet and from commands. Recipe settings only control crafting: existing machines and commands keep working.
Every coinToPlay setting accepts 0, which makes that game free without changing its rewards. Changing coinToPlay never scales any reward.
Default config.yml
pinball:
meowth:
enabled: true
time: 60
coinToPlay: 1
diglett:
enabled: true
time: 120
coinToPlay: 1
seel:
enabled: true
time: 90
coinToPlay: 1
gengar:
enabled: true
time: 90
coinToPlay: 1
snake:
enabled: true
coinToPlay: 1
multiplier: 2.0
flappybird:
enabled: true
coinToPlay: 1
multiplier: 2.0
speedBase: 2.0
speedStep: 0.05
speedMax: 7.0
slotmachine:
enabled: true
coinToPlay: 1
blockstacker:
enabled: true
coinToPlay: 1
row6Prize: 50
row7Prize: 250
row8Prize: 1000
row6SpeedFrames: 4
row7SpeedFrames: 3
row8SpeedFrames: 2
derby:
enabled: true
voltorbflip:
enabled: true
coinToPlay: 10
blackjack:
enabled: true
roulette:
enabled: true
leftTableBet: 1
rightTableBet: 3
serviceDayBet: 6
gacha:
basic:
enabled: true
usePokemonList: false
useItemList: false
minWager: 50
maxWager: 9999
shinyChancePercent: 0.01220703125
aspectChancePercent: 5.0
rarities:
common: 100.0
great:
enabled: true
usePokemonList: false
useItemList: false
minWager: 250
maxWager: 9999
shinyChancePercent: 0.01220703125
aspectChancePercent: 5.0
rarities:
common: 70.0
uncommon: 30.0
ultra:
enabled: true
usePokemonList: false
useItemList: false
minWager: 1000
maxWager: 9999
shinyChancePercent: 0.01220703125
aspectChancePercent: 5.0
rarities:
common: 45.0
uncommon: 35.0
rare: 20.0
master:
enabled: true
usePokemonList: false
useItemList: false
minWager: 4500
maxWager: 9999
shinyChancePercent: 0.01220703125
aspectChancePercent: 5.0
rarities:
common: 35.0
uncommon: 30.0
rare: 25.0
ultra-rare: 10.0
recipes:
arcadeCoinCrafting: true
arcadeMachineCrafting: true
basicGachaMachineCrafting: true
greatGachaMachineCrafting: true
ultraGachaMachineCrafting: true
masterGachaMachineCrafting: true
snakeMachineCrafting: true
flappyBirdMachineCrafting: true
blockStackerMachineCrafting: true
blackjackMachineCrafting: true
derbyMachineCrafting: true
voltorbFlipMachineCrafting: true
slotMachineCrafting: true
rouletteMachineCrafting: true
meowthPinballMachineCrafting: true
diglettPinballMachineCrafting: true
seelPinballMachineCrafting: true
gengarPinballMachineCrafting: true
When upgrading from a version without the individual Gacha recipe settings, each missing setting inherits the existing `arcadeMachineCrafting` value once. After that, every machine recipe can be configured independently.
Config keys
Every key in config.yml, grouped by game, with its default value and what it does:
**Pinball** (`
` is `meowth`, `diglett`, `seel` or `gengar`)
- `pinball.
.enabled` (default `true`): Shows that Pinball table on the Home screen and allows it to be played from its machine and by command.
- `pinball.
.time` (default `60` / `120` / `90` / `90`): Round time in seconds for Meowth, Diglett, Seel and Gengar. Values are clamped from `1` to `86400`. The next round uses the new time.
- `pinball.
.coinToPlay` (default `1`): Arcade Coins consumed when a round starts on that table. `0` makes it free. Values are clamped from `0` to `99999999`.
**Snake**
- `snake.enabled` (default `true`): Shows Snake on the Home screen and allows the server to open and process the game.
- `snake.coinToPlay` (default `1`): Arcade Coins consumed when a Snake run starts.
- `snake.multiplier` (default `2.0`): Multiplies the Snake score for its reward. Decimal results are rounded to the nearest integer.
**Flappy Bird**
- `flappybird.enabled` (default `true`): Shows Flappy Bird on the Home screen and allows the server to open and process the game.
- `flappybird.coinToPlay` (default `1`): Arcade Coins consumed when a Flappy Bird run starts.
- `flappybird.multiplier` (default `2.0`): Multiplies the Flappy Bird score for its reward. Decimal results are rounded to the nearest integer.
- `flappybird.speedBase` (default `2.0`): Starting Flappy Bird speed multiplier. Values are clamped from `0.01` to `20.0`.
- `flappybird.speedStep` (default `0.05`): Speed multiplier added for each cleared obstacle. Use `0` to keep a fixed speed. Values are clamped from `0` to `20.0`.
- `flappybird.speedMax` (default `7.0`): Maximum Flappy Bird speed multiplier. Values are clamped from `speedBase` to `20.0`.
**Slot Machine**
- `slotmachine.enabled` (default `true`): Shows Slot Machine on the Home screen and allows the server to open and process the game.
- `slotmachine.coinToPlay` (default `1`): Arcade Coins consumed for each Slot Machine bet unit.
**Block Stacker**
- `blockstacker.enabled` (default `true`): Shows Block Stacker on the Home screen and allows the server to open and process the game.
- `blockstacker.coinToPlay` (default `1`): Arcade Coins consumed when a Block Stacker run starts.
- `blockstacker.row6Prize` (default `50`): Arcade Coins offered as a cash-out when row 6 is cleared. Values are clamped from `1` to `99999999`.
- `blockstacker.row7Prize` (default `250`): Arcade Coins offered as a cash-out when row 7 is cleared. Values are clamped from `1` to `99999999`.
- `blockstacker.row8Prize` (default `1000`): Arcade Coins paid as the top prize when row 8 is cleared. Values are clamped from `1` to `99999999`.
- `blockstacker.row6SpeedFrames` (default `4`): Movement delay on row 6, the first prize row. Lower values are faster. Values are clamped from `1` to `5`.
- `blockstacker.row7SpeedFrames` (default `3`): Movement delay on row 7, the second prize row. Lower values are faster. Values are clamped from `1` to `5`.
- `blockstacker.row8SpeedFrames` (default `2`): Movement delay on row 8, the top prize row. Lower values are faster. Values are clamped from `1` to `5`.
**Derby, Voltorb Flip, Blackjack and Roulette**
- `derby.enabled` (default `true`): Shows Derby on the Home screen and allows the server to open and process the game.
- `voltorbflip.enabled` (default `true`): Shows Voltorb Flip on the Home screen and allows the server to open and process the game.
- `voltorbflip.coinToPlay` (default `10`): Arcade Coins consumed when a Voltorb Flip run starts.
- `blackjack.enabled` (default `true`): Shows Blackjack on the Home screen and allows the server to open and process the game.
- `roulette.enabled` (default `true`): Shows Roulette on the Home screen and allows the server to open and process the game.
- `roulette.leftTableBet` (default `1`): Wager used by the normal left roulette table.
- `roulette.rightTableBet` (default `3`): Wager used by the normal right roulette table.
- `roulette.serviceDayBet` (default `6`): Wager used by the right roulette table every seventh Minecraft day.
**Recipes** (all default `true`; changes require restarting the server or singleplayer world)
- `recipes.arcadeCoinCrafting`: Enables the MiniGames Coin crafting recipe. Set to `false` to disable it.
- `recipes.arcadeMachineCrafting`: Enables the MiniGames Machine crafting recipe.
- `recipes.<tier>GachaMachineCrafting`: Enables the Basic, Great, Ultra or Master Gacha Machine crafting recipe.
- `recipes.<game>MachineCrafting`: Enables a dedicated cabinet recipe: `snake`, `flappyBird`, `blockStacker`, `blackjack`, `derby`, `voltorbFlip`, `slot` and `roulette`.
- `recipes.
PinballMachineCrafting`: Enables a Pinball table recipe: `meowth`, `diglett`, `seel` and `gengar`.
**Free games**
With `coinToPlay: 0`, Slot Machine and Block Stacker still award their normal fixed prizes, Snake and Flappy Bird still pay `score * multiplier`, Voltorb Flip still pays the accumulated board winnings, and Pinball still pays its table prize.
Gacha settings
Each machine uses the same settings under gacha.basic, gacha.great, gacha.ultra, or gacha.master. The set of accepted rarity keys is fixed by the machine tier:
| Machine |
Default minimum |
Default rarity weights |
basic |
50 |
common: 100 |
great |
250 |
common: 70, uncommon: 30 |
ultra |
1000 |
common: 45, uncommon: 35, rare: 20 |
master |
4500 |
common: 35, uncommon: 30, rare: 25, ultra-rare: 10 |
Every setting available for each Gacha machine, with its allowed values:
- `gacha.<machine>.enabled` (`true` / `false`): Allows that machine block to be opened.
- `gacha.<machine>.usePokemonList` (`true` / `false`): Uses the machine's manual Pokemon list instead of building its pool from rarity settings. Defaults to `false`.
- `gacha.<machine>.useItemList` (`true` / `false`): Hands out items from the machine's manual item list instead of Pokemon. Defaults to `false`. Only one of `usePokemonList` and `useItemList` may be `true`: if both are, a warning is logged and the machine cannot be played until one is set to `false`.
- `gacha.<machine>.minWager` (`0` to `9999`): Minimum selectable wager and the point where the new-species bonus begins at its natural spawn-weight chance. With an item list, items follow their configured weights at this wager.
- `gacha.<machine>.maxWager` (`minWager` to `9999`): Maximum selectable wager and the point where the progressive new-species bonus reaches its maximum. With an item list, every item of the chosen rarity is equally likely at this wager. Ignored for item lists whose items all share one weight per rarity, which are fixed at `minWager`.
- `gacha.<machine>.shinyChancePercent` (`0` to `100`): Independent percentage chance for the awarded Pokemon to be shiny.
- `gacha.<machine>.aspectChancePercent` (`0` to `100`): Independent percentage chance to select an eligible non-standard form for the awarded species.
- `gacha.<machine>.rarities.<rarity>` (`0` or greater): Relative selection weight for that rarity. The active rarity weights are normalized into probabilities.
Setting a rarity weight to `0` disables that rarity for the machine. At least one available rarity must have a positive weight; otherwise, that machine's default weights are restored. Adding a rarity key that does not belong to the machine tier does not expand its pool.
Gacha wagers are different from `coinToPlay`: the selected amount changes the progressive chance of receiving a species the player does not own (or, with an item list, of receiving a low-weight item), but never changes rarity, shiny, or aspect probabilities. A `minWager` of `0` allows free pulls at the minimum wager.
Gacha manual Pokemon and item lists
The mod creates one manual list file for each machine: config/cobblemonminigames/gacha/basic.yml, great.yml, ultra.yml and master.yml. Each one can hold a pokemons list and an items list, both empty by default.
Manual Pokemon lists
Add each Pokemon as an object with `id` and `weight`:
pokemons:
- id: pikachu
weight: 10.0
- id: eevee
weight: 5.0
- id: cobblemon:bulbasaur
weight: 1.0
Set that machine's `usePokemonList` value to `true` in `config.yml` to activate the list. Higher weights make an entry more likely relative to other eligible entries. For example, weights `10.0` and `1.0` produce base probabilities of `10/11` and `1/11`. The new-species bonus still separates new and owned species before applying their relative weights. Manual lists can include species outside the machine's normal rarities.
Each weight must be greater than `0` and finite. Invalid entries or species are skipped and logged. If the list has no valid species, the machine displays an empty-pool message and consumes no Arcade Coins.
Manual item lists
Add each item as an object with `id`, `rarity`, `quantity`, and an optional `weight`:
items:
- id: minecraft:iron_ingot
rarity: common
quantity: 8
weight: 10.0
- id: minecraft:diamond
rarity: common
quantity: 1
weight: 0.1
- id: cobblemon:rare_candy
rarity: uncommon
quantity: 1
Set that machine's `useItemList` value to `true` in `config.yml` to activate the list. Each pull first picks a rarity using the machine's `rarities` weights, then one of that rarity's items by `weight`, and gives its full `quantity`. Items that do not fit in the inventory are dropped at the player's feet.
Like the new-species bonus for Pokemon, the wager never changes the rarity probabilities; it changes which item of the chosen rarity is awarded. At `minWager`, items follow their weights, so in the example above the diamond is 100 times less likely than the iron. Raising the wager evens those odds out progressively, making low-weight items more likely, until at `maxWager` every item of the chosen rarity is equally likely. If all items of a rarity share the same weight, the wager does not change the result for that rarity. When that is true for every rarity the machine uses (for example when no item sets a `weight`), the wager is fixed at `minWager` and cannot be raised, so players never pay more for the same odds. Setting different weights restores the full `minWager`–`maxWager` range.
- `rarity` must be `common`, `uncommon`, `rare`, or `ultra-rare`, and must be one of the machine tier's rarities. For example, a `rare` item in `basic.yml` is skipped.
- `quantity` must be at least `1` and defaults to `1` when omitted. Values above `64` are reduced to `64`.
- `weight` must be greater than `0` and finite, and defaults to `1.0` when omitted. Lower weights make an item rarer.
- Invalid entries, unknown item ids, and rarities the machine does not use are skipped and logged.
If the list has no usable items, the machine displays a no-items message and consumes no Arcade Coins.
Shop
Shop configuration lives in config/cobblemonminigames/shop/. Every .yml or .yaml file in this directory is an independent catalog. Every shop file contains categories, each category contains subcategories, and each subcategory contains purchasable rewards. Item rewards use type: item; Pokemon rewards use type: pokemon.
Example catalog
catalog-id: cobblemon_shop
requires-mods:
- cobblemon
categories:
- id: supplies
name: Supplies
icon: minecraft:chest
subcategories:
- name: Pokeballs
items:
- type: item
id: cobblemon:poke_ball
quantity: 1
price: 10
- name: Starters
items:
- type: pokemon
id: cobblemon:bulbasaur
level: 5
shiny: false
aspect: ""
rarity: uncommon
price: 300
When `catalog-id` and `requires-mods` are present, the filename is only for organization. Legacy files may omit them and fall back to filename-based behavior.
`requires-mods` accepts more than one dependency:
catalog-id: crossover_shop
requires-mods:
- cobblemon
- another_mod
A catalog can contain registered item ids from several namespaces. `catalog-id` is singular because it identifies the catalog itself; it does not restrict the namespaces used by its rewards.
Shop catalog fields
Fields used at the top level of a shop file and inside its categories and subcategories:
- `catalog-id` (recommended): Unique catalog identifier. It prefixes every category id, producing ids such as `cobblemon_shop:supplies`. If omitted, the filename without `.yml` or `.yaml` is used.
- `requires-mods` (recommended): A mod id or list of mod ids required by the complete catalog. The file is skipped if any listed mod is missing. An empty list makes the catalog unconditional. If omitted, legacy behavior treats the filename as a required mod id, except for `cobblemon.yml`.
- `categories` (required): List of category objects contained in the catalog.
- `categories[].id` (required): Category id unique within its `catalog-id`.
- `categories[].name` (optional): Visible category name. Defaults to its `id`.
- `categories[].icon` (required): Registered item id used by the category tab. An invalid icon causes the category to be skipped.
- `categories[].subcategories` (required): List of subcategory objects.
- `subcategories[].name` (required): Visible subcategory name.
- `subcategories[].items` (required): List of item or Pokemon rewards.
Shop reward fields
Fields used by each reward inside a subcategory. Item rewards and Pokemon rewards accept different fields:
- `type` (item, pokemon): Must be `item` or `pokemon`.
- `id` (item, pokemon): Registered namespaced item id or Cobblemon species id. Unknown entries are skipped.
- `price` (item, pokemon): Arcade Coin price from `1` to `999999999999`. Entries above the maximum are logged as errors and skipped.
- `rarity` (item, pokemon): `common`, `uncommon`, `rare`, or `ultra-rare`. Defaults to `common` and controls the purchase notification style.
- `quantity` (item only): Item quantity. Defaults to `1` and is clamped to at least `1`.
- `level` (pokemon only): Pokemon level from `1` to `100`. Defaults to `5`.
- `shiny` (pokemon only): Whether the Pokemon is shiny. Defaults to `false`.
- `aspect` (pokemon only): Cobblemon aspect/form applied through `forcedAspects`. Defaults to no forced aspect.
Reloading configuration
/cobblemonminigames reload reloads gameplay values and shop catalogs. Recipe changes require a complete restart.
Gameplay values, including game `enabled` flags, Pinball times and prices, speed settings, Gacha settings, manual Pokemon and item lists, and shop catalogs, are reloaded by `/cobblemonminigames reload`. Disabled Home games are hidden and their server action packets are ignored. A disabled Gacha machine remains placed but cannot be opened. An active or paused Pinball round keeps its time limit; the next round uses the new one. The recipe settings are read when the server or singleplayer world starts, so recipe enable/disable changes require a complete restart.
Client settings
Client settings live in config/cobblemonminigames/client.yml, generated the first time the game starts. /cobblemonminigames reloadclient re-reads this file without restarting the game.
volume: 1.0
channel: master
| Key |
Allowed values |
Description |
volume |
0.0 to 1.0 |
Volume every sound the mod plays is multiplied by, so the arcade can be turned down without lowering Minecraft's volume. Use 0.0 to mute the mod. |
channel |
master, music, record, block, hostile, neutral, player, ambient, voice, weather |
Which of Minecraft's volume sliders the mod sound effects answer to. Defaults to master. Background music always uses music. |
These are per-player settings and apply on top of Minecraft's own volume sliders. Pointing `channel` at a slider other than `master` gives the mod its own in-game volume control: for example `channel: record` puts the arcade on the Jukebox/Note Blocks slider, which can then be lowered without affecting anything else. Beware that a slider the player has already set to zero silences the mod.
Client keybinds
Client keybinds live in config/cobblemonminigames/keybinds.yml, generated with every action as a list of keys. /cobblemonminigames reloadkeybind reloads them without restarting the game.
An action may keep several keys (a list) or be a single key written inline, e.g. up: KEY_W. For convenience, KEY_W, GLFW_KEY_W, and W all resolve to the same key.
| Key type |
Examples |
Description |
| Printable keys |
KEY_A, KEY_1, KEY_SPACE, KEY_MINUS, KEY_EQUAL |
Normal keyboard keys. |
| Function keys |
KEY_F1 to KEY_F25 |
Function keys. |
| Navigation keys |
KEY_UP, KEY_DOWN, KEY_LEFT, KEY_RIGHT, KEY_HOME, KEY_END |
Movement and navigation keys. |
| Editing keys |
KEY_ENTER, KEY_TAB, KEY_BACKSPACE, KEY_DELETE, KEY_INSERT |
Common menu/editing keys. |
| Keypad keys |
KEY_KP_0 to KEY_KP_9, KEY_KP_ADD, KEY_KP_SUBTRACT |
Numeric keypad keys. |
| Modifier keys |
KEY_LEFT_SHIFT, KEY_RIGHT_CONTROL, KEY_LEFT_ALT |
Modifier keys if a server pack wants them as direct actions. |
Example keybinds.yml
pinball:
start:
- KEY_SPACE
- KEY_ENTER
left_flipper:
- KEY_A
- KEY_Z
right_flipper:
- KEY_D
- KEY_X
quit:
- KEY_ESCAPE
roulette:
confirm:
- KEY_SPACE
- KEY_ENTER
- KEY_A
quit:
- KEY_ESCAPE
up:
- KEY_UP
down:
- KEY_DOWN
left:
- KEY_LEFT
right:
- KEY_RIGHT
bet_up:
- KEY_KP_ADD
- KEY_EQUAL
bet_down:
- KEY_KP_SUBTRACT
- KEY_MINUS
Keybind actions
Every action that can be rebound in keybinds.yml, grouped by game, with its default keys:
**Pinball**
- `pinball.start` (`KEY_SPACE`, `KEY_ENTER`): Pay the entry cost and launch the ball from the start screen. Clicking the playfield does the same.
- `pinball.left_flipper` (`KEY_A`, `KEY_Z`): Left flipper.
- `pinball.right_flipper` (`KEY_D`, `KEY_X`): Right flipper.
- `pinball.quit` (`KEY_ESCAPE`): Close the table. The round is paused and resumes when reopened.
**Roulette**
- `roulette.confirm` (`KEY_SPACE`, `KEY_ENTER`, `KEY_A`): Confirm table, place bet, or continue after a result.
- `roulette.quit` (`KEY_ESCAPE`): Leave the roulette screen. Active rounds are preserved.
- `roulette.up` / `down` / `left` / `right` (`KEY_UP`, `KEY_DOWN`, `KEY_LEFT`, `KEY_RIGHT`): Move roulette selection.
- `roulette.bet_up` (`KEY_KP_ADD`, `KEY_EQUAL`): Move to the next available roulette table wager before entering the table.
- `roulette.bet_down` (`KEY_KP_SUBTRACT`, `KEY_MINUS`): Move to the previous available roulette table wager before entering the table.
**Slot Machine**
- `slotmachine.primary` (`KEY_A`, `KEY_SPACE`, `KEY_ENTER`): Start reels, stop the current reel, or repeat a winning bet.
- `slotmachine.bet` (`KEY_DOWN`): Insert one coin.
- `slotmachine.max_bet` (`KEY_UP`): Insert up to three coins and start when max bet is reached.
- `slotmachine.info` (`KEY_I`): Open or close the slot info screen.
- `slotmachine.quit` (`KEY_ESCAPE`): Leave the slot machine, or close info/Reel Time when that overlay is active.
**Flappy Bird**
- `flappybird.flap` (`KEY_SPACE`, `KEY_A`, `KEY_UP`, `KEY_ENTER`): Start from ready/game-over states, or flap while playing.
- `flappybird.quit` (`KEY_ESCAPE`): Leave the Flappy Bird screen.
**Block Stacker**
- `blockstacker.primary` (`KEY_SPACE`, `KEY_ENTER`, `KEY_A`): Start, drop blocks, or confirm the Keep Going prompt.
- `blockstacker.left` (`KEY_LEFT`): Select Yes at the Keep Going prompt.
- `blockstacker.right` (`KEY_RIGHT`): Select No at the Keep Going prompt.
- `blockstacker.back` (`KEY_B`): Cash out at the Keep Going prompt, or leave from regular states.
- `blockstacker.quit` (`KEY_ESCAPE`): Leave the Block Stacker screen.
**Snake**
- `snake.start` (`KEY_SPACE`, `KEY_ENTER`, `KEY_A`): Start a Snake run from ready/game-over states.
- `snake.quit` (`KEY_ESCAPE`): Leave the Snake screen.
- `snake.up` / `down` / `left` / `right` (`KEY_UP`, `KEY_DOWN`, `KEY_LEFT`, `KEY_RIGHT`): Turn in that direction.
**Derby**
- `derby.confirm` (`KEY_SPACE`, `KEY_ENTER`, `KEY_A`): Pick racer, start race, or continue after a result.
- `derby.back` (`KEY_B`, `KEY_BACKSPACE`): Go back from betting to racer select, or leave from racer select.
- `derby.quit` (`KEY_ESCAPE`): Leave Derby.
- `derby.up` (`KEY_UP`): Increase Derby bet by 10 coins.
- `derby.down` (`KEY_DOWN`): Decrease Derby bet by 10 coins.
- `derby.left` (`KEY_LEFT`): Previous racer.
- `derby.right` (`KEY_RIGHT`): Next racer.
**Voltorb Flip**
- `voltorbflip.confirm` (`KEY_SPACE`, `KEY_ENTER`, `KEY_A`): Start a run, reveal or mark the selected card, or continue after completing a board.
- `voltorbflip.back` (`KEY_B`, `KEY_BACKSPACE`): Toggle note mode while playing, cash out after completing a board, or leave from the ready screen.
- `voltorbflip.quit` (`KEY_ESCAPE`): Leave Voltorb Flip. Active boards are preserved.
- `voltorbflip.up` / `down` / `left` / `right` (`KEY_UP`, `KEY_DOWN`, `KEY_LEFT`, `KEY_RIGHT`): Move the cursor.
- `voltorbflip.note_prev` (`KEY_Q`, `KEY_LEFT_BRACKET`): Select the previous note value.
- `voltorbflip.note_next` (`KEY_E`, `KEY_RIGHT_BRACKET`): Select the next note value.
**Blackjack**
- `blackjack.confirm` (`KEY_A`, `KEY_SPACE`, `KEY_ENTER`): Confirm the selected option.
- `blackjack.quit` (`KEY_B`, `KEY_ESCAPE`): Leave Blackjack. Active bets are preserved.
- `blackjack.up` (`KEY_UP`): Move to the previous option.
- `blackjack.down` (`KEY_DOWN`): Move to the next option.
**Gacha**
- `gacha.confirm` (`KEY_SPACE`, `KEY_ENTER`, `KEY_KP_ENTER`, `KEY_A`): Pull the machine from its ready state. The pull area can also be clicked.
- `gacha.quit` (`KEY_ESCAPE`): Leave the machine. An active reveal is paused and resumes when a Gacha machine is opened again; from the completed result it returns to the main Gacha screen.
- `gacha.up` (`KEY_UP`): Increase the currently selected wager digit.
- `gacha.down` (`KEY_DOWN`): Decrease the currently selected wager digit.
- `gacha.left` (`KEY_LEFT`): Select the wager digit to the left.
- `gacha.right` (`KEY_RIGHT`): Select the wager digit to the right.
Commands and server notes
| Command |
Description |
/cobblemonminigames reload |
Reloads gameplay and shop server configs. |
/cobblemonminigames givecoins <quantity> <user> |
Gives Arcade Coins to an online player. |
/cobblemonminigames <screen> [targets] |
Opens a game screen for the given players, or for yourself. |
All three require permission level 2.
More details about the commands and how the server handles coins, the shop and Gacha pools:
- `/cobblemonminigames reload`: Recipe crafting toggles under `recipes` require restarting the server or singleplayer world.
- `/cobblemonminigames givecoins`: Coin Cases are filled first, followed by inventory stacks. If the full amount does not fit, the operation is cancelled without delivering any coins and both the player and server log are notified.
- `/cobblemonminigames <screen> [targets]`: Screens are `home`, `shop`, `roulette`, `slotmachine`, `blockstacker`, `snake`, `flappybird`, `derby`, `voltorbflip`, `blackjack`, `gacha <basic|great|ultra|master>`, and the Pinball tables `pinballmeowth`, `pinballdiglett`, `pinballseel`, `pinballgengar` (also available as `pinball <meowth|diglett|seel|gengar>`). This lets server owners wire games to custom blocks, NPCs, or command blocks (for example `/cobblemonminigames snake @p` or `/cobblemonminigames pinballgengar @p`). Disabled games and unavailable Gacha machines are not opened.
- Game payouts are Arcade Coins. Shop contents and prices are controlled through the shop YAML files.
- Each Coin Case stores up to `999999999` Arcade Coins. If a player has several, payouts fill them in inventory order before using physical inventory stacks.
- Shop prices, the Coin Case total, and game balance panels use compact notation.
- By default, Gacha pools are rebuilt exclusively from Cobblemon's loaded world spawn pool. Manual Pokemon lists replace this behavior for machines with `usePokemonList: true`, and manual item lists for machines with `useItemList: true`.
- A paused Pinball round is lost if the player disconnects.
Credits