More Information can be found at: https://www.spigotmc.org/threads/methods-for-changing-massive-amount-of-blocks-up-to-14m-blocks-s.395868/
Just put the BlockChanger class in your project
BlockChanger blockChanger = new BlockChanger(main, false);
Location location = ...;
BlockData blockData = Material.GOLD_BLOCK.createBlockData();
blockChanger.setBlock(location, blockData);
BlockData blockData = blockChanger.getBlockDataAt(location);
blockChanger. // see all available methods
Location pos1 = ...;
Location pos2 = ...;
BlockChanger.Snapshot snapshot = blockChanger.capture(pos1, pos2);
blockChanger.revert(snapshot);