Introduction
SimonSays is a feature-rich Minecraft plugin that runs multiple chat and in‑world minigames. Players compete to type fastest, solve puzzles, answer trivia, complete action challenges, and earn points (with optional economy rewards via Vault). Includes an auto‑run scheduler, PlaceholderAPI support, and a GUI leaderboard.
Game Modes
- Reaction
- Unscramble
- Trivia
- Math
- Guess Number
- Unreverse
- Completion
- Click Button
- Hoverable
- Shopping List
- Random
- Clue Cracker (Christmas puzzles)
- Naughty Nice (quick judgement)
- Present Pick (elimination game)
- Action (in‑world tasks)
Highlights
- Easy/Medium/Hard with per‑mode wordlists/questions
- Auto‑run scheduler with min/max intervals
- Vault rewards + command rewards
- Token currency + Shop system
- YAML / SQLite / MySQL storage
Integrations
- Vault (economy rewards)
- PlaceholderAPI (placeholders + Top‑N)
- Kyori Adventure (gradients, hover, click)
Built against Spigot API 1.16.5 targeting Java 8; designed to run on modern Spigot/Paper servers (1.13+ content).
Installation
- Place
SimonSays-*.jarinto your serverplugins/folder. - (Optional) Install Vault and an economy plugin for money rewards.
- (Optional) Install PlaceholderAPI to use placeholders on scoreboards/holograms.
- (Optional) Install DecentHolograms for high‑quality win holograms (the plugin falls back to invisible ArmorStands if DH isn’t installed).
- Restart the server to generate
config.ymland game files underplugins/SimonSays/.
Requirements
- Spigot/Paper 1.16+ (works with 1.13+ content)
- Java 8+
Optional
- Vault + economy plugin (rewards)
- PlaceholderAPI (placeholders)
Commands
/simonsays start <gametype> <difficulty> [-f] [--with <content>] /simonsays stop /simonsays status /simonsays reload /simonsays test <survival_combo|enchant_tool> /simonsays leaderboard gui [overall|<gametype>] [page] /simonsays stats [player] [page] /simonsays toggle /simonsays shop [category] /simonsays tokens [player] /simonsays tokens give|take|set <player> <amount> /simonsays games list|enable|disable <type> /simonsays prob get|set <type> <weight> /simonsays log [page] /simonsays world blacklist|whitelist add|remove <world> /simonsays join <game>
Alias: /ss
Command Flags
-f— Force start the game even with insufficient players--with <content>— Start a game with custom content instead of random selection
The --with Flag
The --with flag allows you to specify custom content for supported game types. This is useful for creating custom challenges or testing specific scenarios.
Supported Game Types
- Trivia:
--with question|answeror--with question|ans1,ans2,ans3 - Reaction:
--with customword - Unscramble:
--with wordtounscramble - Unreverse:
--with wordtoreverse - Completion:
--with wordtocomplete - Random:
--with customstring
Examples
# Custom trivia question with single answer /ss start trivia easy --with What is 2+2?|4 # Custom trivia with multiple accepted answers /ss start trivia medium --with What color is the sky?|blue,azure,light blue # Custom reaction word /ss start reaction hard --with supercalifragilistic # Force start with custom content /ss start trivia easy -f --with Who created Minecraft?|Notch,Markus Persson
Note: The --with flag consumes all remaining arguments as content, so place -f before --with if using both flags.
Additional Commands
/ss stats [player] [page]— View your stats or another player's stats. Shows wins, streaks, and per-game-type breakdown./ss toggle— Toggle SimonSays broadcast messages on/off for yourself./ss shop [category]— Open the shop GUI (or a specific category)./ss tokens— Check your token balance./ss tokens <player>— Check another player's token balance./ss tokens give|take|set <player> <amount>— Admin commands to manage player tokens./ss games list— List all disabled game types./ss games enable|disable <type>— Enable or disable a game type globally./ss prob get [type]— View auto-run weight for a game type (or all types)./ss prob set <type> <weight>— Set the auto-run weight for a game type (0 = never picked)./ss log [page]— View recent game history with winners and times./ss world blacklist|whitelist add|remove <world>— Manage which worlds allow SimonSays games./ss join <game>— Join a game that requires explicit joining (e.g., Present Pick).
Permissions
Core Permissions
simonsays.start— Start games (default: op)simonsays.stop— Stop current game (default: op)simonsays.status— View game status (default: true)simonsays.reload— Reload plugin config (default: op)simonsays.test— Run action test tasks (default: op)simonsays.admin— Full access to all commands (default: op)
Player Permissions
simonsays.leaderboard.gui— Open leaderboard GUI (default: true)simonsays.toggle— Toggle broadcast messages for yourself (default: true)simonsays.stats— View player statistics (default: true)simonsays.shop— Open the shop GUI (default: true)
Token Permissions
simonsays.tokens.others— View other players' token balance (default: op)simonsays.tokens.admin— Give, take, or set player tokens (default: op)
Admin Permissions
simonsays.games— Enable/disable game types globally (default: op)simonsays.prob— Configure auto-run probabilities (default: op)simonsays.log— View game history log (default: op)simonsays.world— Manage world blacklist/whitelist (default: op)
Configuration (config.yml)
Key top‑level options:
messages:
prefix: "&b[SimonSays] " # Set to "" to disable prefix
use-minimessage: false # true = parse MiniMessage; false = legacy & colors + hex
settings:
broadcast-countdown: true # Send countdown to chat (false = titles/effects only)
auto-run:
enabled: true
min-interval: 300 # seconds
max-interval: 600
difficulties: [easy, medium, hard]
enabled-games: [reaction, unscramble, trivia, math, action, guess_number, unreverse, completion, click_button, hoverable, shopping_list, random]
storage:
type: YAML # YAML | SQLITE | MYSQL
mysql:
host: localhost
port: 3306
database: simonsays
username: root
password: ""
- messages.prefix: plugin message prefix; set to empty string ("") to disable.
- messages.use-minimessage: when true, text is parsed via Kyori MiniMessage enabling gradients, hover text, and click actions. See the MiniMessage Formatting section for detailed examples.
- settings.broadcast-countdown: when false, countdown messages are not sent to chat (use with title countdowns for a cleaner UI).
- auto-run: global scheduler; min players per mode are read from each mode's YAML under
settings.min-players. - storage.type: choose YAML (default), SQLITE, or MYSQL. SQL drivers are shaded in release builds.
Effects and Display Channels
SimonSays can present prompts and events in multiple channels: Title, Actionbar, Chat, and Bossbar. Configure per event under effects.channels.
effects:
channels:
countdown: ["title"]
start: ["title"]
prompt: ["title"] # e.g., ["chat"], ["actionbar"], or ["bossbar"]
win: ["title"]
time_up: ["title"]
titles:
also_use_bukkit: true # reliability fallback using Player#sendTitle
countdown:
enabled: true
title: "&e&l%seconds%"
subtitle: "&7Get ready"
fade-in: 5
stay: 10
fade-out: 5
start:
enabled: true
title: "&a&lGO!"
subtitle: "&7Good luck"
fade-in: 5
stay: 20
fade-out: 5
win:
enabled: true
title: "&6&l%player%"
subtitle: "&eWon the game!"
fade-in: 5
stay: 40
fade-out: 10
time_up:
enabled: true
title: "&c&lTime's up!"
subtitle: "&7The answer was %answer%"
fade-in: 5
stay: 40
fade-out: 10
prompts:
enabled: true
fade-in: 5
stay: 40
fade-out: 10
bossbar:
color: YELLOW
overlay: PROGRESS
progress: 1.0
- Prompts are the overlay shown at round start (word/question/action).
- Bossbar shows a temporary bar for the event’s
stayperiod. - Use MiniMessage tags in chat when
messages.use-minimessage=true(see below).
Win Holograms (DecentHolograms) + Crash‑Safe Cleanup
When a player wins, a hologram can be displayed above them. If DecentHolograms is installed it’s used automatically; otherwise the plugin uses invisible ArmorStands.
effects:
hologram:
win:
enabled: true
duration-ticks: 120
line-height: 0.27
lines:
- "&6Winner: &e%player%"
- "&7%game% &8(&7%difficulty%&8)"
- Crash safety: temporary DH holograms are tracked in
plugins/SimonSays/data/temp-holograms.ymland removed automatically on startup/shutdown; fallback ArmorStands are tagged and auto‑removed too. - Soft‑depend on DecentHolograms is declared; install DH for best visual quality.
Case‑Sensitivity Hints
- Case hints: if a mode is case‑sensitive and a player's answer matches ignoring case but not exact case, they receive a private hint (default: "Close! Check capitalization.").
- Toggle:
features.case-sensitivity-hints: true - Message:
messages.player.case-hint
features:
case-sensitivity-hints: true
messages:
player:
case-hint: "&eClose! Check capitalization."
MiniMessage Formatting
SimonSays supports MiniMessage, a modern text formatting system that provides gradients, hover text, click actions, and more. Enable it by setting messages.use-minimessage: true in your config.
Enabling MiniMessage
messages: use-minimessage: true prefix: "<gradient:#ff0080:#ffc800>[SimonSays]</gradient> "
Feature Comparison
Legacy Mode (default)
&color codes (&a,&c, etc.)- Hex colors (
#ff0080) - Basic formatting (
&l,&o, etc.) - No gradients
- No hover/click
MiniMessage Mode
- Full backward compatibility (all legacy
&codes and hex work) - Gradients (multi-color transitions)
- Hover text (tooltips)
- Click actions (commands, URLs, clipboard)
- Rainbow text, transitions, and more
Backward Compatibility
When MiniMessage mode is enabled, all legacy formatting still works. The plugin automatically converts & codes and #hex colors to MiniMessage format before parsing. This means you can:
- Keep your existing configs without changes
- Mix legacy
&codes with MiniMessage tags in the same string - Gradually migrate to MiniMessage syntax
# Mix legacy and MiniMessage in the same line prefix: "&4[&cSimonSays&4] " # Legacy only - works fine prefix: "<red>[SimonSays] " # MiniMessage only prefix: "&4[<gradient:#ff0000:#ffaa00>SimonSays</gradient>&4] " # Mixed - both work together! # Hex colors work both ways won: "#00ff00%player% won!" # Legacy hex won: "<color:#00ff00>%player% won!" # MiniMessage hex
Gradient Examples
# Two-color gradient prefix: "<gradient:#ff0080:#ffc800>[SimonSays]</gradient> " # Multi-color gradient won: "<gradient:#00ff00:#ffff00:#ff0000>%player% won!</gradient>" # Rainbow effect display: "<rainbow>Type this word fast!</rainbow>"
Hover and Click Actions
Interactive elements work in chat messages only. Titles, actionbars, and bossbars do not support click events.
# Hover tooltip won: "<hover:show_text:'Winner: %player%'><gold>%player% won!</gold></hover>" # Click to copy display: "<click:copy_to_clipboard:'%word%'>Click to copy the answer</click>" # Click to run command help: "<click:run_command:'/ss leaderboard gui'>View Leaderboard</click>" # Click to open URL support: "<click:open_url:'https://discord.gg/example'>Join our Discord</click>"
Combined Formatting
You can combine multiple MiniMessage tags for rich, interactive text:
won: "<gradient:#ffd700:#ffaa00><hover:show_text:'<green>Time: %time%s'>%player% won!</hover></gradient>" display: "<rainbow><hover:show_text:'Good luck!'><bold>%word%</bold></hover></rainbow>"
Important Notes
- Backward compatible: When MiniMessage is enabled, all legacy
&codes and#hexcolors are automatically converted and work alongside MiniMessage tags. No config migration required! - Escaping: Literal
<or>in MiniMessage tags must be escaped as<lt>and<gt>. - Placeholders: The plugin performs
%placeholder%replacement before MiniMessage parsing. - Channel limitations: Hover and click actions only work in chat channels. Use
effects.channels.prompt: ["chat"]to enable interactive prompts. - Legacy-only mode: When
use-minimessage: false(default), only&codes and#hexwork; gradients and interactive features are not available.
Enabling Interactive Prompts
To use hover/click in game prompts, route them to the chat channel:
effects:
channels:
prompt: ["chat"] # Instead of ["title"] or ["actionbar"]
win: ["chat"]
messages:
use-minimessage: true
For complete MiniMessage documentation, visit docs.advntr.dev/minimessage.
Per‑Game Overrides
Any effects can be toggled per game with effects.per-game.<GAME>.<category>.<feature>.enabled. Missing entries fall back to the global setting.
effects:
per-game:
REACTION:
titles:
prompt:
enabled: true
win:
enabled: true
time_up:
enabled: true
hologram:
win:
enabled: true
Auto‑Run Scheduler
- Randomly starts an enabled game at a random difficulty between
min-intervalandmax-interval. - Won’t start if a game is already active or there aren’t enough players for any enabled mode.
- Minimum players per mode:
settings.min-playersinside each game file (see game sections below).
Games Overview
All modes define per‑difficulty time limits, reward rules, and messages. Files are under plugins/SimonSays/games/<mode>/.
- Rewards:
rewards.points: base points, optional time‑bonus and broadcastrewards.commands: console commands on win (supports per-commandchance)rewards.economy: Vault money (if Vault installed)- Tokens: separate currency for the shop (see Shop System)
- Messages: use legacy
&colors (with hex) or MiniMessage when enabled. - Available game types: REACTION, UNSCRAMBLE, TRIVIA, MATH, GUESS_NUMBER, UNREVERSE, COMPLETION, CLICK_BUTTON, HOVERABLE, SHOPPING_LIST, RANDOM, CLUE_CRACKER, NAUGHTY_NICE, PRESENT_PICK, ACTION
Reaction (chat)
Type the displayed word first to win.
File: games/reaction/reactions.yml + wordlists at games/reaction/wordlists/ (easy|medium|hard).
settings:
min-players: 2
reaction:
difficulties:
easy:
time-limit: 15
rewards:
points:
base-amount: 10
time-bonus:
enabled: true
per-second-remaining: 2
messages:
game:
starting: "&eStarting in &6%seconds%s&7..."
player:
won: "&a%player% &7won!"
won-points: "&a+%points% &7points (&f%base%&7 + &a%bonus%&7)"
# Matching options (all word games):
# case-sensitive: false|true
# ignore-diacritics: true|false # when true, accented letters are treated as their base (ż == z)
Unscramble (chat)
Unscramble the jumbled word. Files: games/unscramble/unscramble.yml and wordlists at games/unscramble/wordlists/.
- Displays a scrambled form (
%scrambled%); winner types the original word (%word%). - Case-insensitive matching; trims leading/trailing spaces.
- Difficulty controls time limit and wordlist used.
settings:
min-players: 2
unscramble:
difficulties:
medium:
time-limit: 20
rewards:
points:
base-amount: 12
messages:
game:
starting: "&eUnscramble starts in &6%seconds%s&7..."
display: "&fWord: &b%scrambled%"
player:
won: "&a%player% &7unscrambled &f%word%&7!"
too-late: "&7Too late! The word was &f%word%&7."
Trivia (chat)
Answer a question correctly. File: games/trivia/trivia.yml.
- Supports question
%question%, accepted answer(s)%answer%, and optional category%category%. - Matching is case-insensitive; common punctuation is ignored.
settings:
min-players: 2
trivia:
difficulties:
easy:
time-limit: 25
categories: ["general"]
rewards:
points:
base-amount: 15
messages:
game:
display: "&eTrivia: &f%question%"
player:
won: "&a%player% &7answered correctly!"
too-late: "&7Time! Answer: &f%answer%"
Reward Commands with Chance
Command rewards can now be weighted per entry. Use either a plain string (runs 100% of the time) or a map with command and chance (0–100).
rewards:
commands:
enabled: true
commands:
- "say %player% always runs" # 100%
- command: "give %player% diamond 3" # 25% chance
chance: 25
- command: "eco give %player% 500" # 50% chance
chance: 50
Chance is clamped to 0–100. Missing/invalid chance defaults to 100.
Math (chat)
Solve arithmetic (addition, subtraction, multiplication, division). File: games/math/math.yml.
- Generates solvable problems; division uses integer quotient (bug fixed to use quotient, not divisor).
- Tokens:
%question%and%answer%(for time-up message).
settings:
min-players: 2
math:
difficulties:
easy:
time-limit: 20
rewards:
points:
base-amount: 10
messages:
game:
display: "&fSolve: &b%question%"
player:
won: "&a%player% &7solved it!"
too-late: "&7Answer was &f%answer%"
Guess Number (chat)
Guess the secret number in a range. File: games/guess-number/guess-number.yml.
- Tokens:
%min%,%max%,%number%(revealed on time-up). - Implementation tracks first exact match; considers numeric input only.
settings:
min-players: 2
guess-number:
difficulties:
medium:
time-limit: 25
min: 1
max: 100
rewards:
points:
base-amount: 12
messages:
game:
display: "&eGuess the number between &f%min%&e and &f%max%"
player:
won: "&a%player% &7guessed correctly!"
too-late: "&7It was &f%number%"
Unreverse (chat)
Recover the original word from its reversed form. File: games/unreverse/unreverse.yml with wordlists under games/unreverse/wordlists/.
- Displays
%reversed%; expect the original%word%as the winning answer. - Case-insensitive; trims whitespace.
settings:
min-players: 2
unreverse:
difficulties:
hard:
time-limit: 20
rewards:
points:
base-amount: 14
messages:
game:
display: "&fText: &b%reversed%"
player:
won: "&a%player% &7recovered &f%word%&7!"
too-late: "&7Original was &f%word%"
Completion (chat)
Complete a word with missing letters. File: games/completion/completion.yml with wordlists under games/completion/wordlists/.
- Displays an incomplete/masked form
%incomplete%; answer is the full%word%. - Case-insensitive; trims whitespace.
settings:
min-players: 2
completion:
difficulties:
medium:
time-limit: 20
rewards:
points:
base-amount: 12
messages:
game:
display: "&fComplete: &b%incomplete%"
player:
won: "&a%player% &7completed &f%word%&7!"
too-late: "&7It was &f%word%"
Click Button (chat)
Be the first to click an interactive button displayed in chat. File: games/click-button/click-button.yml.
- Displays a clickable button in chat; first player to click wins.
- Button text is configurable with custom symbols and colors.
- Requires chat channel for interactive functionality.
- Works best with MiniMessage enabled for hover effects.
settings:
min-players: 2
button-texts:
- "[█]" # Block character
- "[CLICK]"
- "[☑]" # Checkbox
difficulties:
easy:
time-limit: 10
medium:
time-limit: 8
hard:
time-limit: 5
rewards:
points:
base-amount: 10
time-bonus:
enabled: true
per-second-remaining: 2
messages:
game:
starting: "&eClick Button starts in &6%seconds%s&7..."
display: "&eClick the button to win!"
player:
won: "&a%player% &7clicked first!"
too-late: "&7Time's up!"
Note: For best results, ensure effects.channels.prompt includes ["chat"] to display the clickable button in chat.
Hoverable (chat)
Find the hidden word by hovering over text in chat, then type it to win. File: games/hoverable/hoverable.yml with wordlists under games/hoverable/wordlists/.
- Displays a hoverable text element in chat; the hidden word is revealed on hover.
- Players must hover to discover
%word%then type it in chat. - Requires MiniMessage enabled and chat channel for hover functionality.
- Case-insensitive matching with optional diacritic handling.
settings:
min-players: 2
case-sensitive: false
ignore-diacritics: true
word-lists:
use-external-files: true
directory: "wordlists"
difficulties:
easy:
file: "hoverable-easy.txt"
time-limit: 12
medium:
file: "hoverable-medium.txt"
time-limit: 10
hard:
file: "hoverable-hard.txt"
time-limit: 7
hover-format:
hover-text: "&6&l&n[HOVER ME]" # Text shown in chat
hover-content: "&e&l%word%" # Text revealed on hover
rewards:
points:
base-amount: 12
time-bonus:
enabled: true
per-second-remaining: 2
messages:
player:
won: "&a%player% &7found the hidden word! (word: &f%word%&7)"
too-late: "&7Time's up. The word was &f%word%"
Note: Requires messages.use-minimessage: true and effects.channels.prompt: ["chat"] for hover functionality.
Shopping List (chat)
Memorize a list of items shown briefly, then type them all from memory. File: games/shopping-list/shopping-list.yml with item lists under games/shopping-list/itemlists/.
- Displays a list of items via title/subtitle for a configurable duration.
- After the list disappears, players type all items (comma or space-separated).
- Supports exact order requirement or any order matching.
- Item count and time limit scale with difficulty.
settings:
min-players: 2
require-exact-order: false # If true, items must match the shown order
case-sensitive: false
ignore-diacritics: true
display:
duration-seconds: 3 # How long the list is visible
title: "&e&lMemorize the list!"
subtitle: "&b%items%"
item-lists:
use-external-files: true
directory: "itemlists"
difficulties:
easy:
file: "items-easy.txt"
time-limit: 20
item-count: 3 # Number of items to memorize
medium:
file: "items-medium.txt"
time-limit: 25
item-count: 4
hard:
file: "items-hard.txt"
time-limit: 30
item-count: 5
rewards:
points:
base-amount: 15
time-bonus:
enabled: true
per-second-remaining: 2
messages:
player:
won: "&a%player% &7remembered all the items!"
too-late: "&7Time's up. The items were: &f%items%"
Random (chat)
Type a randomly generated string to win. File: games/random/random.yml.
- Generates a random alphanumeric string of configurable length.
- Players must type the exact string (
%string%) to win. - String length increases with difficulty for added challenge.
- Supports custom strings via the
--withflag.
settings:
min-players: 2
case-sensitive: false
broadcast-winner: true
difficulties:
easy:
time-limit: 12
length: 4 # 4-character random string
medium:
time-limit: 10
length: 6 # 6-character random string
hard:
time-limit: 8
length: 8 # 8-character random string
string-format:
prefix: "<gradient:#ffd166:#ff7b54><bold>"
suffix: "</bold></gradient>"
broadcast-style:
enabled: true
format:
- "&7------------------------"
- "<gradient:#6bdcff:#a0e7ff><bold>Random Challenge</bold></gradient>"
- "&7Type this string:"
- "&7>> %string%"
- "&7------------------------"
rewards:
points:
base-amount: 10
time-bonus:
enabled: true
per-second-remaining: 2
messages:
player:
won: "&a%player% &7typed it first! (string: &f%string%&7)"
too-late: "&7Time's up. The string was &f%string%"
Clue Cracker (chat)
Crack the clues to guess a Christmas-themed word! Players see bracketed clues and must type the answer. File: games/clue-cracker/clue-cracker.yml.
- Displays clues in bracket format like
[COLD][3 BALLS][CARROT FACE]. - Players type the answer (e.g., "snowman") to win.
- Supports multiple accepted answers per puzzle.
- Optional hints shown in the puzzle display.
- Perfect for seasonal/holiday events!
settings:
min-players: 1
countdown-seconds: 5
broadcast-winner: true
clue-cracker:
difficulties:
easy:
time-limit: 30
puzzles:
snowman:
clues: "[COLD][3 BALLS][CARROT FACE]"
answers:
- "snowman"
- "snow man"
- "frosty"
hint: "Built in winter"
santa:
clues: "[CHIMNEY][COOKIES][HO HO HO]"
answers:
- "santa"
- "santa claus"
hint: "Visits on Dec 25th"
rewards:
points:
base-amount: 15
time-bonus:
enabled: true
per-second-remaining: 2
messages:
player:
won: "&a%player% &7cracked it! (answer: &f%answer%&7)"
too-late: "&7Time's up. The answer was &f%answer%"
Naughty or Nice (chat)
Quick reaction judgement game! Santa needs help deciding if behaviors are naughty or nice. File: games/naughty-nice/naughty-nice.yml.
- Displays a scenario like "Sharing cookies with friends".
- Players type
naughtyorniceto answer. - Fast-paced with short time limits (especially on hard).
- Great for Christmas events!
settings:
min-players: 1
countdown-seconds: 3
broadcast-winner: true
naughty-nice:
difficulties:
easy:
time-limit: 10
scenarios:
sharing_cookies:
description: "Sharing cookies with friends"
answer: nice
breaking_snowman:
description: "Knocking down someone's snowman"
answer: naughty
hard:
time-limit: 5
scenarios:
# More ambiguous scenarios
white_lie_feelings:
description: "Telling a white lie to spare feelings"
answer: nice
rewards:
points:
base-amount: 10
time-bonus:
enabled: true
per-second-remaining: 3
messages:
player:
won: "&a%player% &7judged correctly! (answer: &f%answer%&7)"
incorrect: "&cWrong judgement!"
Present Pick (GUI)
Multi-round elimination game where players pick wrapped presents in a GUI! One (or more) contains coal—pick it and you're eliminated. File: games/present-pick/present-pick.yml.
- Click-to-join system with a lobby phase.
- Players pick from a grid of wrapped presents each round.
- Coal eliminates players (unless they have an extra life).
- Bonus presents can award points or extra lives.
- Supports custom head textures for presents (1.16-1.21+).
- Multiple end-game modes when several players survive.
settings:
min-players: 2
countdown-seconds: 5
broadcast-winner: true
lobby:
wait-time: 15 # Seconds to wait for players to join
grid:
rows: 3
cols: 3
round:
max-rounds: 8
time-limit: 12
reveal-delay: 2
# Options: all_win, random_winner, continue, split_rewards
multi-survivor-mode: all_win
bonuses:
enabled: true
types:
points:
chance: 0.12 # 12% per slot
amount: 25
extra_life:
chance: 0.05 # 5% per slot
presents:
wrapped:
material: PLAYER_HEAD
name: "&a&lWrapped Present"
texture: "eyJ0ZXh0dXJlcyI6..." # Base64 from minecraft-heads.com
locked-in:
material: LIME_SHULKER_BOX # Shows enchant glow
coal:
material: COAL
name: "&8&lCOAL!"
difficulties:
easy:
round-time: 15
coal-count: 1
hard:
round-time: 8
coal-count: 2 # Multiple coals!
rewards:
points:
enabled: true
base-amount: 20
Present Pick Game Flow
- Admin runs
/ss start PRESENT_PICK easy - Standard countdown displays (5 seconds)
- Clickable join message appears in chat
- Players click to join during lobby phase (15 seconds)
- Game rounds begin—pick a present before time runs out!
- Reveals show who picked coal (eliminated) or bonuses
- Last player standing (or survivors at max rounds) wins!
Multi-Survivor Modes
- all_win — All survivors get full rewards (default)
- random_winner — One random survivor wins
- continue — Keep playing until only 1 remains
- split_rewards — Divide points equally among survivors
Action (in‑world)
Complete in‑world tasks such as breaking/placing blocks, crafting, enchanting, trading, fishing, killing entities, etc.
File: games/actions/actions.yml. This section serves as the textual reference for every action type.
# Example (Enchant any tool)
- type: ENCHANT
display: "Enchant any iron/diamond tool"
requirements:
items: ["minecraft:iron_pickaxe", "minecraft:diamond_pickaxe"]
enchant: "all"
level: 0
amount: 1
Testing helpers: /simonsays test survival_combo or /simonsays test enchant_tool to start specific Action tasks defined in the hard difficulty presets.
Action Types
See the detailed sub‑sections below for each supported action type.
Action: BREAK_BLOCK
Keys: amount, material or materials (block ids). Event: BlockBreakEvent.
- type: BREAK_BLOCK
display: "Chop 10 logs"
requirements:
amount: 10
materials: ["minecraft:oak_log", "minecraft:spruce_log"]
Action: PLACE_BLOCK
Keys: amount, material or materials. Event: BlockPlaceEvent.
- type: PLACE_BLOCK
display: "Plant 16 saplings"
requirements:
amount: 16
material: "minecraft:oak_sapling"
Action: CRAFT_ITEM
Keys: amount, material/materials (result item ids). Event: CraftItemEvent. Shift‑click counts are estimated.
- type: CRAFT_ITEM
display: "Craft torches and bread"
requirements:
amount: 2
materials: ["minecraft:torch", "minecraft:bread"]
Action: SMELT_ITEM
Keys: amount, material/materials (output items). Event: FurnaceExtractEvent.
- type: SMELT_ITEM
display: "Smelt 8 iron or glass"
requirements:
amount: 8
materials: ["minecraft:iron_ingot", "minecraft:glass"]
Action: ENCHANT
Item filter: item or items. Enchants: enchant=all|name or enchants=list. level (0 = any), amount. Event: EnchantItemEvent.
- type: ENCHANT
display: "Apply a level 3 combat enchant"
requirements:
items: ["minecraft:iron_sword", "minecraft:diamond_axe"]
enchants: ["sharpness", "smite"]
level: 3
amount: 1
Action: DROP_ITEM
Keys: amount, material/materials. Event: PlayerDropItemEvent.
- type: DROP_ITEM
display: "Drop 5 rotten flesh"
requirements:
amount: 5
material: "minecraft:rotten_flesh"
Action: CONSUME_ITEM
Keys: amount, edible types or single material. Event: PlayerItemConsumeEvent.
- type: CONSUME_ITEM
display: "Eat 3 foods"
requirements:
amount: 3
types: ["minecraft:bread", "minecraft:cooked_beef"]
Action: KILL_ENTITY
Keys: amount, target entity/types; optional weapon_type (category like SWORD/AXE/BOW/CROSSBOW or specific item id). Event: EntityDeathEvent.
- type: KILL_ENTITY
display: "Slay 5 mobs with a sword"
requirements:
amount: 5
types: ["ZOMBIE", "SKELETON"]
weapon_type: "SWORD"
Action: TAME_ENTITY
Keys: amount, optional types. Event: EntityTameEvent.
- type: TAME_ENTITY
display: "Tame a pet"
requirements:
amount: 1
types: ["WOLF", "CAT"]
Action: SHOOT_BOW
Keys: amount, optional hit_entity (boolean), optional target entity/types. Events: EntityShootBowEvent, ProjectileHitEvent.
- type: SHOOT_BOW
display: "Hit 3 zombies with arrows"
requirements:
amount: 3
hit_entity: true
target: "ZOMBIE"
Action: TRADE_VILLAGER
Keys: amount, material/materials (result item ids). Event: InventoryClickEvent (merchant result slot).
- type: TRADE_VILLAGER
display: "Complete 2 trades"
requirements:
amount: 2
materials: ["minecraft:emerald", "minecraft:bread"]
Action: FISH
Keys: amount, material/materials (caught items). Event: PlayerFishEvent (CAUGHT_FISH).
- type: FISH
display: "Catch 2 fish"
requirements:
amount: 2
materials: ["minecraft:cod", "minecraft:salmon"]
Action: JUMP
Keys: amount. Event: PlayerMoveEvent (meaningful upward motion only).
- type: JUMP
display: "Jump 20 times"
requirements:
amount: 20
Action: SNEAK
Keys: amount. Event: PlayerToggleSneakEvent.
- type: SNEAK
display: "Toggle sneak 10 times"
requirements:
amount: 10
Action: SWIM
Keys: distance (blocks), optional require_swimming. Events: PlayerMoveEvent, EntityToggleSwimEvent.
- type: SWIM
display: "Swim 100 blocks"
requirements:
distance: 100
require_swimming: true
Action: MULTI_ACTION
Keys: amount: 1, actions: [...] where each subtask is a full action spec. All subtasks must complete.
- type: MULTI_ACTION
display: "Survival combo"
requirements:
amount: 1
actions:
- type: BREAK_BLOCK
display: "Chop 5 logs"
requirements:
amount: 5
material: "minecraft:oak_log"
- type: CRAFT_ITEM
display: "Craft bread"
requirements:
amount: 1
material: "minecraft:bread"
Action: THROW_SNOWBALL
Keys: amount. Event: ProjectileLaunchEvent (SNOWBALL). Great for Christmas-themed challenges!
- type: THROW_SNOWBALL
display: "Throw 10 snowballs"
requirements:
amount: 10
Shop System
Players earn Tokens from winning games and can spend them in the shop. Tokens are separate from leaderboard Points. File: shop.yml.
Token Earning
- Winners earn tokens automatically (configurable per difficulty).
- Base amount + difficulty multipliers (easy: 1x, medium: 1.5x, hard: 2x).
- Admins can manually give/take/set tokens with
/ss tokens.
Shop Items
Two reward types are supported:
- Commands — Run server commands on purchase (use
%player%placeholder). - Items — Give Minecraft items with custom name, lore, and player head textures.
shop:
enabled: true
gui:
title: "&5&lShop"
confirm-title: "&6Confirm Purchase"
currency:
name: "Tokens"
name-plural: "Tokens"
symbol: "T"
tokens:
per-win:
enabled: true
base-amount: 5
difficulty-multiplier:
easy: 1.0
medium: 1.5
hard: 2.0
categories:
rewards:
display-name: "&6Rewards"
description: "&7Spend your tokens here!"
icon: CHEST
slot: 13
items:
# Command reward example
diamond_kit:
category: rewards
display-name: "&bDiamond Starter Kit"
description:
- "&7Receive a full set of diamond tools!"
- "&eOne-time purchase"
icon: DIAMOND
price: 100
one-time: true
commands:
- "minecraft:give %player% minecraft:diamond_pickaxe 1"
- "minecraft:give %player% minecraft:diamond_sword 1"
# Item reward example
golden_apple:
category: rewards
display-name: "&6Golden Apple"
description:
- "&7A shiny golden apple!"
icon: GOLDEN_APPLE
price: 25
item:
material: GOLDEN_APPLE
amount: 1
# Custom head example
custom_head:
category: rewards
display-name: "&dTrophy Head"
icon: PLAYER_HEAD
price: 150
item:
material: PLAYER_HEAD
amount: 1
name: "&d&lSimonSays Trophy"
lore:
- "&7A mark of excellence"
texture: "eyJ0ZXh0dXJlcyI6..." # Base64 from minecraft-heads.com
Shop Item Options
price— Cost in tokensstock— -1 = unlimited, or set a number for limited stockone-time— If true, player can only buy once everrestock-interval— Seconds until stock replenishes (0 = no restock)
Leaderboard GUI
- Inventory UI with filters (Overall, Reaction, Unscramble, Trivia, Math, Action, Guess Number, Unreverse, Completion, Click Button, Hoverable, Shopping List, Random, Clue Cracker, Naughty Nice, Present Pick).
- Paging: 28 entries per page with Previous/Next controls.
- Player heads with rich lore; top 3 entries highlighted; title kept compact.
- Command:
/simonsays leaderboard gui [overall|<type>] [page] - Permission:
simonsays.leaderboard.gui(default: true)
PlaceholderAPI
Identifier: simonsays — use as %simonsays_<name>%.
State & Timing
current_game_type,current_game_type_humangame_win_time,game_win_time_formatted_s,..._secondstime_until_game,time_until_game_formatted_s,..._seconds
Scores (requesting player)
reaction_score,unscramble_score,trivia_score,math_score,action_score,guess_number_score,unreverse_score,completion_score,click_button_score,hoverable_score,shopping_list_score,random_score,clue_cracker_score,naughty_nice_score,present_pick_score,total_score
Tokens
tokens— Player's current token balance
Ranks
overall_rankand per‑type<type>_rank
Top‑N Lists (global)
<scope>_player_N<scope>_score_N<scope>_rank_N→ Name - Score- Scopes: overall, reaction, unscramble, trivia, math, action, guess_number, unreverse, completion, click_button, hoverable, shopping_list, random
Full PlaceholderAPI keys are documented below.
Storage Backends
- YAML (default) —
plugins/SimonSays/data/players.ymlsettings.leaderboard-limitcontrols Top‑N depthsettings.broadcast-changestoggles point-change broadcast
- SQLite — file
plugins/SimonSays/database.db(driver shaded) - MySQL/MariaDB — configure host/port/credentials; prefers MariaDB driver (shaded)
- APIs provide ranks and Top‑N for both overall and per‑type leaderboards.
Economy (Vault)
Optional money rewards via Vault. Enable per mode or globally.
# Per-mode example (inside a game YAML)
rewards:
economy:
enabled: false
amount: 100.0
broadcast-message: true
# Global defaults (config.yml)
economy:
enabled: false
rewards:
reaction: 100.0
unscramble: 150.0
trivia: 150.0
action: 150.0
math: 100.0
Message token: %money% uses the economy plugin’s formatting.
Troubleshooting
- Economy not working: Ensure Vault and a compatible economy plugin are installed; enable
rewards.economy. - Placeholders empty: Install PlaceholderAPI; check identifier is
simonsays. Some values are blank when no game is active. - Scheduler idle: Verify
auto-run.enabledand that at least one enabled game meets itsmin-playersrequirement. - Materials invalid: If using older server versions, ensure wordlists/configs don’t reference items introduced after your MC version.
FAQ
Q: Can I use gradients in messages?
A: Yes! Enable MiniMessage mode with messages.use-minimessage: true, then use gradient tags like <gradient:#ff0080:#ffc800>text</gradient>. See the MiniMessage Formatting section for full details and examples.
Q: What's the difference between legacy mode and MiniMessage mode?
A: Legacy mode (default) supports & color codes and hex colors but no gradients. MiniMessage mode adds gradients, hover text, click actions, and rainbow effects while keeping full backward compatibility with all legacy formatting. See the feature comparison.
Q: Will my existing config break if I enable MiniMessage?
A: No! The plugin automatically converts all legacy & codes and #hex colors when MiniMessage is enabled. Your existing configs will continue to work without any changes.
Q: Where do I add words/questions?
A: Under plugins/SimonSays/games/<mode>/wordlists/ or the mode's YAML file.
Q: How do I open the leaderboard?
A: /simonsays leaderboard gui [overall|<type>] [page] (permission simonsays.leaderboard.gui).
Support
Open an issue or join our Discord for help:
- Discord: https://discord.gg/5QzFAXQJuS
- Spigot Resource Discussion