Skip to content

Instantly share code, notes, and snippets.

@zaralX
Created June 26, 2024 12:48
Show Gist options
  • Save zaralX/dd969c6a08d13fdda6c058535815a8f2 to your computer and use it in GitHub Desktop.
Save zaralX/dd969c6a08d13fdda6c058535815a8f2 to your computer and use it in GitHub Desktop.
package ru.zaralx.newbridgebuilders.common.game.map;
import com.sk89q.worldedit.EditSession;
import com.sk89q.worldedit.MaxChangedBlocksException;
import com.sk89q.worldedit.WorldEdit;
import com.sk89q.worldedit.bukkit.BukkitAdapter;
import com.sk89q.worldedit.function.operation.ForwardExtentCopy;
import com.sk89q.worldedit.function.operation.Operations;
import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.regions.CuboidRegion;
import com.sk89q.worldedit.regions.Region;
import org.bukkit.Location;
public class WorldEditUtil {
public static void cloneWithWorldEdit(Location fromCorner1, Location fromCorner2, Location to) {
com.sk89q.worldedit.world.World world = BukkitAdapter.adapt(fromCorner1.getWorld());
// Define the source region
Region sourceRegion = new CuboidRegion(BukkitAdapter.asBlockVector(fromCorner1), BukkitAdapter.asBlockVector(fromCorner2));
// Define the destination
BlockVector3 toVector = BukkitAdapter.asBlockVector(to);
// Create an edit session
try (EditSession editSession = WorldEdit.getInstance().getEditSessionFactory().getEditSession(world, -1)) {
ForwardExtentCopy copy = new ForwardExtentCopy(editSession, sourceRegion, editSession, toVector);
// Perform the operation
Operations.completeLegacy(copy);
// Remember to commit changes of the edit session
editSession.flushSession();
} catch (MaxChangedBlocksException e) {
throw new RuntimeException(e);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment