Package org.bukkit.event

# Class Event

java.lang.Object
org.bukkit.event.Event

Direct Known Subclasses:
  `AsyncPlayerPreLoginEvent`, `AsyncTabCompleteEvent`, `BlockEvent`, `EntityEvent`, `FillProfileEvent`, `GS4QueryEvent`, `HangingEvent`, `InventoryEvent`, `InventoryMoveItemEvent`, `InventoryPickupItemEvent`, `LookupProfileEvent`, `MasterBlockFireEvent`, `PlayerConnectionCloseEvent`, `PlayerEvent`, `PlayerHandshakeEvent`, `PlayerLeashEntityEvent`, `PlayerPreLoginEvent`, `PreCreatureSpawnEvent`, `PreFillProfileEvent`, `PreLookupProfileEvent`, `ProfileWhitelistVerifyEvent`, `ServerEvent`, `ServerExceptionEvent`, `ServerTickEndEvent`, `ServerTickStartEvent`, `SpectatorTeleportEvent`, `TabCompleteEvent`, `ThrownEggHatchEvent`, `UnknownCommandEvent`, `VehicleEvent`, `WeatherEvent`, `WhitelistToggleEvent`, `WorldEvent`

public abstract class Event extends Object
Represents an event. All events require a static method named getHandlerList() which returns the same `HandlerList` as `getHandlers()`.

See Also:
  - `PluginManager.callEvent(Event)`
  - `PluginManager.registerEvents(Listener,Plugin)`

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`static enum`
`Event.Result`

## Constructor Summary

Constructors
Constructor
Description
`Event()`
The default constructor is defined for cleaner code.
`Event(boolean isAsync)`
This constructor is used to explicitly declare an event as synchronous or asynchronous.

## Method Summary

Modifier and Type
Method
Description
`boolean`
`callEvent()`
Calls the event and tests if cancelled.
`@NotNull String`
`getEventName()`
Convenience method for providing a user-friendly identifier.
`abstract @NotNull HandlerList`
`getHandlers()`
`final boolean`
`isAsynchronous()`
Any custom event that should not by synchronized with other events must use the specific constructor.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### Event

public Event()
The default constructor is defined for cleaner code. This constructor assumes the event is synchronous.

### Event

public Event(boolean isAsync)
This constructor is used to explicitly declare an event as synchronous or asynchronous.

Parameters:
  `isAsync` - true indicates the event will fire asynchronously, false by default from default constructor

## Method Details

### callEvent

public boolean callEvent()
Calls the event and tests if cancelled.

Returns:
  false if event was cancelled, if cancellable. otherwise true.

### getEventName

@NotNull public @NotNull String getEventName()
Convenience method for providing a user-friendly identifier. By default, it is the event's class's simple name.

Returns:
  name of this event

### getHandlers

@NotNull public abstract @NotNull HandlerList getHandlers()

### isAsynchronous

public final boolean isAsynchronous()
Any custom event that should not by synchronized with other events must use the specific constructor. These are the caveats of using an asynchronous event:

- The event is never fired from inside code triggered by a synchronous event. Attempting to do so results in an `IllegalStateException`.
- However, asynchronous event handlers may fire synchronous or asynchronous events
- The event may be fired multiple times simultaneously and in any order.
- Any newly registered or unregistered handler is ignored after an event starts execution.
- The handlers for this event may block for any length of time.
- Some implementations may selectively declare a specific event use as asynchronous. This behavior should be clearly defined.
- Asynchronous calls are not calculated in the plugin timing system.

Returns:
  false by default, true if the event fires asynchronously