
PokePinks - Cobblemon
A mod for Cobblemon that takes winner takes all to the next level.
⬇ Download on Modrinth🩷 PokePinks — Race for Pinks
Winner-takes-all Pokemon battles for Cobblemon. Two trainers. One Pokemon each. One battle. The winner walks away with both Pokemon. The loser walks away with a story.
Back in the day, street racers bet their pink slips — win the race, take the car. PokePinks is that, except the car is a Garchomp, and yes, it's holding a Choice Scarf, and yes, the scarf comes with it.
100% server-side. Vanilla clients, modded clients, doesn't matter — nobody installs anything. Drop it on the server and your players are betting their best friends by dinner.
✨ Feature set
- Winner-takes-all 1v1 stake battles — each trainer wagers one Pokemon; the winner keeps both, held items included
- Level-matched stakes (exact match by default, tolerance configurable) so nobody bullies a rookie
- Double-reveal confirmation — both stakes shown in full to both players before anything locks; scams are structurally impossible
- No switching, no items — enforced by design, not by rules: your battle party contains exactly one Pokemon
- Crash-proof escrow — atomic settlement with an idempotent delivery queue; no dupes, no vanishing mons, ever
- Disconnect strike system — refund both, record the strike, notify player + staff; owners decide punishments, never the mod
- Permanent audit log — every battle recorded with full Pokemon data; browsable staff GUI or console text
- Rank-based cooldowns via permission nodes (LuckPerms-friendly)
- JSON or MariaDB storage — zero-setup single server, or shared strikes/bans/logs across a whole network
- One-toggle category blocks for legendaries, mythicals, and ultra beasts, plus a manual species blacklist
- GUI-optional — full chest-GUI flow, or pure chat/command mode for setups that need it
- 100% server-side — vanilla clients work; nothing to install for players
⚔️ How it goes down
- The callout.
/pokepinks challenge <player>— they get a clickable [ACCEPT] [DENY] right in chat. Public enough that backing out is its own kind of loss. - Pick your stake. A clean menu of your party. Click the one you're willing to lose. Levels must match your opponent's pick — no level 100 bullying a level 30.
- The double-reveal. Before anything is locked, both players see BOTH Pokemon in full: species, level, shiny status, held item. You know exactly what you're risking and exactly what you're winning. Nothing starts until both trainers hit confirm. No bait-and-switch. Ever.
- The battle. A pure 1v1. No switching — your battle party literally contains one Pokemon, so there's nothing to switch to. No bag, no second chances. Just you, your mon, and your choices.
- Winner takes all. The prize goes straight to the winner's party (or PC if it's full), held item included. The loser gets a broadcast announcing their defeat to the whole server. That's pinks, baby.
Draws? Both Pokemon go home. Explosion mirror matches are a spectacle, not a robbery.
🔒 Your Pokemon can't be lost to a bug — only to a better trainer
This is the part server owners actually care about. The moment both players confirm, both Pokemon enter escrow — pulled from the parties and written to storage before the first move is made. From there:
- Server crashes mid-battle? Both Pokemon come home automatically on restart.
- Database hiccups at the worst possible millisecond? Settlement is one atomic transaction with an idempotent delivery queue — duplication and loss are structurally impossible, not just unlikely. Every hand-off is verified against what's actually on disk before it's considered done.
- Offline when you're owed a mon? It's delivered next login, with a note explaining why.
- Battle can't start? Escrow unwinds instantly. Nobody loses anything to a technicality.
By default the prize arrives at full pre-battle health. Flip one config toggle (battleOnClones: false) and it arrives exactly how the fight left it — fainted, scratched, humbled. Your server, your rules.
🔌 Rage-quitters get a file, not a free pass
Pulling the plug doesn't save your Pokemon — but one dropped connection doesn't cost you one, either.
- Any mid-battle disconnect = both stakes refunded. Real internet problems happen.
- Every disconnect also records a strike: the disconnector is told, the opponent is told, and online staff get pinged.
- No auto-bans. Strikes are receipts, not sentences. Staff see the pattern and decide —
/pokepinks banfor the serial cord-puller,/pokepinks pardonfor the trainer whose ISP actually is that bad.
🧾 Staff see everything
Every resolved battle is permanently logged: both players, both Pokemon (summary AND full serialized data), outcome, winner, timestamp, server. Someone cries "scam"? /pokepinks log <player>, click the entry, case closed in thirty seconds. Browsable in a paginated GUI with actual Pokemon icons, or plain text from console.
⚙️ Built for anything from an SMP to a network
- Zero-setup JSON storage for single servers — atomic writes, crash-safe out of the box.
- MariaDB mode for networks — bans, strikes, cooldowns, and one unified audit log shared across every backend. Rage-quit on one server, your record follows you to the next.
- Rank-based cooldowns via permission nodes (LuckPerms-friendly) — let your champions run it back every 5 minutes while everyone else cools off for an hour.
- Configurable everything: level-match tolerance, species blacklist, one-toggle blocks for legendaries/mythicals/ultra beasts, join-delivery delay for party-sync setups, GUI or pure-chat mode, broadcast toggles, permission namespace.
- Degrades gracefully: if the database is down at boot, PokePinks disables itself and says so — your server keeps running.
⌨️ Commands
For trainers
| Command | What it does |
|---|---|
/pokepinks challenge <player> |
Call someone out — race for pinks |
/pokepinks accept / deny |
Answer a challenge |
/pokepinks stake <1-6> |
Pick your stake by party slot (GUI-less mode) |
/pokepinks confirm |
Lock in your stake (GUI-less mode) |
/pokepinks cancel |
Back out any time before the battle starts |
For staff (pokepinks.staff)
| Command | What it does |
|---|---|
/pokepinks log [player] [page] |
Browse the audit log — icon GUI in-game, text from console |
/pokepinks strikes <player> |
Check a player's disconnect strikes |
/pokepinks pardon <player> |
Wipe someone's strikes (appeals happen) |
/pokepinks ban <player> / unban <player> |
Bar a player from PokePinks (the mod's ban, not a server ban) |
/pokepinks reload |
Reload the config — also retries a downed database connection |
📦 Installation
Download the jar, drop it in your server's mods/ folder, restart. That's it — the config generates itself on first run at config/pokepinks.json, and JSON storage works out of the box with zero setup. Clients need nothing installed.
Requires: Fabric 1.21.1 · Cobblemon 1.7+ · Fabric API · Fabric Language Kotlin. Server-side only.
Run what you brung, and hope it's enough. 🏁
- Ships as pokepinks-1.0.1.jar — drop this file into the mods folder
- Download size: 749 KB
- Download link checked 9 Aug 2026 — working
These come from our own check of the pack file, not from the source page.