A Minecraft plugin that adds interactive chat-based minigames to engage your server's players with trivia, math challenges, word scrambles, and reaction games.
Why use ChatGames?
Instant, lightweight chat minigames that keep your chat active.
Multi-platform: same core works across Spigot, Paper, Folia, and Sponge via a platform abstraction layer.
Fully configurable games, schedules, messages and reward commands.
Small, well-documented, and easy to extend.
Features
Multiple Game Types:
Trivia - Answer trivia questions correctly
Math - Solve math problems
Unscramble - Unscramble words
Multiple Choice - Pick the correct answer from several options
Reaction - Respond quickly
Automatic Game Scheduling - Games start automatically at configurable intervals
Customizable Rewards - Configure commands to run when players win (economy rewards, items, etc.)
Quick Install
Drop the plugin .jar into your server's plugins/ folder.
Start the server once to generate default configurations.
Edit config.yml, en-us.yml, and the individual game files.
Configuration
Main Configuration
config.yml
# ChatGames Configuration# https://github.com/RareHyperIon/ChatGames# Available: en-uslanguage:en-us# Interval between automatic games (in seconds)game-interval:300# Minimum players online to start automatic gamesminimum-players:1# Whether to automatically start games at intervalsautomatic-games:true# Cooldown after wrong answer in multiple choice (in ticks, 20 ticks = 1 second)answer-cooldown-ticks:60# Enable debug loggingdebug:false
language/en-us.yml
# ChatGames Language File - English (US)# Message shown when a player tries to use a command they don't have access topermission:"<red>You don't have permission to use this command.</red>"# Message shown when ChatGames has been successfully reloadedreload:"<green>Successfully reloaded ChatGames!</green>"# Cooldown message when player tries to answer too quickly after wrong answercooldown:"<red>You cannot answer this question as you've already tried recently.</red>"
name:multiplechoicedisplay-name:"<green>Multiple Choice</green>"timeout:45# The time players have to win the game. (in seconds)cooldown:60# Ticks to wait after wrong answer (60 ticks = 3 seconds)reward-commands:-"give {player} emerald {rand:1-3}"messages:start:|<green><bold>MULTIPLECHOICE</bold></green><gray>Typethecorrectletter!</gray>win:|<green><bold>✓</bold><yellow>{player}</yellow>chosecorrectly!</green><gray>Answer:<white>{answer}</white></gray>timeout:|<red><bold>✗</bold>Nobodyanswered!</red><gray>Correct:<white>{answer}</white></gray>questions:q1:question:"<yellow>What is the largest planet in our solar system?</yellow>"answers:-"A. Earth"-"B. Jupiter"-"C. Saturn"-"D. Mars"correct-answer:"B"q2:question:"<yellow>Which programming language is Minecraft written in?</yellow>"answers:-"A. Python"-"B. C++"-"C. Java"-"D. JavaScript"correct-answer:"C"q3:question:"<yellow>What is 2 + 2 × 2?</yellow>"answers:-"A. 6"-"B. 8"-"C. 4"-"D. 10"correct-answer:"A"q4:question:"<yellow>Which mob drops blaze rods?</yellow>"answers:-"A. Ghast"-"B. Blaze"-"C. Wither Skeleton"-"D. Magma Cube"correct-answer:"B"
games/reaction.yml
name:reactiondisplay-name:"<red>Reaction Test</red>"timeout:30# The time players have to win the game. (in seconds)reward-commands:-"give {player} diamond {rand:1-3}"messages:start:|<red><bold>REACTIONTEST</bold></red><gray>Bethefirsttorespond!</gray>win:|<green><bold>✓</bold><yellow>{player}</yellow>wasfastest!</green>timeout:|<red><bold>✗</bold>Nobodyreactedintime!</red># Variants allow different reaction challenges# If answer is empty string "", any message wins (fastest typer)# If answer is specified, must type that exact word# If answer is "CLICK", then it will be clickable.# - Optional: Add hover="Your text" for custom hover message# - Example: <button hover='Click me!'>Press here</button># - Without hover attribute, no hover text will be shown# - You can include colors in the hover attribute.variants:-name:"Type Fast"challenge:"<gold><bold>Type: <yellow>MINECRAFT</yellow></bold></gold>"answer:"MINECRAFT"-name:"First Word"challenge:"<gold><bold>Type any word now!</bold></gold>"answer:""-name:"Click Fast"challenge:"<button hover='Click to win!' win><gold><bold>Click me to win!</bold></gold></button>"answer:"CLICK"-name:"Click Fast"challenge:"<yellow>Click the star!</yellow>\n\n<button win>[<gold><bold>⭐</bold></gold>]</button> <button>[<red><bold>❤</bold></red>️]</button> <button>[<green><bold>🟢</bold></green>]</button>"answer:"CLICK"-name:"Color"challenge:"<gold><bold>Type: <yellow>RED</yellow></bold></gold>"answer:"RED"
games/trivia.yml
name:triviadisplay-name:"<aqua>Trivia Time</aqua>"timeout:45# The time players have to win the game. (in seconds)reward-commands:-"give {player} emerald {rand:1-3}"messages:start:|<aqua><bold>TRIVIATIME</bold></aqua><gray>Answerthequestionbelow!</gray>win:|<green><bold>✓</bold><yellow>{player}</yellow>gotitright!</green><gray>Answer:<white>{answer}</white></gray>timeout:|<red><bold>✗</bold>Nobodygotit!</red><gray>Answer:<white>{answer}</white></gray>questions:- ["<yellow>What is the capital of France?</yellow>", "Paris"]
- ["<yellow>How many continents are there?</yellow>", "7"]
- ["<yellow>What year did the Titanic sink?</yellow>", "1912"]
- ["<yellow>What is the largest ocean?</yellow>", "Pacific"]
- ["<yellow>Who painted the Mona Lisa?</yellow>", "Leonardo da Vinci"]
- ["<yellow>What is the speed of light?</yellow>", "299792458"]
- ["<yellow>What is H2O commonly known as?</yellow>", "Water"]
games/unscramble.yml
name:unscrambledisplay-name:"<light_purple>Word Scramble</light_purple>"timeout:60# The time players have to win the game. (in seconds)reward-commands:-"give {player} gold_ingot {rand:1-5}"messages:start:|<light_purple><bold>WORDSCRAMBLE</bold></light_purple><gray>Unscrambletheword!</gray>win:|<green><bold>✓</bold><yellow>{player}</yellow>unscrambledit!</green><gray>Word:<white>{answer}</white></gray>timeout:|<red><bold>✗</bold>Timeranout!</red><gray>Word:<white>{answer}</white></gray>words: [
"SMARTPHONE", "COMPUTER", "GAMING",
"KEYBOARD", "MINECRAFT", "DIAMOND",
"ADVENTURE", "TREE", "GOLD", "LOG"
]