程序包 org.bukkit.event

# 类 Event

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

直接已知子类:
  `AsyncPlayerPreLoginEvent`, `BlockEvent`, `EntityEvent`, `HangingEvent`, `InventoryEvent`, `InventoryMoveItemEvent`, `InventoryPickupItemEvent`, `PlayerEvent`, `PlayerLeashEntityEvent`, `PlayerPreLoginEvent`, `ServerEvent`, `TabCompleteEvent`, `VehicleEvent`, `WeatherEvent`, `WorldEvent`

public abstract class Event extends Object
代表事件.

所有事件需要添加一个名为 getHandlerList() 的静态方法，返回与`getHandlers()`一样的`HandlerList`.

译注:前一句话翻译成代码形式, 就是这样:

        private static final HandlerList handlers = new HandlerList();

        public HandlerList getHandlers() {
            return handlers;
        }

        public static HandlerList getHandlerList() {
            return handlers;
        }

另请参阅:
  - `PluginManager.callEvent(Event)`
  - `PluginManager.registerEvents(Listener,Plugin)`

- ## 嵌套类概要

  嵌套类
  修饰符和类型
  类
  说明
  `static enum`
  `Event.Result`

- ## 构造器概要

  构造器
  构造器
  说明
  `Event()`
  为了更简单清晰的代码而制造。
  `Event(boolean isAsync)`
  这个构造器用于显示声明一个事件是同步还是异步的.

- ## 方法概要

  修饰符和类型
  方法
  说明
  `@NotNull String`
  `getEventName()`
  获取这个事件的名称,默认情况下,他是事件的类的简短名称.
  `abstract @NotNull HandlerList`
  `getHandlers()`
  `final boolean`
  `isAsynchronous()`
  任何自定义事件应该不与其他事件同步,必须使用特定的构造器.这是对使用异步事件的一些警告(注意事项)： 这个事件永远不会触发内部代码触发的同步事件.尝试这么做的结果会得到`IllegalStateException`. 不过，异步事件处理器可能触发同步或异步事件. 事件可能在多个时间任何优先级被触发. 任何新注册或未注册的处理器将在一个事件开始执行后被忽略. 这个事件的处理器可能阻塞一段时间. 一些实现可能会有选择地声明一个事件是异步的.这一行为应被明确定义. 异步调用不会计算在插件定时系统中.

  ### 从类继承的方法 java.lang.Object

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

- ## 构造器详细资料

  - ### 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.

    参数:
      `isAsync` - 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.

    返回:
      这个事件的名称

  - ### getHandlers

    @NotNull public abstract @NotNull HandlerList getHandlers()

  - ### isAsynchronous

    public final boolean isAsynchronous()
    任何自定义事件应该不与其他事件同步,必须使用特定的构造器.这是对使用异步事件的一些警告(注意事项)：
    - 这个事件永远不会触发内部代码触发的同步事件.尝试这么做的结果会得到`IllegalStateException`.
    - 不过，异步事件处理器可能触发同步或异步事件.
    - 事件可能在多个时间任何优先级被触发.
    - 任何新注册或未注册的处理器将在一个事件开始执行后被忽略.
    - 这个事件的处理器可能阻塞一段时间.
    - 一些实现可能会有选择地声明一个事件是异步的.这一行为应被明确定义.
    - 异步调用不会计算在插件定时系统中.

    原文：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.
    返回:
      默认情况下返回false, 事件触发异步了返回true