632b781af97903
本帖最后由 632b781af97903 于 2022-4-28 11:39 编辑

Bukkit.getServer().getPluginManager().callEvent(e)
isCancelled也显示true,但是还是能执行。还是说自定义事件不能取消吗?

                e.setCancelled(true);
                e.getPlayer().sendMessage("命令: " + e.isCancelled());
  1. public class PlayerCommandPreprocessE extends PlayerCommandPreprocessEvent {
  2.         public PlayerCommandPreprocessE(PlayerCommandPreprocessEvent e) {
  3.                 super(e.getPlayer(), e.getMessage());
  4.         }
  5.         private static final HandlerList handlers = new HandlerList();

  6.         @Override
  7.         public HandlerList getHandlers() {
  8.                 return handlers;
  9.         }

  10.         public static HandlerList getHandlerList() {
  11.                 return handlers;
  12.         }
  13. }
复制代码




nanmenyangde
本帖最后由 nanmenyangde 于 2022-4-30 16:31 编辑
  1. private boolean isCancelled = false;
  2. @Override
  3. public boolean isCancelled() {
  4.     // Cancellable 需要
  5.     return isCancelled;
  6. }

  7. @Override
  8. public void setCancelled(boolean b) {
  9.     // Cancellable 需要
  10.     sCancelled = b;
  11. }
复制代码

你需要在自己的事件类里面重载isCancelled()和setCancelled()函数才能取消。