Java 类org.bukkit.event.hanging.HangingBreakEvent 实例源码

项目:RedProtect    文件:RPGlobalListener.java   
@EventHandler
  public void onFrameBrake(HangingBreakEvent e) {
    if (e.isCancelled()){
        return;
    }

    Location l = e.getEntity().getLocation();
Region r = RedProtect.get().rm.getTopRegion(l);
    if (r != null){
        return;
    }

    if (e.getCause().toString().equals("EXPLOSION") || e.getCause().toString().equals("ENTITY")) {
        if (!RPConfig.getGlobalFlagBool(l.getWorld().getName()+".entity-block-damage")){
            e.setCancelled(true);
    }
      }   
  }
项目:RedProtect    文件:RPBlockListener.java   
@EventHandler
 public void onFrameBrake(HangingBreakEvent e) {
    RedProtect.get().logger.debug("Is BlockListener - HangingBreakEvent event");
    if (e.isCancelled()){
        return;
    }

    Entity ent = e.getEntity();
    Location l = e.getEntity().getLocation();       

    if ((ent instanceof ItemFrame || ent instanceof Painting) && (e.getCause().toString().equals("EXPLOSION"))) {
        Region r = RedProtect.get().rm.getTopRegion(l);
        if (r != null && !r.canFire()){
            e.setCancelled(true);
}
     }    
 }
项目:CraftBukkit    文件:EntityHanging.java   
public void move(double d0, double d1, double d2) {
    if (!this.world.isStatic && !this.dead && d0 * d0 + d1 * d1 + d2 * d2 > 0.0D) {
        if (this.dead) return; // CraftBukkit

        // CraftBukkit start - fire break events
        // TODO - Does this need its own cause? Seems to only be triggered by pistons
        HangingBreakEvent event = new HangingBreakEvent((Hanging) this.getBukkitEntity(), HangingBreakEvent.RemoveCause.PHYSICS);
        this.world.getServer().getPluginManager().callEvent(event);

        if (this.dead || event.isCancelled()) {
            return;
        }
        // CraftBukkit end

        this.die();
        this.b((Entity) null);
    }
}
项目:Peacecraft    文件:ProtectListener.java   
@EventHandler
public void onHangingBreak(HangingBreakEvent event) {
    EntityProtection entityProtection = this.module.getProtectManager().getEntityProtection(event.getEntity().getType(), event.getEntity().getUniqueId());
    if(entityProtection.exists()) {
        if(event instanceof HangingBreakByEntityEvent) {
            HangingBreakByEntityEvent entityEvent = (HangingBreakByEntityEvent) event;
            if(entityEvent.getRemover() instanceof Player) {
                Player player = (Player) entityEvent.getRemover();

                if(entityProtection.getOwner().equals(player.getUniqueId()) || player.hasPermission(ProtectPermissions.MODIFY_ALL)) {
                    entityProtection.remove();
                    sendMessage(player, "protect.entity-unprotected");
                    return;
                }

                sendMessage(player, "protect.entity-protected-by", getDisplayName(this.module.getManager().getUsername(entityProtection.getOwner()), event.getEntity().getWorld().getName()));
            }
        }

        event.setCancelled(true);
    }
}
项目:Tweakkit-Server    文件:EntityHanging.java   
public void move(double d0, double d1, double d2) {
    if (!this.world.isStatic && !this.dead && d0 * d0 + d1 * d1 + d2 * d2 > 0.0D) {
        if (this.dead) return; // CraftBukkit

        // CraftBukkit start - fire break events
        // TODO - Does this need its own cause? Seems to only be triggered by pistons
        HangingBreakEvent event = new HangingBreakEvent((Hanging) this.getBukkitEntity(), HangingBreakEvent.RemoveCause.PHYSICS);
        this.world.getServer().getPluginManager().callEvent(event);

        if (this.dead || event.isCancelled()) {
            return;
        }
        // CraftBukkit end

        this.die();
        this.b((Entity) null);
    }
}
项目:Cauldron    文件:EntityHanging.java   
public void moveEntity(double p_70091_1_, double p_70091_3_, double p_70091_5_)
{
    if (!this.worldObj.isRemote && !this.isDead && p_70091_1_ * p_70091_1_ + p_70091_3_ * p_70091_3_ + p_70091_5_ * p_70091_5_ > 0.0D)
    {
        if (this.isDead)
        {
            return;    // CraftBukkit
        }

        // CraftBukkit start
        // TODO - Does this need its own cause? Seems to only be triggered by pistons
        HangingBreakEvent event = new HangingBreakEvent((Hanging) this.getBukkitEntity(), HangingBreakEvent.RemoveCause.PHYSICS);
        this.worldObj.getServer().getPluginManager().callEvent(event);

        if (this.isDead || event.isCancelled())
        {
            return;
        }

        // CraftBukkit end
        this.setDead();
        this.onBroken((Entity)null);
    }
}
项目:SpigotSource    文件:EntityHanging.java   
public void move(double d0, double d1, double d2) {
    if (!this.world.isClientSide && !this.dead && d0 * d0 + d1 * d1 + d2 * d2 > 0.0D) {
        if (this.dead) return; // CraftBukkit

        // CraftBukkit start - fire break events
        // TODO - Does this need its own cause? Seems to only be triggered by pistons
        HangingBreakEvent event = new HangingBreakEvent((Hanging) this.getBukkitEntity(), HangingBreakEvent.RemoveCause.PHYSICS);
        this.world.getServer().getPluginManager().callEvent(event);

        if (this.dead || event.isCancelled()) {
            return;
        }
        // CraftBukkit end

        this.die();
        this.a((Entity) null);
    }

}
项目:HopperFilterSimplified    文件:HfsBlockListener.java   
/**
 * Event handler to watch whenever an itemframe is broken by something other than a player..
 * This will remove the cache of the hoppers around it.
 * 
 * @param event HangingBreakEvent containing data about the broken hanging item. We care about the ItemFrame being removed.
 */
