
I made a block-puzzle game that runs inside a Minecraft map item. Hold the map to play.
I built a competitive block-puzzle game that runs entirely inside a Minecraft map item. After about 2 years of development, I'm finally releasing it publicly.
What is it?
Chanyoris is a plugin that renders a full competitive block-puzzle game onto a 128×128 map item. Hold the map to play. No client mods required on the server side.
It's not a simplified version. The full competitive ruleset is implemented — SRS wall kicks (JLSTZ, I, 180°), T-Twist with mini detection, Back-to-Back, combo garbage table, Perfect Clear (+10 lines), IRS/IHS, lock delay, staged garbage queue with cancellation, badge/KO system, 4 targeting strategies, and counter bonus.
15 game modes
Solo, CPU (beam-search AI, 8 tiers), Story (5 chapters), CHANITAS (20G gravity), Basement (depth survival), Ender Dragon (boss fight), Creeper (exploding creepers), TNT Battle (garbage ×2+1), Revolution (limit-thinking AI), Saga (hardest AI), VS (1v1), Battle Royale (with full badge/KO system), Dimension Battle, Live Watch, Replay with ghost runner.
Two world-first mechanics
OFFHAND view — Your right hand shows your board. Your left hand shows your opponent's board live on a separate map. I've never seen this done in any Minecraft plugin.
Dimension Battle reverse mechanic — One player is the Puzzle Boss. Everyone else is a Minecraft survivor. Survivors can kill mobs to send garbage to the Boss, or build a complete row of 10 blocks in the world to rescue the Boss instead. "Attackers vs Builders" in one game mode.
Fabric client mod (optional)
A companion mod upgrades the display from ~10fps map rendering to native 60fps+ HUD. It also spawns real client-side Minecraft entities during gameplay:
- Ender Dragon appears in front of you during boss fights, flashes red when hit, plays the full death animation on defeat
- Creeper walks toward you from 24 blocks away during Creeper mode, hisses when close, explodes when the cell is cleared
- 36 TNTs surround you during TNT Battle and explode on every piece placement, line clear, and garbage impact
- Lightning strikes on every Battle Royale KO
- Fireworks burst on Perfect Clears
All client-side. No world damage. No server load.
The mod also handles DAS/ARR client-side (130ms/28ms, nanosecond precision), full controller support via direct GLFW gamepad reading, and sends inputs directly to the server via plugin messaging channel — so WASD is freed up and you can walk around while playing.
Technical highlights
- Async beam-search AI (separate thread, no server lag even with multiple simultaneous CPU matches)
- Custom binary protocol v5 over plugin messaging channels (5 channels, 26 fields per state packet)
- Anti-cheat bridge — reflection-based auto-detection and integration with 19 major anti-cheat plugins
- Server settings sync to mod every tick (target line, ghost, view mode, accent color, etc.)
- Build version identification (1 bit) — mod auto-follows server's display naming without code changes
- Public API: ChanyorisGameEndEvent for connecting other plugins
- mcMMO companion plugin included
Stats
- ~11,500 lines of Java across 3 projects (plugin, client mod, MMO addon)
- 218KB jar size
- Paper 1.21.1+ / Java 25+ required
Bedrock crossplay via Geyser