Jump to content

Abfrage nach Item mit Lore


Empfohlene Beiträge

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 zu diesem Kommentar
Auf anderen Seiten teilen

    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()) {

 

bearbeitet von jonathan
Link zu diesem Kommentar
Auf anderen Seiten teilen

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

bearbeitet von FireSpirit15
  • Like 2
Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

bearbeitet von jonathan
Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...
B
B