MazePvP

Create constantly changing mazes with this plugin and fight against players!
<p>The default image for MazePvP</p>

The default image for MazePvP

<p>A hole in the floor. Anyone who falls in instantly dies.</p>

A hole in the floor. Anyone who falls in instantly dies.

<p>A hole in the floor. Anyone who falls in will instantly die. The heads of fallen mobs and players remain on the spikes.</p>

A hole in the floor. Anyone who falls in will instantly die. The heads of fallen mobs and players remain on the spikes.

<p>The boss of a maze. He cannot be killed and can kill players with one hit.</p>

The boss of a maze. He cannot be killed and can kill players with one hit.

Description

MazePvP

Tired of fighting other players on a dull, easy-to-navigate terrain? With this plugin, you can fight in a maze which is constantly changing shape while you're not looking! Even the players can reshape the maze with the right items. Beware of the mobs that appear and be on a lookout for treasure chests.
The source of this plugin is available in the jar files and also on github.

Features

  • Ability to create multiple mazes of any size
  • Indestructible bosses that can teleport and kill players instantly (by default)
  • Projectile items such as eggs, snowballs and ender pearls behave differently inside mazes
  • Mobs and chests randomly appear

Chasms

Holes can appear in the floor either naturally or because of players. They are filled with spikes, and anyone who falls into them instantly dies, so be sure not to fall! These can actually be jumped over if the timing and angle is exactly right.
http://dev.bukkit.org/media/images/68/21/Chasm.png

Items

When a player enters a maze, he will get some items to use. When exiting the maze, the inventory gets cleared, so don't go near the exit if you are still planning to fight inside. You can find more items inside treasure chests, and you can store them in ender chests so that you don't lose them after dying. Some items behave differently inside mazes.

Eggs

Eggs can be used to break the walls and floor. However, they do not break the "pillars" that are marked as mossy stone bricks. The floor will smoke for a few seconds before disappearing, so use that time to find safe footing!

Snowballs

You can use snowballs to restore parts of the floor or walls. Just throw them at a pillar or in a chasm.

Ender pearls

Instead of teleporting to where the pearl landed, you will teleport to a random location inside the maze, and you won't suffer any damage. These can really come in handy if you're falling into a chasm or facing a lot of enemies!

Bosses

Bosses are zombies with black clothes and a wither skeleton mask. By default, one will appear in every maze. He can teleport to any location, so you never know when you'll encounter him! If he falls into a chasm, he will teleport away before hitting the bottom. His HP and strength can be customized in the config file. By default, he cannot be killed and he can kill players with one hit.
http://dev.bukkit.org/media/images/67/723/Boss.png

How to use/install, quick setup

To install the plugin, just drop the jar in your plugins folder.
Here's a quick example setup:

  • Create a two-floored, 4x4 maze named "myMaze" where you are standing by using the command /mpcreate myMaze 4 2 2
  • If you'd like your players to enter the maze using join signs instead of the entrances, put three signs next to each other somewhere, look at the first one and type /mpjoinsign myMaze
  • Change the minimum amount of players by typing /mpsetplayernum myMaze 1 5
    This will allow at most 5 players to join, and 1 player is enough to start the fight.
  • If you want players to be transported to a waiting area while they are waiting for other players, build your waiting room and inside it, type /mpsetwp myMaze
  • Put up a sign somewhere in the waiting area, then look at it and type /mpleavesign myMaze
    This will create a sign that allows players to leave the waiting area if they get bored.

Now you're set! To test your maze, click on the join sign to get transported inside it. If you die 3 times or disconnect, you will return back to the join sign with your previous items.
You should only set the minimum players to 1 if you're testing the maze. When it's ready for other players to use, set it to a higher number.
Check the commands section below for details about the commands. You can also change the text of the signs and much more by editing the config.yml. Check the configuration section to see how.

Commands

These commands can be used to manage the mazes:

/mpcreate <name> <width> [height] <entrancenum> [X] [Y] [Z]Creates a maze with name <name> at [X] [Y] [Z] (or player's position if not specified). <width> is the number of 5x5 passages the maze should have, (for example, setting it to 5 will generaze a 25 block wide maze). [height] is the number of floors the maze should have (1 if omitted). Note that larger size mazes will take more time to generate (widths above 10 might take several seconds). <entrancenum> is the number of entrances/exits the maze should have.
/mpdelete <name>Removes the maze with the specified name, deleting all its blocks and killing all mobs inside it
/mplistLists all mazes in the current world and their locations
/mpclear <name>Clears a maze, making it ready for a new fight. It removes all entities in it and fills the chasms
/mpjoinsign <name>Turns the sign in front of the player into a join sign for the specified maze. If the join sign's text is longer than 4 lines, there must be more signs next to each other. (If you use the default text, you need to have 3 signs next to each other)
/mpsetplayernum <name> <minplayers> <maxplayers>Sets the minimum amount of players needed to start a fight and the maximum amount of players that can join. This only applies to mazes with join signs.
/mpsetwp <name> [X] [Y] [Z]Sets the waiting place position for a maze to the specified coordinates, or to the players position if they are left out. When a player joins that maze using join signs, he gets teleported to the waiting place.
/mpleavesign <name>Turns the sign in front of the player into a "leave sign" that can be used to leave the waiting place of the specified maze. This sign should be inside the waiting place of that maze
/mpremovewp <name>Removes the waiting place for a maze.
/mpstopfight <name>Stops the fight in the specified maze. This only applies to mazes with join signs.
/mpset [mazename] <property> <value>Used to set a property for a maze. The properties can be found in the maze's config file. If the maze name is omitted, the default property (that gets copied to newly created mazes) is set instead. You cannot set the item properties (like bosses.bossX.drops or startItems) with this. For that, use /mpadditem or /mpremoveitem instead
/mpget [mazename] <property>Shows the current value of the specified property of a maze. If the maze name is omitted, it shows the default property instead
/mpadditem [mazename] <property> [itemID] [amount] [weigh]Adds an item to an item property, like startitems. If mazename is omitted, the default property is set. If itemID, amount and weigh is omitted, the item in the player's hand is used (this only copies the id and amount of the item, but special data like enchantments aren't copied in the current version of this plugin). If you specify something like startitems.item2 for property, that item will be overwritten instead of a new item getting added
/mpremoveitemThere are two ways to use this command:
  • /mpremoveitem [mazename] <property> [itemID] [amount], the property being something like startitems
    In this case, the item with the specified id and amount gets removed from the property. If itemID and amount is omitted, the item in the player's hand is used.
  • /mpremoveitem [mazename] <property>, the property being something like boss.drops.item2
    In this case, the item specified by property is removed.
/mpaddboss [mazename]Adds a new boss to a maze (or to the default config if mazename is omitted) with default properties
/mpremoveboss [mazename] <bossNum>Removes the boss with number bossNum from the maze
/mpcopyboss [mazename] <bossNum>Adds a new boss to the maze by copying the boss with number bossNum
/mprecover <mazename>If there's saved player data for a maze (can only happen when the server crashed during a fight), this command recovers the items, enderchest content, gamemode and position of the players who were inside the maze

Permissions

mazepvp: Gives access to all commands in MazePvP. By default, this is given to all ops.

Configuration

This plugin has a config.yml file, in which various settings can be changed. Each maze also has its own config file in the Minecraft world folder with the name <mazename>.yml. When a new maze is created, it gets the configuration values from the main config.yml file.
Some settings can be changed individually for each maze by editing their config file or with the /mpset command. These settings will be marked in italics.

showHeadsOnSpikesWhether the heads of fallen players and mobs should appear on the spikes
canPlayersSpectateWhether players can enter the maze as spectators when the fight has already started
canSpectatorsSeeEachOtherWhether spectating players can see other spectators
replaceMobsWithBossWhether a boss should replace another mob when he respawns. This could be useful when there's a limit on how many mobs are allowed per chunk
protectMazesWhether maze blocks should be protected from players breaking them
fightStartDelayThe amount of seconds before a fight starts after enough players have joined. You can set this to 0 if you want the fight to start immediately, but then there won't be time for additional players to join at the last moment
playerLivesThe amount of lives a player has in a fight. If they run out, the player gets thrown out of the maze.
bosses.bossCountThe number of bosses in the maze
bosses.bossX.nameThe name of the boss that should appear in the chat
bosses.bossX.hpThe health of the boss, in half-hearts. For a normal zombie, this value would be 20. If this is 0 or less, the boss will have infinite HP
bosses.bossX.attackThe strength of the boss. If this is 0 or less, the boss will have infinite attack
bosses.bossX.mazeLevelThe maze floor that the boss is bound to (1, 2, 3, etc.) 0 if he's not bound to any floor
bosses.bossX.drops.itemXItems that the boss could drop. An item with higher weigh will have a higher chance of getting dropped
bosses.bossX.drops.itemCountThis number indicates how many items there are in bosses.bossX.drops.* For example, if bosses.bossX.drops has item1 and item2 set, this value should be 2
commands.*These are commands that get executed at certain events. You can use special symbols that get substituted as something else. These symbols are:
  • <player>: The name of the player who triggered the event
  • <allPlayers>: If this is in the text, the command will execute for every player and their names will be substituted where this is found
  • <otherPlayers>: Same as <allPlayers>, except that it doesn't contain the player who triggers the event.
commands.fightStartedThe command to execute when the fight starts. <player> takes no value
commands.fightRespawnThe command to execute when a player respawns. <player> is the name of the respawning player
commands.fightPlayerOutThe command to execute when a fighting player leaves the maze, either by quitting or by losing all lives. <player> is the name of the leaving player
commands.fightWinThe command to execute when a player wins. <player> is the name of the winning player

