private Vector getReflectedVector(final Projectile oldProjectile, final Vector oldVelocity) {
		Vector newVector = oldVelocity.clone();

		newVector.setY(-newVector.getY());

		Vector normalized = oldVelocity.normalize();

		double x = normalized.getX(), z = normalized.getZ();

		Block loc = oldProjectile.getLocation().getBlock();

		if (x > 0 && loc.getRelative(BlockFace.SOUTH).getType() != Material.AIR)
			newVector.setX(-newVector.getX());
		else if (x < 0 && loc.getRelative(BlockFace.NORTH).getType() != Material.AIR)
			newVector.setX(-newVector.getX());

		if (z > 0 && loc.getRelative(BlockFace.WEST).getType() != Material.AIR)
			newVector.setZ(-newVector.getZ());
		else if (z < 0 && loc.getRelative(BlockFace.EAST).getType() != Material.AIR)
			newVector.setZ(-newVector.getZ());

		return newVector;
	}