Name | Script Event After vs On |
Description | Modern ScriptEvents let you choose between "on" and "after".
An "on" event looks like "on player breaks block:" while an "after" event looks like "after player breaks block:". An "on" event fires *before* the event actually happens in the world. This means some relevant data won't be updated (for example, "<context.location.material>" would still show the block type that is going to be broken) and the result of the event can be changed (eg the event can be cancelled to stop it from actually going through). An "after" event, as the name implies, fires *after* the event actually happens. This means data will be already updated to the new state (so "<context.location.material>" would now show air) but could potentially contain an arbitrary new state from unrelated changes (for example "<context.location.material>" might now show a different block type, or the original one, if the event was changed, or another thing happened right after the event but before the 'after' event ran). This also means you cannot affect the outcome of the event at all (you can't cancel it or anything else - the "determine" command does nothing). See also Safety In Events |
Group | Script Events |
Source | https://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/events/ScriptEvent.java#L361 |