2017-12-04 2 views
0

私はフォーラムでの投稿に頼らざるを得ないようにしていましたが、私がやったことはすべてこの作業をしません。私がしようとしているのは、ArrayListにプレーヤーの名前が含まれていない場合、ArrayListに追加されますが、これをスキップして、リストに追加していないリストから削除するだけです。このプラグインの究極の目標は、神のモードで傷つけることができない場合です。 コマンドクラス:if文が配列リストをチェックしないif

public static List<String> playerList = new ArrayList<String>(); 

    @Override 
    public boolean onCommand(CommandSender sender, Command cmd, String str, String[] args) { 
     Player player = (Player) sender; 
     String p = player.getName(); 
     List<String> isGod = new ArrayList<String>(); 

     if (cmd.getName().equalsIgnoreCase("god") && sender instanceof Player) { 
      if (!isGod.contains(p)) { 
       isGod.add(p); 
       playerList.add(p); 
       player.sendMessage(ChatColor.GREEN + "Godmode is enabled"); 
       return true; 
      } else { 
       isGod.remove(p); 
       playerList.remove(p); 
       player.sendMessage(ChatColor.GREEN + "Godmode is disabled"); 
       return true; 
      } 
     } 
     return true; 
    } 
} 

リスナクラス:

@EventHandler 
    public void isDamaged(EntityDamageEvent e) { 
     String player = e.getEntity().getName(); 
     if (playerList.contains(player)) { 
      e.setCancelled(true); 
     } 
    } 
} 
+1

あなたのケースでは、isGodエントリを確認することはできません。メソッドを呼び出すたびに新しいリストを作成するので、常に空です。代わりに 'playerList.contains(p)'を試してみてください。なぜあなたは 'isGod'リストを持っていますか?他の場所でも使っていますか? – dly

答えて

0

としてDLYはい、あなたは毎回のコマンドが実行され、新たな空のリストを作成しました。これはすべての操作のリストの1つだけであることを確認するために、クラス内のグローバル静的としてリストを初期化する必要があります。

public static List<String> isGod = new ArrayList<>();    // <== HERE 
public static List<String> playerList = new ArrayList<String>(); 

@Override 
public boolean onCommand(CommandSender sender, Command cmd, String str, String[] args) { 
    Player player = (Player) sender; 
    String p = player.getName(); 

    if (cmd.getName().equalsIgnoreCase("god") && sender instanceof Player) { 
     if (!isGod.contains(p)) { 
      isGod.add(p); 
      playerList.add(p); 
      player.sendMessage(ChatColor.GREEN + "Godmode is enabled"); 
      return true; 
     } else { 
      isGod.remove(p); 
      playerList.remove(p); 
      player.sendMessage(ChatColor.GREEN + "Godmode is disabled"); 
      return true; 
     } 
    } 
    return true; 
}