For example, if you want to teleport all players to the respawning player, you should put the following into commands.fightRespawn:
tp <otherPlayers> <player>

texts.*These are the texts that are showed to the players on a sign or during a fight. You can use special symbols that get substituted as something else. These symbols are:
  • <name>: The name of the maze the text is referring to
  • <currentP>: The current number of players that joined the maze
  • <minP>: The minimum number of players needed to start the fight
  • <maxP>: The maximum number of players allowed in the maze
  • <remainingP>: The number of players that have to join before the fight can start. This is basically minP − currentP
  • <state>: The state of the maze: This shows whether the fight has started or not
  • <timeLeft>: The amount of seconds left until the fight starts. This should only appear in the countdown message
  • <livesLeft>: The amount of lives the player has left. This should only appear in the respawn message
    If you're not sure how to use these, check the default configuration file to see how they are used.
texts.startedStateThe text that should replace <state> when the fight has started
texts.waitingStateThe text that should replace <state> when the fight hasn't yet started
texts.joinSignThe text that appears on a join sign. This can have multiple lines. If it has more than 4 lines, the rest of the text is shown on the next sign
texts.leaveSignSame as texts.joinSign, just for the "leave sign" that is used to leave a waiting area
texts.joinBroadcastThe message that gets sent to joined players when another player joins or leaves
texts.joinBroadcastWhenFullSame as texts.joinBroadcast, except that this is sent when the required amount of players have joined already
texts.countdownThe message that gets sent to joined players each second during the countdown
texts.fightStartedThe message that gets sent to joined players when the fight starts
texts.fightRespawnThe message that gets sent to a player when he respawns during a fight
texts.fightRespawnLastLifeSame as texts.fightRespawn, except that this is sent when the player has 1 life left
texts.fightPlayerOutThe message that gets sent to players still in fight when a player loses all lives
texts.fightWinThe message that gets to the last remaining player
texts.fightStoppedThe message that gets sent when someone uses the /mpstopfight command
texts.onJoinThe message that gets sent when a player joins a maze
texts.onLeaveThe message that gets sent when a player leaves a maze
texts.onJoinAfterFightStartedThe message that gets sent when a player tries to join when the fight has already started
texts.onJoinWhenMazeFullThe message that gets sent when a player tries to join when the maze is full
texts.onJoinWhenAlreadyJoinedOtherMazeThe message that gets sent when a player tries to join a maze while he has joined another one
probabilities.groundReappear The rate at which chasms in the ground will heal. If this is set to a low value, they will disappear slower
probabilities.chestAppearThe chance for a chest to appear at certain intervals.
probabilities.enderChestAppearThe chance for an ender chest to appear at certain intervals.
probabilities.mobAppearThe chance of a mob appearing at certain intervals.
chestItems.itemXItems that can appear inside chests. Items with higher weigh will have a higher chance of appearing in treasure chests.
chestItems.itemCountLike bosses.bossX.drops.itemCount, this number indicates how many items there are in chestItems.* For example, if chestItems has item1 through item10 set, this value should be 10
startItems.itemXItems that players get when entering a maze
startItems.itemCountLike bosses.bossX.drops.itemCount, this number indicates how many items there are in startItems.* For example, if startItems has item1 through item4 set, this value should be 4
blocks.*These properties specify what kind of blocks the maze is made of. They store the block id and data of the blocks that make up some part of the maze. For example, if blocks.floor has the following value:

98:1 98 98 98:1
98 41 41 98
98 41 41 98
98:1 98 98 98:1
That means that the floor has gold blocks in the middle, stone bricks on the sides, and mossy stone bricks at the four edges.
If these values are set using /mpset, then for the value you have to write all the blocks in each row as one line, with the values separated by some character that's not ":" (because that's used to specify the data value for a block). For example, you can change the floor to the above pattern with the following:
/mpset blocks.floor 98:1_98_98_98:1_98_41_41_98_98_41_41_98_98:1_98_98_98:1

blocks.wallThe blocks for the walls of the maze
blocks.higherWallThe blocks for the walls of higher levels
blocks.outerWallThe blocks for the outermost walls
blocks.pillarThe blocks for the pillars (the ones that are by default covered with mossy cobblestone)
blocks.outerPillarThe blocks for the outermost pillars
blocks.floorThe blocks for the floor
blocks.higherWallThe blocks for the floor of higher levels
blocks.lowerFloorThe blocks for the part that's directly under the spikes
blocks.spikesThe blocks for the spikes in a chasm
blocks.ceilingThe blocks for the ceiling

Support

If you have any suggestion or encounter a bug, post a comment or send me a PM!

The MazePvP Team

profile avatar
  • 1
    Projects
  • 5.9K
    Downloads
Donate