类org.bukkit.event.block.BlockCanBuildEvent源码实例Demo

下面列出了怎么用org.bukkit.event.block.BlockCanBuildEvent的API类实例代码及写法,或者点击链接到github查看源代码。

@EventHandler(ignoreCancelled = true)
public void canBuild(BlockCanBuildEvent e) {
    if (!plugin.isDisplay()
            || DisplayItem.getNowUsing() != DisplayType.ARMORSTAND
            || e.isBuildable()) {
        return;
    }

    final Collection<Entity> entities =
            e.getBlock().getWorld().getNearbyEntities(e.getBlock().getLocation(), 1.0, 1, 1.0);

    for (final Entity entity : entities) {
        if (!(entity instanceof ArmorStand)
                || !DisplayItem.checkIsGuardItemStack(((ArmorStand) entity).getItemInHand())) {
            continue;
        }

        e.setBuildable(true);
        Util.debugLog(
                "Re-set the allowed build flag here because it found the cause of the display-item blocking it before.");
        return;
    }
}
 
源代码2 项目: Skript   文件: EffCancelEvent.java
@SuppressWarnings("null")
@Override
public boolean init(final Expression<?>[] vars, final int matchedPattern, final Kleenean isDelayed, final ParseResult parser) {
	if (isDelayed == Kleenean.TRUE) {
		Skript.error("Can't cancel an event anymore after it has already passed", ErrorQuality.SEMANTIC_ERROR);
		return false;
	}
	cancel = matchedPattern == 0;
	final Class<? extends Event>[] es = ScriptLoader.getCurrentEvents();
	if (es == null)
		return false;
	for (final Class<? extends Event> e : es) {
		if (Cancellable.class.isAssignableFrom(e) || BlockCanBuildEvent.class.isAssignableFrom(e))
			return true; // TODO warning if some event(s) cannot be cancelled even though some can (needs a way to be suppressed)
	}
	if (ScriptLoader.isCurrentEvent(PlayerLoginEvent.class))
		Skript.error("A connect event cannot be cancelled, but the player may be kicked ('kick player by reason of \"...\"')", ErrorQuality.SEMANTIC_ERROR);
	else
		Skript.error(Utils.A(ScriptLoader.getCurrentEventName()) + " event cannot be cancelled", ErrorQuality.SEMANTIC_ERROR);
	return false;
}
 
源代码3 项目: Skript   文件: EffCancelEvent.java
@Override
public void execute(final Event e) {
	if (e instanceof Cancellable)
		((Cancellable) e).setCancelled(cancel);
	if (e instanceof PlayerInteractEvent) {
		EvtClick.interactTracker.eventModified((Cancellable) e);
		((PlayerInteractEvent) e).setUseItemInHand(cancel ? Result.DENY : Result.DEFAULT);
		((PlayerInteractEvent) e).setUseInteractedBlock(cancel ? Result.DENY : Result.DEFAULT);
	} else if (e instanceof BlockCanBuildEvent) {
		((BlockCanBuildEvent) e).setBuildable(!cancel);
	} else if (e instanceof PlayerDropItemEvent) {
		PlayerUtils.updateInventory(((PlayerDropItemEvent) e).getPlayer());
	}
}
 
 类所在包
 类方法
 同包方法