2016-07-31 4 views
0

플레이어에 인벤토리에 다음 항목이 있는지 확인하려고하는데, 그럴 경우 해당 항목을 제거하고 해당 항목이 제거되었다는 메시지를 전합니다.Bukkit 플레이어의 인벤토리를 확인

Material[] bannedItems = { Material.DIAMOND_HELMET, Material.DIAMOND_CHESTPLATE, Material.DIAMOND_LEGGINGS, Material.DIAMOND_BOOTS, Material.GOLD_HELMET, Material.GOLD_CHESTPLATE, Material.GOLD_LEGGINGS, Material.GOLD_BOOTS }; 

@EventHandler 
public void onInventoryClick(InventoryClickEvent event) { 
    Player player = (Player) event.getWhoClicked(); 
    if(player.getInventory().contains(bannedItems, 1)){ 
     player.sendMessage(ChatColor.GRAY + "[" + ChatColor.RED + ChatColor.BOLD + "RPG" + ChatColor.GRAY + "] " + ChatColor.RED + "A has been removed from your possession."); 
    } 
} 

은 내가 .contains (bannedItems, 1)) 줄에 오류가 : 그 방법을 알아낼 수 없습니다, 이것은 내가 지금까지있는 것입니다.

도움 주셔서 감사합니다.

+0

어떤 오류가 있습니까? 더 설명 해주십시오. 그들이 아이템을 집어 올 때와 같은 이벤트는 아마도이 경우 더 실용적 일 것입니다. – Li357

+0

Material []을 int로 변경해야한다는 말을 듣지 만 int에서 int로 변경해야한다는 오류가 발생합니다. 재료 [] – CameronOfoluwa

+0

int []는 int 배열을, Material []은 재료 배열을 ... 배열을 반복하고 각각을 확인해야합니다. – Li357

답변

2

배열의 모든 요소에 대해 배열을 비교할뿐만 아니라 검사해야합니다.

double[] check = {1.3, 4.2, 4.3}; //A sample double array 

for(double d : check) { //Loop thru all elements 
    if(4.2 == d) { //If current element is equal to 4.2 
     System.out.println("EQUAL!"); //Print "EQUAL!" 
    } 
} 

이것은 check 배열 하나씩 위에 루프 및 4.2로 각 요소를 비교한다 : 여기 개념의 증거이다. 그것들은 그들이 동등 할 때보고합니다. bannedItems의 각 요소를 통해

@EventHandler 
public void onInventoryClick(InventoryClickEvent event) { 
    Material[] bannedItems = { Material.DIAMOND_HELMET, Material.DIAMOND_CHESTPLATE, Material.DIAMOND_LEGGINGS, Material.DIAMOND_BOOTS, Material.GOLD_HELMET, Material.GOLD_CHESTPLATE, Material.GOLD_LEGGINGS, Material.GOLD_BOOTS }; 
    Player player = (Player) event.getWhoClicked(); 

    for(Material m : bannedItems) { //Loop thru all elements 
     if(player.getInventory().contains(m, 1)){ //Check if in inventory 
      player.sendMessage(ChatColor.GRAY + "[" + ChatColor.RED + ChatColor.BOLD + "RPG" + ChatColor.GRAY + "] " + ChatColor.RED + "A has been removed from your possession."); 
      //Remove stuff 
     } 
    } 
} 

이제, 이벤트 것 루프를 사용자가 재고를 가지고 있는지 확인 : 당신은이 상황에이를 적용 할 수 있습니다.

for(Material m : bannedItems) 

는이 mbannedItems 변수의 현재 요소를 저장 한 후 우리 m, 단일 재료를 사용하여 비교한다 향상된 루프이다.

아이템을 집어 올 때와 같은 다른 이벤트를 사용하여 확인한 다음 바로 제거 할 수 있습니다.

+0

답변뿐만 아니라 전체 설명을 주셔서 감사합니다. 이것은 정말 도움이되었습니다. – CameronOfoluwa

+0

아무런 문제가 없습니다. 우리는 배울 점이 있습니다. 다른 질문이 있으시면 알려주세요. – Li357

+0

나는 다시 한 번 고맙습니다. – CameronOfoluwa