ServerPlugin Inventar überprüfen

Dieses Thema im Forum "Programmierung" wurde erstellt von delta242, 9. Dezember 2012.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. delta242
    Offline

    delta242

    Registriert seit:
    28. Mai 2012
    Beiträge:
    90
    Hey,
    bin zurzeit dabei, ein für unseren Server optimiertes Mobarena Plugin zu schreiben. Alles funktioniert bestens, doch an einer recht einfachen Sache scheitert es gerade:
    Ich würde es gerne so machen, dass man nur in die Arena joinen kann, sobald man nichts mehr im Inventar hat. Also so etwas in der Art:
    Code (Text):
    1.  
    2. ...
    3. if (player.getInventory() == null) {
    4. //Mobarena joinen...
    5. }
    6. ...
    7.  
    Aber logischerweise funzt das nicht. Hat jemand eine Idee, wie das geht?
    MfG
    delta242

    PS: Ich bin mir im klaren, dass das Plugin "Mobarena" ja sooo viel besser ist und es doch vieeel sinnvoller wäre, wenn ich das nutzen würde. Tu ich aber nicht. Ich würde gerne wissen, wie ich das oben beschriebene Problem lösen kann.
     
    #1
  2. Code (Text):
    1. if(player.getInventory().firstEmpty() == -1){
    2. //Empty
    3. }
    4.  
    Sollte dir helfen.
     
    #2
  3. MrFlieder
    Offline

    MrFlieder

    Registriert seit:
    30. Dezember 2011
    Beiträge:
    333
    Ort:
    Österreich
    Minecraft:
    MrFlieder
    Probier mal soetwas in der Art, musst du ggf. anpassen:
    Code (Text):
    1.  
    2. if(p.getInventory().getContents() == null)
    3. {
    4.     // Das Inventar des Spielers ist leer
    5. } else {
    6.     p.sendMessage("Dein Inventar muss leer sein!");
    7. }
    8.  
     
    #3
  4. delta242
    Offline

    delta242

    Registriert seit:
    28. Mai 2012
    Beiträge:
    90
    getContents() kann man nicht mit null vergleichen, da egal, was im Inv drin ist, dann so ein bescheuerter Text ausgespuckt wird. (So in dem Sinn: ItemStack898342d89df)
    Und firstEmty vergleicht nur den ersten Slot, da ist es entweder 1 oder 0. Was die -1 da zu bedeuten hat, frag ich mich :)
    Geht beides also nicht, weitere Vorschläge?
     
    #4
  5. Oh stimmt meine Schuld, war ja genau das gegenteil.

    Dieser Code funktioniert auch:

    public static boolean isEmpty(Inventory inv){
    Code (Text):
    1. [COLOR=#141414][FONT=Consolas][I]for(ItemStack stack : inv.getContents()){
    2.   if(stack==null || stack == Material.AIR){
    3.    return false
    4.   }
    5.  }
    6. return true
    7. }[/I][/FONT][/COLOR]
     
    #5
Status des Themas:
Es sind keine weiteren Antworten möglich.