mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-12-15 08:25:21 +01:00
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:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -238,9 +238,9 @@
|
||||
"description": "Reload server config"
|
||||
},
|
||||
"remove": {
|
||||
"usage": "Usage: remove [indexOfYourTeams] index start from 1",
|
||||
"invalid_index": "index start from 1",
|
||||
"description": "force remove avatar into your team"
|
||||
"usage": "Usage: remove [indexOfYourTeam] index start from 1",
|
||||
"invalid_index": "The index number is illegal. It starts from 1 and the maximum value is the number of roles in the team",
|
||||
"description": "force remove avatar into your team. Such as `remove 1 2`."
|
||||
},
|
||||
"resetConst": {
|
||||
"reset_all": "Reset all avatars' constellations.",
|
||||
@@ -380,7 +380,8 @@
|
||||
"title": "Banner Details",
|
||||
"available_five_stars": "Available 5-star Items",
|
||||
"available_four_stars": "Available 4-star Items",
|
||||
"available_three_stars": "Available 3-star Items"
|
||||
"available_three_stars": "Available 3-star Items",
|
||||
"template_missing": "data/gacha_details.html is missing."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -237,9 +237,9 @@
|
||||
"description": "重载配置文件和数据"
|
||||
},
|
||||
"remove": {
|
||||
"usage": "用法: remove [indexOfYourTeams] 从1开始",
|
||||
"invalid_index": "下标从1开始",
|
||||
"description": "强制移除队内角色"
|
||||
"usage": "用法: remove [多个角色在队伍中的序号] 序号从1开始",
|
||||
"invalid_index": "序号不合法,从1开始,最大值为队内角色数量",
|
||||
"description": "强制将某个角色从当前队伍中移除。例如`remove 1 2`表示将1号和2号角色从队伍中移除"
|
||||
},
|
||||
"resetConst": {
|
||||
"reset_all": "重置所有角色的命座。",
|
||||
|
||||
@@ -229,9 +229,9 @@
|
||||
"description": "重新加載設定檔和數據。"
|
||||
},
|
||||
"remove": {
|
||||
"usage": "用法: remove [indexOfYourTeams] 从1开始",
|
||||
"invalid_index": "下標從1開始",
|
||||
"description": "强制移除對内角色"
|
||||
"usage": "用法: remove [多個角色在隊伍中的序號] 序號从1开始",
|
||||
"invalid_index": "序號不合法,從1開始,最大值為隊内角色數量",
|
||||
"description": "强制移除對内角色,例如`remove 1 2`表示將1號和2號角色從隊伍中移除"
|
||||
},
|
||||
"resetConst": {
|
||||
"reset_all": "重設所有角色的命座。",
|
||||
|
||||
Reference in New Issue
Block a user