Items removen mit remove Methode

Dieses Thema im Forum "Programmierung" wurde erstellt von Funzocker1, 7. Juli 2013.

  1. Funzocker1
    Offline

    Funzocker1

    Registriert seit:
    21. Oktober 2012
    Beiträge:
    127
    Hallo :). Ich bin gerade wie ich in einem anderen Thema bereits erwähnt habe am Shop Plugin Coden und bin gerade beim verkaufs befehl.
    Um die Items aus dem Spieler Inventar zu nehmen habe ich eine kleine Methode erstellt
    Code (Text):
    1.     @SuppressWarnings("deprecation")
    2.     public void removeamount(Player p, int id, int anzahl) {
    3.        
    4.         int count = anzahl;
    5.         for(ItemStack item : p.getInventory().getContents()) {
    6.             if(item != null){
    7.                 if(item.getTypeId() == id) {
    8.                    
    9.                     ItemStack is = new ItemStack(item.getTypeId(), item.getAmount());
    10.                     if(count > item.getAmount()) {
    11.                         int currentamount = item.getAmount();
    12.                         p.getInventory().remove(is);
    13.                         System.out.println("Aufruf1");
    14.                         p.updateInventory();
    15.                         count = count - currentamount;
    16.                     }
    17.                     if(count == item.getAmount()) {
    18.                         p.getInventory().remove(item);
    19.                         count = 0;
    20.                         p.updateInventory();
    21.  
    22.                     }
    23.                     if(count < item.getAmount()) {
    24.                         item.setAmount(item.getAmount() - count);
    25.                         count = 0;
    26.                
    27.                     }
    28.                 }
    29.             }
    30.         }
    31.     }
    Wenn ich mit dieser Methode beim verkaufen versuche die Items aus dem Inventar zu nehmen und die Items sind schön gestackt und die zu verkaufende Anzahl ist kleiner als die gesamt Anzahl funktioniert es. Aber wenn ich jetzt 44 verkaufen will und ich 44 von einem Item gestackt habe bleiben die 44 im Inventar. Wenn ich 44 irgendwie im Inv. verteilt habe und 43 verkaufen will was bei einem stack kein Problem ist funktioniert es auch nicht :/. Exceptions gibt es keine und ich bin mit meinem Latein am Ende. Bitte um Hilfe :D
     
    #1
  2. ChunkNorris
    Online

    ChunkNorris

    Versuchs mal damit:

    Code (Text):
    1.  
    2. private boolean removeItem(int id, int amount, Inventory inventory) {
    3.     ItemStack item = new ItemStack(id, amount);
    4.     HashMap<Integer, ItemStack> removeItem = inventory.removeItem(item);
    5.     if (!removeItem.isEmpty()) {
    6.         return false;
    7.     }
    8.     return true;
    9.  
    10.  
    11. }
    12.  
     
    #2