Java 类org.bukkit.entity.minecart.ExplosiveMinecart 实例源码

项目:ProjectAres    文件:DestroyableMatchModule.java   
/**
 * This handler only checks to see if the event should be cancelled. It does not change the
 * state of any Destroyables.
 */
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void testBlockChange(BlockTransformEvent event) {
    if(this.match.getWorld() != event.getWorld() || !this.anyDestroyableAffected(event)) {
        return;
    }

    // This is a temp fix until there is a tracker for placed minecarts (only dispensed are tracked right now)
    if((event.getCause() instanceof EntityExplodeEvent &&
       ((EntityExplodeEvent) event.getCause()).getEntity() instanceof ExplosiveMinecart) ||
       event.getCause() instanceof BlockPistonExtendEvent ||
       event.getCause() instanceof BlockPistonRetractEvent) {

        event.setCancelled(true);
        return;
    }

    for(Destroyable destroyable : this.destroyables) {
        String reasonKey = destroyable.testBlockChange(event.getOldState(), event.getNewState(), ParticipantBlockTransformEvent.getPlayerState(event));
        if(reasonKey != null) {
            event.setCancelled(true, new TranslatableComponent(reasonKey));
            return;
        }
    }
}
项目:Essentials    文件:EssentialsProtectEntityListener.java   
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPaintingBreak(final HangingBreakByEntityEvent event)
{
    final ProtectHolder settings = prot.getSettings();
    Entity remover = event.getRemover();
    if ((event.getCause() == HangingBreakEvent.RemoveCause.ENTITY)
        && ((remover instanceof Creeper) && getSettings().isCreeperBlockdamage())
        || ((remover instanceof Wither) && getSettings().isWitherSpawnBlockdamage())
        || ((remover instanceof Fireball) && getSettings().isFireballBlockdamage())
        || ((remover instanceof TNTPrimed) && getSettings().isTntBlockdamage())
        || ((remover instanceof WitherSkull) && getSettings().isWitherskullBlockdamage())
        || ((remover instanceof ExplosiveMinecart) && getSettings().isTntMinecartBlockdamage()))
    {
        event.setCancelled(true);
    }
}
项目:Essentials    文件:EssentialsProtectEntityListener.java   
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onEntityExplode(final EntityExplodeEvent event)
{
    final int maxHeight = prot.getSettings().getData().getCreeperMaxHeight();
    Entity entity = event.getEntity();

    //Block damage prevention section
    if (entity instanceof EnderDragon && getSettings().isEnderdragonBlockdamage())
    {
        event.setCancelled(true);
    }
    else if (entity instanceof Wither && getSettings().isWitherSpawnBlockdamage())
    {
        event.setCancelled(true);
    }
    else if (entity instanceof Creeper && (getSettings().isCreeperBlockdamage() || getSettings().isCreeperBlockdamage()
                                           || (maxHeight >= 0 && event.getLocation().getBlockY() > maxHeight)))
    {
        event.setCancelled(true);
        event.getLocation().getWorld().createExplosion(event.getLocation(), 0F);
    }
    else if (entity instanceof TNTPrimed && getSettings().isTntBlockdamage())
    {
        event.setCancelled(true);
    }
    else if ((entity instanceof Fireball || entity instanceof SmallFireball) && getSettings().isFireballBlockdamage())
    {
        event.setCancelled(true);
    }
    else if ((entity instanceof WitherSkull) && getSettings().isWitherskullBlockdamage())
    {
        event.setCancelled(true);
    }
    else if ((entity instanceof ExplosiveMinecart) && getSettings().isTntMinecartBlockdamage())
    {
        event.setCancelled(true);
    }
}
项目:ProjectAres    文件:CoreMatchModule.java   
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void breakCheck(final BlockTransformEvent event) {
    if(event.getWorld() != this.match.getWorld()) return;
    ParticipantState player = ParticipantBlockTransformEvent.getPlayerState(event);

    Vector blockVector = BlockUtils.center(event.getNewState()).toVector();

    for(Core core : this.cores) {
        if(!core.hasLeaked() && core.getCasingRegion().contains(blockVector)) {
            if(event.getNewState().getType() == Material.AIR) {
                if(player != null) {
                    Competitor team = player.getParty();

                    if(team == core.getOwner()) {
                        event.setCancelled(true, new TranslatableComponent("match.core.damageOwn"));
                    } else if (event.getOldState().getData().equals(core.getMaterial())) {
                        this.match.getPluginManager().callEvent(new CoreBlockBreakEvent(core, player, event.getOldState()));
                        core.touch(player);

                        // Note: team may not have touched a broken core if a different team broke it
                        if(!core.isCompleted(team) && !core.hasTouched(team)) {
                            this.match.getPluginManager().callEvent(new GoalStatusChangeEvent(core));
                        }
                    }
                } else if(event.getCause() instanceof EntityExplodeEvent) {
                    // this is a temp fix until there is a tracker for placed minecarts (only dispensed are tracked right now)
                    if(((EntityExplodeEvent) event.getCause()).getEntity() instanceof ExplosiveMinecart) {
                        event.setCancelled(true);
                    }
                } else if(event.getCause() instanceof BlockPistonRetractEvent) {
                    event.setCancelled(true);
                }
            } else if(event.getCause() instanceof BlockPistonExtendEvent) {
                event.setCancelled(true);
            } else if(event.getCause() instanceof BlockDispenseEvent) {
                event.setCancelled(true);
            }
            break;
        }
    }
}