jonathan Posted April 13, 2020 Share Posted April 13, 2020 Hallo ich würde gerne in meinem Plugin etwas ausführen wenn ein Spieler ein bestimmtes Item mit einer bestimmten Lore im Inventar hat. Ich habe jetzt das Problem das das Ereignis schon ausgeführt wird wenn ich das Item mit irgendeinem Namen und irgendeiner Lore im Inventar habe. Ich hoffe es kann mir einer helfen Link to comment Share on other sites More sharing options...
FireSpirit15 Posted April 13, 2020 Share Posted April 13, 2020 Hey, um dir weiterhelfen zu können wäre es von Vorteil, wenn du deinen Code hier rein schicken könntest. Link to comment Share on other sites More sharing options...
jonathan Posted April 13, 2020 Author Share Posted April 13, 2020 (edited) public static boolean keyAbfrageCase1( Player player, ItemStack item){ for(int i = 0; i < player.getInventory().getSize(); i++) { if(player.getInventory().getContents().getType() == item.getType() && item.hasItemMeta()) { Edited April 13, 2020 by jonathan Link to comment Share on other sites More sharing options...
FireSpirit15 Posted April 13, 2020 Share Posted April 13, 2020 (edited) Hey, ich habe deine Abfrage zur Bearbeitung in einen Command umgeschrieben und die notwendigen Zeilen im Code ergänzt. So wie ich dich verstanden habe, möchtest du abfragen, ob ein Spieler eine Lore und ein anderes Item, beide mit Metadaten, besitzt, und anschließend eine Aktion ausführen. Du solltest dazu im Code zur Vereinfachung die notwendigen Meta-Daten festlegen und anschließend abfragen, ob diese vorhanden sind. Dazu habe ich folgenden Code verwendet: @Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { if (cmd.getName().equalsIgnoreCase("testinventory")) { Player p = (Player) sender; //Minecart ItemStack minecart = new ItemStack(Material.MINECART); ItemMeta m1 = minecart.getItemMeta(); m1.setDisplayName("Modified minecart"); minecart.setItemMeta(m1); //Item ItemStack item = new ItemStack(Material.COBBLESTONE); ItemMeta m2 = item.getItemMeta(); m2.setDisplayName("Modified item"); item.setItemMeta(m2); if (p.getInventory().contains(minecart) && p.getInventory().contains(item)) { Bukkit.broadcastMessage("Items found!"); if (minecart.hasItemMeta() && item.hasItemMeta()) { Bukkit.broadcastMessage("Item meta true"); } else { Bukkit.broadcastMessage("Item meta false"); } } else { Bukkit.broadcastMessage("Items not found!"); } } return false; } Die Abfrage "hasItemMeta" kannst du auch rauslassen, da in meinem Beispiel die Meta-Daten bereits festgelegt sind und somit die Items ohne die entsprechenden Meta-Daten nicht gefunden werden können. Anhand meines Beispiels kannst du deine Methode dann entsprechend umschreiben, um beide Items nach den Meta-Daten abzufragen. Ich hoffe, ich habe dich soweit richtig verstanden und konnte dir weiterhelfen! Bei weiteren Fragen kannst du dich gerne an mich wenden. Mit freundlichen Grüßen FireSpirit15 Edited April 13, 2020 by FireSpirit15 2 Link to comment Share on other sites More sharing options...
jonathan Posted April 13, 2020 Author Share Posted April 13, 2020 (edited) Du hast etwas falsch verstanden, ich will nicht nach dem Minecart sondern nach der Lore also das was unter dem Item steht itemMeta.setLore(Arrays.asList("text")); Edited April 13, 2020 by jonathan Link to comment Share on other sites More sharing options...
jonathan Posted April 14, 2020 Author Share Posted April 14, 2020 (edited) So wie es mit Lore funktioniert weiß ich jetzt danke dir! Aber es funktioniert nicht mehr wenn man mehr als ein Item im Inventar hat. Weißt du zufällig wie das geht? Und kann mir jemand erklären wie man die Funktion removeItem anwendet? Edited April 14, 2020 by jonathan Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now