Custom Events is a highly customizable plugin that gives you the power to completely customize your server, all from an in-game GUI. It's almost like making your own custom plugins — but you don't need to know how to code.

Keep reading to see just a few of the things you can do with Custom Events

200+ Events | 300+ Actions | 200+ Conditions | Variables | Placeholders | GUI Based

9W3511s.gif qGDyYRN.gif
ScLuZjS.gif uOCf9A8.gif
Pxhx9IW.gif 0e2SK4u.gif
All of this is possible without any coding. Click on any one of the gifs full a slower, full-size version

Here's a short list of just a few of the things you can make with Custom Events, without any coding:

⭐  Make creepers explode with fireworks
⭐  Track player stats to make your own quests
⭐  Hook in with CustomItems to make armor that evolves
⭐  Custom join, leave, and death messages and actions
⭐  Store the player's last death location
⭐  Make it so creepers explode when they fall in lava
⭐  Create skills for players, like increasing "fall resistance" every time they take a fall more than 10 blocks.

⭐  And many, many more things — the only limit is your imagination. If you have an idea but aren't sure if it's possible, just ask!

CustomEvents is extremely easy to learn, and because you can do everything from the in-game GUI, it's extremely easy to use as well


Open the CustomEvents GUI with /ce create. From the in-game GUI, you can pick different actions that you want to happen on different events, like when a block breaks, when a player takes damage, and more!

  Using the CustomEvents GUI

Use placeholders like {} or {block.type} to customize actions. 

For example, when sending a message, you could send the message "Hey, {}. You're at the location {player.location.x}, {player.location.y}, {player.location.z} in {}, and if we divide your health by 2, you would have { / 2} health"

You can even combine placeholders and do math on them, like this

{ + {player.exp * {player.level}}}.

List all available placeholders for a event with /ce placeholders <event> [parent]. For example, /ce placeholders BlockBreak to get all available placeholders for the BlockBreak event, and /ce placeholders BlockBreak block.location to get all available children to the block.location placeholder of BlockBreak (for example, block.location.x and

Variables (Globals)

Whenever you want to store some type of information, you can use globals! You can use globals to do things like

⭐  Save a player's progress through a quest

⭐  Store a player's statistics

⭐  Store the player's last death location

And more! You can also use globals with CustomItems

To save something as a global, you would use the "setGlobal" action. To check them, you can use the "global" condition. And, to print them out or use them elsewhere, you can use the {global.GLOBAL_NAME} placeholder, like {global.myGlobalNameHere}

You can also use {placeholders} in the names of globals to make globals for certain players or for certain worlds. For example, to store something globally for a world, you could name the global myGlobal_world_{}. To store something about a player, you could name the global myGlobal_player_{player.uuid}. As a more complex example, you could also store something about the number of times a player has done something with a certain mob type in a certain world:


If you want to get the value of this global as a placeholder, just use


  How it works

Manually editing YML files

If you want, you can opt to not use the GUI, and instead manually edit YML files for your items. Keep in mind that this is for advanced users, and it's a lot simpler to just use the GUI!

Read more on the Manually Editing YML Files page