Commit 741e5749 authored by lsCoding666's avatar lsCoding666 Committed by GitHub
Browse files

new command join and remove to force join or remove avatars into your current team (#549)

* 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
parent 470007a6
package emu.grasscutter.command.commands;
import emu.grasscutter.Grasscutter;
import emu.grasscutter.command.Command;
import emu.grasscutter.command.CommandHandler;
import emu.grasscutter.game.avatar.Avatar;
import emu.grasscutter.game.player.Player;
import emu.grasscutter.server.packet.send.PacketChangeMpTeamAvatarRsp;
import java.util.ArrayList;
import java.util.List;
import static emu.grasscutter.utils.Language.translate;
@Command(label = "join", usage = "join [AvatarIDs] such as\"join 10000038 10000039\"",
description = "commands.join.description", permission = "player.join")
public class JoinCommand implements CommandHandler {
@Override
public void execute(Player sender, Player targetPlayer, List<String> args) {
List<Integer> avatarIds = new ArrayList<>();
for (String arg : args) {
try {
int avatarId = Integer.parseInt(arg);
avatarIds.add(avatarId);
} catch (Exception ignored) {
ignored.printStackTrace();
CommandHandler.sendMessage(sender, translate("commands.generic.invalid.avatarId"));
return;
}
}
for (int i = 0; i < args.size(); i++) {
Avatar avatar = sender.getAvatars().getAvatarById(avatarIds.get(i));
if (avatar == null || sender.getTeamManager().getCurrentTeamInfo().contains(avatar)) {
CommandHandler.sendMessage(sender, translate("commands.generic.invalid.avatarId"));
return;
}
sender.getTeamManager().getCurrentTeamInfo().addAvatar(avatar);
}
// Packet
sender.getTeamManager().updateTeamEntities(new PacketChangeMpTeamAvatarRsp(sender, sender.getTeamManager().getCurrentTeamInfo()));
}
}
package emu.grasscutter.command.commands;
import emu.grasscutter.Grasscutter;
import emu.grasscutter.command.Command;
import emu.grasscutter.command.CommandHandler;
import emu.grasscutter.game.player.Player;
import emu.grasscutter.server.packet.send.PacketChangeMpTeamAvatarRsp;
import java.util.ArrayList;
import java.util.List;
import static emu.grasscutter.utils.Language.translate;
@Command(label = "remove", usage = "remove [indexOfYourTeams] index start from 1",
description = "commands.remove.description", permission = "player.remove")
public class RemoveCommand implements CommandHandler {
@Override
public void execute(Player sender, Player targetPlayer, List<String> args) {
List<Integer> avatarIds = new ArrayList<>();
for (String arg : args) {
try {
int avatarId = Integer.parseInt(arg);
avatarIds.add(avatarId);
} catch (Exception ignored) {
ignored.printStackTrace();
CommandHandler.sendMessage(sender, translate("commands.remove.invalid_index"));
return;
}
}
for (int i = 0; i < avatarIds.size(); i++) {
if (avatarIds.get(i) > sender.getTeamManager().getCurrentTeamInfo().getAvatars().size() || avatarIds.get(i) <= 0) {
CommandHandler.sendMessage(sender, translate("commands.remove.invalid_index"));
return;
}
sender.getTeamManager().getCurrentTeamInfo().removeAvatar(avatarIds.get(i) - 1);
}
// Packet
sender.getTeamManager().updateTeamEntities(new PacketChangeMpTeamAvatarRsp(sender, sender.getTeamManager().getCurrentTeamInfo()));
}
}
...@@ -176,6 +176,10 @@ ...@@ -176,6 +176,10 @@
"success": "All characters have been healed.", "success": "All characters have been healed.",
"description": "Heal all characters in your current team." "description": "Heal all characters in your current team."
}, },
"join": {
"usage": "Usage: join [AvatarIDs] such as\"join 10000038 10000039\"",
"description": "force join avatar into your team"
},
"kick": { "kick": {
"player_kick_player": "Player [%s:%s] has kicked player [%s:%s]", "player_kick_player": "Player [%s:%s] has kicked player [%s:%s]",
"server_kick_player": "Kicking player [%s:%s]", "server_kick_player": "Kicking player [%s:%s]",
...@@ -228,6 +232,11 @@ ...@@ -228,6 +232,11 @@
"reload_done": "Reload complete.", "reload_done": "Reload complete.",
"description": "Reload server config" "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"
},
"resetConst": { "resetConst": {
"reset_all": "Reset all avatars' constellations.", "reset_all": "Reset all avatars' constellations.",
"success": "Constellations for %s have been reset. Please relog to see changes.", "success": "Constellations for %s have been reset. Please relog to see changes.",
......
...@@ -176,6 +176,10 @@ ...@@ -176,6 +176,10 @@
"success": "已治疗所有角色。", "success": "已治疗所有角色。",
"description": "治疗当前队伍的角色" "description": "治疗当前队伍的角色"
}, },
"join": {
"usage": "用法:join <角色IDs> 例如\"join 10000038 10000039\"空格分开",
"description": "强制将角色加入到当前队伍中"
},
"kick": { "kick": {
"player_kick_player": "玩家 [%s:%s] 已将 [%s:%s] 踢出。", "player_kick_player": "玩家 [%s:%s] 已将 [%s:%s] 踢出。",
"server_kick_player": "正在踢出玩家 [%s:%s]...", "server_kick_player": "正在踢出玩家 [%s:%s]...",
...@@ -228,6 +232,11 @@ ...@@ -228,6 +232,11 @@
"reload_done": "重载完成。", "reload_done": "重载完成。",
"description": "重载配置文件和数据" "description": "重载配置文件和数据"
}, },
"remove": {
"usage": "用法: remove [indexOfYourTeams] 从1开始",
"invalid_index": "下标从1开始",
"description": "强制移除队内角色"
},
"resetConst": { "resetConst": {
"reset_all": "重置所有角色的命座。", "reset_all": "重置所有角色的命座。",
"success": "已重置 %s 的命座,重新登录后生效。", "success": "已重置 %s 的命座,重新登录后生效。",
......
...@@ -228,6 +228,11 @@ ...@@ -228,6 +228,11 @@
"reload_done": "重新加載已完成。", "reload_done": "重新加載已完成。",
"description": "重新加載設定檔和數據。" "description": "重新加載設定檔和數據。"
}, },
"remove": {
"usage": "用法: remove [indexOfYourTeams] 从1开始",
"invalid_index": "下標從1開始",
"description": "强制移除對内角色"
},
"resetConst": { "resetConst": {
"reset_all": "重設所有角色的命座。", "reset_all": "重設所有角色的命座。",
"success": "已重設 %s 的命座,重新登入後將會生效。", "success": "已重設 %s 的命座,重新登入後將會生效。",
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment