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

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

源代码1 项目: BedWars   文件: RescuePlatformListener.java
@EventHandler
public void onBlockBreak(BlockBreakEvent event) {
    Player player = event.getPlayer();
    if (!Main.isPlayerInGame(player)) {
        return;
    }

    GamePlayer gPlayer = Main.getPlayerGameProfile(player);
    Game game = gPlayer.getGame();
    if (gPlayer.isSpectator) {
        return;
    }

    Block block = event.getBlock();
    for (RescuePlatform checkedPlatform : getCreatedPlatforms(game, player)) {
        if (checkedPlatform != null) {
            for (Block platformBlock : checkedPlatform.getPlatformBlocks()) {
                if (platformBlock.equals(block) && !checkedPlatform.canBreak()) {
                    event.setCancelled(true);
                }
            }
        }
    }
}
 
源代码2 项目: ExoticGarden   文件: Crook.java
@Override
public BlockBreakHandler getItemHandler() {
    return new BlockBreakHandler() {

        @Override
        public boolean isPrivate() {
            return false;
        }

        @Override
        public boolean onBlockBreak(BlockBreakEvent e, ItemStack item, int fortune, List<ItemStack> drops) {
            if (isItem(item)) {
                damageItem(e.getPlayer(), item);

                if (Tag.LEAVES.isTagged(e.getBlock().getType()) && ThreadLocalRandom.current().nextInt(100) < CHANCE) {
                    ItemStack sapling = new ItemStack(Material.getMaterial(e.getBlock().getType().toString().replace("LEAVES", "SAPLING")));
                    drops.add(sapling);
                }

                return true;
            }
            return false;
        }

    };
}
 
源代码3 项目: IridiumSkyblock   文件: BlockBreakListener.java
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onMonitorBreakBlock(BlockBreakEvent 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;

        if (Utils.isBlockValuable(block)) {
            final Material material = block.getType();
            final String materialName = XMaterial.matchXMaterial(material).name();
            island.valuableBlocks.computeIfPresent(materialName, (name, original) -> original - 1);
            if (island.updating)
                island.tempValues.remove(location);

            Bukkit.getScheduler().runTask(IridiumSkyblock.getInstance(), island::calculateIslandValue);
        }

        island.failedGenerators.remove(location);
    } catch (Exception e) {
        IridiumSkyblock.getInstance().sendErrorMessage(e);
    }
}
 
源代码4 项目: DungeonsXL   文件: TeamBed.java
@Override
public boolean onBreak(BlockBreakEvent event) {
    Player breaker = event.getPlayer();
    if (owner.getMembers().contains(breaker)) {
        MessageUtil.sendMessage(breaker, DMessage.ERROR_BLOCK_OWN_TEAM.getMessage());
        return true;
    }

    for (DGamePlayer player : owner.getDGamePlayers()) {
        player.setLives(1);
    }
    owner.setLives(0);

    owner.getGameWorld().sendMessage(DMessage.GROUP_BED_DESTROYED.getMessage(owner.getName(), api.getPlayerCache().getGamePlayer(breaker).getName()));
    Block block1 = event.getBlock();
    if (DungeonsXL.BLOCK_ADAPTER.isBedHead(block)) {
        Block block2 = getAttachedBlock(block1);
        if (block2 != null) {
            block2.setType(VanillaItem.AIR.getMaterial());
        }
    }
    block1.setType(VanillaItem.AIR.getMaterial());
    return true;
}
 
