diff --git a/src/main/java/com/andrew121410/mc/world16elevators/commands/ElevatorCMD.java b/src/main/java/com/andrew121410/mc/world16elevators/commands/ElevatorCMD.java index 0f6398f..74a25c3 100644 --- a/src/main/java/com/andrew121410/mc/world16elevators/commands/ElevatorCMD.java +++ b/src/main/java/com/andrew121410/mc/world16elevators/commands/ElevatorCMD.java @@ -189,10 +189,7 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String } // Check the volume of the region to make sure it's not bigger than maxSizeOfElevator - int maxSizeOfElevator = this.plugin.getMaxSizeOfElevator(); - if (region.getVolume() > maxSizeOfElevator) { - player.sendMessage(Translate.miniMessage("The region you selected is too big. The max size is: " + maxSizeOfElevator)); - player.sendMessage(Translate.miniMessage("The region you selected size is: " + region.getVolume())); + if (isRegionToBig(region, player)) { return true; } @@ -958,7 +955,7 @@ public void run() { } else { player.sendMessage(Translate.chat("&6/elevator realign &e &9")); } - } else if (args[0].equalsIgnoreCase("boundingbox")) { // elevator boundingbox + } else if (args[0].equalsIgnoreCase("boundingbox")) { // elevator boundingbox if (!player.hasPermission("world16elevators.boundingbox")) { player.sendMessage(Translate.color("&bYou don't have permission to use this command.")); return true; @@ -1033,6 +1030,34 @@ public void run() { elevator.showLocationOfElevator(blockMap, copyAtDoor, copyBoundingBox, copyExpandedBoundingBox); p1.sendMessage(Translate.miniMessage("The original blocks have been restored.")); }))); + } else if (setting.equalsIgnoreCase("fix-with-worldedit")) { // /elevator boundingbox fix-with-worldedit + BoundingBox boundingBox = this.plugin.getOtherPlugins().getWorld16Utils().getClassWrappers().getWorldEdit().getRegion(player); + + if (boundingBox == null) { + player.sendMessage(Translate.miniMessage("You need to select a region with WorldEdit.")); + return true; + } + + // Check the volume of the region to make sure it's not bigger than maxSizeOfElevator + if (isRegionToBig(boundingBox, player)) return true; + + // Current elevator movement stuff. + Location atDoor = elevator.getElevatorMovement().getAtDoor(); + Integer floor = elevator.getElevatorMovement().getFloor(); + + ElevatorMovement elevatorMovement = new ElevatorMovement(floor, atDoor, boundingBox); + elevator.setElevatorMovement(elevatorMovement); + player.sendMessage(Translate.miniMessage("The bounding box has been updated.")); + } else if (setting.equalsIgnoreCase("atdoor")) { + Block block = PlayerUtils.getBlockPlayerIsLookingAt(player); + + if (block == null) { + player.sendMessage(Translate.miniMessage("You need to look at a block.")); + return true; + } + + elevator.getElevatorMovement().setAtDoor(block.getLocation()); + player.sendMessage(Translate.miniMessage("The door atDoor location in elevator movement has been updated.")); } return true; } else { @@ -1057,6 +1082,17 @@ public void run() { return true; } + private boolean isRegionToBig(BoundingBox boundingBox, Player player) { + // Check the volume of the region to make sure it's not bigger than maxSizeOfElevator + int maxSizeOfElevator = this.plugin.getMaxSizeOfElevator(); + if (boundingBox.getVolume() > maxSizeOfElevator) { + player.sendMessage(Translate.miniMessage("The region you selected is too big. The max size is: " + maxSizeOfElevator)); + player.sendMessage(Translate.miniMessage("The region you selected size is: " + boundingBox.getVolume())); + return true; + } + return false; + } + private ElevatorArguments getElevatorArguments(String[] args, int start) { ElevatorArguments elevatorArguments = new ElevatorArguments(); String[] newStringArray = Arrays.copyOfRange(args, start - 1, args.length); diff --git a/src/main/java/com/andrew121410/mc/world16elevators/commands/tabcomplete/ElevatorTab.java b/src/main/java/com/andrew121410/mc/world16elevators/commands/tabcomplete/ElevatorTab.java index c5f7b8e..76658bd 100644 --- a/src/main/java/com/andrew121410/mc/world16elevators/commands/tabcomplete/ElevatorTab.java +++ b/src/main/java/com/andrew121410/mc/world16elevators/commands/tabcomplete/ElevatorTab.java @@ -206,7 +206,7 @@ public List onTabComplete(CommandSender sender, Command cmd, String aile } else if (args.length == 3) { return this.elevatorControllerMap.containsKey(args[1]) ? new ArrayList<>(this.elevatorControllerMap.get(args[1]).getElevatorsMap().keySet()) : null; } else if (args.length == 4) { - return getContainsString(args[3], Arrays.asList("show", "shift")); + return getContainsString(args[3], Arrays.asList("show", "shift", "fix-with-worldedit", "atdoor")); } return null; }