ServerPlugin [Bukkit]: Inventar Problem!

Dieses Thema im Forum "Programmierung" wurde erstellt von MineForce, 21. Dezember 2013.

  1. MineForce
    Offline

    MineForce Gesperrt

    Registriert seit:
    17. Oktober 2012
    Beiträge:
    122
    Hallo Leute,

    mein Problem ist folgendes:
    2013-12-21_20.30.29.jpg

    Die Lore wird 2 mal angezeigt!
    Jedes mal wenn ich meinen Befehl benutze wird sie ein weiteres mal mehr angezeigt!

    Der Ausschnitt der einen Lore der Code:
    Code (Text):
    1. ItemStack istack6 = new ItemStack(Material.IRON_SWORD);
    2.                 ItemMeta istackMeta6 = istack6.getItemMeta();
    3.                 istackMeta6.setDisplayName("§6PvPArena");
    4.                 lore5.add("§aSpieler: §9" + test.size() + "/20");
    5.                 istackMeta6.setLore(lore5);
    6.                 istack6.setItemMeta(istackMeta6);
    Die ArrayList in verbindung mit lore5:
    Code (Text):
    1. public static ArrayList<String> lore5 = new ArrayList<String>();

    Was das genau sein soll:

    Ich möchte ein Inventarmenü indem angezeigt wird wieviel Spieler in jeder Arena sind.
    Wenn ein Spieler z.b. "/join" macht wird er einer HashMap hinzugefügt diese wird dann bei "test.size()" ausgelesen also es wird ausgelesen wieviele grade drin sind meine ich damit.

    Die Hashmap:
    Code (Text):
    1. public static HashMap<String, Player> test = new HashMap<String, Player>();


    PROBLEM 2:

    Wie mache ich das wenn man in einen Inventarmenü auf ein Item drückt das dann überprüft wird ob der Spieler z.b. "100 Money" hat danach wenn er es hat wird es abgezogen und es wird etwas ausgeführt bei mir überprüft es nie etwas und zieht auch garnix ab leider D:

    Code:
    Code (Text):
    1.                 if (this.econ.has(p.getName(), 12000)){
    2.                     this.econ.withdrawPlayer(p.getName(), 12000);
    Hoffe mir kann jemand schnell helfen.

    Vielen Dank

    PS: Weiß jemand wie ein Admin hier heißt der oft online ist? Wegen Serverliste.
     
    #1
  2. NeoVir
    Offline

    NeoVir

    Registriert seit:
    24. Juli 2013
    Beiträge:
    6
    Zu Problem 1:

    Ich sehe zwar jetzt nicht auf die Schnelle wo genau der Error im Code ist, jedoch habe ich mal ein Buch gemacht mit dem Namen Dummy und der lore Dummy.

    Code (Text):
    1.  
    2. ItemStack item;
    3. ItemMeta meta;
    4. ArrayList<String> lore = new ArrayList<String>();
    5.                
    6.                 lore.add("§6dummy");
    7.                
    8.                 item = new ItemStack(Material.BOOK, 1);
    9.                 meta = item.getItemMeta();
    10.                 meta.setDisplayName("§6dummy");
    11.                 meta.setLore(lore);
    12.                 item.setItemMeta(meta);
    13.                 Inventar.setItem(9, item);
     
    #2
  3. ThunderFlo
    Offline

    ThunderFlo

    Registriert seit:
    22. September 2013
    Beiträge:
    53
    Problem 1:

    Code (Text):
    1.  
    2.          ItemStack istack6 = new ItemStack(Material.IRON_SWORD);
    3.      ItemMeta istackMeta6 = istack6.getItemMeta();
    4.      istackMeta6.setDisplayName("§6PvPArena");
    5.          List<String> lore5 = new ArrayList<String>();
    6.      lore5.add("§aSpieler: §9" + test.size() + "/20");
    7.      istackMeta6.setLore(lore5);
    8.      istack6.setItemMeta(istackMeta6);

    Problem 2:

    Code (Text):
    1. if (this.econ.has(p.getName(), 100)){
    2. this.econ.withdrawPlayer(p.getName(), 100);
    3. } else {
    4. p.closeInventory();
    5. p.sendMessage("§cDu hast nicht genügend Geld um die Arena zu betreten!");
    6. }
    7.  
    Ich hoffe das hilft dir weiter :)
     
    #3
  4. MineForce
    Offline

    MineForce Gesperrt

    Registriert seit:
    17. Oktober 2012
    Beiträge:
    122
    Also von beiden die Dinge ergeben 0 Sinn und helfen nicht habt ihr auch richtig gelesen?
    Ich möchte ja wenn man einen Befehl benutzt wird man in einer HashMap eingetragen dann liest dieser Code aus wie viel drin klappt perfekt nur
    Code (Text):
    1. lore5.add("§aSpieler: §9" + test.size() + "/20");
    Hashmap sieht so aus:

    Code (Text):
    1. public static HashMap<String, Player> test = new HashMap<String, Player>();
    das ihr euch das Bild oben anschauen sollt jedes mal wenn man das Inventar öffnet wird 1 Lore mehr das ist was weg soll.
    Kann das an lore5.add liegen weil eigendlich müsste man lore5.set benutzen aber ich weiß nicht wie man bei lore5.set das macht.


    Und bei deiner Economy Methode kommt ein Fehler wenn man das Item in Inventar anklickt teste mal selber mach ein Inventar klick auf das Item und es kommt ein Fehler weil Economy nicht mit Inventaren so klappen will dafür brauch ich was anderes.

    Und was du an Problem 1 geändert hast ist ja das:
    Code (Text):
    1. List<String> lore5 = new ArrayList<String>();
    Was ist da anders dran als hier?
    Code (Text):
    1. ArrayList<String> lore5 = new ArrayList<String>();
    ??
     
    #4
  5. MineForce
    Offline

    MineForce Gesperrt

    Registriert seit:
    17. Oktober 2012
    Beiträge:
    122
    Problem 1 gelöst!

    Problem 2 besteht noch!
     
    #5
  6. ThunderFlo
    Offline

    ThunderFlo

    Registriert seit:
    22. September 2013
    Beiträge:
    53
    Irwie ist das hier total unordentlich und ich verstehe noch nichtmal richtig was du fragst. Überarbeite bitte mal diesen Therad und lösch dein Problem 1 da es ja nun geht und Problem 2 lässt du noch stehen aber beschreibst es mal richtig.

    Hat es den jetzt aber geklappt wie ich dir das gesagt habe bei Problem 1?
     
    #6
  7. MineForce
    Offline

    MineForce Gesperrt

    Registriert seit:
    17. Oktober 2012
    Beiträge:
    122
    Also ich habe Problem 1 selber gelöst weil ich mal getestet habe.

    Bei Problem 2 mal ganz kurz:

    Wie baut man Economy in InventarMenüs ein?
     
    #7