Command Targeting overhaul fixes

This commit is contained in:
AnimeGitB
2022-05-05 14:33:08 +09:30
committed by Melledy
parent d8b2e787e5
commit 37c2ee5e2c
13 changed files with 78 additions and 54 deletions

View File

@@ -20,17 +20,21 @@ public final class CoopCommand implements CommandHandler {
Player host = sender;
switch (args.size()) {
case 0: // Summon target to self
if (sender == null) { // Console doesn't have a self to summon to
CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Coop_usage);
return;
}
break;
case 1: // Summon target to argument
try {
int hostId = Integer.parseInt(args.get(1));
host = sender.getServer().getPlayerByUid(hostId);
int hostId = Integer.parseInt(args.get(0));
host = Grasscutter.getGameServer().getPlayerByUid(hostId);
if (host == null) {
CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Player_is_offline);
return;
}
break;
} catch (Exception e) {
} catch (NumberFormatException ignored) {
CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Invalid_playerId);
return;
}
@@ -39,12 +43,12 @@ public final class CoopCommand implements CommandHandler {
return;
}
// There's no target==host check but this just places them in multiplayer in their own world which seems fine.
if (targetPlayer.isInMultiplayer()) {
sender.getServer().getMultiplayerManager().leaveCoop(targetPlayer);
targetPlayer.getServer().getMultiplayerManager().leaveCoop(targetPlayer);
}
sender.getServer().getMultiplayerManager().applyEnterMp(targetPlayer, host.getUid());
sender.getServer().getMultiplayerManager().applyEnterMpReply(host, targetPlayer.getUid(), true);
host.getServer().getMultiplayerManager().applyEnterMp(targetPlayer, host.getUid());
targetPlayer.getServer().getMultiplayerManager().applyEnterMpReply(host, targetPlayer.getUid(), true);
CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Coop_success.replace("{host}", host.getNickname()).replace("{target}", targetPlayer.getNickname()));
}
}