package com.github.jamesnorris.ablockalypse.event.bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.inventory.ItemStack;
import com.github.jamesnorris.ablockalypse.Ablockalypse;
import com.github.jamesnorris.ablockalypse.DataContainer;
import com.github.jamesnorris.ablockalypse.aspect.Claymore;
public class BlockBreak implements Listener {
private static DataContainer data = Ablockalypse.getData();
public static boolean shouldBeBroken(Material type) {
for (Material m : data.modifiableMaterials) {
if (m == type) {
return true;
}
}
return false;
}
/* Called when a player breaks a block.
* Mainly used for preventing ZA Players from breaking blocks while in-game. */
@EventHandler(priority = EventPriority.HIGHEST) public void BBE(BlockBreakEvent event) {
Player p = event.getPlayer();
Block b = event.getBlock();
Location loc = b.getLocation();
if (data.isZAPlayer(p) && !BlockBreak.shouldBeBroken(b.getType())) {
event.setCancelled(true);
} else if ((b.getType() == Material.FLOWER_POT || b.getType() == Material.FLOWER_POT_ITEM) && data.isClaymore(loc)) {
Claymore more = data.getClaymore(loc);
if (more.getPlacer().getPlayer().getName().equalsIgnoreCase(p.getName())) {
Ablockalypse.getExternal().getItemFileManager().giveItem(p, new ItemStack(Material.FLOWER_POT_ITEM, 1));
p.sendMessage(ChatColor.GRAY + "You have picked up your claymore.");
} else {
p.sendMessage(ChatColor.RED + "That is not your claymore!");
event.setCancelled(true);
}
}
}
}