fix join command and remove command bug and update docs (#904)

* feat:new command "join" and "remove" to force join or remove avatar in your current team

* fix:change MaxAvatarsInTeam from 9 to 4

* feat:update & merge branch.Translate fix

* fix(command):fix remove command a stupid bug.Loop delete element bug.

* fix(command):fix join command. When adding avatars, repeat avatars skip and non repeat avatars join.

* fix(language):fix join command remove command translate

* fix(ReadMe):update README.md join and remove command.
This commit is contained in:
lsCoding666
2022-05-15 14:27:23 +08:00
committed by GitHub
parent 49364f9c05
commit 7a66f22827
7 changed files with 189 additions and 177 deletions

View File

@@ -33,10 +33,13 @@ public class JoinCommand implements CommandHandler {
for (int i = 0; i < args.size(); i++) {
Avatar avatar = sender.getAvatars().getAvatarById(avatarIds.get(i));
if (avatar == null || sender.getTeamManager().getCurrentTeamInfo().contains(avatar)) {
if (avatar == null) {
CommandHandler.sendMessage(sender, translate("commands.generic.invalid.avatarId"));
return;
}
if (sender.getTeamManager().getCurrentTeamInfo().contains(avatar)){
continue;
}
sender.getTeamManager().getCurrentTeamInfo().addAvatar(avatar);
}

View File

@@ -7,6 +7,8 @@ import emu.grasscutter.game.player.Player;
import emu.grasscutter.server.packet.send.PacketChangeMpTeamAvatarRsp;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import static emu.grasscutter.utils.Language.translate;
@@ -17,11 +19,11 @@ public class RemoveCommand implements CommandHandler {
@Override
public void execute(Player sender, Player targetPlayer, List<String> args) {
List<Integer> avatarIds = new ArrayList<>();
List<Integer> avatarIndexList = new ArrayList<>();
for (String arg : args) {
try {
int avatarId = Integer.parseInt(arg);
avatarIds.add(avatarId);
int avatarIndex = Integer.parseInt(arg);
avatarIndexList.add(avatarIndex);
} catch (Exception ignored) {
ignored.printStackTrace();
CommandHandler.sendMessage(sender, translate("commands.remove.invalid_index"));
@@ -29,12 +31,14 @@ public class RemoveCommand implements CommandHandler {
}
}
for (int i = 0; i < avatarIds.size(); i++) {
if (avatarIds.get(i) > sender.getTeamManager().getCurrentTeamInfo().getAvatars().size() || avatarIds.get(i) <= 0) {
Collections.reverse(avatarIndexList);
for (int i = 0; i < avatarIndexList.size(); i++) {
if (avatarIndexList.get(i) > sender.getTeamManager().getCurrentTeamInfo().getAvatars().size() || avatarIndexList.get(i) <= 0) {
CommandHandler.sendMessage(sender, translate("commands.remove.invalid_index"));
return;
}
sender.getTeamManager().getCurrentTeamInfo().removeAvatar(avatarIds.get(i) - 1);
sender.getTeamManager().getCurrentTeamInfo().removeAvatar(avatarIndexList.get(i) - 1);
}
// Packet