Minimum Java Version: Java 17
Support:
https://discord.gg/uXVU8jmtpU
Murder Mystery
In Classic Mode on Murder Mystery, players take on the role of Murderer, Detective or Innocent. The Murderer must be sneaky and try to kill as many people as he can without being caught or killed. The detective and innocents must work together to protect each other and try to figure out who the murderer is.
Donations
You can donate us through
Buy Me a Coffee.
License & Source Code
If you don't have permission by the author you are NOT allowed to decompile any file of this project.
Example Plugin Setup & Gameplay
Images
Commands and Permissions
Code (Text):
/mm
- Main command of the Murder Mystery.
- No permission required to run this command.
/mm create <arenaName>
- Creates an arena with default configuration.
- Permission: mm.admin.create
/mm delete <arenaName>
- Deletes the specified arena with all configuration.
- Permission: mm.admin.delete
/mm edit <arenaName>
- Download image from the URL to images folder.
- Permission: mm.admin.download
/mm list
- Shows a list of all arenas.
- Permission: mm.admin.list
/mm forcestart
- Forces arena to start if executor is in an arena.
- Permission: mm.admin.forcestart
/mm stop
- Forces arena to end if it is in-game state.
- Permission: mm.admin.stop
/mm stop
- Shows all of the commands and their descriptions.
- Permission: mm.admin.help
/mm reload
- Reloads all reloadable handlers, managers and interfaces.
- Permission: mm.admin.reload
/mm coin <player name> | <set | add | remove> <coin amount>
- You can check, add, remove or set player's coins.
- Permission: mm.admin.coin
/mm join <arenaName>
- Creates an join attempt for the specified arena.
/mm randomjoin [detective amount] [murderer amount]
- Creates an join attempt for the random arena.
- If detective and murderer amounts is set, system will only search arenas with the same detective and murderer amount.
/mm leave
- Creates an leave attempt for player if they're playing.
/mm shop
- Opens in-game shop menu. Can not be reachable if player is in-game.
- If '--knifeSkins' is present, it'll directly open knife skins menu.
- If '--deathSounds' is present, it'll directly open death sounds menu.
/mm msg <message>
- A chat system between Murderers.
/mm stats [player]
- Shows player's or specified target's statistics.
/mm top <statistic>
- Shows leaderboard for the specified stat.
![[IMG]](/proxy/image?url=https%3A%2F%2Fi.imgur.com%2FKaw6wTN.png)
Config Options & Placeholders
Code (YAML):
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #[/LEFT]
# #
# Murder Mystery #
# Despical #
# #
# https://www.buymeacoffee.com/despical #
# #
# Donations are really appreciated! <3 #
# #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
Time-Settings
:
# Default gameplay time is 270 seconds which is 4 minutes and 30 seconds.
# You can set custom gameplay time per arena via arena editor menu.
Default-Gameplay-Time
: 270
# Every 45 seconds a broadcast message will be sent to players
# about how many players should arena need to start.
Lobby-Waiting-Time
: 45
# How many seconds should we wait for other players when we reach
# minimum player amount in the arena.
Lobby-Starting-Time
: 16
# How many seconds are we going to wait in ending state?
# After this amount of time passed we'll send players to lobby.
Ending-Time
: 6
# How many seconds should pass between spawning golds.
Gold-Spawn-Interval
: 15
# Settings about the delays before the characters receive their items.
Receive-Sword
:
# How many seconds later should we start to broadcast 'Murderer gets their sword in...'?
In
: 10
# How many seconds later should we give Murderer Sword and Detective Bow.
After
: 5
Chat-Settings
:
# Should we disable chat during the game?
# This option won't work for spectators. (dead chat is separated)
Disable-Chat
: false
# Should we format the chat messages?
# See messages.yml to change format.
Chat-Format-Enabled
: true
# Should the messages stay between arena players or general?
Enable-Separate-Chat
: true
Murderer-Settings
:
# How many seconds should remain to give innocent locator to the Murderers?
Locator-Time
: 60
# Should we give innocent locator to murderer if the time is less than a minute?
Innocent-Locator
: true
# Should we increase Murderer's walk speed if there is only one innocent left
# and the time is less than a minute? (no particle effect will be displayed)
Speed:
Enabled
: true
# 0.2 is the default walk speed of a player.
Value
: 0.3
# Can the Murderers be able to collect any golds to get a bow?
Collect-Gold
: true
# Should we give bow to murderers when they collect 10 golds?
Receive-Bow
: true
# All configurable options about murderer's sword.
Murderer-Sword
:
# How many blocks that murderer's sword should fly in the air?
Fly-Range
: 20
# Hit range of murderer's sword.
Fly-Hit-Range
: 0.5
# Speed of murderer's sword.
Speed
: 0.65
# Cooldown between throwing sword again.
Throwing-Delay
: 5
# Right arm position of armor stand.
# Values will be converted to radians.
Arm-Positions:
X
: 350
Z
: 90
Sounds
:
# Custom death sounds only plays to Murderer and the victim.
Death
: ENTITY_PLAYER_DEATH
# The sound plays when someone falls into void.
Fell-Off-The-Map
: ENTITY_SKELETON_DEATH
# The sound plays when there ire 15, 10, 5 and 4, 3... seconds left before the game starts.
Game-Starts-In
: UI_BUTTON_CLICK
# The sound plays when someone picks up gold.
Pick-Up-Gold
: ENTITY_ITEM_PICKUP
# Sounds for the Murderer's sword.
Murderer-Sword
:
# The sound plays when the Murderer's sword charging.
Charging
: UI_BUTTON_CLICK
# The sound plays when the Murderer threw their sword.
Throw-Successful
: ENTITY_ENDER_DRAGON_SHOOT
# The sound plays when the Murderer's throwing is canceled.
Throw-Canceled
: ENTITY_ITEM_BREAK
Bow-Settings
:
# Should we give arrow back to shooter if they successfully hit any Murderer?
Give-Arrow-Back-To-Innocent
: true
# Should we display some particles above Murderer and Detective character's fellows?
# Particles are only going to be displayed to current character, not to innocents or non-fellows.
Fellow-Particles
:
# Set empty string to disable particles.
# Format: RED:GREEN:BLUE:PARTICLE_SIZE
Detective
:
"0:0:255:1"
Murderer
:
"255:0:0:1"
# How much the particle should be displayed above the character's current location?
Y-Offset
: 2.5
# For instance, now every 2 tick the particles above the characters will be displayed.
Interval
: 2
Spectator-Settings
:
# Should we teleport permanent spectators (joined the game after it started) to spectator spawn
# or to a random player spawn point?
Teleport-To-Spectator-Spawn
: true
Scoreboard-Settings
:
# Should we create some cool scoreboards?
Enabled
: true
# The player scoreboards will be updated every 10 ticks.
Update-Interval
: 10
# Should we only print heroes when innocent wins in summary message?
Show-Heroes-Only-Inno-Win
: false
# Should we add a small push effect for players when the die?
Push-Players-On-Die
: true
# Should we allow players to open shop menu in-game?
Allow-Shop-In-Game
: false
# If you have arenas in the separated worlds then you should wait a few seconds for
# these worlds to finish loading before we load the arenas. (20 ticks = 1 second)
Arena-Registration-Delay
: 0
# Should all the players have the same chance?
# Player statistics is still going to be updated.
Equal-Chances
: false
# How many seconds should we wait before giving new arrow to detectives?
Detective-Bow-Delay
: 5
# Should we show detective kills at the end of the game?
Show-Detective-Kills
: true
# Should we kill both players if any innocent kills another?
# If this option is set to false then only the killer will die.
Wrong-Shot
:
# This option below overrides the reversed option.
Kill-Both
: true
# As true, victim will die; as false, shooter will die
Reversed
: false
# For instance, mm.join.<arena> -> <arena> is going to be replaced with target arena's id.
Permissions
:
# Leave this section empty so everyone can join.
# OP players will override all the permissions.
Join
:
""
# The permission needed to join full arenas.
Full-Game
:
""
# The permission needed to open shop menu.
Shop-Menu
:
""
# The permission needed to open knife skins menu.
Knife-Skins-Menu
:
""
# The permission needed to open death sounds menu.
Death-Sounds-Menu
:
""
# The permission needed to execute '/mm spectate' command.
Spectate-Command
:
""
# Should we block commands that are not associated with MM?
Block-Commands
: true
Whitelisted-Commands
:
[
]
# Type an existing word in the block name or its full name.
Uninteractable-Blocks
:
- BOOK
- TABLE
- ANVIL
- BREWING
- BOX
- CHEST
- NOTE
# See messages.yml for game bar messages.
# Should we create a game bar for in-game players?
Game-Bar-Enabled
: true
# Should we enable our Bungee-cord server support?
Bungee-Enabled
: false
# Enable Inventory Manager for your games? (Very useful feature for MULTI ARENA)
# This saves inventory of players and restores it after player leaves arena.
# Saved elements: max health, health, food, experience, full inventory, armor contents, and more.
Inventory-Manager:
Enabled
: true
# Usable attributes:
# game-mode, hunger, exp, level
# health, max-health, health-scale
# saturation, allow-flight, fire-ticks
Do-Not-Restore
:
-
"max-health"
-
"health-scale"
# Should we spawn golds if spawned golds' amount is equals or higher
# than gold spawns amount?
Disable-Gold-Limiter
: true
# Should we spawn golds randomly or at every spawner in each time?
Spawn-Gold-Every-Spawner-Mode
: true
# Should we disable fall damage?
Disable-Fall-Damage
: false
# Should we enable our MySQL support?
# See mysql.yml for detailed information.
Database-Enabled
: false
# Should we hide players' name tags in-game?
Name-Tags-Hidden
: true
# Should we hide in-game players to other players?
Hide-Players
: true
# Should players instantly leave the arena using leave item?
Instant-Leave
: false
# Should we check for any available updates?
Update-Notifier-Enabled
: true
User Placeholders
:
%mm_wins% - Win amount of player.
%mm_loses% - Lose amount of player.
%mm_kills% - Kill amount of player.
%mm_deaths% - Death amount of player.
%mm_highest_score% - Highest score of player.
%mm_coins% - Coin amount of player coins.
%mm_games_played% - Number of games played.
%mm_local_kills% - Local kill amount of player.
%mm_local_golds% - Local gold amount of player.
%mm_local_score% - Local score of player.
%mm_role% - Current role of player.
%mm_wins_murderer% - Current wins as Murderer.
%mm_loses_murderer% - Current loses as Murderer.
%mm_wins_detective% - Current wins as Detective.
%mm_loses_detective% - Current Loses as Detective.
%mm_wins_hero% - Current wins as Hero.
%mm_loses_hero% - Current loses as Hero.
%mm_is_murderer% - Returns true/false.
%mm_is_detective% - Returns true/false.[/LEFT]
%mm_is_innocent% - Returns true/false.
%mm_is_spectator% - Returns true/false.
%mm_is_dead% - Returns true/false.
%mm_is_fake_detective% - Returns true/false.
%mm_is_any_detective% - Returns true/false - Real or fake detective (after collecting 10 golds players can get a bow and become a fake detective)
[LEFT
]
Arena Placeholders
:
%mm_{arenaId}:map_name% - Map name of arena.
%mm_{arenaId}:minimum_players% - Minimum player amount of arena.
%mm_{arenaId}:maximum_players% - Maximum player amount of arena.
%mm_{arenaId}:players% - All players' amount of arena.
%mm_{arenaId}:players_left% - All alive players' amount of arena.
%mm_{arenaId}:alive_murderers% - Alive murderer amount of arena.
%mm_{arenaId}:alive_detectives% - Alive detective amount of arena.
%mm_{arenaId}:alive_innocents% - Alive innocent amount of arena.
%mm_{arenaId}:timer% - Current time of arena.
%mm_{arenaId}:timer_pretty% - Formatted time of arena.
%mm_{arenaId}:state% - Current arena state (not formatted).
%mm_{arenaId}:state_pretty% - Current arena state (formatted)
%mm_{arenaId}:can_be_spectated% - Returns true if the arena can be spectated at the moment, otherwise false.
Scoreboard Placeholders
:
%date% - Current date in dd/MM/yy format.
%map% - Map name of arena.
%mode% - Mode name of arena. (customizable via messages.yml)
%innocents_left% - Amount of alive innocents.
%murderers_left% - Amount of alive murderers.
%detectives_left% - Amount of alive detectives.
%players% - Amount of all alive players.
%min_players% - Minimum player amount of arena.
%max_players% - Maximumu player amount of arena.
%time% - Current timer of arena (not formatted).
%formatted_time% - Current timer of arena (formatted as MM:SS)
%kills% - Amount of player's kills in current game.
%role% - Role of the player. (all customizable via messages.yml)
%bow_status_INDEX% - (For instance, %bow_status_1%) Status of a bow as dropped or not (customizable via messages.yml)
%detective_status_INDEX% - (For instance, %detective_status_1% Status of a detective as they dead or not (customizable via messages.yml)
%murderer_name_INDEX% - (For instance, %murderer_name_1%) Name of the indexed murderer.
%murderer_kills_INDEX% - (For instance, %murderer_kills_1%) Kill amount of the indexed murderer.
Other Placeholders
:
%mm_online_players% - shows all in-game players.
%mm_online_players_(detectives)_(murderers)% - shows all in-game players with given detective and murderer amount (e.g. %mm_online_players_16_16%.
Supported Addons/Plugins
Code (YAML):
WhackMe
:
# Should we enable support if we find Whack Me plugin?
Enabled
: true
Golds-On-Join
: 1
Not-Enough-Gold
:
"&cYou need at least &61 Gold &cto buy this!"
Cannot-Do-That-In-Game
:
"&c&lYou can not join Whack Me while playing Murder Mystery!"
Cannot-Join-Now
:
"&c&lYou can not join Whack Me at the moment!"
# Should we allow players join Whack Me while playing Murder Mystery?
# Join attempt will be canceled if arena isn't in in-game state and the Murderer hasn't received their sword.
Prevent-Join-While-Playing
: false
Golds
:
# If player whacked 13 blocks they'll get ((13 / 2.6) * 1) golds at the end of the game.
Every-Point
: 2.6
Get
: 1
You-Won
:
"&a&lThe game has ended!\n&a&lYou scored &6&l%score% &a&lPoints and earned &6&l%golds% &a&lGold!"
Did-Not-Win
:
"&c&lYou haven't earned any golds! :("
Vault
:
# Should we enable support if we find Vault and an economy plugin?
Enabled
: true
# Should we use Vault balance instead of coins in-game shop?
Use-Balance-In-Shop
: true
# Should we reflect coin changes in player's Vault balance?
Integrate-Coins-With-Balance
: false
How to add game signs?
Sign lines can be configurable via messages.yml
Place a sign:
- Type [mm] to first line.
- Type your arena name to second line and click done.
Place a sign and open arena editor:
- Switch to arena options menu by clicking clock item.
- Look at the sign and click to the sign item on the editor.
bStats Metrics
This plugin is using bStats to collect some data from servers such as server location, Java version, server version, player amount etc. All information is anonymized.
Please do not use review section for your problems instead of doing that, use discussion section.
If you like the plugin don't forget to review us!
Copyright 2024 ©
Berke Akçen