@EventHandler(ignoreCancelled=true)
public void onHangingBreakEvent(HangingBreakEvent event) {
    if (event.getEntity() instanceof ItemFrame) {
        //get the item frame entity
        ItemFrame itemFrame =  (ItemFrame)event.getEntity();

        //get the block location that represents the ItemFrame location
        Location itemFrameLocation = itemFrame.getLocation().getBlock().getLocation();

        //debug if requested
        if (plugin.debugLevel_get() > 0) plugin.getLogger().info("ItemFrame broken by non-player at (" + itemFrameLocation.toString() + ")");

        //an itemFrame was broken. Clear the cache from the hoppers around the frame.
        plugin.knownHoppersCache_ClearAroundLocation(itemFrameLocation);
    }
}
项目: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);
    }
}
项目:Warzone    文件:BuildFilterType.java   
@EventHandler
public void onHangingDamage(HangingBreakEvent event) {
    if (!event.isCancelled()) {
        for (Region region : regions) {
            if (region.contains(event.getEntity().getLocation())) {
                event.setCancelled(true);
            }
        }
    }
}
项目:MundoSK    文件:EvtUnhang.java   
@Override
public boolean check(Event event) {
    return removeCauseOptional.map(cause -> cause.check(event, new Checker<HangingBreakEvent.RemoveCause>() {
        @Override
        public boolean check(HangingBreakEvent.RemoveCause removeCause) {
            return removeCause == ((HangingBreakEvent) event).getCause();
        }
    })).orElse(true);
}
项目:MundoSK    文件:ExprHangedEntity.java   
@Override
public boolean init(Expression<?>[] expressions, int i, Kleenean kleenean, SkriptParser.ParseResult parseResult) {
    if (ScriptLoader.isCurrentEvent(HangingPlaceEvent.class) || ScriptLoader.isCurrentEvent(HangingBreakEvent.class)) {
        return true;
    }
    Skript.error("'hanged entity' can only be used in hang and unhang events!");
    return false;
}
项目:Breakpoint    文件:PlayerInteractListener.java   
@EventHandler
public void onHangingBreak(HangingBreakEvent event)
{
    if(event.isCancelled())
        return;
    if(event.getCause() == RemoveCause.ENTITY)
        event.setCancelled(true);
}
项目:NyaaUtils    文件:ExhibitionListener.java   
@EventHandler(priority = HIGHEST, ignoreCancelled = true)
public void onItemFrameBreak(HangingBreakEvent ev) {
    if (!(ev.getEntity() instanceof ItemFrame)) return;
    ItemFrame f = (ItemFrame) ev.getEntity();
    if (f.getItem() == null || f.getItem().getType() == Material.AIR) return;
    if (ExhibitionFrame.fromItemFrame(f).isSet()) {
        if (ev.getCause() == HangingBreakEvent.RemoveCause.EXPLOSION) { // Explosion protect
            ev.setCancelled(true);
        } else {
            plugin.getLogger().warning(String.format("Exhibition broken: Location: %s, item: %s", f.getLocation().toString(),
                    f.getItem().toString()));
            f.setItem(new ItemStack(Material.AIR));
        }
    }
}
项目:Skellett    文件:ExprHangingCause.java   
public boolean init(Expression<?>[] args, int arg1, Kleenean arg2, SkriptParser.ParseResult arg3) {
    if (!ScriptLoader.isCurrentEvent(HangingBreakEvent.class) && ScriptLoader.isCurrentEvent(HangingBreakByEntityEvent.class)) {
        Skript.error("You can not use HangingCause expression in any event but on unhang!");
        return false;
    }
    return true;
}
项目:Skellett    文件:ExprHangingRemover.java   
public boolean init(Expression<?>[] args, int arg1, Kleenean arg2, SkriptParser.ParseResult arg3) {
    if (!ScriptLoader.isCurrentEvent(HangingBreakByEntityEvent.class) && !ScriptLoader.isCurrentEvent(HangingBreakEvent.class)) {
        Skript.error("You can not use HangingCause expression in any event but on unhang remove!");
        return false;
    }
    return true;
}
项目:Cardinal-Plus    文件:BlockBreakRegion.java   
@EventHandler
public void onHangingBreak(HangingBreakEvent event) {
    if (event instanceof HangingBreakByEntityEvent) {
        if (region.contains(event.getEntity().getLocation().toVector()) && filter.evaluate(event.getEntity(), ((HangingBreakByEntityEvent) event).getRemover(), event).equals(FilterState.DENY)) {
            event.setCancelled(true);
        }
    } else {
        if (region.contains(event.getEntity().getLocation().toVector()) && filter.evaluate(event.getEntity(), event).equals(FilterState.DENY)) {
            event.setCancelled(true);
        }
    }
}
项目:Cardinal-Plus    文件:BlockEventRegion.java   
@EventHandler
public void onHangingBreak(HangingBreakEvent event) {
    if (event instanceof HangingBreakByEntityEvent) {
        if (region.contains(event.getEntity().getLocation().toVector()) && filter.evaluate(event.getEntity(), ((HangingBreakByEntityEvent) event).getRemover(), event).equals(FilterState.DENY)) {
            event.setCancelled(true);
        }
    } else {
        if (region.contains(event.getEntity().getLocation().toVector()) && filter.evaluate(event.getEntity(), event).equals(FilterState.DENY)) {
            event.setCancelled(true);
        }
    }
}
项目:BedwarsRel    文件:HangingListener.java   
@EventHandler(priority = EventPriority.HIGHEST)
public void onHangingBreak(HangingBreakEvent event) {
  Hanging hanging = event.getEntity();
  if (event.getCause().equals(RemoveCause.OBSTRUCTION)) {
    hanging.getLocation().getBlock().breakNaturally();
    event.setCancelled(true);
  } else if (event.getCause().equals(RemoveCause.EXPLOSION)) {
    event.setCancelled(true);
  }

}
项目:Breakpoint    文件:PlayerInteractListener.java   
@EventHandler
public void onHangingBreak(HangingBreakEvent event)
{
    if(event.isCancelled())
        return;
    if(event.getCause() == RemoveCause.ENTITY)
        event.setCancelled(true);
}
项目:Peacecraft    文件:LotsListener.java   
@EventHandler
public void onHangingBreak(HangingBreakEvent event) {
    if(event instanceof HangingBreakByEntityEvent) {
        Entity attacker = ((HangingBreakByEntityEvent) event).getRemover();
        if(attacker instanceof Player) {
            Player player = (Player) attacker;
            Lot lot = this.module.getLotManager().getLot(event.getEntity().getLocation());
            Town town = this.module.getLotManager().getTown(event.getEntity().getLocation());
            if(((lot != null && !lot.canBuild(player)) || (lot == null && town != null)) && !player.hasPermission(LotPermissions.BUILD_ANYWHERE)) {
                event.setCancelled(true);
            }
        }
    }
}
项目:MiniMiniGames    文件:WorldListener.java   
@EventHandler
public void onHangingBreak(HangingBreakEvent event) {
   if (event.getCause() == RemoveCause.ENTITY) {
      HangingBreakByEntityEvent entityEvent = (HangingBreakByEntityEvent) event;
      if (entityEvent.getRemover() instanceof Player) {
         Player remover = (Player) entityEvent.getRemover();
         if (remover.isOp() && remover.getGameMode() == GameMode.CREATIVE) {
            return;
         }
      }
   }
   event.setCancelled(true);
}
项目:Factoid    文件:WorldListener.java   
/**
 * On hanging break.
 *
 * @param event the event
 */
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
public void onHangingBreak(HangingBreakEvent event) {

    if (conf.isOverrideExplosions()) {
        // Check for painting
        if (event.getCause() == RemoveCause.EXPLOSION) {
            Factoid.getThisPlugin().iLog().write("Cancel HangingBreak : " + event.getEntity() + ", Cause: " + event.getCause());
            event.setCancelled(true);
        }
    }
}
项目:UltimateSurvivalGames    文件:PlayerListener.java   
@EventHandler
public void onHangingDestroy(HangingBreakEvent event) {
    for(Game game : SurvivalGames.gameManager.getGames()) {
        for(Arena arena : game.getArenas()) {
            if(arena.containsBlock(event.getEntity().getLocation()))
                event.setCancelled(true);
        }
    }
}
项目:CardinalPGM    文件:BlockBreakRegion.java   
@EventHandler
public void onHangingBreak(HangingBreakEvent event) {
    if (event instanceof HangingBreakByEntityEvent) {
        if (region.contains(event.getEntity().getLocation().toVector()) && filter.evaluate(event.getEntity(), ((HangingBreakByEntityEvent) event).getRemover(), event).equals(FilterState.DENY)) {
            event.setCancelled(true);
        }
    } else {
        if (region.contains(event.getEntity().getLocation().toVector()) && filter.evaluate(event.getEntity(), event).equals(FilterState.DENY)) {
            event.setCancelled(true);
        }
    }
}
项目:CardinalPGM    文件:BlockEventRegion.java   
@EventHandler
public void onHangingBreak(HangingBreakEvent event) {
    if (event instanceof HangingBreakByEntityEvent) {
        if (region.contains(event.getEntity().getLocation().toVector()) && filter.evaluate(event.getEntity(), ((HangingBreakByEntityEvent) event).getRemover(), event).equals(FilterState.DENY)) {
            event.setCancelled(true);
        }
    } else {
        if (region.contains(event.getEntity().getLocation().toVector()) && filter.evaluate(event.getEntity(), event).equals(FilterState.DENY)) {
            event.setCancelled(true);
        }
    }
}
项目:SpigotSource    文件:EntityHanging.java   
public void m() {
    this.lastX = this.locX;
    this.lastY = this.locY;
    this.lastZ = this.locZ;
    if (this.d++ == this.world.spigotConfig.hangingTickFrequency && !this.world.isClientSide) { // Spigot
        this.d = 0;
        if (!this.dead && !this.survives()) {
            // CraftBukkit start - fire break events
            Material material = this.world.getType(new BlockPosition(this)).getMaterial();
            HangingBreakEvent.RemoveCause cause;

            if (!material.equals(Material.AIR)) {
                // TODO: This feels insufficient to catch 100% of suffocation cases
                cause = HangingBreakEvent.RemoveCause.OBSTRUCTION;
            } else {
                cause = HangingBreakEvent.RemoveCause.PHYSICS;
            }

            HangingBreakEvent event = new HangingBreakEvent((Hanging) this.getBukkitEntity(), cause);
            this.world.getServer().getPluginManager().callEvent(event);

            if (dead || event.isCancelled()) {
                return;
            }
            // CraftBukkit end
            this.die();
            this.a((Entity) null);
        }
    }

}
项目:Abyss    文件:ItemListener.java   
@EventHandler
public void onHangingBreak(HangingBreakEvent event) {
    // If there's no portal, we don't care.
    final ABPortal portal = plugin.getManager().getByFrame(event.getEntity());
    if (portal == null)
        return;

    // Cancel it so it doesn't break.
    event.setCancelled(true);
}
项目:simple-survival-games    文件:SSGHangingListener.java   
@EventHandler
public void onHangingBreak(HangingBreakEvent event) {
    Entity hanging = event.getEntity();

    ArenaManager am = SimpleSurvivalGames.instance.getArenaManager();

    for(Arena a : am.getArenas())
        if(a.isArenaCuboidSet())
            if(a.getArenaCuboid().isInsideCuboid(hanging.getLocation()))
                if(!a.isInEditMode())
                    event.setCancelled(true);
}
项目:FramePicture    文件:FrameListener.java   
@EventHandler (priority = EventPriority.HIGH)
public void onHangingBreak(HangingBreakEvent event) {
    if (event.isCancelled() || (event.getEntity().getType() != EntityType.ITEM_FRAME)) return;
    ItemFrame entity = (ItemFrame)event.getEntity();
    Frame frame = this.manager.getFrame(entity);
    if (frame == null) return;

    Player player = null;
    if (event instanceof HangingBreakByEntityEvent) {
        Entity remover = ((HangingBreakByEntityEvent)event).getRemover();
        if (remover.getType() == EntityType.PLAYER) {
            player = (Player) remover;
        }
    }

    if ((player != null) && Config.WORLDGUARD_ENABLED && Config.WORLDGUARD_BREAK && !player.hasPermission("FramePicture.ignoreWorldGuard"))
    {
        RegionManager rm = FramePicturePlugin.getWorldGuard().getRegionManager(player.getWorld());
        LocalPlayer localPlayer = FramePicturePlugin.getWorldGuard().wrapPlayer(player);
        if (!rm.getApplicableRegions(frame.getLocation()).canBuild(localPlayer)) {
            player.sendMessage(Lang.PREFIX.getText() + Lang.NO_PERMISSION.getText());
            event.setCancelled(true);
            return;
        }
    }

    this.manager.removeFrame(frame);
    if (player != null)
        player.sendMessage(Lang.PREFIX.getText() + Lang.FRAME_REMOVED.getText().replace("%id", String.valueOf(frame.getId())));

    for (Entity e : entity.getNearbyEntities(32.0, 32.0, 32.0)) {
        if (e.getType() != EntityType.PLAYER) continue;
        Player p = (Player)e;
        this.sendFrameDestroy(p, entity.getEntityId());
    }
}
项目:ZentrelaRPG    文件:EnvironmentManager.java   
@EventHandler
public void onHangingBreak(HangingBreakEvent event) {
    if (event.getCause() == RemoveCause.DEFAULT || event.getCause() == RemoveCause.EXPLOSION)
        event.setCancelled(true);
}
项目:ProjectAres    文件:EventFilterMatchModule.java   
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
public void onHangingBreak(final HangingBreakEvent event) {
    cancelUnlessInteracting(event, event instanceof HangingBreakByEntityEvent ? ((HangingBreakByEntityEvent) event).getRemover()
                                                                              : null);
}
项目:Hub    文件:EntityEditionListener.java   
@EventHandler
public void onHangingBreak(HangingBreakEvent event)
{
    event.setCancelled(true);
}
项目:MundoSK    文件:EvtUnhang.java   
@Override
public boolean init(Literal<?>[] literals, int i, SkriptParser.ParseResult parseResult) {
    removeCauseOptional = Optional.ofNullable((Literal<HangingBreakEvent.RemoveCause>) literals[0]);
    return true;
}
项目:Skellett    文件:ExprHangingCause.java   
@Nullable
protected String[] get(Event e) {
    return new String[]{((HangingBreakEvent)e).getCause().toString()};
}
项目:MinecraftPlugins    文件:ZoneDamage.java   
@EventHandler
public void zoneCrystalExplosionFrame(HangingBreakEvent event) {
    if (event.getEntity().getWorld().getName().equals("world"))
        if (event.getCause() == HangingBreakEvent.RemoveCause.EXPLOSION) event.setCancelled(true);
}
项目:Steel    文件:RollbackEntityListener.java   
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onHangingBreak(HangingBreakEvent event) {
    handleEntityEvent(event.getEntity(), false, event);
}
项目:RpgPlus    文件:ScriptEventManager.java   
@EventHandler
public void onHangingBreak(HangingBreakEvent event) {
    callHandlers("hanging.break", event);
}
项目:Cardinal-Plus    文件:WorldFreeze.java   
@EventHandler
public void onHangingBreak(HangingBreakEvent event) {
    if (!match.isRunning()) {
        event.setCancelled(true);
    }
}
项目:GriefPreventionPlus    文件:EntityEventHandler.java   
@EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST)
public void onHangingBreak(HangingBreakEvent event)
   {
    //don't track in worlds where claims are not enabled
       if(!GriefPrevention.instance.claimsEnabledForWorld(event.getEntity().getWorld())) return;

    //FEATURE: claimed paintings are protected from breakage

    //explosions don't destroy hangings
    if(event.getCause() == RemoveCause.EXPLOSION)
    {
        event.setCancelled(true);
        return;
    }

    //only allow players to break paintings, not anything else (like water and explosions)
    if(!(event instanceof HangingBreakByEntityEvent))
    {
        event.setCancelled(true);
        return;
    }

       HangingBreakByEntityEvent entityEvent = (HangingBreakByEntityEvent)event;

       //who is removing it?
    Entity remover = entityEvent.getRemover();

    //again, making sure the breaker is a player
    if(!(remover instanceof Player))
       {
        event.setCancelled(true);
        return;
       }

    //if the player doesn't have build permission, don't allow the breakage
    Player playerRemover = (Player)entityEvent.getRemover();
       String noBuildReason = GriefPrevention.instance.allowBuild(playerRemover, event.getEntity().getLocation(), Material.AIR);
       if(noBuildReason != null)
       {
        event.setCancelled(true);
        GriefPrevention.sendMessage(playerRemover, TextMode.Err, noBuildReason);
       }
   }