My remake of the classic minigame Murder Mystery.
Features:
- Build and use your own maps
- Start game with all online players or only a certain list (names separated by commas, no spaces )
- Automatically fill chests and set blocks when a game starts or ends
- All messages are customizable
- Scoreboard with per-player information onscreen
- Customize murder sword, detective bow, and bystander invisibility potion
- Turn bystander potion on or off
- Optional deputy role with a bow that does not drop on death
- Ability to change total time, grace period length, and more in the config
- Commands to control remaining time, get roles, and more
- Auto restart on random maps using shuffle mode
- Traitor test command for command blocks
- Update checker
Commands / Permissions
Commands:
- /mm start <map> [players] - mm.start - Start a game on a specific map
- /mm shuffle [players] - mm.start - Enable shuffle mode (Explained above)
- /mm stop - mm.stop - Manually stop a game and/or disable shuffle mode
- /mm kill <player> - mm.kill - Simulate a player being killed
- /mm revive <player> - mm.revive - Revive a player that was killed
- /mm role <player> - mm.role - Get the role of a player
- /mm time <set|add|remove> <amount> - mm.time - Change the remaining time (Amount in seconds)
- /mm create <map> [displayname] - mm.create - Create a map with the specified name and display name
- /mm delete <map> - mm.delete - Remove a map from the config
- /mm reload - mm.reload - Reload the config file
Additional Permissions:
- mm.update - Notifies the player when an update is available
- mm.immune - Makes a player immune from being killed (Except by the /mm kill command) - Note: Opped players do not have this permission by default
- mm.gamemode - Allows a player to change their gamemode while playing
- mm.drop - Allows a player to drop items while playing
Configuration
maps :
map1 : # This is an example, use it as a template
shuffle-exempt : true
name : 'Map 1'
spawn :
location : 0,100,0
yaw : 0
pitch : 0
world : world
start :
commands :
- 'say Game Starting'
blocks :
diamond :
location : 0,99,0
block : DIAMOND_BLOCK
chest :
location : 1,100,0
block : CHEST
contents :
0 :
material : COAL_BLOCK
amount : 1
name : '&5Free Coal'
glow : false
lore :
- '&6Its free!'
- '&3For all !'
13 :
material : EMERALD
amount : 5
name : '&aMystic Emerald'
glow : true
lore :
- '&6Rare and very ... '
- '&cValuable!'
end :
commands :
- 'say Game Over!'
blocks :
diamond :
location : 0,99,0
block : GRASS_BLOCK
chest :
location : 1,100,0
block : AIR
enable-deputy : false
items :
sword :
name : '&4Murderer Sword'
lore :
- 'Used to kill bystanders'
bow :
name : '&1Detective Bow'
lore :
- 'Used to kill the murderer'
deputy-bow :
name : '&9Deputy Bow'
lore :
- 'Used to kill the murderer'
potion :
enabled : false
name : '&6Invis Potion'
lore :
- 'Used to hide from the murderer'
duration : 30
type : 'splash'
color : '189,40,42'
titles :
in : 10
stay : 30
out : 10
murderer :
title : 'You are the &4Murderer'
subtitle : '&eGoal : Kill all players'
role : '&4Murderer'
detective :
title : 'You are the &1Detective'
subtitle : '&eGoal : Kill the murderer'
role : '&1Detective'
deputy :
title : 'You are the &9Deputy'
subtitle : '&eGoal : Help the detective'
role : '&9Deputy'
bystander :
title : 'You are a &6Bystander'
subtitle : '&eGoal : Don''t get killed'
role : '&6Bystander'
dead :
role : '&4Dead'
game-over :
title : 'Game Over'
subtitle : 'Winner : %winner%'
roles :
players : '&6Players'
murderer : '&4The Murderer'
timer :
team : 'MurderPluginTeam'
objective : 'MurderPluginObj'
time : 300
grace-period : 20
restart-delay : 5
scoreboard :
title : '&4&lMurder Mystery'
lines :
- ''
- '&aMap : %map%'
- ''
- 'Time Remaining : &e%time%'
- 'Players Remaining : &a%players%'
- ''
- 'Role : %role%'
- ''
debug : false
update-checker : true
lang :
prefix : '&8 [ &4MurderMystery&8 ] &r '
messages :
you-died : '&cYou were killed!'
you-revived : '&aYou were revived'
player-died : '&cA player died!'
player-revived : '&aA player was revived'
player-quit : '&c %player% left the server, so they were removed from the game'
died-sound : ENTITY_PLAYER_DEATH
killed-inno : '&6You killed an innocent player!'
you-got-bow : '&aYou picked up the bow'
player-got-bow : '&aA player picked up the bow!'
detective-dead : '&9The detective has been killed! Find the bow to become the next detective!'
murderer-dead : '&9The murderer has been killed!'
all-dead : '&9The murderer has killed everyone!'
time-up : '&9The murderer ran out of time!'
grace-ending : '&6The grace period ends in %time% seconds'
grace-ended : '&6The grace period has ended!'
auto-restart : '&6Starting a new game in %time% seconds!'
gamemode : '&cYou can''t change your gamemode during a game!'
drop : '&cYou can''t drop items during a game!'
gold : '&6You picked up %amount% gold!'
update : '&aAn update is available! Current version : %current%, new version: %new%. Download it from %url%'
command :
usage : '&cUsage : /mm <start|shuffle|stop|reload|kill|revive|role|tt|time>'
no-perm : '&cYou do not have permission to do that'
nan : '&cThat is not a valid number'
invalid : '&cInvalid Usage. Use /mm for help'
unknown-error : '&cAn error occurred - Check the console for more details'
not-playing : '&cThat player is not currently in a game'
not-running : '&cNo game is currently running'
maps : '&aAvailable Maps:'
create :
usage : '&cUsage : /mm create <map> [ name ] '
success : '&aSuccessfully created %map% at your location'
already-exists : '&c %map% already exists'
not-player : '&cYou must be a player to do that!'
delete :
usage : '&cUsage : /mm delete <map>'
success : '&aSuccessfully deleted %map%'
doesnt-exist : '&c %map% does not exist'
reload :
usage : '&cUsage : /mm reload'
success : '&aThe config has been reloaded'
start :
usage : '&cUsage : /mm start <map>'
already-running : '&cA game is already running'
shuffle-enabled : '&cShuffle is enabled! Disable it first'
invalid-map : '&c %map% does not exist'
not-enough-players : '&cThere are not enough players to start a game on %map%'
invalid-team : '&cThe team name is invalid. ( Is it longer than 16 characters? ) '
invalid-objective : '&cThe objective name is invalid. ( Is it longer than 16 characters? ) '
success : '&aSuccessfully started Murder Mystery on map %map%'
shuffle :
enabled : '&aShuffle is enabled'
disabled : '&cShuffle has been disabled'
kill :
usage : '&cUsage : /mm kill <player>'
success : '&aSuccessfully killed %player%'
already-dead : '&cThat player is already dead'
revive :
usage : '&cUsage : /mm revive <player>'
success : '&aSuccessfully revived %player%'
not-dead : '&cThat player is not dead'
role :
usage : '&cUsage : /mm role <player>'
success : '&a %player% is %role%'
tt :
usage : '&cUsage : /mm tt <player>'
success : '&aThat player is the Murderer'
failure : '&cThat player is not the Murderer'
time :
usage : '&cUsage : /mm time <set|add|remove> <amount>'
success : '&aSuccessfully changed the time to %time%'
action : '&cThat is not a valid action, use set/add/remove'
over-time : '&cThat is over the maximum time'
under-time : '&cThat would give the time a negative value'
stop :
usage : '&cUsage : /mm stop'
success : '&aSuccessfully stopped game on map %map%'If you have any ideas for me or find any bugs in the plugin or this page please report them to me on GitHub
Also, thanks to OtakusAreNEET and Arti_Creep for helping me test this plugin.
Thanks for using my plugin, and I hope you enjoy!
Similar projects
Plugin →Let Me Despawn
Improves performance by tweaking mob despawn rules. Say bye to pesky unintentional persistent mobs.
25MSueta
JourneyMap
Real-time map used for mapping in-game or your browser as you explore.
14.7MSueta
Emotecraft
Create your own emotes in Minecraft.
7.5MSueta
Simple Tpa
A simple tpa plugin which sends requests
5.4MSueta
Common Network
Forge and Fabric Unified Networking Solution
3.9MSueta
Set Home
A lightweight plugin for players to set their homes.
3.8MSueta