源代码5 项目: SkyWarsReloaded   文件: LobbyListener.java
@EventHandler
public void signRemoved(BlockBreakEvent event) {
	if (Util.get().isSpawnWorld(event.getBlock().getWorld())) {
		 Location blockLocation = event.getBlock().getLocation();
	        World w = blockLocation.getWorld();
	    	Block b = w.getBlockAt(blockLocation);
			if(b.getType() == Material.WALL_SIGN || b.getType() == SkyWarsReloaded.getNMS().getMaterial("SIGN_POST").getType()){
		    	Sign sign = (Sign) b.getState();
		    	Location loc = sign.getLocation();
		    	boolean removed = false;
		    	for (GameMap gMap : GameMap.getMaps()) {
		    		if (!removed) {
			    		removed = gMap.removeSign(loc);
		    		}
		    	}
		    	if (!removed) {
		    		removed = SkyWarsReloaded.getLB().removeLeaderSign(loc);
		    	}
		    	if (removed) {
			    	event.getPlayer().sendMessage(new Messaging.MessageFormatter().format("signs.remove"));
		    	}
			}
	}
}
 
源代码6 项目: BetonQuest   文件: BlockObjective.java
@EventHandler(ignoreCancelled = true)
public void onBlockBreak(BlockBreakEvent event) {
    String playerID = PlayerConverter.getID(event.getPlayer());
    // if the player has this objective, the event isn't canceled,
    // the block is correct and conditions are met
    if (containsPlayer(playerID) && selector.match(event.getBlock()) && checkConditions(playerID)) {
        // remove the block from the total amount
        BlockData playerData = (BlockData) dataMap.get(playerID);
        playerData.remove();
        // complete the objective
        if (playerData.getAmount() == neededAmount) {
            completeObjective(playerID);
        } else if (notify && playerData.getAmount() % notifyInterval == 0) {
            // or maybe display a notification
            if (playerData.getAmount() > neededAmount) {
                Config.sendNotify(playerID, "blocks_to_break",
                        new String[]{String.valueOf(playerData.getAmount() - neededAmount)},
                        "blocks_to_break,info");
            } else {
                Config.sendNotify(playerID, "blocks_to_place",
                        new String[]{String.valueOf(neededAmount - playerData.getAmount())},
                        "blocks_to_place,info");
            }
        }
    }
}
 
源代码7 项目: BedWars   文件: SignListener.java
@EventHandler
public void onBlockBreak(BlockBreakEvent event) {
    if (event.isCancelled()) {
        return;
    }

    if (event.getBlock().getState() instanceof Sign) {
        Location loc = event.getBlock().getLocation();
        if (manager.isSignRegistered(loc)) {
            if (event.getPlayer().hasPermission(owner.getSignCreationPermission())) {
                manager.unregisterSign(loc);
            } else {
                event.getPlayer().sendMessage(owner.returnTranslate("sign_can_not_been_destroyed"));
                event.setCancelled(true);
            }
        }
    }

}
 
