2017-12-04 16 views
0

포럼에 게시하는 데 의지하지 않으려 고했지만이 모든 작업을 수행하지 못했습니다. 내가하려는 일은 ArrayList에 플레이어 이름이 없으면 ArrayList에 추가하는 것입니다.하지만이를 건너 뛰어서 추가되지 않은 목록에서 제거하는 것입니다. 이 플러그인의 궁극적 인 목표는 그들이 상처 입을 수없는 신 모드에있는 경우입니다. 명령 클래스 :문이 내 배열 목록을 통해 확인하지 않을 경우

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' 항목을 검사 할 수 없습니다. 메서드를 호출 할 때마다 새 List를 작성하므로 항상 비어 있습니다. 'playerList.contains (p)'를 대신 사용해보십시오. 왜 당신은'isGod'리스트를 갖고 있습니까? 다른 곳에서도 사용 하시나요? – dly

답변

0

으로 DLY 그래, 당신은 때마다 명령이 실행되는 새로운 빈 목록을 작성했다. 이 클래스가 모든 작업에 대해 하나의 목록에 속하는지 확인하려면 클래스에서 전역 정적으로 목록을 초기화해야합니다.

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; 
}