@EventHandler(priority = EventPriority.LOW)
	public void onEntityDamage(final EntityDamageEvent event) {
	
		if (event instanceof EntityDamageByEntityEvent) {
			final EntityDamageByEntityEvent edbe = (EntityDamageByEntityEvent) event;
			
			Player player;
			if (edbe.getDamager() instanceof Player) { // Prevent from damaging by player
				player = (Player) edbe.getDamager();
				if (permissionDenied(player, "modifyworld.damage.deal", event.getEntity())) {
					cancelDamageEvent(player, event);
				}
			}
			
			if (edbe.getEntity() instanceof Player) {
				player = (Player) edbe.getEntity();
				if (edbe.getDamager() != null && player.isOnline()) { // Prevent from taking damage by entity
					if (_permissionDenied(player, "modifyworld.damage.take", edbe.getDamager())) {
						cancelDamageEvent(player, event);
					}
				}
			}
			
		} else if (event.getEntity() instanceof Player) { // player are been damaged by enviroment
			final Player player = (Player) event.getEntity();
			
			if (_permissionDenied(player, "modifyworld.damage.take", event.getCause().name().toLowerCase().replace("_", ""))) {
				cancelDamageEvent(player, event);
				return;
			}
		}
	}