ServerPlugin Waffen mit Enchantments verwenden, aber wie?!

Dieses Thema im Forum "Programmierung" wurde erstellt von Freebuilding, 14. Oktober 2013.

  1. Freebuilding
    Offline

    Freebuilding

    Registriert seit:
    2. Oktober 2012
    Beiträge:
    44
    Guten Tag, wie verwende ich Waffen mit Enchantments?
    Bei meinem folgendem Code funktioniert es nur bei der ersten Enchanteten Waffe, aber danach erhalte ich nicht die nächste o_O

    Code (Text):
    1.   ItemStack w5 = new ItemStack(Material.WOOD_AXE);
    2.     w5.addUnsafeEnchantment(Enchantment.DAMAGE_ALL, 1);
    3.     w5.addUnsafeEnchantment(Enchantment.DURABILITY, 1);
    4.     if (e.getEntity().getKiller().getInventory().contains(w5)) {
    5.       e.getEntity().getKiller().getInventory().clear();
    6.       e.getEntity().getKiller().playSound(e.getEntity().getKiller().getLocation(), Sound.LEVEL_UP, 1.0F, 1.0F);
    7.     }
    8.  
    9.     ItemStack w4 = new ItemStack(Material.DIAMOND_SWORD);
    10.     w4.addUnsafeEnchantment(Enchantment.DURABILITY, 1);
    11.     if (e.getEntity().getKiller().getInventory().contains(w4)) {
    12.       e.getEntity().getKiller().getInventory().clear();
    13.       e.getEntity().getKiller().playSound(e.getEntity().getKiller().getLocation(), Sound.LEVEL_UP, 1.0F, 1.0F);
    14.       e.getEntity().getKiller().setHealth(20.0D);
    15.       e.getEntity().getKiller().sendMessage("§3[GunGame] §6Du hast Stufe §9I §6erreicht !");
    16.       e.getEntity().getKiller().sendMessage("§3[GunGame] §9Du wurdest deswegen §2geheilt §9!");
    17.       e.getEntity().getKiller().getInventory().addItem(new ItemStack(w5));
    18.       }
    Ich würde mich sehr über Antworten freuen!

    LG freebuilding
     
    #1
  2. Benutzer
    Offline

    Benutzer

    Registriert seit:
    1. November 2012
    Beiträge:
    56
    Hey,

    Du solltes in der ersten If-Schleife dem Spieler die Waffe hinzufügen so wie du es auch in der zweiten If-Schleife machst.
    Code (Text):
    1. if (e.getEntity().getKiller().getInventory().contains(w5)) {
    2.       e.getEntity().getKiller().getInventory().clear();
    3.       e.getEntity().getKiller().playSound(e.getEntity().getKiller().getLocation(), Sound.LEVEL_UP, 1.0F, 1.0F);
    4.       e.getEntity().getKiller().getInventory().addItem(XY);
    5.  
    6.     }
     
    #2
  3. Freebuilding
    Offline

    Freebuilding

    Registriert seit:
    2. Oktober 2012
    Beiträge:
    44
    Okay

    Okay, mal testen ;)
     
    #3
  4. Benutzer
    Offline

    Benutzer

    Registriert seit:
    1. November 2012
    Beiträge:
    56
    Okay, dann mach des mal.
     
    #4
  5. Freebuilding
    Offline

    Freebuilding

    Registriert seit:
    2. Oktober 2012
    Beiträge:
    44
    Geht nicht? :eek:

    Geht nicht :(
    Mein jetztiger Code:
    Code (Text):
    1.  
    2. ItemStack o3 = new ItemStack(Material.WOOD_SWORD);
    3.     o3.addEnchantment(Enchantment.DAMAGE_ALL, 1);
    4.     ItemStack o = new ItemStack(Material.STONE_AXE);
    5.     o.addEnchantment(Enchantment.DAMAGE_ALL, 1);
    6.     if(e.getEntity().getKiller().getInventory().contains(o)) {
    7.         e.getEntity().getKiller().getInventory().clear();
    8.         e.getEntity().getKiller().setHealth((double)(20));
    9.         e.getEntity().getKiller().playSound(e.getEntity().getKiller().getLocation(), Sound.LEVEL_UP, 1.0F, 1.0F);
    10.         e.getEntity().getKiller().getInventory().addItem(o3);
    11.   }
    12.     if(e.getEntity().getKiller().getInventory().contains(Material.DIAMOND_SWORD)) {
    13.         e.getEntity().getKiller().getInventory().clear();
    14.         e.getEntity().getKiller().setHealth((double)(20));
    15.         e.getEntity().getKiller().playSound(e.getEntity().getKiller().getLocation(), Sound.LEVEL_UP, 1.0F, 1.0F);
    16.         e.getEntity().getKiller().getInventory().addItem(o);
    17.   }
    18.  
    #EDIT: Ich erhalte immer eine Steinaxt mit Schärfe 1 obwohl ich ja am Ende anstatt dieser ein Holzschwert mit Schärfe 1 bekommen sollte. Woran liegt das?
     
    #5
  6. Benutzer
    Offline

    Benutzer

    Registriert seit:
    1. November 2012
    Beiträge:
    56
    mhmmm.
    Also du willst doch machen das wenn der Spieler eine bestimmte Waffe im Inventar hat das er dann die 2. Waffe bekommt oder ?
     
    #6
  7. Freebuilding
    Offline

    Freebuilding

    Registriert seit:
    2. Oktober 2012
    Beiträge:
    44
    Richtig

    Genau, die Waffe die er bereits hat (o) soll entfernt werden und dann soll er (o3) bekommen.
     
    #7
  8. Benutzer
    Offline

    Benutzer

    Registriert seit:
    1. November 2012
    Beiträge:
    56
    Code (Text):
    1.             //Das eine Item
    2.             ItemStack Item1 = new ItemStack(Material.STONE_SWORD);
    3.             Item1.getItemMeta().setDisplayName("Item1");
    4.            
    5.             //Das andere Item
    6.             ItemStack Item2 = new ItemStack(Material.STONE_SWORD);
    7.             Item2.getItemMeta().setDisplayName("Item2");
    8.            
    9.             if(p.getInventory().contains(Item1)) {
    10.                 //Im Inventar des Spielers befindet sich das "Item1"
    11.                 p.getInventory().clear();//Inventar löschen
    12.                 p.getInventory().addItem(Item2);//Item2 hinzufügen
    13.             }
    14.             else if(p.getInventory().contains(Item2)) {
    15.                 //Im Inventar des Spielers befindet sich das "Item2"
    16.                 p.getInventory().clear();//Inventar löschen
    17.                 p.getInventory().addItem(Item1);//Item1 hinzufügen
    18.             }
    Also wenn du dies so machst sollte das Item des Spieler immer hin und her wechseln.
     
    #8
  9. Freebuilding
    Offline

    Freebuilding

    Registriert seit:
    2. Oktober 2012
    Beiträge:
    44
    Hä?

    Also, es geht aber es ist irgendwie so, dass Enchantete Items nicht entfernt werden hab ich das Gefühl, kann das sein?
    Mein jetziger Code:
    Code (Text):
    1.     //Item o
    2.     ItemStack o = new ItemStack(Material.STONE_AXE);
    3.     o.addEnchantment(Enchantment.DAMAGE_ALL, 1);
    4.     o.getItemMeta().setDisplayName("o");
    5.     //Item o2
    6.     ItemStack o2 = new ItemStack(Material.WOOD_SWORD);
    7.     o2.addEnchantment(Enchantment.DAMAGE_ALL, 1);
    8.     o2.getItemMeta().setDisplayName("o2");
    9.     if(e.getEntity().getKiller().getInventory().contains(Material.GOLD_AXE)) {
    10.         e.getEntity().getKiller().getInventory().clear();
    11.         e.getEntity().getKiller().setHealth((double)(20));
    12.         e.getEntity().getKiller().playSound(e.getEntity().getKiller().getLocation(), Sound.LEVEL_UP, 1.0F, 1.0F);
    13.         e.getEntity().getKiller().getInventory().addItem(new ItemStack(Material.WOOD_SWORD));
    14.     }
    15.     else if(e.getEntity().getKiller().getInventory().contains(Material.WOOD_SWORD)) {
    16.         e.getEntity().getKiller().getInventory().clear();
    17.         e.getEntity().getKiller().setHealth((double)(20));
    18.         e.getEntity().getKiller().playSound(e.getEntity().getKiller().getLocation(), Sound.LEVEL_UP, 1.0F, 1.0F);
    19.         e.getEntity().getKiller().getInventory().addItem(new ItemStack(Material.STONE_SWORD));
    20.   }
    21.    
    22.     else if(e.getEntity().getKiller().getInventory().contains(Material.STONE_SWORD)) {
    23.         e.getEntity().getKiller().getInventory().clear();
    24.         e.getEntity().getKiller().setHealth((double)(20));
    25.         e.getEntity().getKiller().playSound(e.getEntity().getKiller().getLocation(), Sound.LEVEL_UP, 1.0F, 1.0F);
    26.         e.getEntity().getKiller().getInventory().addItem(new ItemStack(Material.IRON_SWORD));
    27.   }
    28.     else if(e.getEntity().getKiller().getInventory().contains(Material.IRON_SWORD)) {
    29.             e.getEntity().getKiller().getInventory().clear();
    30.             e.getEntity().getKiller().setHealth((double)(20));
    31.             e.getEntity().getKiller().playSound(e.getEntity().getKiller().getLocation(), Sound.LEVEL_UP, 1.0F, 1.0F);
    32.             e.getEntity().getKiller().getInventory().addItem(new ItemStack(Material.DIAMOND_SWORD));
    33.     }
    34.     else if(e.getEntity().getKiller().getInventory().contains(Material.DIAMOND_SWORD)) {
    35.             e.getEntity().getKiller().getInventory().clear();
    36.             e.getEntity().getKiller().setHealth((double)(20));
    37.             e.getEntity().getKiller().playSound(e.getEntity().getKiller().getLocation(), Sound.LEVEL_UP, 1.0F, 1.0F);
    38.             e.getEntity().getKiller().getInventory().addItem(o);
    39.     }
    40.     else if(e.getEntity().getKiller().getInventory().contains(o)) {
    41.     e.getEntity().getKiller().getInventory().clear();
    42.     e.getEntity().getKiller().setHealth((double)(20));
    43.     e.getEntity().getKiller().playSound(e.getEntity().getKiller().getLocation(), Sound.LEVEL_UP, 1.0F, 1.0F);
    44.     e.getEntity().getKiller().getInventory().addItem(o2);
    45.         }
    46.      }  
    47.   }
    Edit: Ich bekomme als letztes die verzauberte Steinaxt obwohl ich das verzauberte Steinschwert bekommen sollte.
     
    #9
  10. Herodennis
    Offline

    Herodennis

    Registriert seit:
    9. Dezember 2011
    Beiträge:
    31
    Bei deinem Code steht auch Stone_axe das muss natürlich zum sword
     
    #10
  11. Freebuilding
    Offline

    Freebuilding

    Registriert seit:
    2. Oktober 2012
    Beiträge:
    44
    Unnötig

    Ich habe doch alles so definiert wie ich es wollte da brauchst du nicht irgendetwas zu erfinden o_O
     
    #11
  12. Benutzer
    Offline

    Benutzer

    Registriert seit:
    1. November 2012
    Beiträge:
    56
    Also wenn du
    Code (Text):
    1. p.getInventory().clear();
    machst sollte ja das genze Inventar gelöscht werden. Du könntest aber zur Sicherheit das Inventar auch noch updaten.
    Code (Text):
    1. p.getInventory().update();
    Oder du löschst nicht das ganze Inventar sondern entfernst einfach nur das gewünschte Item.
     
    #12
  13. Freebuilding
    Offline

    Freebuilding

    Registriert seit:
    2. Oktober 2012
    Beiträge:
    44
    Okay

    Ich habs jetzt anders hinbekommen. Das war schon richtig, wie ich es gemacht habe.
    Deine if und else if Hilfe war echt hilfreich! :)
    LG riderstorm
     
    #13
  14. Benutzer
    Offline

    Benutzer

    Registriert seit:
    1. November 2012
    Beiträge:
    56
    Okay dann ist ja gut :D
     
    #14
    1 Person gefällt das.