源代码8 项目: Skript   文件: EffCancelDrops.java
@Override
public boolean init(Expression<?>[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) {
	cancelItems = parseResult.mark == 0 || parseResult.mark == 1;
	cancelExps = parseResult.mark == 0 || parseResult.mark == 2;
	if (ScriptLoader.isCurrentEvent(BlockBreakEvent.class)) {
		if (cancelItems && !CAN_CANCEL_BLOCK_ITEM_DROPS) {
			Skript.error("Cancelling drops of items in a block break event requires Minecraft 1.12 or newer");
			return false;
		}
	} else if (!ScriptLoader.isCurrentEvent(EntityDeathEvent.class)) {
		Skript.error("The cancel drops effect can't be used outside of a death" +
			(CAN_CANCEL_BLOCK_ITEM_DROPS ? " or block break" : "") + " event");
		return false;
	}
	if (isDelayed.isTrue()) {
		Skript.error("Can't cancel the drops anymore after the event has already passed");
		return false;
	}
	return true;
}
 
源代码9 项目: AreaShop   文件: SignsFeature.java
@EventHandler(priority = EventPriority.HIGH)
public void onSignBreak(BlockBreakEvent event) {
	if(event.isCancelled()) {
		return;
	}
	Block block = event.getBlock();
	// Check if it is a sign
	if(Materials.isSign(block.getType())) {
		// Check if the rent sign is really the same as a saved rent
		RegionSign regionSign = SignsFeature.getSignByLocation(block.getLocation());
		if(regionSign == null) {
			return;
		}
		// Remove the sign of the rental region if the player has permission
		if(event.getPlayer().hasPermission("areashop.delsign")) {
			regionSign.remove();
			plugin.message(event.getPlayer(), "delsign-success", regionSign.getRegion());
		} else { // Cancel the breaking of the sign
			event.setCancelled(true);
			plugin.message(event.getPlayer(), "delsign-noPermission", regionSign.getRegion());
		}
	}
}
 
源代码10 项目: Carbon   文件: BlockListener.java
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onIndirectDoorBreak(BlockBreakEvent event) {
	if (event.getBlock().getType().toString().contains("DOOR"))
		return;
	Material mat = event.getBlock().getRelative(BlockFace.UP).getType();
	if (mat == Carbon.injector().spruceDoorBlockMat)
		event.getBlock().getWorld().dropItemNaturally(event.getBlock().getRelative(BlockFace.UP).getLocation(), new ItemStack(Carbon.injector().spruceDoorMat, 1));
	else if (mat == Carbon.injector().birchDoorBlockMat)
		event.getBlock().getWorld().dropItemNaturally(event.getBlock().getRelative(BlockFace.UP).getLocation(), new ItemStack(Carbon.injector().birchDoorMat, 1));
	else if (mat == Carbon.injector().jungleDoorBlockMat)
		event.getBlock().getWorld().dropItemNaturally(event.getBlock().getRelative(BlockFace.UP).getLocation(), new ItemStack(Carbon.injector().jungleDoorMat, 1));
	else if (mat == Carbon.injector().acaciaDoorBlockMat)
		event.getBlock().getWorld().dropItemNaturally(event.getBlock().getRelative(BlockFace.UP).getLocation(), new ItemStack(Carbon.injector().acaciaDoorMat, 1));
	else if (mat == Carbon.injector().darkOakDoorBlockMat)
		event.getBlock().getWorld().dropItemNaturally(event.getBlock().getRelative(BlockFace.UP).getLocation(), new ItemStack(Carbon.injector().darkOakDoorMat, 1));
}
 
源代码11 项目: Slimefun4   文件: TalismanListener.java
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onBlockBreak(BlockBreakEvent e) {
    ItemStack item = e.getPlayer().getInventory().getItemInMainHand();

    if (item.getType() != Material.AIR && item.getAmount() > 0) {
        List<ItemStack> drops = new ArrayList<>(e.getBlock().getDrops(item));
        int dropAmount = 1;

        if (item.getEnchantments().containsKey(Enchantment.LOOT_BONUS_BLOCKS) && !item.getEnchantments().containsKey(Enchantment.SILK_TOUCH)) {
            Random random = ThreadLocalRandom.current();
            dropAmount = random.nextInt(item.getEnchantmentLevel(Enchantment.LOOT_BONUS_BLOCKS) + 2) - 1;
            dropAmount = Math.max(dropAmount, 1);
            dropAmount = (e.getBlock().getType() == Material.LAPIS_ORE ? 4 + random.nextInt(5) : 1) * (dropAmount + 1);
        }

        if (!item.getEnchantments().containsKey(Enchantment.SILK_TOUCH) && MaterialCollections.getAllOres().contains(e.getBlock().getType()) && Talisman.checkFor(e, SlimefunItems.TALISMAN_MINER)) {
            for (ItemStack drop : drops) {
                if (!drop.getType().isBlock()) {
                    int amount = Math.max(1, (dropAmount * 2) - drop.getAmount());
                    e.getBlock().getWorld().dropItemNaturally(e.getBlock().getLocation(), new CustomItem(drop, amount));
                }
            }
        }
    }
}
 
源代码12 项目: ce   文件: CEListener.java
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void BlockBreakEvent(BlockBreakEvent e) {

    if (e.getBlock().hasMetadata("ce.Ice"))
        e.setCancelled(true);

    CEventHandler.handleEvent(e.getPlayer(), e, blockBroken);
    if (e.getBlock().hasMetadata("ce.mine")) {
        Block b = e.getBlock();
        b.removeMetadata("ce.mine", Main.plugin);
        Block[] blocks = { b.getRelative(0, 1, 0), b.getRelative(1, 0, 0), b.getRelative(-1, 0, 0), b.getRelative(0, 0, 1), b.getRelative(0, 0, -1) };

        for (Block block : blocks) {
            if (block.hasMetadata("ce.mine.secondary")) {
                String[] s = block.getMetadata("ce.mine.secondary").get(0).asString().split(" ");
                Location loc = new Location(e.getPlayer().getWorld(), Integer.parseInt(s[0]), Integer.parseInt(s[1]), Integer.parseInt(s[2]));
                Location blockLoc = b.getLocation();
                if (loc.getBlockX() == blockLoc.getBlockX() && loc.getBlockY() == blockLoc.getBlockY() && loc.getBlockZ() == blockLoc.getBlockZ())
                    block.removeMetadata("ce.mine.secondary", Main.plugin);
            }
        }
    }

}
 
源代码13 项目: NBTEditor   文件: TreeVaporizer.java
@Override
public void onBlockBreak(BlockBreakEvent event, PlayerDetails details) {
	Block root = event.getBlock();
	if (isLog(root.getType())) {
		// Find the blocks
		Set<Block> blocks = getTreeBlocks(root);
		if (blocks.size() > 0) {
			root.getWorld().playSound(root.getLocation(), Sound.ENTITY_ZOMBIE_BREAK_WOODEN_DOOR, 0.5f, 1);
		}
		// Destroy them.
		for (Block block : blocks) {
			block.breakNaturally();
		}
		// Apply durability.
		if (event.getPlayer().getGameMode() != GameMode.CREATIVE) {
			UtilsMc.offsetItemStackDamage(details.getItem(), blocks.size());
		}
	}
}
 
源代码14 项目: factions-top   文件: SignManager.java
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
public void unregisterSign(BlockBreakEvent event) {
    // Do nothing if block is not a registered sign.
    BlockPos pos = BlockPos.of(event.getBlock());
    if (!signs.containsValue(pos)) {
        return;
    }

    if (!(event.getBlock().getState() instanceof Sign)) {
        removeSign(pos);
        return;
    }

    if (!event.getPlayer().hasPermission("factionstop.sign.break")) {
        event.getPlayer().sendMessage(plugin.getSettings().getPermissionMessage());
        event.setCancelled(true);
        return;
    }

    removeSign(pos);
}
 
源代码15 项目: WildernessTp   文件: SignBreak.java
@EventHandler
public void BlockBreakEvent(BlockBreakEvent e) {

    String noPerm = wild.getConfig().getString("No-Break");
    if (e.getBlock().getState() instanceof Sign) {
        Sign sign = (Sign) e.getBlock().getState();
        if (sign.getLine(0).equalsIgnoreCase("§4====================") &&
                sign.getLine(1).equalsIgnoreCase("[§1Wild§0]") &&
                sign.getLine(2).equalsIgnoreCase("§4====================")) {
            if (!e.getPlayer().hasPermission("wild.wildtp.break.sign")) {
                e.getPlayer().sendMessage(ChatColor.translateAlternateColorCodes( '&', noPerm));
                e.setCancelled(true);
            } else {
                e.getPlayer().sendMessage(ChatColor.GREEN + "You have broken a wildtp sign");
            }
        }
    }
}
 
源代码16 项目: EliteMobs   文件: BalrogEvent.java
@EventHandler
public void onMine(BlockBreakEvent event) {

    if (event.isCancelled()) return;
    if (!EliteMobs.validWorldList.contains(event.getPlayer().getWorld())) return;
    if (event.getPlayer().getGameMode() == GameMode.CREATIVE || event.getPlayer().getGameMode() == GameMode.SPECTATOR) return;
    if (!event.getPlayer().hasPermission("elitemobs.events.balrog")) return;
    if (event.getPlayer().getInventory().getItemInMainHand().hasItemMeta() &&
            event.getPlayer().getInventory().getItemInMainHand().getEnchantments().containsKey(Enchantment.SILK_TOUCH))
        return;
    if (!(event.getBlock().getType().equals(Material.DIAMOND_ORE) || event.getBlock().getType().equals(Material.IRON_ORE) ||
            event.getBlock().getType().equals(Material.COAL_ORE) || event.getBlock().getType().equals(Material.REDSTONE_ORE) ||
            event.getBlock().getType().equals(Material.LAPIS_ORE) || event.getBlock().getType().equals(Material.GOLD_ORE))) return;
    if (ThreadLocalRandom.current().nextDouble() > ConfigValues.eventsConfig.getDouble(EventsConfig.BALROG_CHANCE_ON_MINE)) return;

    Balrog.spawnBalrog(event.getBlock().getLocation());

}
 
源代码17 项目: uSkyBlock   文件: SignEvents.java
@EventHandler(priority = EventPriority.MONITOR)
public void onSignOrChestBreak(BlockBreakEvent e) {
    if (e.isCancelled()
            || e.getBlock() == null
            || (e.getBlock().getType() != SkyBlockMenu.WALL_SIGN_MATERIAL && !(e.getBlock().getType() == Material.CHEST || e.getBlock().getType() == Material.TRAPPED_CHEST))
            || e.getBlock().getLocation() == null
            || !plugin.getWorldManager().isSkyAssociatedWorld(e.getBlock().getLocation().getWorld())
            ) {
        return;
    }
    if (e.getBlock().getType() == SkyBlockMenu.WALL_SIGN_MATERIAL) {
        logic.removeSign(e.getBlock().getLocation());
    } else {
        logic.removeChest(e.getBlock().getLocation());
    }
}
 
源代码18 项目: uSkyBlock   文件: PlayerEvents.java
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
public void onLeafBreak(BlockBreakEvent event) {
    if (!plugin.getWorldManager().isSkyWorld(event.getPlayer().getWorld())) {
        return;
    }
    if (event.getBlock().getType() != Material.OAK_LEAVES || (event.getBlock().getData() & 0x3) != 0) {
        return;
    }
    // Ok, a player broke an OAK LEAF in the Skyworld
    String islandName = WorldGuardHandler.getIslandNameAt(event.getPlayer().getLocation());
    IslandInfo islandInfo = plugin.getIslandInfo(islandName);
    if (islandInfo != null && islandInfo.getLeafBreaks() == 0) {
        // Add an oak-sapling
        event.getBlock().getWorld().dropItemNaturally(event.getBlock().getLocation(), new ItemStack(Material.OAK_SAPLING, 1));
        islandInfo.setLeafBreaks(islandInfo.getLeafBreaks() + 1);
    }
}
 
源代码19 项目: UhcCore   文件: DoubleGoldListener.java
@EventHandler
public void onBlockBreak(BlockBreakEvent e) {

    if (isActivated(Scenario.CUTCLEAN) || isActivated(Scenario.TRIPLEORES) || isActivated(Scenario.VEINMINER)){
        return;
    }

    Block block = e.getBlock();
    Location loc = e.getBlock().getLocation().add(0.5, 0, 0.5);

    if (block.getType() == Material.GOLD_ORE){
        block.setType(Material.AIR);
        loc.getWorld().dropItem(loc,new ItemStack(Material.GOLD_INGOT, 2));
        UhcItems.spawnExtraXp(loc,6);
    }
}
 
源代码20 项目: askyblock   文件: IslandGuard.java
/**
 * Prevents blocks from being broken
 *
 * @param e - event
 */
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
public void onBlockBreak(final BlockBreakEvent e) {
    if (DEBUG) {
        plugin.getLogger().info(e.getEventName());
    }

    if (Settings.allowedFakePlayers.contains(e.getPlayer().getName())) return;

    if (inWorld(e.getPlayer())) {
        if (actionAllowed(e.getPlayer(), e.getBlock().getLocation(), SettingsFlag.BREAK_BLOCKS)) {
            return;
        }
        // Everyone else - not allowed
        Util.sendMessage(e.getPlayer(), ChatColor.RED + plugin.myLocale(e.getPlayer().getUniqueId()).islandProtected);
        e.setCancelled(true);
    }
}
 
源代码21 项目: Civs   文件: RegionsTests.java
@Test
public void regionShouldBeDestroyedAndRebuilt() {
    loadRegionTypeCobble();
    HashMap<UUID, String> owners = new HashMap<>();
    UUID uuid = new UUID(1, 4);
    owners.put(uuid, Constants.OWNER);
    Location location1 = new Location(Bukkit.getWorld("world"), 4, 0, 0);
    RegionManager.getInstance().addRegion(new Region("cobble", owners, location1, getRadii(), new HashMap<>(),0));
    BlockBreakEvent event = new BlockBreakEvent(TestUtil.blockUnique, TestUtil.player);
    CivilianListener civilianListener = new CivilianListener();
    civilianListener.onCivilianBlockBreak(event);
    ProtectionHandler protectionHandler = new ProtectionHandler();
    protectionHandler.onBlockBreak(event);
    BlockPlaceEvent event1 = mock(BlockPlaceEvent.class);
    Block block2 = TestUtil.createUniqueBlock(Material.CHEST, "Civs cobble", location1, false);
    when(event1.getBlockPlaced()).thenReturn(block2);
    ItemStack itemStack = TestUtil.createUniqueItemStack(Material.CHEST, "Civs Cobble");
    when(event1.getItemInHand()).thenReturn(itemStack);
    when(event1.getPlayer()).thenReturn(TestUtil.player);
    RegionListener regionListener = new RegionListener();
    regionListener.onBlockPlace(event1);
    assertNotNull(RegionManager.getInstance().getRegionAt(location1));
}
 
源代码22 项目: Civs   文件: ProtectionsTests.java
@Test
public void blockBreakInProtectionShouldBeCancelled() {
    RegionsTests.loadRegionTypeCobble();
    Player player = mock(Player.class);
    when(player.getGameMode()).thenReturn(GameMode.SURVIVAL);
    UUID uuid = new UUID(1, 2);
    when(player.getUniqueId()).thenReturn(uuid);
    Player player2 = mock(Player.class);
    when(player2.getGameMode()).thenReturn(GameMode.SURVIVAL);
    UUID uuid2 = new UUID(1, 3);
    when(player2.getUniqueId()).thenReturn(uuid2);

    HashMap<UUID, String> owners = new HashMap<>();
    owners.put(uuid2, Constants.OWNER);
    Location regionLocation = new Location(Bukkit.getWorld("world"), 0,0,0);
    HashMap<String, String> effects = new HashMap<>();
    effects.put("block_break", null);
    effects.put("block_build", null);
    RegionManager.getInstance().addRegion(new Region("cobble", owners, regionLocation, RegionsTests.getRadii(), effects,0));
    ProtectionHandler protectionHandler = new ProtectionHandler();
    BlockBreakEvent event = new BlockBreakEvent(TestUtil.block3, player);
    protectionHandler.onBlockBreak(event);
    assertTrue(event.isCancelled());
}
 
源代码23 项目: DungeonsXL   文件: GlobalProtectionListener.java
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
public void onBlockBreakWithSignOnIt(BlockBreakEvent event) {
    Block block = event.getBlock();
    Player player = event.getPlayer();

    Block blockAbove = block.getRelative(BlockFace.UP);
    //get the above block and return if there is nothing
    if (blockAbove == null) {
        return;
    }

    //return if above block is not a sign
    if (!Category.SIGNS.containsBlock(blockAbove)) {
        return;
    }

    //let onBreak() method to handle the sign
    BlockBreakEvent bbe = new BlockBreakEvent(blockAbove, player);
    onBlockBreak(bbe);

    //follow the onBreak()
    event.setCancelled(bbe.isCancelled());
}
 
源代码24 项目: RandomTeleport   文件: SignListener.java
@EventHandler(ignoreCancelled = true)
public void onSignDestroy(BlockBreakEvent event) {
    if (event.getBlock().getType().name().contains("SIGN")) {
        Sign sign = (Sign) event.getBlock().getState();
        if (plugin.matchesSignVariable(sign.getLine(1))) {
            if (!event.getPlayer().hasPermission("randomteleport.sign.destroy")) {
                event.setCancelled(true);
                plugin.sendMessage(event.getPlayer(), "sign.no-permission.destroy", "perm", "randomteleport.sign.destroy");
            } else {
                plugin.sendMessage(event.getPlayer(), "sign.destroyed", "preset", sign.getLine(2));
            }
        }
    }
}
 
源代码25 项目: ce   文件: Energizing.java
@Override
public void effect(Event e, ItemStack item, int level) {
	BlockBreakEvent event = (BlockBreakEvent) e;
	Player player = event.getPlayer();
	
	player.addPotionEffect(new PotionEffect(PotionEffectType.FAST_DIGGING, Duration, Strength+level-1), false);
}
 
源代码26 项目: MineTinker   文件: BlockListener.java
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
public void onBlockBreak_DurabilityCheck(BlockBreakEvent event) {
	Player player = event.getPlayer();
	ItemStack tool = player.getInventory().getItemInMainHand();
	if (modManager.isToolViable(tool)) {
		modManager.durabilityCheck(event, player, tool);
	}
}
 
源代码27 项目: GlobalWarming   文件: AttributionListener.java
/**
 * Set furnaces as inactive
 *
 * @param event block break event
 */
@EventHandler
public void onBlockBreak(BlockBreakEvent event) {
    Material bType = event.getBlock().getType();

    //Ignore blocks that aren't furnaces or saplings:
    if ((bType != Material.FURNACE && bType != Material.BLAST_FURNACE && bType != Material.SMOKER) && !bType.name().endsWith("SAPLING")) {
        return;
    }

    //Ignore if the block's world-climate is disabled:
    if (!ClimateEngine.getInstance().isClimateEngineEnabled(event.getBlock().getWorld().getUID())) {
        return;
    }

    //Delete tracked records:
    Location location = event.getBlock().getLocation();
    if (bType == Material.FURNACE || bType == Material.BLAST_FURNACE || bType == Material.SMOKER) {
        //Furnace destroyed:
        // - Any "contribution" records based on a deleted furnace will
        //   no longer be able to look it up (this is OK, just be aware)
        FurnaceTable furnaceTable = gw.getTableManager().getFurnaceTable();
        if (furnaceTable.deleteLocation(location) == null) {
            gw.getLogger().info(String.format("Untracked furnace destroyed @ %s", location.toString()));
        }
    } else if (event.getBlock().getType().name().endsWith("SAPLING")) {
        //Sapling destroyed:
        // - Any "reduction" records based on a deleted sapling will
        //   no longer be able to look it up (this is OK, just be aware)
        TreeTable treeTable = gw.getTableManager().getTreeTable();
        if (treeTable.deleteLocation(location) == null) {
            gw.getLogger().info(String.format("Untracked sapling destroyed @ %s", location.toString()));
        }
    }
}
 
源代码28 项目: civcraft   文件: BlockBreak.java
@EventHandler(priority = EventPriority.MONITOR)
public void onBlockBreak(BlockBreakEvent event) {
	if (blockBroken) {
		return;
	}
	
	String varname = this.getString("varname");
	String locString = this.getParent().componentVars.get(varname);
	if (locString == null) {
		return;
	}

	bcoord = new BlockCoord(this.getParent().componentVars.get(varname));
	
	BlockCoord breakCoord = new BlockCoord(event.getBlock());

	if (breakCoord.getX() == bcoord.getX() &&
	    breakCoord.getY() == bcoord.getY() &&
	    breakCoord.getZ() == bcoord.getZ()) {
		
		Resident resident = CivGlobal.getResident(event.getPlayer().getName());
		if (resident.getTown() == this.getParentTown()) {
			brokenByTown = true;
			CivMessage.send(event.getPlayer(), CivColor.LightGreen+"You seem to have found something interesting....");
		}
		
		blockBroken = true;
		
		this.getParent().componentVars.put(getString("playername_var"), event.getPlayer().getName());
	}
}
 
源代码29 项目: BedwarsRel   文件: TrapListener.java
@EventHandler(priority = EventPriority.HIGH)
public void onBreak(BlockBreakEvent br) {
  if (br.isCancelled()) {
    return;
  }

  Block toDestroy = br.getBlock();
  if (br.getBlock().getType() != Material.TRIPWIRE) {
    Block relative = br.getBlock().getRelative(BlockFace.UP);
    // check above
    if (!relative.getType().equals(Material.TRIPWIRE)) {
      return;
    }

    toDestroy = relative;
  }

  Player player = br.getPlayer();
  Game game = BedwarsRel.getInstance().getGameManager().getGameOfPlayer(player);

  if (game == null) {
    return;
  }

  if (game.getState() != GameState.RUNNING) {
    return;
  }

  if (br.getBlock().equals(toDestroy)) {
    br.setCancelled(true);
    return;
  }

  toDestroy.setType(Material.AIR);
}
 
源代码30 项目: uSkyBlock   文件: NetherTerraFormEvents.java
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
public void onBlockBreak(BlockBreakEvent event) {
    if (event == null || !terraformEnabled) {
        return;
    }
    Block block = event.getBlock();
    Player player = event.getPlayer();
    if (!plugin.getWorldManager().isSkyNether(block.getWorld()) || !plugin.getWorldManager().isSkyNether(player.getWorld())) {
        return; // Bail out, not our problem
    }
    if (player.getGameMode() != GameMode.SURVIVAL) {
        return;
    }
    if (!plugin.playerIsOnIsland(player)) {
        return;
    }
    if (!terraFormMap.containsKey(block.getType())) {
        return; // Not a block we terra-form on.
    }
    // TODO: 10/07/2016 - R4zorax: Handle dual-wielding (would break 1.8 compatibility)
    ItemStack tool = event.getPlayer().getItemInHand();
    if (event.getBlock().getDrops(tool).isEmpty()) {
        return; // Only terra-form when stuff is mined correctly
    }
    double toolWeight = getToolWeight(tool);
    Location playerLocation = player.getEyeLocation();
    Location blockLocation = LocationUtil.centerInBlock(block.getLocation());
    Vector v = new Vector(blockLocation.getX(), blockLocation.getY(), blockLocation.getZ());
    v.subtract(new Vector(playerLocation.getX(), playerLocation.getY(), playerLocation.getZ()));
    v.normalize();
    // Disable spawning above the player... enabling the player to clear a region
    if (playerLocation.getPitch() >= minPitch && playerLocation.getPitch() <= maxPitch) {
        ProtectedCuboidRegion islandRegion = WorldGuardHandler.getIslandRegion(playerLocation);
        List<Material> yield = getYield(block.getType(), toolWeight);
        for (Material mat : yield) {
            spawnBlock(mat, blockLocation, v, islandRegion);
        }
    }
}
 
 类所在包
 同包方法