	public void onBlockBreak(BlockBreakEvent e)
	{
		if (plugin.debug == true)
		{
			plugin.log.info("BLOCK_BREAK_EVENT: playerName="+e.getPlayer().getName()+",typeID="+e.getBlock().getTypeId());
		}
		plugin.logger.LogBlockBreak(e, e.getBlock().getTypeId());
		long timeStart = System.nanoTime();
		Player p = e.getPlayer();
		if (plugin.arena.IsArena(p.getLocation()))
		{
			if (GameMasterHandler.IsAtleastRank(p.getName(), Rank.BUILDER))
			{
				return;
			}
			p.sendMessage(ChatColor.BLUE+"[ARENA]: "+ChatColor.WHITE+"V arene nemuzes kopat!");
			e.setCancelled(true);
			return;
		}
		if(plugin.EventWorld.IsEventWorld(p.getLocation())&& GugaEventWorld.regionStatus())
		{
			if (GameMasterHandler.IsAtleastRank(p.getName(), Rank.EVENTER))
			{
				return;
			}
			p.sendMessage(ChatColor.BLUE+"[EVENTWORLD]: "+ChatColor.WHITE+"V EventWorldu nemuzes kopat!");
			e.setCancelled(true);
			return;
		}
		if (!GugaRegionHandler.CanInteract(p, e.getBlock().getX(), e.getBlock().getZ()))
		{
			if (!GameMasterHandler.IsAtleastRank(p.getName(), Rank.BUILDER))
			{
				e.setCancelled(true);
				GugaRegion region = GugaRegionHandler.GetRegionByCoords(e.getBlock().getX(), e.getBlock().getZ());
				p.sendMessage(ChatColor.BLUE+"[REGIONS]: "+"Tady nemuzes kopat! Nazev pozemku: " + region.GetName());
				return;
			}
		}
		if (!plugin.acc.UserIsLogged(p) && plugin.config.accountsModule)
		{
			e.setCancelled(true);
			p.sendMessage("******************************");
			if (plugin.acc.UserIsRegistered(p))
			{
				p.sendMessage("NEJSTE PRIHLASEN! Prihlaste se pomoci /login heslo");
			}
			else
			{
				p.sendMessage("NEJSTE ZAREGISTROVAN! Prosim zaregistrujte se /register heslo");
			}
			p.sendMessage("******************************");
			return;
		}
		GugaProfession prof = plugin.professions.get(p.getName());
		boolean canBreak = false;
		Block targetBlock;
		targetBlock = e.getBlock();
		if (prof == null)
		{
			int i = 0;
			while (i < allowedBlocksTier1.length)
			{
				if (e.getBlock().getTypeId() == allowedBlocksTier1[i])
				{
					canBreak = true;
					break;
				}
				i++;
			}
			if (canBreak)
			{
				Block blockAbove = targetBlock.getRelative(BlockFace.UP);
				if (blockAbove.getTypeId() == 55)
				{
					canBreak = false;
				}
			}
			if (GameMasterHandler.IsAtleastGM(p.getName()))
			{
				if(plugin.acc.UserIsLogged(p))
				{
					canBreak = true;
				}
			}
			if (!canBreak)
			{
				p.sendMessage(ChatColor.BLUE+"[RPG]: "+ChatColor.WHITE+"Musite byt alespon level 5, aby jste mohl kopat tento druh bloku!");
				e.setCancelled(true);
				return;
			}
		}
		else
		{
			int level = prof.GetLevel();
			if (level < 5)
			{
				int i = 0;
				while (i < allowedBlocksTier1.length)
				{
					if (e.getBlock().getTypeId() == allowedBlocksTier1[i])
					{
						canBreak = true;
						break;
					}
					i++;
				}
				if (canBreak)
				{
					Block blockAbove = targetBlock.getRelative(BlockFace.UP);
					if (blockAbove.getTypeId() == 55)
					{
						canBreak = false;
					}
				}
				if (GameMasterHandler.IsAtleastGM(p.getName()))
				{
					if(plugin.acc.UserIsLogged(p))
					{
						canBreak = true;
					}
				}
				if (!canBreak)
				{
					p.sendMessage(ChatColor.BLUE+"[RPG]: "+ChatColor.WHITE+"Musite byt alespon level 5, aby jste mohl kopat tento druh bloku!");
					e.setCancelled(true);
					return;
				}
			}
		}
		String chestOwner;
		int blockType = targetBlock.getTypeId();
		if (blockType == ID_CHEST)
		{
			chestOwner = plugin.chests.GetBlockOwner(targetBlock);
			if(chestOwner.matches("notFound"))
			{
			}
			else
			{
				e.setCancelled(true);
				if (chestOwner.matches(p.getName()))
				{
					p.sendMessage(ChatColor.BLUE+"[LOCKER]:"+ChatColor.WHITE+" Nemuzete rozbit zamcenou truhlu! Nejdrive ji odemknete.");
				}
				else
				{
					p.sendMessage(ChatColor.BLUE+"[LOCKER]:"+ChatColor.WHITE+" Nemuzete rozbit zamcenou truhlu! " + chestOwner + " je vlastnikem teto truhly.");
				}
			}
		}
		else if(blockType==ID_DISPENSER)
		{
			chestOwner = plugin.dispensers.GetBlockOwner(targetBlock);
			if(chestOwner.matches("notFound"))
			{
			}
			else
			{
				e.setCancelled(true);
				if (chestOwner.matches(p.getName()))
				{
					p.sendMessage(ChatColor.BLUE+"[LOCKER]:"+ChatColor.WHITE+" Nemuzete rozbit zamceny davkovac! Nejdrive jej odemknete.");
				}
				else
				{
					p.sendMessage(ChatColor.BLUE+"[LOCKER]:"+ChatColor.WHITE+" Nemuzete rozbit zamceny davkovac! " + chestOwner + " je vlastnikem tohoto davkovace.");
				}
			}
		}
		else if(blockType==ID_FURNANCE || blockType==ID_FURNANCE_BURNING)
		{
			chestOwner = plugin.furnances.GetBlockOwner(targetBlock);
			if(chestOwner.matches("notFound"))
			{
			}
			else
			{
				e.setCancelled(true);
				if (chestOwner.matches(p.getName()))
				{
					p.sendMessage(ChatColor.BLUE+"[LOCKER]:"+ChatColor.WHITE+" Nemuzete rozbit zamcenou pec! Nejdrive ji odemknete.");
				}
				else
				{
					p.sendMessage(ChatColor.BLUE+"[LOCKER]:"+ChatColor.WHITE+" Nemuzete rozbit zamcenou pec! " + chestOwner + " je vlastnikem teto pece.");
					}
				}
			}
			int typeId = targetBlock.getTypeId();
			if (!IsInstaBreakBlock(typeId))
			{
				prof.GainExperience(3);
			}
			if (typeId == 1)
			{
				GugaBonusDrop bonus = prof.CobbleStoneDrop();
				if (bonus == GugaBonusDrop.DIAMOND)
				{
					p.getWorld().dropItem(targetBlock.getLocation(), new ItemStack(264,1));
					prof.GainExperience(50);
					p.sendMessage(ChatColor.BLUE+"[RPG]: "+ChatColor.WHITE+"Nasel jste diamant!");
				}
				else if (bonus == GugaBonusDrop.GOLD)
				{
					p.getWorld().dropItem(targetBlock.getLocation(), new ItemStack(14,1));
					prof.GainExperience(40);
					p.sendMessage(ChatColor.BLUE+"[RPG]: "+ChatColor.WHITE+"Nasel jste zlato!");
				}
				else if (bonus == GugaBonusDrop.IRON)
				{
					p.getWorld().dropItem(targetBlock.getLocation(), new ItemStack(15,1));
					prof.GainExperience(30);
					p.sendMessage(ChatColor.BLUE+"[RPG]: "+ChatColor.WHITE+"Nasel jste zelezo!");
				}
			}
			
	public void onBlockBreak(BlockBreakEvent e)
	{
		if (plugin.debug == true)
		{
			plugin.log.info("BLOCK_BREAK_EVENT: playerName="+e.getPlayer().getName()+",typeID="+e.getBlock().getTypeId());
		}
		if(e.getPlayer().getItemInHand().getTypeId() == 271)
		{
			e.setCancelled(true);
			return;
		}
		plugin.logger.LogBlockBreak(e, e.getBlock().getTypeId());
		long timeStart = System.nanoTime();
		Player p = e.getPlayer();
		if (plugin.arena.IsArena(p.getLocation()))
		{
			if (GameMasterHandler.IsAtleastRank(p.getName(), Rank.BUILDER))
			{
				return;
			}
			p.sendMessage(ChatColor.BLUE+"[ARENA]: "+ChatColor.WHITE+"V arene nemuzes kopat!");
			e.setCancelled(true);
			return;
		}
		if(plugin.EventWorld.IsEventWorld(p.getLocation())&& GugaEventWorld.regionStatus())
		{
			if (GameMasterHandler.IsAtleastRank(p.getName(), Rank.EVENTER))
			{
				return;
			}
			p.sendMessage(ChatColor.BLUE+"[EVENTWORLD]: "+ChatColor.WHITE+"V EventWorldu nemuzes kopat!");
			e.setCancelled(true);
			return;
		}
		if (!GugaRegionHandler.CanInteract(p, e.getBlock().getX(), e.getBlock().getZ()))
		{
			if (!GameMasterHandler.IsAtleastRank(p.getName(), Rank.BUILDER))
			{
				e.setCancelled(true);
				GugaRegion region = GugaRegionHandler.GetRegionByCoords(e.getBlock().getX(), e.getBlock().getZ());
				p.sendMessage(ChatColor.BLUE+"[REGIONS]: "+"Tady nemuzes kopat! Nazev pozemku: " + region.GetName());
				return;
			}
		}
		if (!plugin.acc.UserIsLogged(p) && plugin.config.accountsModule)
		{
			e.setCancelled(true);
			p.sendMessage("******************************");
			if (plugin.acc.UserIsRegistered(p))
			{
				p.sendMessage("NEJSTE PRIHLASEN! Prihlaste se pomoci /login heslo");
			}
			else
			{
				p.sendMessage("NEJSTE ZAREGISTROVAN! Prosim zaregistrujte se /register heslo");
			}
			p.sendMessage("******************************");
			return;
		}
		GugaProfession prof = plugin.professions.get(p.getName());
		boolean canBreak = false;
		Block targetBlock;
		targetBlock = e.getBlock();
		if (prof == null)
		{
			int i = 0;
			while (i < allowedBlocksTier1.length)
			{
				if (e.getBlock().getTypeId() == allowedBlocksTier1[i])
				{
					canBreak = true;
					break;
				}
				i++;
			}
			if (canBreak)
			{
				Block blockAbove = targetBlock.getRelative(BlockFace.UP);
				if (blockAbove.getTypeId() == 55)
				{
					canBreak = false;
				}
			}
			if (GameMasterHandler.IsAtleastGM(p.getName()))
			{
				if(plugin.acc.UserIsLogged(p))
				{
					canBreak = true;
				}
			}
			if (!canBreak)
			{
				p.sendMessage(ChatColor.BLUE+"[RPG]: "+ChatColor.WHITE+"Musite byt alespon level 5, aby jste mohl kopat tento druh bloku!");
				e.setCancelled(true);
				return;
			}
		}
		else
		{
			int level = prof.GetLevel();
			if (level < 5)
			{
				int i = 0;
				while (i < allowedBlocksTier1.length)
				{
					if (e.getBlock().getTypeId() == allowedBlocksTier1[i])
					{
						canBreak = true;
						break;
					}
					i++;
				}
				if (canBreak)
				{
					Block blockAbove = targetBlock.getRelative(BlockFace.UP);
					if (blockAbove.getTypeId() == 55)
					{
						canBreak = false;
					}
				}
				if (GameMasterHandler.IsAtleastGM(p.getName()))
				{
					if(plugin.acc.UserIsLogged(p))
					{
						canBreak = true;
					}
				}
				if (!canBreak)
				{
					p.sendMessage(ChatColor.BLUE+"[RPG]: "+ChatColor.WHITE+"Musite byt alespon level 5, aby jste mohl kopat tento druh bloku!");
					e.setCancelled(true);
					return;
				}
			}
		}
		String chestOwner;
		int blockType = targetBlock.getTypeId();
		if (blockType == ID_CHEST)
		{
			chestOwner = plugin.chests.GetBlockOwner(targetBlock);
			if(chestOwner.matches("notFound"))
			{
			}
			else
			{
				e.setCancelled(true);
				if (chestOwner.matches(p.getName()))
				{
					p.sendMessage(ChatColor.BLUE+"[LOCKER]:"+ChatColor.WHITE+" Nemuzete rozbit zamcenou truhlu! Nejdrive ji odemknete.");
				}
				else
				{
					p.sendMessage(ChatColor.BLUE+"[LOCKER]:"+ChatColor.WHITE+" Nemuzete rozbit zamcenou truhlu! " + chestOwner + " je vlastnikem teto truhly.");
				}
			}
		}
		else if(blockType==ID_DISPENSER)
		{
			chestOwner = plugin.dispensers.GetBlockOwner(targetBlock);
			if(chestOwner.matches("notFound"))
			{
			}
			else
			{
				e.setCancelled(true);
				if (chestOwner.matches(p.getName()))
				{
					p.sendMessage(ChatColor.BLUE+"[LOCKER]:"+ChatColor.WHITE+" Nemuzete rozbit zamceny davkovac! Nejdrive jej odemknete.");
				}
				else
				{
					p.sendMessage(ChatColor.BLUE+"[LOCKER]:"+ChatColor.WHITE+" Nemuzete rozbit zamceny davkovac! " + chestOwner + " je vlastnikem tohoto davkovace.");
				}
			}
		}
		else if(blockType==ID_FURNANCE || blockType==ID_FURNANCE_BURNING)
		{
			chestOwner = plugin.furnances.GetBlockOwner(targetBlock);
			if(chestOwner.matches("notFound"))
			{
			}
			else
			{
				e.setCancelled(true);
				if (chestOwner.matches(p.getName()))
				{
					p.sendMessage(ChatColor.BLUE+"[LOCKER]:"+ChatColor.WHITE+" Nemuzete rozbit zamcenou pec! Nejdrive ji odemknete.");
				}
				else
				{
					p.sendMessage(ChatColor.BLUE+"[LOCKER]:"+ChatColor.WHITE+" Nemuzete rozbit zamcenou pec! " + chestOwner + " je vlastnikem teto pece.");
					}
				}
			}
			int typeId = targetBlock.getTypeId();
			if (!IsInstaBreakBlock(typeId))
			{
				prof.GainExperience(3);
			}
			if (typeId == 1)
			{
				GugaBonusDrop bonus = prof.CobbleStoneDrop();
				if (bonus == GugaBonusDrop.DIAMOND)
				{
					p.getWorld().dropItem(targetBlock.getLocation(), new ItemStack(264,1));
					prof.GainExperience(50);
					p.sendMessage(ChatColor.BLUE+"[RPG]: "+ChatColor.WHITE+"Nasel jste diamant!");
				}
				else if (bonus == GugaBonusDrop.GOLD)
				{
					p.getWorld().dropItem(targetBlock.getLocation(), new ItemStack(14,1));
					prof.GainExperience(40);
					p.sendMessage(ChatColor.BLUE+"[RPG]: "+ChatColor.WHITE+"Nasel jste zlato!");
				}
				else if (bonus == GugaBonusDrop.IRON)
				{
					p.getWorld().dropItem(targetBlock.getLocation(), new ItemStack(15,1));
					prof.GainExperience(30);
					p.sendMessage(ChatColor.BLUE+"[RPG]: "+ChatColor.WHITE+"Nasel jste zelezo!");
				}
			}
			