For some reason the schematics aren't rotating. I think I may have seen one rotated. Sometimes they don't paste even remotely relative to the origin either. Although I must say it has yet to paste outside of kingdom's dimensions. Code:java public class BuildingQueue {private final Main main;private final int clock;private List<Queue> queues;private BukkitTask task;public BuildingQueue(Main main) {//Called from main class to start the queuethis.main = main;this.queues = new ArrayList<Queue>();File file = new File(main.getDataFolder() + "/config.yml");this.clock = Config.getInt(file, "queue-clock")*1200; //In minutesstart_();}void start_(){task=main.getServer().getScheduler().runTaskTimerAsynchronously(main, new Runnable() {public void run() {//If a queue is present.if(queues.size()>0){Queue nextQueue = queues.get(0);try {loadArea(nextQueue.getBName(),nextQueue.getPName(),nextQueue.getLoc(),nextQueue.getDirection());} catch (MaxChangedBlocksException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (DataException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}//After area is loaded remove from queue list.queues.remove(0);} }}, 0L, clock);}@SuppressWarnings("unused")private void loadArea(String name, String pname,Location loc,BlockFace direction)throws DataException, IOException, MaxChangedBlocksException{// convert bukkit loc to wedit vectorVector origin = BukkitUtil.toVector(loc);File file = new File(main.we.getDataFolder()+"/schematics/"+name+".schematic");EditSession es = new EditSession(new BukkitWorld(main.getWorld()), Integer.MAX_VALUE);// load schematicCuboidClipboard cc = SchematicFormat.MCEDIT.load(file);int height = cc.getHeight();int x1,x2,y1,y2,z1,z2;//Check all sides again,store dimensions of buildingy1 = (int)loc.getY();y2 =(int)loc.getY()+height;x1 = (int)loc.getX();z1 = (int)loc.getZ();//rotate clipboard if when added to queue player was facing specific directionif(direction ==BlockFace.NORTH){x2 = x1-cc.getWidth();z2 = z1+cc.getLength();}if(direction ==BlockFace.SOUTH){cc.rotate2D(180);x2 = x1+cc.getWidth();z2 = z1-cc.getLength();}if(direction ==BlockFace.EAST){cc.rotate2D(90);x2=x1-cc.getLength();z2=z1-cc.getWidth();}else{cc.rotate2D(270);x2=x1+cc.getLength();z2=z1+cc.getWidth();}//paste clipboard relative to origin(should be right in front of where the player created the queue)cc.paste(es, origin, true, true);Player player = Bukkit.getPlayer(pname);if(player.isOnline()){player.sendMessage(ChatColor.GREEN + "Your " + name + " building has been placed.");}}//Add queue to queue list unless player already has queuepublic boolean addQueue(Queue queue){boolean bool = true;for(Queue newQueue:queues){if(newQueue.getPName().equals(queue.getPName())){bool = false;break;}}if(bool == true){queues.add(queue);}return bool;}} Code:java public class BuilderAxeHandler {//Handles woodenaxe with custom display name of Builder's Axepublic static final BlockFace[] axis = { BlockFace.NORTH, BlockFace.EAST, BlockFace.SOUTH, BlockFace.WEST };private final Main main;public BuilderAxeHandler(Main main, PlayerInteractEvent e){Player player = e.getPlayer();this.main = main;Member user = main.getMember(player.getName());//world is flat, schematics can only be pasted from ground level(sometimes the paste a few blocks //up, no idea why.)if((int)player.getLocation().getY()!=21){player.sendMessage("not at ground level");return;}//Just a few checks for my pluginif(user==null){player.sendMessage("Your user file doesn't exist");return;}if(!(user.getRank().equals("king"))){player.sendMessage("not a king");return;}Kingdom kingdom = main.getKingdom(player.getLocation());if(kingdom==null||(!(kingdom==user.getKingdom()))){player.sendMessage("Kingdom was not found.");return;}player.sendMessage("passed the checks");//ItemMenu API IGNORE//Get Selection IGNORE//Check if they can build thistry {if(loadArea("dirthouse",player,kingdom)){player.sendMessage(ChatColor.GREEN + "Building has been added to the queue.");}else{player.sendMessage("Building is out of bounds of kingdom area.");}} catch (MaxChangedBlocksException | DataException | IOException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}}public BlockFace getDirection(float yaw){return axis[Math.round(yaw / 90f) & 0x3];}@SuppressWarnings("unused")//Looks duplicate but is necessary for checking if dimensions exceed another cuboid(Kingdom)public boolean loadArea(String name, Player player, Kingdom kingdom)throws DataException, IOException, MaxChangedBlocksException{Location loc = player.getLocation();loc.setX((int)loc.getX());loc.setY(22);loc.setZ((int)loc.getZ());BlockFace direction =getDirection(loc.getYaw());player.sendMessage(direction+"");Vector origin = BukkitUtil.toVector(loc);File file = new File(main.we.getDataFolder()+"/schematics/"+name+".schematic");EditSession es = new EditSession(new BukkitWorld(main.getWorld()), Integer.MAX_VALUE);CuboidClipboard cc = SchematicFormat.MCEDIT.load(file);cc.setOrigin(origin);int height = cc.getHeight();int x1,x2,y1,y2,z1,z2; y1 = 22;y2 =y1+height;x1 = (int)loc.getX();z1 = (int)loc.getZ();if(direction ==BlockFace.NORTH){x2 = x1-cc.getWidth();z2 = z1+cc.getLength();}if(direction ==BlockFace.SOUTH){cc.rotate2D(180);x2 = x1+cc.getWidth();z2 = z1-cc.getLength();}if(direction ==BlockFace.EAST){cc.rotate2D(90);x2=x1-cc.getLength();z2=z1-cc.getWidth();}else{cc.rotate2D(270);x2=x1+cc.getLength();z2=z1+cc.getWidth();}int minx = Math.min(x1, x2);int maxx = Math.max(x1, x2);int minz = Math.min(z1, z2);int maxz = Math.max(z1, z2); Kingdom getkingdom = main.getKingdom(new Location(main.getWorld(),minx,22,minz));if(getkingdom!=kingdom){return false;}getkingdom = main.getKingdom(new Location(main.getWorld(),minx,22,maxz));if(getkingdom!=kingdom){return false;}getkingdom = main.getKingdom(new Location(main.getWorld(),maxx,22,minz));if(getkingdom!=kingdom){return false;}getkingdom = main.getKingdom(new Location(main.getWorld(),maxx,22,maxz));if(getkingdom!=kingdom){return false;}Queue newQueue = new Queue(name, player.getName(), loc, direction);if(!main.queue.addQueue(newQueue)){player.sendMessage(ChatColor.RED + "Queue could not be added.");return false;}return true; }} Code:java public class Queue {private final String bname,pname;private final Location loc;private final BlockFace direction;public Queue(String buildingname,String playername,Location location,BlockFace direction){this.bname = buildingname;this.pname = playername;this.loc = location;this.direction = direction;}public Location getLoc(){return loc;}public String getBName(){return bname;}public String getPName(){return pname;}public BlockFace getDirection(){return direction;}} So, any idea why the schematics aren't rotating, or pasting relative to the origin(where the player first defined in BuilderAxeHandler??