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

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

源代码1 项目: IridiumSkyblock   文件: BlockPistonListener.java
@EventHandler
public void onBlockPistonReact(BlockPistonRetractEvent event) {
    try {
        final Block block = event.getBlock();
        final Location location = block.getLocation();
        final IslandManager islandManager = IridiumSkyblock.getIslandManager();
        final Island island = islandManager.getIslandViaLocation(location);
        if (island == null) return;

        for (Block retractedBlock : event.getBlocks()) {
            final Location retractedBlockLocation = retractedBlock.getLocation();
            if (!island.isInIsland(retractedBlockLocation)) {
                event.setCancelled(true);
                return;
            }
        }
    } catch (Exception e) {
        IridiumSkyblock.getInstance().sendErrorMessage(e);
    }
}
 
源代码2 项目: 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;
        }
    }
}
 
源代码3 项目: ShopChest   文件: ShopItemListener.java
@EventHandler(priority = EventPriority.HIGH)
public void onPistonRetract(BlockPistonRetractEvent e) {
    for (Block b : e.getBlocks()) {
        Block newBlock = b.getRelative(e.getDirection());
        Block belowNewBlock = newBlock.getRelative(BlockFace.DOWN);
        if (shopUtils.isShop(belowNewBlock.getLocation())) {
            e.setCancelled(true);
            for (Player p : Bukkit.getOnlinePlayers()) {
                Shop shop = shopUtils.getShop(belowNewBlock.getLocation());
                if (shop.getItem() != null) {
                    shop.getItem().resetForPlayer(p);
                }
            }
        }
    }
}
 
源代码4 项目: askyblock   文件: IslandGuard.java
@EventHandler(priority=EventPriority.LOW)
public void onEvent(BlockPistonRetractEvent event)
{
    if (!Settings.allowTNTPushing) {
        // Check world
        if (!inWorld(event.getBlock())) {
            return;
        }
        for (Block block: event.getBlocks()) {
            if (block.getType() == Material.TNT) {
                event.setCancelled(true);
                break;
            }
        }
    }
    /* JAVA 8
    if (event.getBlocks().stream().anyMatch(it->it.getType()==Material.TNT))
        event.setCancelled(true);
     */
}
 
源代码5 项目: PlotMe-Core   文件: BukkitPlotListener.java
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
public void onBlockPistonRetract(BlockPistonRetractEvent event) {
    BukkitWorld world = BukkitUtil.adapt(event.getBlock().getWorld());
    if (manager.isPlotWorld(world)) {
        List<Block> blocks = event.getBlocks();
        for (Block moved : blocks) {
            PlotId id = manager.getPlotId(new Location(world, BukkitUtil.locationToVector(moved.getLocation())));
            if (id == null) {
                event.setCancelled(true);
            } else {
                event.setCancelled(api.isPlotLocked(id));

            }
        }
    }
}
 
源代码6 项目: PGM   文件: 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, TranslatableComponent.of(reasonKey));
      return;
    }
  }
}
 
源代码7 项目: Modern-LWC   文件: LWCBlockListener.java
@EventHandler
public void onBlockPistonRetract(BlockPistonRetractEvent event) {
    if ((!LWC.ENABLED) || (event.isCancelled())) {
        return;
    }
    LWC lwc = this.plugin.getLWC();
    for (Block block : event.getBlocks()) {
        Protection protection = lwc.findProtection(block);
        if (protection != null) {
            event.setCancelled(true);
            return;
        }
    }
}
 
源代码8 项目: Skript   文件: ExprPushedBlocks.java
@Override
public boolean init(Expression<?>[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) {
	if (!ScriptLoader.isCurrentEvent(BlockPistonExtendEvent.class, BlockPistonRetractEvent.class)) {
		Skript.error("The moved blocks are only usable in piston extend and retract events", ErrorQuality.SEMANTIC_ERROR);
		return false;
	}
	
	return true;
}
 
源代码9 项目: civcraft   文件: BlockListener.java
@EventHandler(priority = EventPriority.HIGHEST) 
public void onBlockPistonRetractEvent(BlockPistonRetractEvent event) {
	if (!allowPistonAction(event.getRetractLocation())) {
		event.setCancelled(true);
		return;
	}
}
 
源代码10 项目: Slimefun4   文件: BlockPhysicsListener.java
@EventHandler
public void onPistonRetract(BlockPistonRetractEvent e) {
    if (e.isSticky()) {
        for (Block b : e.getBlocks()) {
            if (BlockStorage.hasBlockInfo(b) || (b.getRelative(e.getDirection()).getType() == Material.AIR && BlockStorage.hasBlockInfo(b.getRelative(e.getDirection())))) {
                e.setCancelled(true);
                return;
            }
        }
    }
}
 
源代码11 项目: FunnyGuilds   文件: GuildHeartProtectionHandler.java
@EventHandler
public void onPistonRetract(BlockPistonRetractEvent event) {
    for (Block block : event.getBlocks()) {
        if (isGuildHeart(block)) {
            event.setCancelled(true);
        }
    }
}
 
源代码12 项目: CardinalPGM   文件: WoolObjective.java
@EventHandler(priority = EventPriority.HIGHEST)
public void onPistonRetract(BlockPistonRetractEvent event) {
    if (!event.isCancelled()) {
        for (Block block : event.getBlocks()) {
            if (block.equals(place.getBlock()) || block.equals(place.getBlock().getRelative(event.getDirection().getOppositeFace()))) {
                event.setCancelled(true);
            }
        }
    }
}
 
源代码13 项目: CardinalPGM   文件: BuildHeight.java
@EventHandler
public void onBlockPistonRetract(BlockPistonRetractEvent event) {
    for (Block block : event.getBlocks()) {
        if (block.getRelative(event.getDirection()).getY() >= height) {
            event.setCancelled(true);
        }
    }
}
 
源代码14 项目: CardinalPGM   文件: BlockPlaceRegion.java
@EventHandler
public void onBlockPistonRetract(BlockPistonRetractEvent event) {
    for (Block block : event.getBlocks()) {
        if (region.contains(block.getRelative(event.getDirection()).getLocation().toVector()) && filter.evaluate(block.getRelative(event.getDirection()), event).equals(FilterState.DENY)) {
            event.setCancelled(true);
            break;
        }
    }
}
 
源代码15 项目: CardinalPGM   文件: BlockBreakRegion.java
@EventHandler
public void onBlockPistonRetract(BlockPistonRetractEvent event) {
    for (Block block : event.getBlocks()) {
        if (region.contains(block.getRelative(event.getDirection()).getLocation().toVector()) && filter.evaluate(block, event).equals(FilterState.DENY)) {
            event.setCancelled(true);
        }
    }
}
 
源代码16 项目: CardinalPGM   文件: BlockEventRegion.java
@EventHandler
public void onBlockPistonRetract(BlockPistonRetractEvent event) {
    for (Block block : event.getBlocks()) {
        if ((region.contains(block.getLocation().toVector()) && filter.evaluate(block, event).equals(FilterState.DENY)) || (region.contains(block.getRelative(event.getDirection()).getLocation().toVector()) && filter.evaluate(block.getRelative(event.getDirection()), event).equals(FilterState.DENY))) {
            event.setCancelled(true);
            break;
        }
    }
}
 
源代码17 项目: CardinalPGM   文件: DestroyableObjective.java
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPistonRetract(BlockPistonRetractEvent event) {
    for (Block block : event.getBlocks()) {
        if (monument.contains(block) && partOfObjective(block)) {
            event.setCancelled(true);
        }
    }
}
 
源代码18 项目: CardinalPGM   文件: CoreObjective.java
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPistonRetract(BlockPistonRetractEvent event) {
    if (event.isSticky()) {
        for (Block block : event.getBlocks()) {
            if (core.contains(block) && partOfObjective(block)) {
                event.setCancelled(true);
            }
        }
    }
}
 
源代码19 项目: PGM   文件: BlockTransformListener.java
@EventWrapper
public void onBlockPistonRetract(final BlockPistonRetractEvent event) {
  this.onPistonMove(event, event.getBlocks(), new HashMap<Block, BlockState>());
}
 
源代码20 项目: PGM   文件: BlockTracker.java
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onPistonRetract(BlockPistonRetractEvent event) {
  handleMove(event.getBlocks(), event.getDirection());
}
 
源代码21 项目: PGM   文件: 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 = BlockVectors.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, TranslatableComponent.of("core.damageOwn"));
          } else if (event.getOldState().getData().equals(core.getMaterial())) {
            this.match.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.callEvent(new GoalStatusChangeEvent(this.match, 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;
    }
  }
}
 
源代码22 项目: ProjectAres   文件: BlockTransformListener.java
@EventWrapper
public void onBlockPistonRetract(final BlockPistonRetractEvent event) {
    this.onPistonMove(event, event.getBlocks(), new HashMap<Block, BlockState>());
}
 
源代码23 项目: ProjectAres   文件: BlockTracker.java
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onPistonRetract(BlockPistonRetractEvent event) {
    handleMove(event.getBlocks(), event.getDirection());
}
 
源代码24 项目: 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;
        }
    }
}
 
源代码25 项目: ClaimChunk   文件: ChunkEventHelper.java
public static void handlePistonRetractEvent(@Nonnull BlockPistonRetractEvent e) {
    handlePistonEvent(e.getBlock(), e.getBlocks(), e.getDirection(), e);
}
 
源代码26 项目: ClaimChunk   文件: CancellableChunkEvents.java
@EventHandler
public void onPistonExtend(BlockPistonRetractEvent e) {
    if (e != null) {
        ChunkEventHelper.handlePistonRetractEvent(e);
    }
}
 
源代码27 项目: Skript   文件: ExprPushedBlocks.java
@Override
@Nullable
protected Block[] get(Event e) {
	return (e instanceof BlockPistonExtendEvent) ? ((BlockPistonExtendEvent) e).getBlocks().toArray(new Block[0])
			: ((BlockPistonRetractEvent) e).getBlocks().toArray(new Block[0]);
}
 
源代码28 项目: Carbon   文件: CarbonBlockPistonRetractEvent.java
public static HandlerList getHandlerList() {
	return BlockPistonRetractEvent.getHandlerList();
}
 
源代码29 项目: CardinalPGM   文件: BlockEventRegion.java
@EventHandler
public void onBlockPiston(BlockPistonRetractEvent event) {
    if (filter.evaluate(event.getBlock(), event).equals(FilterState.DENY) && region.contains(new BlockRegion(null, event.getBlock().getLocation().toVector()))) {
        event.setCancelled(true);
    }
}
 
 类所在包
 同包方法