diff --git a/gradle.properties b/gradle.properties index 26958dc..767ca0b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,2 @@ pluginGroup=sky_bai.bukkit -pluginVersion=0.1.2 +pluginVersion=0.1.3 diff --git a/src/main/java/sky_bai/bukkit/baiteam/BaiCommand.java b/src/main/java/sky_bai/bukkit/baiteam/BaiCommand.java index 3e4d479..12f3253 100644 --- a/src/main/java/sky_bai/bukkit/baiteam/BaiCommand.java +++ b/src/main/java/sky_bai/bukkit/baiteam/BaiCommand.java @@ -14,7 +14,6 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; -import org.bukkit.command.TabCompleter; import org.bukkit.entity.Player; import de.erethon.dungeonsxl.DungeonsXL; @@ -39,348 +38,347 @@ import sky_bai.bukkit.baiteam.team.Team; import sky_bai.bukkit.baiteam.team.TeamTeleport; -public class BaiCommand implements TabCompleter, CommandExecutor { +public class BaiCommand implements CommandExecutor { @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if (sender instanceof Player) { - Player player = (Player) sender; - if (args.length > 0) { - switch (args[0]) { - case "Teleport": { - if (args.length > 1) { - switch (args[1]) { - case "Teleport": { - if (args.length < 6) { - return false; - } - Player player_2 = Bukkit.getPlayer(args[2]); - Team team = BaiTeam.getTeamManager().getTeam(player_2, false); - double x = Double.valueOf(args[3]); - double y = Double.valueOf(args[4]); - double z = Double.valueOf(args[5]); - World world = player_2.getWorld(); - if (args.length > 6 && Bukkit.getWorld(args[6]) != null) { - world = Bukkit.getWorld(args[6]); - } - Location location = new Location(world, x, y, z); - String uuid = UUID.randomUUID().toString(); - while (TeamTeleport.LocationMap.containsKey(uuid)) { - uuid = UUID.randomUUID().toString(); - } - long time = System.currentTimeMillis(); - while (TeamTeleport.UuidTime.containsKey(time)) { - time = time + 1; - } - TeamTeleport.LocationMap.put(uuid, location); - Set tpPlayers = new HashSet(); - tpPlayers.add(player_2); - TeamTeleport.TeleportPlayer.put(uuid, tpPlayers); - TeamTeleport.UuidTime.put(time, uuid); - player_2.teleport(location); - if (team != null && team.getLeader() == player_2) { - Set players = team.getMembers(); - for (Player player_3 : players) { - if (player_3 != player_2) { - BaiMessage.Action action = BaiMessage.Action.setAction(BaiMessage.Button.Teleport_Yes.getMes(), "/baiteam Teleport Yes " + uuid, BaiMessage.Button.Text_Teleport_Yes.getMes()); - BaiMessage.send(player_3, BaiMessage.TeamMesEnum.Teleport_Member, Arrays.asList(team.getTeamName(), player_2.getName(), location.toString()), action); - } - } - } - return true; - } - case "Yes": { - String uuid = args[2]; - if (TeamTeleport.LocationMap.containsKey(uuid) == false) { - player.sendMessage(BaiMessage.Error.OnTeleportIsNo.getMes()); - return false; - } - if (TeamTeleport.TeleportPlayer.get(uuid).contains(player)) { - player.sendMessage(BaiMessage.Error.OnTeleportIsNo.getMes()); - return false; - } - player.teleport(TeamTeleport.LocationMap.get(uuid)); - TeamTeleport.TeleportPlayer.get(uuid).add(player); - } - } - } + Player player = (sender instanceof Player) ? (Player) sender : null; + if (player == null) { + BaiTeam.getBaiTeam().getLogger().info("这些命令只能玩家执行"); + return false; + } + if (args.length > 0) { + switch (args[0].toLowerCase()) { + case "teleport": { + return teleport(player, args); + } + case "play": { + return play(player, args); + } + case "opengui": { + return openGui(player, args); + } + case "create": { + String name = player.getName(); + if (args.length > 1) { + name = args[1]; + } + int i1 = 0; + while (BaiTeam.getTeamManager().ifTeam(name)) { + name = name + "#" + i1; + i1++; + } + Team team = new Team((Player) sender, name); + BTCreateTeamEvent.run(team, (Player) sender); + return true; + } + case "leave": { + if (BaiTeam.getTeamManager().ifOnTeam(player) == false) { + BaiMessage.send(player, BaiMessage.Error.OnPlayerNoTeam, null); return false; } - case "Play": { - DungeonsXL dungeonsXL = DungeonsXL.getInstance(); - if (args.length <= 1) { - return false; - } - if (dungeonsXL.getDWorldCache().getResourceByName(args[1]) == null || BaiTeam.getTeamManager().getTeam(player, true) == null || dungeonsXL.getDPlayerCache().getByPlayer(player) instanceof DInstancePlayer) { - return false; - } - DResourceWorld resource = dungeonsXL.getDWorldCache().getResourceByName(args[1]); - Dungeon dungeon = new Dungeon(dungeonsXL, resource); - Team team = BaiTeam.getTeamManager().getTeam(player, true); - List members = new ArrayList(team.getMembers()); - members.remove(player); - DGroup group = new DGroup(dungeonsXL, team.getTeamName(), player, members, dungeon); - DGameWorld gameWorld = dungeon.getMap().instantiateAsGameWorld(false); - new Game(dungeonsXL, group, gameWorld); - for (Player groupPlayer : group.getPlayers().getOnlinePlayers()) { - new DGamePlayer(dungeonsXL, groupPlayer, group.getGameWorld()); - } - return true; + Team team = BaiTeam.getTeamManager().getTeam(player, false); + BTLeaveTeamEvent.run(team, player); + return true; + } + case "applyto": { + if (args.length <= 1) { + return false; } - case "OpenGui": { - if (args.length <= 1) { - if (BaiTeam.getTeamManager().ifOnTeam(player) == false) { - TeamGui.getGui().openMainGui(player); - } else { - TeamGui.getGui().openTeamInfoGui(player, BaiTeam.getTeamManager().getTeam(player, false)); - } - return true; - } - switch (args[1]) { - case "Main": { - TeamGui.getGui().openMainGui(player); - return true; - } - case "TeamInfo": { - if (BaiTeam.getTeamManager().ifOnTeam(player) == false) { - return false; - } - TeamGui.getGui().openTeamInfoGui(player, BaiTeam.getTeamManager().getTeam(player, false)); - return true; - } - case "TeamList":{ - if (BaiTeam.getTeamManager().ifOnTeam(player)) { - return false; - } - if (BaiTeam.getTeamManager().getTeams().isEmpty()) { - TeamGui.getGui().openMainGui(player); - return false; - } - int i1 = 0; - if (args.length >= 4 && Integer.valueOf(args[3]) != null) { - i1 = Integer.valueOf(args[3]); - } - List teams = new ArrayList(); - for (Team team : BaiTeam.getTeamManager().getTeams()) { - if (team.getMembers().size() < BTConfig.getConfig().getConfig().getInt("TeamSize", 5)) { - teams.add(team); - } - } - if (teams.isEmpty()) { - TeamGui.getGui().openMainGui(player); - return false; - } - TeamGui.getGui().openTeamListGui(player, teams, i1); - return true; - } - case "PlayerList": { - if (BaiTeam.getTeamManager().ifOnTeam(player) == false) { - return false; - } - Team team = BaiTeam.getTeamManager().getTeam(player, true); - if (team == null) { - return false; - } - int i1 = 0; - if (args.length >= 4 && Integer.valueOf(args[3]) != null) { - i1 = Integer.valueOf(args[3]); - } - List players = Arrays.asList(Bukkit.getOfflinePlayers()); - List players2 = new ArrayList(); - for (OfflinePlayer offlinePlayer : players) { - if (offlinePlayer.isOnline() && BaiTeam.getTeamManager().ifOnTeam((Player) offlinePlayer) == false) { - players2.add((Player) offlinePlayer); - } - } - if (players2.isEmpty()) { - TeamGui.getGui().openTeamInfoGui(player, team); - return false; - } - TeamGui.getGui().openPlayerListGui(player, players2, i1); - return true; - } - } + BTPlayerApplyEvent.run(BaiTeam.getTeamManager().getTeam(args[1]), player); + return true; + } + case "inviteto": { + if (BaiTeam.getTeamManager().getTeam(player, true) == null) { + BaiMessage.send(player, BaiMessage.Error.OnPlayerNoLeader, null); return false; } - case "Create": { - String name = player.getName(); - if (args.length > 1) { - name = args[1]; - } - int i1 = 0; - while (BaiTeam.getTeamManager().ifTeam(name)) { - name = name + "#" + i1; - i1++; - } - Team team = new Team((Player) sender, name); - BTCreateTeamEvent.run(team, (Player) sender); - return true; + if (args.length <= 1 || Bukkit.getPlayer(args[1]) == null) { + return false; } - case "Leave": { - if (BaiTeam.getTeamManager().ifOnTeam(player) == false) { - BaiMessage.send(player, BaiMessage.Error.OnPlayerNoTeam, null); - return false; - } - Team team = BaiTeam.getTeamManager().getTeam(player, false); - BTLeaveTeamEvent.run(team, player); - return true; + BTTeamInviteEvent.run(BaiTeam.getTeamManager().getTeam(player, true), Bukkit.getPlayer(args[1]), player); + return true; + } + case "transfer": { + if (BaiTeam.getTeamManager().getTeam(player, true) == null) { + BaiMessage.send(player, BaiMessage.Error.OnPlayerNoLeader, null); + return false; } - case "ApplyTo": { - if (args.length <= 1) { - return false; - } - BTPlayerApplyEvent.run(BaiTeam.getTeamManager().getTeam(args[1]), player); - return true; + if (args.length <= 1 || Bukkit.getPlayer(args[1]) == null) { + return false; } - case "InviteTo": { - if (BaiTeam.getTeamManager().getTeam(player, true) == null) { - BaiMessage.send(player, BaiMessage.Error.OnPlayerNoLeader, null); - return false; - } - if (args.length <= 1 || Bukkit.getPlayer(args[1]) == null) { - return false; - } - BTTeamInviteEvent.run(BaiTeam.getTeamManager().getTeam(player, true), Bukkit.getPlayer(args[1]), player); - return true; + BTTransferTeamEvent.run(BaiTeam.getTeamManager().getTeam(player, true), Bukkit.getPlayer(args[1])); + return true; + } + case "guitransfer": { + if (BaiTeam.getTeamManager().getTeam(player, true) == null) { + BaiMessage.send(player, BaiMessage.Error.OnPlayerNoLeader, null); + return false; } - case "Transfer": { - if (BaiTeam.getTeamManager().getTeam(player, true) == null) { - BaiMessage.send(player, BaiMessage.Error.OnPlayerNoLeader, null); - return false; - } - if (args.length <= 1 || Bukkit.getPlayer(args[1]) == null) { + Team team = BaiTeam.getTeamManager().getTeam(player, true); + if (args.length <= 1 || Bukkit.getPlayer(args[1]) == null) { + return false; + } + BTTransferTeamEvent.run(team, Bukkit.getPlayer(args[1])); + TeamGui.getGui().openTeamInfoGui(player, team); + TeamGui.getGui().openTeamInfoGui(Bukkit.getPlayer(args[1]), team); + return true; + } + case "kick": { + if (BaiTeam.getTeamManager().getTeam(player, true) == null) { + BaiMessage.send(player, BaiMessage.Error.OnPlayerNoLeader, null); + return false; + } + Team team = BaiTeam.getTeamManager().getTeam(player, true); + if (args.length <= 1 || Bukkit.getPlayer(args[1]) == null) { + return false; + } + BTKickPlayerEvent.run(team, Bukkit.getPlayer(args[1])); + return true; + } + case "guikick": { + if (BaiTeam.getTeamManager().getTeam(player, true) == null) { + BaiMessage.send(player, BaiMessage.Error.OnPlayerNoLeader, null); + return false; + } + Team team = BaiTeam.getTeamManager().getTeam(player, true); + if (args.length <= 1 || Bukkit.getPlayer(args[1]) == null) { + return false; + } + BTKickPlayerEvent.run(team, Bukkit.getPlayer(args[1])); + TeamGui.getGui().openTeamInfoGui(player, team); + return true; + } + case "apply": { + if (args.length <= 1) { + return false; + } + switch (args[1].toLowerCase()) { + case "yes": { + if (args.length <= 2 || Bukkit.getPlayer(args[2]) == null) { return false; } - BTTransferTeamEvent.run(BaiTeam.getTeamManager().getTeam(player, true), Bukkit.getPlayer(args[1])); - return true; - } - case "GuiTransfer": { + Player player2 = Bukkit.getPlayer(args[2]); if (BaiTeam.getTeamManager().getTeam(player, true) == null) { BaiMessage.send(player, BaiMessage.Error.OnPlayerNoLeader, null); return false; } - Team team = BaiTeam.getTeamManager().getTeam(player, true); - if (args.length <= 1 || Bukkit.getPlayer(args[1]) == null) { - return false; - } - BTTransferTeamEvent.run(team, Bukkit.getPlayer(args[1])); - TeamGui.getGui().openTeamInfoGui(player, team); - TeamGui.getGui().openTeamInfoGui(Bukkit.getPlayer(args[1]), team); + Team team = BaiTeam.getTeamManager().getTeam(player,true); + BTAcceptPlayerApplyEvent.run(team, player2, true); return true; } - case "Kick": { - if (BaiTeam.getTeamManager().getTeam(player, true) == null) { - BaiMessage.send(player, BaiMessage.Error.OnPlayerNoLeader, null); - return false; - } - Team team = BaiTeam.getTeamManager().getTeam(player, true); - if (args.length <= 1 || Bukkit.getPlayer(args[1]) == null) { + case "no": { + if (args.length <= 2 || Bukkit.getPlayer(args[2]) == null) { return false; } - BTKickPlayerEvent.run(team, Bukkit.getPlayer(args[1])); - return true; - } - case "GuiKick": { + Player player2 = Bukkit.getPlayer(args[2]); if (BaiTeam.getTeamManager().getTeam(player, true) == null) { BaiMessage.send(player, BaiMessage.Error.OnPlayerNoLeader, null); return false; } - Team team = BaiTeam.getTeamManager().getTeam(player, true); - if (args.length <= 1 || Bukkit.getPlayer(args[1]) == null) { - return false; - } - BTKickPlayerEvent.run(team, Bukkit.getPlayer(args[1])); - TeamGui.getGui().openTeamInfoGui(player, team); + Team team = BaiTeam.getTeamManager().getTeam(player,true); + BTAcceptPlayerApplyEvent.run(team, player2, false); return true; } - case "Apply": { - if (args.length <= 1) { - return false; - } - switch (args[1]) { - case "Yes": { - if (args.length <= 2 || Bukkit.getPlayer(args[2]) == null) { - return false; - } - Player player2 = Bukkit.getPlayer(args[2]); - if (BaiTeam.getTeamManager().getTeam(player, true) == null) { - BaiMessage.send(player, BaiMessage.Error.OnPlayerNoLeader, null); - return false; - } - Team team = BaiTeam.getTeamManager().getTeam(args[3]); - BTAcceptPlayerApplyEvent.run(team, player2, true); - return true; - } - case "No": { - if (args.length <= 2 || Bukkit.getPlayer(args[2]) == null) { - return false; - } - Player player2 = Bukkit.getPlayer(args[2]); - if (BaiTeam.getTeamManager().getTeam(player, true) == null) { - BaiMessage.send(player, BaiMessage.Error.OnPlayerNoLeader, null); - return false; - } - Team team = BaiTeam.getTeamManager().getTeam(args[3]); - BTAcceptPlayerApplyEvent.run(team, player2, false); - return true; - } - } } - case "Invite": { - if (args.length <= 1) { - return false; - } - switch (args[1]) { - case "Yes": { - if (args.length <= 2 || BaiTeam.getTeamManager().ifTeam(args[2]) == false) { - return false; - } - Team team = BaiTeam.getTeamManager().getTeam(args[2]); - BTAcceptTeamInviteEvent.run(team, player, true); - return true; - } - case "No": { - if (args.length <= 2 || BaiTeam.getTeamManager().ifTeam(args[2]) == false) { - return false; - } - Team team = BaiTeam.getTeamManager().getTeam(args[2]); - BTAcceptTeamInviteEvent.run(team, player, false); - return true; - } - } + } + case "invite": { + if (args.length <= 1) { + return false; } - case "Promotional": { - if (BaiTeam.getTeamManager().getTeam(player, true) == null) { - BaiMessage.send(player, BaiMessage.Error.OnPlayerNoLeader, null); + switch (args[1].toLowerCase()) { + case "yes": { + if (args.length <= 2 || BaiTeam.getTeamManager().ifTeam(args[2]) == false) { return false; } - Team team = BaiTeam.getTeamManager().getTeam(args[3]); - BTPromotionalTeamEvent.run(team); + Team team = BaiTeam.getTeamManager().getTeam(args[2]); + BTAcceptTeamInviteEvent.run(team, player, true); return true; } - case "GuiPromotional": { - if (BaiTeam.getTeamManager().getTeam(player, true) == null) { - BaiMessage.send(player, BaiMessage.Error.OnPlayerNoLeader, null); + case "no": { + if (args.length <= 2 || BaiTeam.getTeamManager().ifTeam(args[2]) == false) { return false; } - Team team = BaiTeam.getTeamManager().getTeam(args[3]); - BTPromotionalTeamEvent.run(team); - TeamGui.getGui().openTeamInfoGui(player, team); + Team team = BaiTeam.getTeamManager().getTeam(args[2]); + BTAcceptTeamInviteEvent.run(team, player, false); return true; } } } + case "promotional": { + if (BaiTeam.getTeamManager().getTeam(player, true) == null) { + BaiMessage.send(player, BaiMessage.Error.OnPlayerNoLeader, null); + return false; + } + Team team = BaiTeam.getTeamManager().getTeam(args[3]); + BTPromotionalTeamEvent.run(team); + return true; + } + case "guipromotional": { + if (BaiTeam.getTeamManager().getTeam(player, true) == null) { + BaiMessage.send(player, BaiMessage.Error.OnPlayerNoLeader, null); + return false; + } + Team team = BaiTeam.getTeamManager().getTeam(args[3]); + BTPromotionalTeamEvent.run(team); + TeamGui.getGui().openTeamInfoGui(player, team); + return true; + } + } player.sendMessage(BaiMessage.getMesPrefix() + "你甚至忘记了写参数!"); return false; - } else { - BaiTeam.getBaiTeam().getLogger().info("这些命令只能玩家执行"); + } + return false; + } + + private boolean teleport(Player sender, String[] args) { + if (args.length < 1) { return false; } + if (args[1].equalsIgnoreCase("teleport") && args.length > 5) { + Player player = Bukkit.getPlayer(args[2]); + Team team = BaiTeam.getTeamManager().getTeam(player, false); + double x = Double.valueOf(args[3]); + double y = Double.valueOf(args[4]); + double z = Double.valueOf(args[5]); + World world = (args.length > 6 && Bukkit.getWorld(args[6]) != null) ? Bukkit.getWorld(args[6]) : player.getWorld(); + Location location = new Location(world, x, y, z); + String uuid = UUID.randomUUID().toString(); + while (TeamTeleport.LocationMap.containsKey(uuid)) { + uuid = UUID.randomUUID().toString(); + } + long time = System.currentTimeMillis(); + while (TeamTeleport.UuidTime.containsKey(time)) { + time = time + 1; + } + TeamTeleport.LocationMap.put(uuid, location); + Set tpPlayers = new HashSet(); + tpPlayers.add(player); + TeamTeleport.TeleportPlayer.put(uuid, tpPlayers); + TeamTeleport.UuidTime.put(time, uuid); + player.teleport(location); + if (team != null && team.getLeader() == player) { + Set players = team.getMembers(); + for (Player player2 : players) { + if (player2 != player) { + BaiMessage.Action action = BaiMessage.Action.setAction(BaiMessage.Button.Teleport_Yes.getMes(), "/baiteam Teleport Yes " + uuid, BaiMessage.Button.Text_Teleport_Yes.getMes()); + BaiMessage.send(player2, BaiMessage.TeamMesEnum.Teleport_Member, Arrays.asList(team.getTeamName(), player.getName(), location.toString()), action); + } + } + } + } else if (args[1].equalsIgnoreCase("yes") && args.length > 2) { + String uuid = args[2]; + if (TeamTeleport.LocationMap.containsKey(uuid) == false) { + sender.sendMessage(BaiMessage.Error.OnTeleportIsNo.getMes()); + return false; + } + if (TeamTeleport.TeleportPlayer.get(uuid).contains(sender)) { + sender.sendMessage(BaiMessage.Error.OnTeleportIsNo.getMes()); + return false; + } + sender.teleport(TeamTeleport.LocationMap.get(uuid)); + TeamTeleport.TeleportPlayer.get(uuid).add(sender); + } + return true; } - @Override - public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) { - return Arrays.asList(""); + private boolean play(Player sender, String[] args) { + DungeonsXL dungeonsXL = DungeonsXL.getInstance(); + if (args.length <= 1) { + return false; + } + if (dungeonsXL.getDWorldCache().getResourceByName(args[1]) == null || BaiTeam.getTeamManager().getTeam(sender, true) == null || dungeonsXL.getDPlayerCache().getByPlayer(sender) instanceof DInstancePlayer) { + return false; + } + DResourceWorld resource = dungeonsXL.getDWorldCache().getResourceByName(args[1]); + Dungeon dungeon = new Dungeon(dungeonsXL, resource); + Team team = BaiTeam.getTeamManager().getTeam(sender, true); + List members = new ArrayList(team.getMembers()); + members.remove(sender); + DGroup group = new DGroup(dungeonsXL, team.getTeamName(), sender, members, dungeon); + DGameWorld gameWorld = dungeon.getMap().instantiateAsGameWorld(false); + new Game(dungeonsXL, group, gameWorld); + for (Player groupPlayer : group.getPlayers().getOnlinePlayers()) { + new DGamePlayer(dungeonsXL, groupPlayer, group.getGameWorld()); + } + return true; + } + + private boolean openGui(Player sender, String[] args) { + if (args.length <= 1) { + if (BaiTeam.getTeamManager().ifOnTeam(sender) == false) { + TeamGui.getGui().openMainGui(sender); + } else { + TeamGui.getGui().openTeamInfoGui(sender, BaiTeam.getTeamManager().getTeam(sender, false)); + } + return true; + } + switch (args[1].toLowerCase()) { + case "main": { + TeamGui.getGui().openMainGui(sender); + return true; + } + case "teaminfo": { + if (BaiTeam.getTeamManager().ifOnTeam(sender) == false) { + return false; + } + TeamGui.getGui().openTeamInfoGui(sender, BaiTeam.getTeamManager().getTeam(sender, false)); + return true; + } + case "teamlist": { + if (BaiTeam.getTeamManager().ifOnTeam(sender)) { + return false; + } + if (BaiTeam.getTeamManager().getTeams().isEmpty()) { + TeamGui.getGui().openMainGui(sender); + return false; + } + int i1 = 0; + if (args.length >= 4 && Integer.valueOf(args[3]) != null) { + i1 = Integer.valueOf(args[3]); + } + List teams = new ArrayList(); + for (Team team : BaiTeam.getTeamManager().getTeams()) { + if (team.getMembers().size() < BTConfig.getConfig().getConfig().getInt("TeamSize", 5)) { + teams.add(team); + } + } + if (teams.isEmpty()) { + TeamGui.getGui().openMainGui(sender); + return false; + } + TeamGui.getGui().openTeamListGui(sender, teams, i1); + return true; + } + case "playerlist": { + if (BaiTeam.getTeamManager().ifOnTeam(sender) == false) { + return false; + } + Team team = BaiTeam.getTeamManager().getTeam(sender, true); + if (team == null) { + return false; + } + int i1 = 0; + if (args.length >= 4 && Integer.valueOf(args[3]) != null) { + i1 = Integer.valueOf(args[3]); + } + List players = Arrays.asList(Bukkit.getOfflinePlayers()); + List players2 = new ArrayList(); + for (OfflinePlayer offlinePlayer : players) { + if (offlinePlayer.isOnline() && BaiTeam.getTeamManager().ifOnTeam((Player) offlinePlayer) == false) { + players2.add((Player) offlinePlayer); + } + } + if (players2.isEmpty()) { + TeamGui.getGui().openTeamInfoGui(sender, team); + return false; + } + TeamGui.getGui().openPlayerListGui(sender, players2, i1); + return true; + } + } + return false; + } } diff --git a/src/main/java/sky_bai/bukkit/baiteam/BaiCommandCMD.java b/src/main/java/sky_bai/bukkit/baiteam/BaiCommandCMD.java new file mode 100644 index 0000000..3c2feb6 --- /dev/null +++ b/src/main/java/sky_bai/bukkit/baiteam/BaiCommandCMD.java @@ -0,0 +1,140 @@ +package sky_bai.bukkit.baiteam; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import de.erethon.dungeonsxl.DungeonsXL; +import de.erethon.dungeonsxl.dungeon.Dungeon; +import de.erethon.dungeonsxl.game.Game; +import de.erethon.dungeonsxl.player.DGamePlayer; +import de.erethon.dungeonsxl.player.DGroup; +import de.erethon.dungeonsxl.player.DInstancePlayer; +import de.erethon.dungeonsxl.world.DGameWorld; +import de.erethon.dungeonsxl.world.DResourceWorld; +import sky_bai.bukkit.baiteam.book.TeamGui; +import sky_bai.bukkit.baiteam.config.BTConfig; +import sky_bai.bukkit.baiteam.team.Team; + +public class BaiCommandCMD implements CommandExecutor { + + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + if (args.length > 1) { + Player player = (Bukkit.getPlayer(args[0]) != null) ? Bukkit.getPlayer(args[1]) : null; + switch (args[1].toLowerCase()) { + case "play": + return play(player, args); + case "opengui": + return openGui(player, args); + } + } + return false; + } + + private boolean play(Player player, String[] args) { + DungeonsXL dungeonsXL = DungeonsXL.getInstance(); + if (args.length <= 2) { + return false; + } + if (dungeonsXL.getDWorldCache().getResourceByName(args[2]) == null || BaiTeam.getTeamManager().getTeam(player, true) == null || dungeonsXL.getDPlayerCache().getByPlayer(player) instanceof DInstancePlayer) { + return false; + } + DResourceWorld resource = dungeonsXL.getDWorldCache().getResourceByName(args[2]); + Dungeon dungeon = new Dungeon(dungeonsXL, resource); + Team team = BaiTeam.getTeamManager().getTeam(player, true); + List members = new ArrayList(team.getMembers()); + members.remove(player); + DGroup group = new DGroup(dungeonsXL, team.getTeamName(), player, members, dungeon); + DGameWorld gameWorld = dungeon.getMap().instantiateAsGameWorld(false); + new Game(dungeonsXL, group, gameWorld); + for (Player groupPlayer : group.getPlayers().getOnlinePlayers()) { + new DGamePlayer(dungeonsXL, groupPlayer, group.getGameWorld()); + } + return true; + } + + private boolean openGui(Player player, String[] args) { + if (args.length <= 2) { + if (BaiTeam.getTeamManager().ifOnTeam(player) == false) { + TeamGui.getGui().openMainGui(player); + } else { + TeamGui.getGui().openTeamInfoGui(player, BaiTeam.getTeamManager().getTeam(player, false)); + } + return true; + } + switch (args[2].toLowerCase()) { + case "main": { + TeamGui.getGui().openMainGui(player); + return true; + } + case "teaminfo": { + if (BaiTeam.getTeamManager().ifOnTeam(player) == false) { + return false; + } + TeamGui.getGui().openTeamInfoGui(player, BaiTeam.getTeamManager().getTeam(player, false)); + return true; + } + case "teamlist": { + if (BaiTeam.getTeamManager().ifOnTeam(player)) { + return false; + } + if (BaiTeam.getTeamManager().getTeams().isEmpty()) { + TeamGui.getGui().openMainGui(player); + return false; + } + int i1 = 0; + if (args.length >= 5 && Integer.valueOf(args[4]) != null) { + i1 = Integer.valueOf(args[4]); + } + List teams = new ArrayList(); + for (Team team : BaiTeam.getTeamManager().getTeams()) { + if (team.getMembers().size() < BTConfig.getConfig().getConfig().getInt("TeamSize", 5)) { + teams.add(team); + } + } + if (teams.isEmpty()) { + TeamGui.getGui().openMainGui(player); + return false; + } + TeamGui.getGui().openTeamListGui(player, teams, i1); + return true; + } + case "playerlist": { + if (BaiTeam.getTeamManager().ifOnTeam(player) == false) { + return false; + } + Team team = BaiTeam.getTeamManager().getTeam(player, true); + if (team == null) { + return false; + } + int i1 = 0; + if (args.length >= 5 && Integer.valueOf(args[4]) != null) { + i1 = Integer.valueOf(args[4]); + } + List players = Arrays.asList(Bukkit.getOfflinePlayers()); + List players2 = new ArrayList(); + for (OfflinePlayer offlinePlayer : players) { + if (offlinePlayer.isOnline() && BaiTeam.getTeamManager().ifOnTeam((Player) offlinePlayer) == false) { + players2.add((Player) offlinePlayer); + } + } + if (players2.isEmpty()) { + TeamGui.getGui().openTeamInfoGui(player, team); + return false; + } + TeamGui.getGui().openPlayerListGui(player, players2, i1); + return true; + } + } + return false; + + } +} diff --git a/src/main/java/sky_bai/bukkit/baiteam/BaiTeam.java b/src/main/java/sky_bai/bukkit/baiteam/BaiTeam.java index 4f08957..b940d50 100644 --- a/src/main/java/sky_bai/bukkit/baiteam/BaiTeam.java +++ b/src/main/java/sky_bai/bukkit/baiteam/BaiTeam.java @@ -53,9 +53,8 @@ public void onEnable() { getLogger().info("注册完成!!"); } - BaiCommand command = new BaiCommand(); - getCommand("BaiTeam").setExecutor(command); - getCommand("BaiTeam").setTabCompleter(command); + getCommand("BaiTeam").setExecutor(new BaiCommand()); + getCommand("BaiTeamCmd").setExecutor(new BaiCommandCMD()); new BukkitRunnable() { @Override diff --git a/src/main/java/sky_bai/bukkit/baiteam/book/TeamGui.java b/src/main/java/sky_bai/bukkit/baiteam/book/TeamGui.java index 74648d0..f0193f5 100644 --- a/src/main/java/sky_bai/bukkit/baiteam/book/TeamGui.java +++ b/src/main/java/sky_bai/bukkit/baiteam/book/TeamGui.java @@ -52,7 +52,7 @@ public void openTeamInfoGui(Player player, Team team) { mes.addExtra(BaiMessage.Action.setAction(BaiMessage.TeamGui.Button_TeamInfo_InvitePlayer.getMes(), "/baiteam OpenGui PlayerList", BaiMessage.TeamGui.Text_TeamInfo_InvitePlayer.getMes()).getText()); mes.addExtra("\n"); mes.addExtra(BaiTools.setStringCentered(BaiMessage.TeamGui.Button_TeamInfo_Promotional.getMes())); - mes.addExtra(BaiMessage.Action.setAction(BaiMessage.TeamGui.Button_TeamInfo_Promotional.getMes(), "/baiteam GuiPromotional", BaiMessage.TeamGui.Text_TeamInfo_Promotional.getMes()).getText()); + mes.addExtra(BaiMessage.Action.setAction(BaiMessage.TeamGui.Button_TeamInfo_Promotional.getMes(), "/baiteam GuiPromotional " + team.getTeamName(), BaiMessage.TeamGui.Text_TeamInfo_Promotional.getMes()).getText()); mes.addExtra("\n"); mes.addExtra(BaiTools.setStringCentered(BaiMessage.TeamGui.Button_TeamInfo_LeaveTeam.getMes())); mes.addExtra(BaiMessage.Action.setAction(BaiMessage.TeamGui.Button_TeamInfo_LeaveTeam.getMes(), "/baiteam Leave", BaiMessage.TeamGui.Text_TeamInfo_LeaveTeam.getMes()).getText()); @@ -115,9 +115,6 @@ public void openPlayerListGui(Player player, List players, int page) { List p1 = players; int i1 = p1.size() % 12 > 0 ? p1.size() / 12 + 1 : p1.size() / 12; page = page > i1 ? i1 : page; - /* - * for (Player player2 : p1) { mes.addExtra(getPlayerText(player2.getName())); } - */ for (int i = 0; i < 12; i++) { if (p1.size() <= (12 * page + i)) { break; @@ -135,7 +132,7 @@ public void openPlayerListGui(Player player, List players, int page) { } else { mes.addExtra(BaiMessage.Action.setAction(BaiMessage.TeamGui.Button_Previous.getMes(), "/baiteam OpenGui PlayerList " + (page - 1), null).getText()); } - String str1 = BaiTools.setStringCentered("[00]", 29.0 - BaiTools.getStringLength(BaiMessage.TeamGui.Button_Previous_No.getMes())/* - BaiTools.getStringLength(BaiMessage.TeamGui.Button_Next_No.getMes())*/); + String str1 = BaiTools.setStringCentered("[00]", 29.0 - BaiTools.getStringLength(BaiMessage.TeamGui.Button_Previous_No.getMes())/* - BaiTools.getStringLength(BaiMessage.TeamGui.Button_Next_No.getMes()) */); String str2 = page + ""; if (page <= 9) { str2 = "0" + page; diff --git a/src/main/java/sky_bai/bukkit/baiteam/event/BTJoinTeamEvent.java b/src/main/java/sky_bai/bukkit/baiteam/event/BTJoinTeamEvent.java index f4e4a8e..8d11f6b 100644 --- a/src/main/java/sky_bai/bukkit/baiteam/event/BTJoinTeamEvent.java +++ b/src/main/java/sky_bai/bukkit/baiteam/event/BTJoinTeamEvent.java @@ -1,6 +1,6 @@ package sky_bai.bukkit.baiteam.event; -import java.util.Arrays; +import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -27,7 +27,8 @@ public static void run(Team team, Player player) { } private void run() { - List list = Arrays.asList(getTeam().getTeamName()); + List list = new ArrayList(); + list.add(getTeam().getTeamName()); if (BTConfig.getConfig().getConfig().getInt("TeamSize", 5) <= getTeam().getMembers().size()) { BaiMessage.send(getPlayer(), BaiMessage.Error.OnTeamIsFull, list); return; diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 6378604..9eb4fa4 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -12,4 +12,5 @@ softdepend: - PlaceholderAPI commands: - BaiTeam: \ No newline at end of file + BaiTeam: + BaiTeamCmd: \ No newline at end of file