0

だから私はマインクラフト用のプラグインを作っています。基本的にチームプラグインです。私がする必要があるのは、複数のチームを作成できることですが、オブジェクト名をプレイヤーが選択したチーム名に変更する方法がわかりません。これが私が意味することです:

if (l.equalsIgnoreCase("NewTeam")) {
    teamName= args[0]; // This is the players chosen team name
     Team newTeam = new Team(teamName, sender);
     newTeam.addPlayer(sender);

これはサーバー プラグインであるため、複数のチームを処理する必要があります。つまり、多くのチーム オブジェクトが作成されますが、すべてのオブジェクト名は newTeam です。これを行うためのより良い方法を知っている人はいますか? ありがとう。

4

2 に答える 2

1

チーム名からチーム オブジェクトへのマッピングを探していますか? 次に、次のようにします。

Map<String,Team> teams = new TreeMap<String,Team>();

//Returns the team for 'teamName' or creates one, if it doesn't exist
public Team getTeam(String teamName)
{
    Team team = teams.get(teamName);
    if(team == null)
    {
        team = new Team(teamName,sender); //is 'sender' specific for a team??
        teams.put(teamName,team);
    }
    return team;
}
于 2013-02-03T13:01:49.333 に答える
0

Bukkit API を使用しており、さらにこれが CommandExecutor の onCommand メソッド内で行われていると仮定しているため、これは次のようになります。

public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
   if(cmd.getName().equalsIgnoreCase("newteam")){ //Make sure this is the right command
      if(args.length == 0) //If the sender hasn't included a name...
         sender.sendMessage("You need to include a team name!"); //Tell them they need to
      else{ //Otherwise...
         Team newTeam = new Team(args[0]); //Create a new team with the designated name
         if(sender instanceof Player) //If the sender is a player (could be console)...
            newTeam.addPlayer((Player) sender); //Add them to the team
         /*
          * Insert some code to save/store the newly created team here
          */
      }
      return true; //Return (for Bukkit's benefit)
   }
}
于 2013-02-05T17:44:53.127 に答える