Jump to content

Abfrage nach Item mit Lore


jonathan
 Share

Recommended Posts

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

    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 by jonathan
Link to comment
Share on other sites

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 by FireSpirit15
  • Like 2
Link to comment
Share on other sites

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 by jonathan
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...
B
B