Installation
- 1Download the jar from your account page.
- 2Drop it into plugins/ and restart the server.
- 3That is the whole install — nothing is required and the defaults are playable as shipped.
- 4Optional: add Vault and any economy plugin to switch payouts on.
- 5Confirm it started: the log ends with "ChatGames 1.0.0 ready (4 game types enabled, welcome event on, economy linked, spawner reward 27 mobs)." That line reports what is actually switched on, so read it rather than assuming — "economy absent" there is why nobody is being paid.
The four game types
Each type is switched on under games.(type).enabled and can override the default payout with reward-coins — set it to -1 to use settings.reward-coins instead.
unscramble shuffles a word from your bank; math generates a sum from a range and operator set you choose, and never asks for a negative answer; trivia draws a question from your list, where "Question text|answer1;answer2" accepts several spellings; reveal shows a word and races players to retype it.
reveal is the type to test with: its prompt is its answer, so you can win a round without solving anything.
Setting the pace
settings:
interval-seconds: 300 # between rounds
game-duration-seconds: 45 # before a round times out
min-online-players: 1 # nothing fires below this
reward-coins: 500.0The clock restarts when a round resolves, not when it starts, so a fast round does not bring the next one forward. Below min-online-players the plugin re-checks every fifteen seconds rather than skipping a whole interval, so a round fires promptly once people arrive.
/chatgames toggle writes the master switch back to config.yml so it survives a restart. Your comments and formatting survive the write.
Rewards and milestones
Three separate things can happen on a win: the coin payout, a random spawner, and a milestone.
settings:
milestone:
every: 10
commands:
- "minecraft:give <player> diamond 3"
spawner-reward:
enabled: true
chance: 100.0
types:
- "ZOMBIE:20"
- "IRON_GOLEM:1"Milestone commands run from console with <player> and <wins> filled in — a crate plugin usually wants something like "crates give <player> vote 1". Note the minecraft: prefix on the defaults: EssentialsX and others register their own /give, and without it you may be running theirs with arguments meant for vanilla.
The spawner pool is weighted, so "ZOMBIE:20" comes up twenty times as often as "IRON_GOLEM:1". Entity names are resolved when the config loads: an unknown or non-spawnable one is skipped with a warning naming it, rather than breaking the pool.
How amounts are written
By default your economy plugin renders the number, which is where wording like "500.00 Coins" comes from. To write it yourself:
settings:
currency:
override: true
format: "$<amount>" # -> $1,000
decimals: 0
thousands-separator: ","
noun: "coins"Every amount in every message goes through one formatter, so this changes all of them at once and no message file has to be edited. It is display only — the payout is always exact.
noun is what the currency is called in prose, used wherever a reward is described without an amount. It applies whether override is on or not.
The welcome event
A join opens a window during which every other online player who types a greeting is paid, each once per window. Unlike a round, this has no single winner — that is the point.
welcome:
only-first-join: true # false also greets returning players
duration-seconds: 30
reward-coins: 100.0
max-rewards: 0 # 0 = unlimited
triggers: [welcome, welc, wlcm]A trigger matches anywhere in the message, so "welcome to the server!" counts. The first entry in the list is the word players are told to type.
Permissions
chatgames.use is on for everyone by default. The admin nodes sit under chatgames.admin and default to op: .start, .stop, .toggle and .reload.
Commands are registered so that a player without a node gets ChatGames refusing them by name, rather than the server claiming the command does not exist. That distinction matters the first time a staff member reports the plugin as broken when they are actually just missing a permission.
Messages
messages.yml is MiniMessage. Placeholder names have to be lower-case a-z, 0-9, _ or - ; anything else is not a valid tag, and it is logged once and rendered literally rather than taking the whole message down.
On update the file gains any key a new version added, but never a new line inside a list you already have, and an existing key is never corrected. If a message looks wrong after an update, delete that key and the jar's version comes back.
Commands
| Command | What it does | Permission |
|---|---|---|
/chatgames | The current round, or time to the next | chatgames.use |
/chatgames stats (player) | Wins and welcomes | chatgames.use |
/chatgames guide | Open the in-game guide | chatgames.use |
/chatgames help | List every subcommand | chatgames.use |
/chatgames next | Start a random round now | chatgames.admin.start |
/chatgames start (type) | Start a specific round type | chatgames.admin.start |
/chatgames stop | Cancel the running round | chatgames.admin.stop |
/chatgames toggle (on|off) | Automatic rounds on or off | chatgames.admin.toggle |
/chatgames reload | Re-read config.yml and messages.yml | chatgames.admin.reload |
Still stuck?
Post in Discord with your server version and the relevant part of the log. That is almost always enough to get a straight answer the same day.
Get help