ChatGames: Reborn Turn your chat into a competitive arena - fast rounds, real rewards, persistent progression, and nonstop engagement.
ChatGames: Reborn is a premium-grade Chat Games engine for Minecraft servers that want one outcome:
more activity.
It launches short, addictive challenges where players race to answer, climb leaderboards, and earn rewards - without interrupting SMP/hub gameplay.
If your server feels “quiet”, ChatGames is the fastest, safest way to make it feel alive. Built like a real system: structured configs, async storage, extensible architecture, and buyer-oriented polish.
Server software: Spigot / Paper / Folia (scheduler-aware)
Developer-ready - API + events for custom games and integrations.
AI-ready - generate AI games/challenges or load scripts from files.
Fully configurability per game/challenge - insanely configurable system per game/challenge.
What is actually inside the package
One main engagement engine that handles rotation, winner detection, timeouts, rewards, logging, and UI.
22 registered built-in chat games available immediately after install.
20 registered built-in challenge types for real in-world objectives, plus AI-driven and sequence-driven flows.
Deep config structure with global settings, per-game/per-challenge sections, difficulty overlays, hint config, warmups, progress messages, and reward tables.
Persistent stats pipeline with JSON, MySQL/MariaDB, and MongoDB backends.
Player-facing commands for stats, leaderboards, toggles, active round info, and Guess The Song controls.
Admin command tree for forcing rounds, reloading, removing stats, mutating stats, viewing logs, and AI generation.
PlaceholderAPI expansion with active-round placeholders, leaderboard placeholders, per-game wins/fastest stats, stage/progress placeholders, and hint placeholders.
Developer API + Bukkit events for custom plugins, scoreboards, Discord bridges, reward hooks, and addons.
Runtime dependency bootstrap through Libby plus optional jar auto-download for missing helpers when enabled.
Bundled data/docs including aigames.json, aichallenges.json, AI_GAME_SCHEMA.json, and additional internal docs for maintainers.
How the configuration is structured This matters because ChatGames is not a “random one-file chatgame plugin”. It is structured like a system. Once buyers understand the layout, setup becomes much easier and future edits become faster and safer.
config.yml - engine behavior, scheduler, UI, storage, every built-in game/challenge, rewards, hints, warmups, and difficulty variants.
messages.yml - command text, prefixes, help pages, status lines, stat labels, log formatting, and general plugin messaging.
aigames.json - file-backed AI multi-stage game scripts.
aichallenges.json - file-backed AI challenge scripts/objectives.
songs/ - .nbs song files for Guess The Song.
storage/ - JSON backend data folder when JSON is selected.
weight - how often the base variant is selected relative to others.
announce-delay - pre-start delay in ticks before the round actually begins.
timeout-ticks - total time window before timeout.
max-winners - how many players can win that round.
goal-type - time, winners, or both.
case-sensitive - whether answers must match exact casing.
pool - reusable word/question/item pool used by relevant games.
messages.start / messages.success - extra per-entry message lines beyond the global system formatting.
rewards - full reward table with money/commands/chance/splitting/placement/global execution.
options - game-specific or challenge-specific behavior.
difficulties - weighted variant overlays such as easy/hard/insane with their own option overrides.
Difficulty system (important and often overlooked)
Most built-in entries ship with easy / hard / insane style variants or equivalent weighted profiles.
Each difficulty variant has its own weight and its own option overrides.
This means difficulty is not just cosmetic text - it can change timers, prompt styles, answer rules, target counts, sequence preset selection, hint strictness, song rules, and more.
Buyers can keep one game enabled while still getting multiple experiences from that same game id.
Core Features (what you actually get)
1) Smart Game Rotation (no repetition fatigue)
Weighted selection per game (control frequency precisely)
Anti-repeat logic (avoid same game back-to-back)
Per-game enable/disable without code edits
Advanced scheduling (optional): time windows, intervals, “peak hours” boosts
Minimum-online rules + per-world filters to prevent off-hours spam
2) Reward Engine (built for retention & monetization)
Included Game Library (Built-In) All games are short, addictive, and configurable. Each game supports per-game timers, winners, difficulty, pools, messages, hints, and reward profiles.
Fast arithmetic with configurable min/max values and operation pool.
Default operations support +, -, and *.
Ideal as a lightweight, universally understandable round type.
Advanced Math (advanced_math)
Much deeper than normal math: linear, distributive, fraction, mixed, quadratic, absolute value, system, modular, exponent, and rational linear style prompts.
Dedicated prompt formats exist for “solve for x”, qualified quadratic roots, sum-of-solutions, system solving, and range-restricted solving.
Extremely strong pick for competitive servers that want harder intellectual rounds instead of only word games.
Unscramble / Anagram / Reverse / Unreverse
Unscramble uses word pools with min/max length filtering.
Anagram is much more advanced than a normal scramble: it supports themed entries, prompt styles, rules, shard/rune formatting, sigils, strict mode, punctuation/space rules, and custom entry maps.
Reverse and Unreverse support both full-string reversal and block-reversal modes with configurable block sizes.
Variable / Solve for X (variable)
Algebra-focused game with configurable equation families.
Supports different equation-type pools and fully custom prompt/hint line formatting.
Great middle-ground between simple math and Advanced Math.
Fill Out (fillout)
Players reconstruct masked words instead of merely typing shown text.
One of the strongest “easy to understand, hard to perfect” formats in the plugin.
Clickable / Hoverable
Interactive chat rounds using clickable or hover-reveal components rather than plain static text.
Both games support custom button text, hover text, placeholders, announce text, and whether the hidden token/placeholder is shown in the initial line.
Excellent for modern servers that want more visual polish and more varied interaction patterns.
Guess The Number (guess_number)
Simple range-based guessing game with configurable min/max bounds.
Works well as a low-friction filler round between harder content types.
Shopping List (shoppinglist)
Memory round where players must remember and type item lists.
Configurable item count and hint line formatting.
Very effective for SMP/hub retention because it feels different from standard typing games.
Stat Guesser (statguesser)
Uses real Minecraft statistics as the question source.
Supports multiple-choice mode, tolerance percentage, short number formatting, offline-player inclusion, offline cache tuning, and world-scoped stat reading.
Default statistic pool includes things like jumps, distance walked, mob kills, time played, damage dealt/taken, deaths, drops, breeding, fishing, and more.
Cipher (cipher)
One of the most feature-rich games in the package.
Ships with Caesar, Atbash, Vigenère, and Rail Fence modes, each with their own weight/difficulty data.
Supports optional decoys, configurable hints, reveal/not-reveal cipher name behavior, and space handling rules.
Christmas (christmas)
Not just a single holiday prompt - it is a multi-mode seasonal event package.
Default modes include clue rounds, naughty-or-nice, present-pick GUI rounds, action prompts, shopping lists, carol-gap fill-ins, emoji guess, and odd-one-out.
This lets buyers turn one seasonal game id into a full festive event system.
Guess The Song (guess_the_song)
Loads .nbs songs from the plugin songs folder and lets players preview/guess them in chat.
Supports answer-by-title, answer-by-author, title-or-author, or title-and-author rules depending on config.
Supports exact/token-based matching, preview length, replay limits, play limits, playback volume multiplier, random start positions, duration filtering, author filtering, and metadata visibility.
Interactive control flow is built in through /chatgames guessthesong play, stop, and replay.
If auto-download is enabled, the plugin can bootstrap a starter .nbs library automatically.
Sequence Typing (sequence_typing)
Multi-stage game where players must repeat increasingly long sequences.
Configurable total stages, separator, unique-word enforcement, custom pool, and stage-aware message formats.
Great for progressively harder rounds without needing a separate game id for every variation.
AI Game (aigame)
Loads scripted AI-generated or manually-authored multi-stage rounds from aigames.json.
Supports history-size control, stage-based prompting, variables, and external generation through admin commands when AI generation is enabled.
This is the “infinite content” layer for owners who want to keep adding new rounds without expanding Java code.
Action Challenges (the “server explodes” feature) Not just chat answers - players compete by doing real tasks in the world. This drives movement, activity, and organic gameplay.
Built-in standalone challenge types: Hunt, Mine, Place, Fish, Eat, Craft, Furnace, Biome Rush, Tame, Pickup, Damage Deal, Damage Take, Teleport, Level Gain, Command Sprint, Drop, Entity Interact, Risky Death, XP Gain, Sequence, and AI Challenge
Advanced event hooks already supported by the engine: chat, commands, deaths, damage dealt/taken, bucket fill/empty, shearing, breeding, XP/level gains, teleports, block/entity interaction, pickup/drop tracking, and more for multi-step flows
Sequence challenge: chain multiple steps into a single checklist-style challenge with preset selection by difficulty / rotation / random
AI Challenge (aichallenge): procedural objectives generated or loaded from scripts
Smart tracking: event-driven progress, time window, multi-winner support
chatgames.admin.bypass - reserved bypass permission path configured in chatgames.admin.bypass-permission
chatgames.play - required only if chatgames.require-permission is enabled
Command behavior notes, limitations & edge cases
Console + stats: console must provide a player name for /cg stats <player>; only players may omit the target.
Toggle semantics:/cg toggle edits the stored participation flag for that player. Toggled players are excluded from eligibility checks until toggled back on.
Global toggle semantics:/cga toggleall off is a storage-wide state change, not a temporary chat mute. Treat it as an administrative participation kill-switch.
Remove semantics:/cga remove <player> resets the stored ChatGames profile for that target rather than merely removing them from the current round.
Reload semantics:/cga reload is not cosmetic. It tears down active runtime state and rebuilds settings/UI from disk.
Logs pagination: negative or invalid page values are sanitized to safe positive defaults.
Stats mutation:fastest values are millisecond-based; per-game fields like winsgame and fastestgame require the trailing gameId.
Guess The Song controls:/cg guessthesong ... only matters while a guess_the_song round is active and the game is actually registered/enabled.
Admin info reload path:/cgr reload exists, but for actual operational changes you should still document /cga reload as the standard workflow.
Developer API Documentation Hook your own plugins into ChatGames rounds, stats, leaderboards, UI, and rewards.
Getting Started
API entry:dev.bytecore.chatgames.api.ChatGamesAPI
Common use cases: custom GUIs, scoreboard hooks, Discord bots, rank perks, custom games, moderation tools
What the public API currently exposes cleanly
ChatGamesAPI.manager() - direct access to the GameManager for low-level integrations.
ChatGamesAPI.getStats(UUID) - stat snapshot for a player.
ChatGamesAPI.registerGame(ChatGame) - register additional custom game implementations.
ChatGamesAPI.leaderboard(gameId, limit) - top wins by game id.
ChatGamesAPI.activePrompt() - quick access to the current active prompt.
For advanced integrations you can also use the manager directly to inspect active rounds, registered ids, stage/progress state, and other runtime data.
@EventHandler
publicvoid onStart
(ChatGameStartEvent e
){ getLogger
().
info("ChatGames started: "+ e.
getId()+" in world "+ e.
getWorldName()); }
@EventHandler
(ignoreCancelled
=true) publicvoid onWin
(ChatGameWinEvent e
){ getLogger
().
info("Winner: "+ e.
getPlayer().
getName()+" in "+ e.
getDurationMs()+"ms for "+ e.
getId()); } }
Placeholders Use placeholders in chat formats, scoreboards, holograms, GUIs, titles, actionbars, bossbars, and messages.
PAPI Placeholders (PlaceholderAPI)
Player stat placeholders
%chatgames_wins% - total wins
%chatgames_fastest% - overall fastest time in milliseconds
%chatgames_fastest_ms% - overall fastest time in milliseconds
%chatgames_fastest_seconds% - overall fastest time in seconds
%chatgames_rounds% - rounds played
%chatgames_streak% - current win streak
%chatgames_best_streak% - best win streak
%chatgames_toggled% - participation state
%chatgames_wins_<gameId>% - wins for a specific game id
%chatgames_fastest_<gameId>% - fastest time in ms for a specific game id
%chatgames_fastest_seconds_<gameId>% - fastest time in seconds for a specific game id
keep one known-good backup before large reward or scheduler edits
run /cga reload only after syntax/indentation review
test at least one normal game, one challenge, one leaderboard command, and one reward path
if using Guess The Song, test /cg guessthesong play during a live song round specifically
prefer MySQL/MariaDB or MongoDB over JSON
keep leaderboard cache modest but non-zero to reduce repeated heavy reads
keep max-concurrent conservative unless you are deliberately designing around multi-session behavior
treat JSON as bootstrap/testing storage, not long-term network infrastructure
document to staff that /cga reload cancels live rounds so they do not surprise players mid-event
sell the registered game/challenge library, not every dormant class/config stub in source
present Vault/PAPI/LuckPerms/ProtocolLib as optional ecosystem integrations, not hard requirements
present /cga reload as the real operational reload path
present AI generation as opt-in and owner-controlled, not always-on magic
present Guess The Song as requiring .nbs song data and proper song-file setup
the feature expects valid .nbs files inside the plugin songs folder
if the folder is empty, the plugin warns and can optionally auto-download a starter archive when auto-download is enabled
answer handling is configurable by title / author / title-or-author / title-and-author
match handling in this build is effectively EXACT or TOKENS
player controls such as play / stop / replay are per-player interaction helpers, but they still obey per-round play/replay limits
metadata visibility, duration filters, author hints, replay allowance, and random-start behavior are all configurable per difficulty overlay
the plugin supports JSON, MySQL/MariaDB, and MongoDB backends
changing the configured backend changes where future reads/writes go
owners should not assume a magic one-click stat migration between backends is part of normal runtime administration in this build
for production moves, treat backend changes as a migration project: back up old data first, then test leaderboards/stats on staging before going live
FAQ (what buyers ask)
Yes. It is designed specifically to run alongside your gameplay without taking over the server.
No. Storage is async, round logic is lightweight, and Bukkit calls are executed safely.
Yes. Every game can be enabled/disabled and weighted independently.
Yes. Tune rewards, reduce winners, increase difficulty, add action challenges, and expose leaderboards in your UI.
Yes. Use command rewards and/or hook via API events to execute your own reward logic.
Yes. AI generation is disabled by default and requires an API key + per-run limits. You stay in full control.
Extra FAQ / Troubleshooting
Check these first:
chatgames.scheduler.enabled
chatgames.autostart.enabled
enough eligible players online (not toggled, not blocked by world, not blocked by permission mode, not vanished if vanish-ignore is enabled)
the selected games/challenges are actually enabled
simple/advanced scheduler minimum-online rules
Usually because PlaceholderAPI is not installed/loaded, or there is no active round for active placeholders, or the queried player has no stored stats yet.
Yes. The plugin still works perfectly without Vault. You only lose direct economy payout support. Command rewards still work.
Yes. PlaceholderAPI is optional. The plugin itself still runs; you simply will not have the PAPI expansion available for scoreboards/holograms/etc.
Yes. JSON is the easiest way to start. For larger servers, move to MySQL/MariaDB or MongoDB once you want stronger persistence and external reporting.
Set that specific entry's
enabled to false in
core.games.<id> or
core.challenges.<id>, then reload.
Lower
max-winners, use
goal-type: winners, make hints stricter/slower, raise difficulty weights toward hard/insane profiles, and tighten reward tables around top placements only.
Use longer scheduler intervals, disable some UI elements, reduce warmup messages, reduce extra message lines, and prefer bossbar/actionbar over big chat spam.
Populate the
songs folder with valid
.nbs files or keep
auto-download enabled so the plugin can fetch a starter pack. Then restart or reload and force-start
guess_the_song to test it.
Yes. Use PlaceholderAPI placeholders, the public API, and Bukkit events such as
ChatGameStartEvent,
ChatGameWinEvent, and
ChatGameEndEvent.
Configuration Files Replace these with your published examples once you post them.
Java requirement: Java 17 or newer. The plugin hard-fails on older Java versions and disables itself rather than running in a broken state.
Plugin descriptor:api-version: 1.13 with modern Paper/Spigot compatibility and Folia-aware scheduling internals.
Soft dependencies: ProtocolLib, Vault, PlaceholderAPI, and LuckPerms are all optional companions. The plugin still starts without them, but feature depth changes.
Vault missing: money rewards are skipped; command rewards still work.
PlaceholderAPI missing: the plugin still runs normally, but the chatgames expansion is not registered.
ProtocolLib missing: plugin core still starts; protocol-level extras are simply unavailable.
LuckPerms missing: no problem for normal runtime; it only matters if your own reward/admin setup expects LP-backed permission workflows.
Automatic companion download: when core.download-dependencies is enabled, the plugin may attempt to fetch missing helper plugins such as ProtocolLib / PlaceholderAPI automatically. If your host blocks outbound downloads, disable this and install dependencies manually.
Exact storage contents depend on backend choice. JSON uses the folder layout above; SQL/Mongo move player/log persistence into the selected database backend while still keeping the normal plugin data folder for config/message/script assets.
Production deployment sequence (recommended if you want zero surprises)
Step 1: install the jar and boot once on a test copy of your server.
Step 2: confirm Java 17+, confirm the plugin enables cleanly, and confirm the songs folder + script files exist.
Step 3: decide your backend early: JSON only for local testing/small servers, MySQL/MariaDB or MongoDB for serious production.
Step 4: install Vault if you want money rewards; install PlaceholderAPI if you want scoreboards / holograms / tab / GUI integration.
Step 5: prune the game pool before launch. Disable any rounds that do not fit your gamemode, economy, or chat culture.
Step 6: configure scheduler rules, minimum-online values, allowed-world filters, and reward tables before exposing the system to players.
Step 7: test with /cga start game <id> and /cga start challenge <id> before trusting automation.
Step 8: once messages/rewards/weights look correct, use /cga reload for runtime-safe refreshes after edits.
Lifecycle notes: startup, reload, and shutdown
Startup: the plugin boots config, checks backend validity, registers listeners/commands/placeholders, builds the registry, and starts rotation/autostart tasks.
Startup edge case: Guess The Song always bootstraps the songs folder during enable. If it is empty, the plugin warns loudly and can optionally auto-download a starter pack.
Full admin reload:/cga reload reloads config/messages and then rebuilds ChatGames runtime settings. Active rounds are cancelled as part of this flow so you do not keep stale timers/UI/settings alive.
Info-command reload:/cgr reload is much lighter and should not be treated as the main runtime management command. For real production reconfiguration, prefer /cga reload.
Shutdown: active rounds are stopped, scheduler tasks are cancelled, bossbar/UI tasks are shut down, and storage is flushed before backend shutdown.
Stats, Leaderboards & Storage
Tracked by default: wins, rounds, fastest, toggled status, per-game bests
Leaderboards: overall or per-game top wins / fastest solves
Database support:
MongoDB - recommended for networks
MariaDB/MySQL - standard SQL
JSON - fallback/testing (don’t use in production)
Designed for scale: async persistence + low overhead
Exactly what is tracked
Overall stats: wins, fastest time, rounds played, current streak, best streak, toggle state.
Per-game stats: wins-by-game and fastest-by-game maps.
A player must pass
all of the following checks to count toward minimum-online and to be able to win:
not manually toggled out of ChatGames
not standing in a blocked/disabled world
has the configured play permission if chatgames.require-permission is enabled
not vanished when chatgames.ignore-vanish is enabled
This matters because owners often look only at online player count. ChatGames uses
eligible player count, not raw online count.
Autostart: repeatedly checks every ~10 seconds until the first successful automatic start after boot.
Simple scheduler: runs on a fixed interval and checks its own minimum-online + allowed-world rules.
Advanced scheduler: uses timezone-aware clock entries, optional day filters, optional per-entry minimum-online, and optional allowed-world restrictions.
Timezone fallback: if the configured advanced-scheduler timezone is invalid, the system falls back to UTC.
Important runtime nuance: the manager's generic random-start path can pull from the enabled runtime registry, which means scheduled/random automation is not just a “typing/trivia only” system. If you want exact control, use advanced schedule entries or explicit admin start commands.
Goal types: each entry can finish by time, by reaching max winners, or by both depending on goal-type.
Timeout behavior: if the configured goal logic says the round is already successful on timeout, the round is completed rather than treated as a failure.
Max winners: multiple winners are fully supported; placement-sensitive rewards can target only 1st / 2nd / 3rd / etc.
Warmup delay: warmup messages/UI are part of the session lifecycle; expiration is scheduled with warmup delay included.
Multi-stage games: stage-aware placeholders and progress output are available, but the public “active round” view still presents one active entry at a time.
Max concurrent: the engine has a chatgames.max-concurrent setting, but most user-facing commands/placeholders expose the first active entry. For most production deployments, keeping this at 1 remains the safest configuration.
Money rewards: only execute when money rewards are globally allowed and Vault economy is present.
Chance layers: reward chance can be controlled at both the game/challenge level and individual reward-entry level.
Scaling: money can be scaled globally and per-entry.
Splitting: rewards can be split across winners globally or per-entry.
Placement filters:placement lets you target only specific ranks.
Executors: reward commands can run as CONSOLE, PLAYER, or OPERATOR.
Offline handling: PLAYER/OPERATOR command execution falls back to console when the winner is offline and require-online is false.
Global rewards: entries flagged global: true run once for the round rather than once per winner.
Registered challenge list matters more than raw config stubs. This build includes config defaults for structure_rush, enchant, and brew, but they are not registered in the runtime default registry shown by /cg games. Owners should document/support only the registered challenge ids unless those are explicitly wired in a later build.
Guess The Song match modes: the config comments mention FUZZY, but the current parser accepts/uses EXACT and TOKENS. Documenting FUZZY as supported in this build would be misleading.
Bypass permission path:chatgames.admin.bypass-permission exists as a configurable path, but it is effectively a reserved hook in this build rather than a major standalone behavior owners should sell as core functionality.
Legacy path migration: the config manager actively migrates older/legacy section layouts into the current core.games / core.challenges structure where possible.
Servers using ChatGames: Reborn You can request your server to be added here!
kyodo.network | Kyodo Network
seiky.net | Seiky Network
Redistribution of this plugin to other individuals, networks, or websites is strictly prohibited.
This plugin is licensed for use exclusively on your server or network.
Refunds are not available.
If you need help, open a discussion or use support - issues are handled quickly.