Frage zum Inventar - Replace

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Frage zum Inventar - Replace

      Hallo!
      Ich habe eine Frage, da ich gerade ein HubSystem programmiere und ich einen Fehler nicht beheben kann.
      Ich möchte in dem Navigator alle nicht besetzen Felder (wo Luft ist), durch ein bestimmtes Item (in der Config einstellbar) ersetzen.
      Deshalb habe ich eine For-Schleife benuzt, die jedoch nicht funktioniert. Bitte um Hilfe.


      Hier ist der Quellcode:

      Java-Quellcode

      1. for(int i = 0; i < inv.getSize(); i++) {
      2. if(inv.getItem(i).getType().equals(Material.AIR))
      3. inv.setItem(i, item);
      4. }
      LG Hafralu
    • Du kannst mal probieren statt der Abfrage:

      Quellcode

      1. if(inv.getItem(i).getType().equals(Material.AIR))

      diese zu verwenden:

      Quellcode

      1. if(inv.getItem(i).getType() == Material.AIR)
      Liebe Grüße, Pixel


      -> Ich bin euch immer ein Pixel vorraus!
      -> Ohne mich würdet ihr Minecraft nicht spielen können


      Der Pixelige-YouTube-Kanal: BestPixelHD
      - YouTube
      Der Pixelige-Twitch-Kanal: Twitch
    • Nope geht leider nicht... Habe etwas anderes ausprobiert.

      Java-Quellcode

      1. inv.setItem(0, item.clone());
      2. inv.setItem(1, item.clone());
      3. inv.setItem(2, item.clone());
      4. inv.setItem(3, item.clone());
      5. inv.setItem(4, item.clone());
      6. inv.setItem(5, item.clone());
      7. inv.setItem(6, item.clone());
      8. inv.setItem(7, item.clone());
      9. inv.setItem(8, item.clone());
      10. inv.setItem(9, item.clone());
      11. inv.setItem(10, item.clone());
      12. inv.setItem(11, item.clone());
      13. inv.setItem(12, item.clone());
      14. inv.setItem(13, item.clone());
      15. inv.setItem(14, item.clone());
      16. inv.setItem(15, item.clone());
      17. inv.setItem(16, item.clone());
      18. inv.setItem(17, item.clone());
      19. inv.setItem(18, item.clone());
      20. inv.setItem(19, item.clone());
      21. inv.setItem(20, item.clone());
      22. inv.setItem(21, item.clone());
      23. inv.setItem(22, item.clone());
      24. inv.setItem(23, item.clone());
      25. inv.setItem(24, item.clone());
      26. inv.setItem(25, item.clone());
      27. inv.setItem(26, item.clone());
      Alles anzeigen


      Dies ist zwar umständlich, aber funktioniert. Es placed überall das Item hin welches ich möchte.
      Doch wenn ich den restlichen code hinzufüge klappt es eig. perfekt, bis darauf dass es den 1. Slot (Java: 0).
      In diesem erscheint kein Item... Hier der Code:

      Quellcode

      1. inv.setItem(0, item.clone());
      2. inv.setItem(1, item.clone());
      3. inv.setItem(2, item.clone());
      4. inv.setItem(3, item.clone());
      5. inv.setItem(4, item.clone());
      6. inv.setItem(5, item.clone());
      7. inv.setItem(6, item.clone());
      8. inv.setItem(7, item.clone());
      9. inv.setItem(8, item.clone());
      10. inv.setItem(9, item.clone());
      11. inv.setItem(10, item.clone());
      12. inv.setItem(11, item.clone());
      13. inv.setItem(12, item.clone());
      14. inv.setItem(13, item.clone());
      15. inv.setItem(14, item.clone());
      16. inv.setItem(15, item.clone());
      17. inv.setItem(16, item.clone());
      18. inv.setItem(17, item.clone());
      19. inv.setItem(18, item.clone());
      20. inv.setItem(19, item.clone());
      21. inv.setItem(20, item.clone());
      22. inv.setItem(21, item.clone());
      23. inv.setItem(22, item.clone());
      24. inv.setItem(23, item.clone());
      25. inv.setItem(24, item.clone());
      26. inv.setItem(25, item.clone());
      27. inv.setItem(26, item.clone());
      28. inv.setItem(main.cfg.getInt("Warps.1.Slot"), main.cfg.getItemStack("Warps.1.ItemStack"));
      29. inv.setItem(main.cfg.getInt("Warps.2.Slot"), main.cfg.getItemStack("Warps.2.ItemStack"));
      30. inv.setItem(main.cfg.getInt("Warps.3.Slot"), main.cfg.getItemStack("Warps.3.ItemStack"));
      31. inv.setItem(main.cfg.getInt("Warps.4.Slot"), main.cfg.getItemStack("Warps.4.ItemStack"));
      32. inv.setItem(main.cfg.getInt("Warps.5.Slot"), main.cfg.getItemStack("Warps.5.ItemStack"));
      33. inv.setItem(main.cfg.getInt("Warps.6.Slot"), main.cfg.getItemStack("Warps.6.ItemStack"));
      34. inv.setItem(main.cfg.getInt("Warps.7.Slot"), main.cfg.getItemStack("Warps.7.ItemStack"));
      35. inv.setItem(main.cfg.getInt("Warps.8.Slot"), main.cfg.getItemStack("Warps.8.ItemStack"));
      36. inv.setItem(main.cfg.getInt("Warps.9.Slot"), main.cfg.getItemStack("Warps.9.ItemStack"));
      37. inv.setItem(main.cfg.getInt("Warps.10.Slot"), main.cfg.getItemStack("Warps.10.ItemStack"));
      38. inv.setItem(main.cfg.getInt("Hubpoint.Slot"), spawn);
      Alles anzeigen
      Davor geht alles und wenn ich den code ab 28 einfüge füllt es Slot null nicht mehr.
      Bitte um Hilfe!

      LG Hafralu
    • Das ist nicht nur umständlich sondern auch sehr groß geraten.
      Schreib die For-Schleife nochmal auf und arbeite mit sogenannten Debug-Nachrichten, d.h. gebe an verschiedenen Stellen einfach messages in der Konsole aus, z.B. den Namen + i in der for-Schleife. Sollte bei der 0 nicht air stehe, hast du den Fehler gefunden.
      Liebe Grüße, Pixel


      -> Ich bin euch immer ein Pixel vorraus!
      -> Ohne mich würdet ihr Minecraft nicht spielen können


      Der Pixelige-YouTube-Kanal: BestPixelHD
      - YouTube
      Der Pixelige-Twitch-Kanal: Twitch
    • Schon einmal probiert, die if -abfrage weg zu lassen? denn eig. sollte die for-Schleife so funktionieren.
      Wenn es ohne der Abrgafrage funktioniert, weißt du, dass es an deiner Abfrage liegt.
      Liebe Grüße, Pixel


      -> Ich bin euch immer ein Pixel vorraus!
      -> Ohne mich würdet ihr Minecraft nicht spielen können


      Der Pixelige-YouTube-Kanal: BestPixelHD
      - YouTube
      Der Pixelige-Twitch-Kanal: Twitch
    • Es liegt an der Abfrage. Ohne geht es, aber das erklärt noch immer nicht, warum dieses Problem existiert.

      xXhafraluXx schrieb:



      Dies ist zwar umständlich, aber funktioniert. Es placed überall das Item hin welches ich möchte.
      Doch wenn ich den restlichen code hinzufüge klappt es eig. perfekt, bis darauf dass es den 1. Slot (Java: 0).
      In diesem erscheint kein Item... Hier der Code:


      Davor geht alles und wenn ich den code ab 1 einfüge füllt es Slot null nicht mehr.
      Bitte um Hilfe!

      LG Hafralu

      Java-Quellcode

      1. inv.setItem(main.cfg.getInt("Warps.1.Slot"), main.cfg.getItemStack("Warps.1.ItemStack"));
      2. inv.setItem(main.cfg.getInt("Warps.2.Slot"), main.cfg.getItemStack("Warps.2.ItemStack"));
      3. inv.setItem(main.cfg.getInt("Warps.3.Slot"), main.cfg.getItemStack("Warps.3.ItemStack"));
      4. inv.setItem(main.cfg.getInt("Warps.4.Slot"), main.cfg.getItemStack("Warps.4.ItemStack"));
      5. inv.setItem(main.cfg.getInt("Warps.5.Slot"), main.cfg.getItemStack("Warps.5.ItemStack"));
      6. inv.setItem(main.cfg.getInt("Warps.6.Slot"), main.cfg.getItemStack("Warps.6.ItemStack"));
      7. inv.setItem(main.cfg.getInt("Warps.7.Slot"), main.cfg.getItemStack("Warps.7.ItemStack"));
      8. inv.setItem(main.cfg.getInt("Warps.8.Slot"), main.cfg.getItemStack("Warps.8.ItemStack"));
      9. inv.setItem(main.cfg.getInt("Warps.9.Slot"), main.cfg.getItemStack("Warps.9.ItemStack"));
      10. inv.setItem(main.cfg.getInt("Warps.10.Slot"), main.cfg.getItemStack("Warps.10.ItemStack"));
      11. inv.setItem(main.cfg.getInt("Hubpoint.Slot"), spawn);
      Alles anzeigen
      2018-01-01_17.42.45.png Es ergibt einfach keinen Sinn :/
    • Quellcode

      1. for(int i = 0; i < inv.getSize(); i++) {
      2. inv.setItem(i, item);
      3. }
      So sollte eig. deine For-Schleife funktionieren .

      Und bei dem 0 Problem:
      Bekommst du hier vllt eine 1 statt eine 0?

      Quellcode

      1. main.cfg.getInt("Warps.1.Slot")
      Liebe Grüße, Pixel


      -> Ich bin euch immer ein Pixel vorraus!
      -> Ohne mich würdet ihr Minecraft nicht spielen können


      Der Pixelige-YouTube-Kanal: BestPixelHD
      - YouTube
      Der Pixelige-Twitch-Kanal: Twitch
    • Die Schleife funktioniert jetzt einwandfrei, aber sie replaced halt die 0 nur wenn der untere code weg ist.
      Der einzige Wert der dem unterem Code entnommen werden kann ist dieser:

      Java-Quellcode

      1. inv.setItem(main.cfg.getInt("Hubpoint.Slot"), spawn);
      Die anderen Werte sind garnicht eingetragen. Das Spawn Item wird ja auch einwandfrei eingefügt (siehe Bild, Netherstern).
      Das erklärt das mit dem Fehler irgenwie nicht :/. Soll ich versuchen die Slots so zu translaten, dass 1 = 0 ist und 27 = 26?
      LG
    • Java-Quellcode

      1. @EventHandler
      2. public void onInteract(PlayerInteractEvent e) {
      3. Player p = e.getPlayer();
      4. if(e.getItem().getItemMeta().getDisplayName().equalsIgnoreCase("§3§lTeleporter")) {
      5. inv = p.getServer().createInventory(null, main.cfg.getInt("Teleporter.Größe.Reihen")*9, "§3§lTeleporter");
      6. p.playSound(p.getLocation(), Sound.BLOCK_STONE_BUTTON_CLICK_ON, 1, 1);
      7. p.openInventory(inv);
      8. int HubMaterial = main.cfg.getInt("Hubpoint.Material");
      9. String Dpn = main.cfg.getString("Hubpoint.Displayname").replace("&", "§");
      10. ItemStack spawn = new ItemStack(Material.getMaterial(HubMaterial));
      11. ItemMeta meta1 = spawn.getItemMeta();
      12. meta1.setDisplayName(Dpn);
      13. spawn.setItemMeta(meta1);
      14. int itemid = main.cfg.getInt("Teleporter.Hintergrund.Item");
      15. ItemStack item = new ItemStack(Material.getMaterial(itemid));
      16. ItemMeta meta = item.getItemMeta();
      17. meta.setDisplayName(" ");
      18. item.setItemMeta(meta);
      19. for(int i = 0; i < inv.getSize(); i++) {
      20. inv.setItem(i, item);
      21. }
      22. inv.setItem(main.cfg.getInt("Warps.1.Slot"), main.cfg.getItemStack("Warps.1.ItemStack"));
      23. inv.setItem(main.cfg.getInt("Warps.2.Slot"), main.cfg.getItemStack("Warps.2.ItemStack"));
      24. inv.setItem(main.cfg.getInt("Warps.3.Slot"), main.cfg.getItemStack("Warps.3.ItemStack"));
      25. inv.setItem(main.cfg.getInt("Warps.4.Slot"), main.cfg.getItemStack("Warps.4.ItemStack"));
      26. inv.setItem(main.cfg.getInt("Warps.5.Slot"), main.cfg.getItemStack("Warps.5.ItemStack"));
      27. inv.setItem(main.cfg.getInt("Warps.6.Slot"), main.cfg.getItemStack("Warps.6.ItemStack"));
      28. inv.setItem(main.cfg.getInt("Warps.7.Slot"), main.cfg.getItemStack("Warps.7.ItemStack"));
      29. inv.setItem(main.cfg.getInt("Warps.8.Slot"), main.cfg.getItemStack("Warps.8.ItemStack"));
      30. inv.setItem(main.cfg.getInt("Warps.9.Slot"), main.cfg.getItemStack("Warps.9.ItemStack"));
      31. inv.setItem(main.cfg.getInt("Warps.10.Slot"), main.cfg.getItemStack("Warps.10.ItemStack"));
      32. inv.setItem(main.cfg.getInt("Hubpoint.Slot"), spawn);
      33. }
      34. }
      Alles anzeigen
    • Aber wenn du diese Methode verwendest

      Quellcode

      1. main.cfg.getInt("Warps.1.Slot")
      bekommst du einen Integer. (und einem steck, der dazu gehört) .Welcher ist denn momentan eingespeichert? Überschreibt er vllt im deinem Inventar die Stelle 0 und deswegen ist dort kein Item und bei den anderen schon?
      Liebe Grüße, Pixel


      -> Ich bin euch immer ein Pixel vorraus!
      -> Ohne mich würdet ihr Minecraft nicht spielen können


      Der Pixelige-YouTube-Kanal: BestPixelHD
      - YouTube
      Der Pixelige-Twitch-Kanal: Twitch