Adds /metropolis-home-move command to switch to another home.

This commit is contained in:
2026-09-27 04:38:43 -07:00
parent a13f512be6
commit efc39365c3
8 changed files with 152 additions and 33 deletions

View File

@@ -23,6 +23,7 @@ import org.bukkit.OfflinePlayer;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class MetropolisHomeMoveCommand implements CommandExecutor {
MetropolisPlugin _plugin;
@@ -33,37 +34,53 @@ public class MetropolisHomeMoveCommand implements CommandExecutor {
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
OfflinePlayer player = null;
int newHomeNumber = 0;
if (sender instanceof OfflinePlayer) {
player = (OfflinePlayer) sender;
if (args.length < 1 || args.length > 2) {
sender.sendMessage("Usage: /metropolis-home-move <homeNumber> [playerName]");
return false;
}
int homeNumber;
try {
homeNumber = Integer.parseInt(args[0]);
} catch (NumberFormatException ex) {
sender.sendMessage("Home number must be a positive integer.");
return false;
}
if (homeNumber < 1) {
sender.sendMessage("Home number must be a positive integer.");
return false;
}
OfflinePlayer target;
if (args.length == 1) {
try {
newHomeNumber = Integer.parseInt(args[0]);
} catch (NumberFormatException ex) {
if (!(sender instanceof Player player)) {
sender.sendMessage("Console must specify a player name.");
return false;
}
} else if (args.length >= 2) {
try {
newHomeNumber = Integer.parseInt(args[0]);
} catch (NumberFormatException ex) {
return false;
}
player = _plugin.getOfflinePlayer(args[1]);
target = player;
} else {
target = _plugin.getOfflinePlayer(args[1]);
if (target == null) {
sender.sendMessage("No known player named " + args[1] + ".");
return false;
}
}
if (!_plugin.homeExists(target.getUniqueId(), homeNumber)) {
String targetName =
target.getName() == null ? target.getUniqueId().toString() : target.getName();
sender.sendMessage(targetName + " does not have home " + homeNumber + ".");
return false;
}
if (player == null || !_plugin.homeExists(player.getUniqueId(), newHomeNumber)) {
return false;
_plugin.setHome(target.getUniqueId(), homeNumber);
String targetName =
target.getName() == null ? target.getUniqueId().toString() : target.getName();
sender.sendMessage("Home " + homeNumber + " is now active for " + targetName + ".");
if (target instanceof Player targetPlayer && targetPlayer != sender) {
targetPlayer.sendMessage("Your active Metropolis home is now home " + homeNumber + ".");
}
_plugin.setHome(player.getUniqueId(), newHomeNumber);
return true;
}
}