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
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
Usage
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
Placeholders
Use placeholders like {player.health} or {block.type} to customize actions.
For example, when sending a message, you could send the message "Hey, {player.name}. You're at the location {player.location.x}, {player.location.y}, {player.location.z} in {player.location.world.name}, and if we divide your health by 2, you would have {player.health / 2} health"
You can even combine placeholders and do math on them, like this
{player.health + {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 block.location.world)
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_{block.world.name}. 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:
myGlobal_player_{player.uuid}_world_{player.world.name}_type_{target.type}
If you want to get the value of this global as a placeholder, just use
{global.myGlobal_player_{player.uuid}_world_{player.world.name}_type_{target.type}}
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
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
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:








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
Usage
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
Placeholders
Use placeholders like {player.health} or {block.type} to customize actions.
For example, when sending a message, you could send the message "Hey, {player.name}. You're at the location {player.location.x}, {player.location.y}, {player.location.z} in {player.location.world.name}, and if we divide your health by 2, you would have {player.health / 2} health"
You can even combine placeholders and do math on them, like this
{player.health + {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 block.location.world)
Variables (Globals)
Whenever you want to store some type of information, you can use globals! You can use globals to do things like



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_{block.world.name}. 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:
myGlobal_player_{player.uuid}_world_{player.world.name}_type_{target.type}
If you want to get the value of this global as a placeholder, just use
{global.myGlobal_player_{player.uuid}_world_{player.world.name}_type_{target.type}}
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