final HashMap<Vector3i, List<EncodedBlock>> chunkBlocksHashMap = new HashMap<>(); final AffineTransform transform = new AffineTransform().rotateY(angle); final Region region = clipboard.getRegion(); final BlockVector3 clipboardOffset = region.getMinimumPoint().subtract(clipboard.getOrigin()); final Iterator<BlockVector3> iterator = clipboard.getRegion().iterator(); final Vector3 to = BukkitAdapter.asVector(location); final Vector3 appliedVector = transform.apply(clipboardOffset.toVector3()); final Vector3 realTo = to.add(appliedVector); final Vector3 max = realTo.add(transform.apply(region.getMaximumPoint().subtract(region.getMinimumPoint()).toVector3())); final CuboidRegionSelector selector = new CuboidRegionSelector(bukkitWorld, realTo.toBlockPoint(), max.toBlockPoint()); final CuboidRegion cuboidRegion = selector.getRegion(); for (BlockVector3 blockVector3 : cuboidRegion) { final Vector3 vector3 = blockVector3.toVector3(); // this is currently the problem (I'm transforming the clipboards location + // the offset but I want to be able to get the blocks of the clipboard before pasting it) final BaseBlock block = clipboard.getFullBlock(iterator.next()); if (block == null) continue;