diff --git a/src/main/java/pw/kaboom/icontrolu/commands/CommandIcu.java b/src/main/java/pw/kaboom/icontrolu/commands/CommandIcu.java index bcd10db..18819ea 100644 --- a/src/main/java/pw/kaboom/icontrolu/commands/CommandIcu.java +++ b/src/main/java/pw/kaboom/icontrolu/commands/CommandIcu.java @@ -24,80 +24,93 @@ public final class CommandIcu implements CommandExecutor { if (args.length == 1) { controller.sendMessage(Component .text("Usage: /" + label + " control ", NamedTextColor.RED)); - } else { - Player target = Bukkit.getPlayer(args[1]); - - if (target == null && args[1].matches("([a-f0-9]{8}(-[a-f0-9]{4}){4}[a-f0-9]{8})")) { - target = Bukkit.getPlayer(UUID.fromString(args[1])); - } - - if (target != null) { - if (target == controller) { - controller.sendMessage(Component.text("You are already controlling yourself")); - } else if (PlayerControl.getTarget(controller.getUniqueId()) != null) { - controller.sendMessage( - Component.text("You are already controlling \"") - .append(Component.text(target.getName())) - .append(Component.text("\"")) - ); - } else if (PlayerControl.getController(target.getUniqueId()) != null) { - controller.sendMessage( - Component.text("Player \"") - .append(Component.text(target.getName())) - .append(Component.text("\" is already being controlled")) - ); - } else if (PlayerControl.getTarget(target.getUniqueId()) != null) { - controller.sendMessage( - Component.text("Player \"") - .append(Component.text(target.getName())) - .append(Component.text("\" is already controlling another player")) - ); - } else if (!controller.canSee(target)) { - controller.sendMessage(Component.text("You may not control this player")); - } else { - controller.teleportAsync(target.getLocation()); - - controller.getInventory().setContents(target.getInventory().getContents()); - - PlayerControl.setTarget(controller.getUniqueId(), target); - PlayerControl.setController(target.getUniqueId(), controller); - - controller.sendMessage( - Component.text("You are now controlling \"") - .append(Component.text(target.getName())) - .append(Component.text("\"")) - ); - } - } else { - controller.sendMessage( - Component.text("Player \"") - .append(Component.text(args[1])) - .append(Component.text("\" not found")) - ); - } + return; } + + Player target = Bukkit.getPlayer(args[1]); + + if (target == null && args[1].matches("([a-f0-9]{8}(-[a-f0-9]{4}){4}[a-f0-9]{8})")) { + target = Bukkit.getPlayer(UUID.fromString(args[1])); + } + + if (target == null) { + controller.sendMessage( + Component.text("Player \"") + .append(Component.text(args[1])) + .append(Component.text("\" not found")) + ); + return; + } + + if (target == controller) { + controller.sendMessage(Component.text("You are already controlling yourself")); + return; + } + + if (PlayerControl.getTarget(controller.getUniqueId()) != null) { + controller.sendMessage( + Component.text("You are already controlling \"") + .append(Component.text(target.getName())) + .append(Component.text("\"")) + ); + return; + } + + if (PlayerControl.getController(target.getUniqueId()) != null) { + controller.sendMessage( + Component.text("Player \"") + .append(Component.text(target.getName())) + .append(Component.text("\" is already being controlled")) + ); + return; + } + + if (PlayerControl.getTarget(target.getUniqueId()) != null) { + controller.sendMessage( + Component.text("Player \"") + .append(Component.text(target.getName())) + .append(Component.text("\" is already controlling another player")) + ); + return; + } + + if (!controller.canSee(target)) { + controller.sendMessage(Component.text("You may not control this player")); + return; + } + + controller.teleportAsync(target.getLocation()); + controller.getInventory().setContents(target.getInventory().getContents()); + + PlayerControl.setTarget(controller.getUniqueId(), target); + PlayerControl.setController(target.getUniqueId(), controller); + + controller.sendMessage( + Component.text("You are now controlling \"") + .append(Component.text(target.getName())) + .append(Component.text("\"")) + ); } private void stopCommand(final Player controller) { final Player target = PlayerControl.getTarget(controller.getUniqueId()); - if (target != null) { - PlayerControl.removeTarget(controller.getUniqueId()); - PlayerControl.removeController(target.getUniqueId()); - PlayerControl.scheduleVisibility(controller.getUniqueId()); - - final int seconds = 10; - - controller.sendMessage( - Component.text("You are no longer controlling \"") - .append(Component.text(target.getName())) - .append(Component.text("\". You are invisible for ")) - .append(Component.text(seconds)) - .append(Component.text(" seconds.")) - ); - } else { + if (target == null) { controller.sendMessage(Component.text("You are not controlling anyone at the moment")); + return; } + + PlayerControl.removeTarget(controller.getUniqueId()); + PlayerControl.removeController(target.getUniqueId()); + PlayerControl.scheduleVisibility(controller.getUniqueId()); + + controller.sendMessage( + Component.text("You are no longer controlling \"") + .append(Component.text(target.getName())) + .append(Component.text("\". You are invisible for ")) + .append(Component.text(PlayerControl.getVisibilityDelay())) + .append(Component.text(" seconds.")) + ); } @Override @@ -113,9 +126,15 @@ public final class CommandIcu implements CommandExecutor { if (args.length == 0) { controller.sendMessage(Component .text("Usage: /" + label + " ", NamedTextColor.RED)); - } else if (args[0].equalsIgnoreCase("control")) { + return true; + } + + if (args[0].equalsIgnoreCase("control")) { controlCommand(controller, label, args); - } else if (args[0].equalsIgnoreCase("stop")) { + return true; + } + + if (args[0].equalsIgnoreCase("stop")) { stopCommand(controller); } return true; diff --git a/src/main/java/pw/kaboom/icontrolu/modules/PlayerControl.java b/src/main/java/pw/kaboom/icontrolu/modules/PlayerControl.java index dc37eb1..a61a181 100644 --- a/src/main/java/pw/kaboom/icontrolu/modules/PlayerControl.java +++ b/src/main/java/pw/kaboom/icontrolu/modules/PlayerControl.java @@ -84,6 +84,10 @@ public final class PlayerControl implements Listener { return targets.get(playerUUID); } + public static int getVisibilityDelay() { + return VISIBILITY_DELAY_MS / 1000; + } + public static void removeController(final UUID playerUUID) { controllers.remove(playerUUID); }