Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package org.npc.exp;
- import java.util.List;
- import org.bukkit.Location;
- import org.bukkit.Material;
- import org.bukkit.World;
- import org.bukkit.block.Block;
- import org.bukkit.entity.Entity;
- import org.bukkit.entity.Player;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.Listener;
- import org.bukkit.event.block.BlockBreakEvent;
- import org.bukkit.event.entity.EntityDamageEvent;
- import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
- import org.bukkit.inventory.ItemStack;
- import org.bukkit.inventory.meta.ItemMeta;
- public class EventListener
- implements Listener
- {
- private ExplosivePickaxe main; <--- Explosive pickaxe is a another class
- public EventListener(ExplosivePickaxe main)
- {
- this.main = main;
- }
- @EventHandler
- public void onEntityDamage(EntityDamageEvent evt) {
- Entity damaged = evt.getEntity();
- if ((evt.getCause() == EntityDamageEvent.DamageCause.BLOCK_EXPLOSION) &&
- ((damaged instanceof Player))) {
- Player player = (Player)damaged;
- ItemStack item = player.getItemInHand();
- if ((this.main.isPickaxe(item)) && (item.hasItemMeta()) &&
- (((String)item.getItemMeta().getLore().get(0)).equalsIgnoreCase(this.main.getLore())))
- evt.setCancelled(true);
- }
- }
- @EventHandler
- public void onBlockBroken(BlockBreakEvent evt)
- {
- Player player = evt.getPlayer();
- if (player.hasPermission("ep.explode")) {
- Block block = evt.getBlock();
- ItemStack item = player.getItemInHand();
- if ((this.main.isPickaxe(item)) &&
- (item.hasItemMeta()) &&
- (((String)item.getItemMeta().getLore().get(0)).equalsIgnoreCase(this.main.getLore()))) {
- Location loc = block.getLocation();
- double X = loc.getBlockX();
- double Y = loc.getBlockY();
- double Z = loc.getBlockZ();
- if (!this.main.getNatural()) {
- int radius = this.main.getRadius() - 2;
- player.getWorld().createExplosion(loc, 0.0F);
- double minX = X - radius;
- double maxX = X + radius + 1.0D;
- double minY = Y - radius;
- double maxY = Y + radius + 1.0D;
- double minZ = Z - radius;
- double maxZ = Z + radius + 1.0D;
- for (double x = minX; x < maxX; x += 1.0D) {
- for (double y = minY; y < maxY; y += 1.0D)
- for (double z = minZ; z < maxZ; z += 1.0D) {
- Location location = new Location(block.getWorld(), x, y, z);
- if (location.getBlock().getType() != Material.BEDROCK)
- location.getBlock().breakNaturally();
- }
- }
- }
- else
- {
- player.getWorld().createExplosion(loc, this.main.getRadius());
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement