Plugin-seitige Item-Identifikation gebauter Gegenstände (crafting)

  • Servus,


    ich versuche grade, pluginseitig festzustellen, welches Item ein Spieler gebaut hat.

    Bei Feuerstelle / Kleines Lager bekomme ich dieselben Werte zurückgegeben. Irgendwo muß ja aber ein Unterschied sein; kann man diesen mittels der API überhaupt herausbekommen?

    Ich habe mir hierfür mal kurz eine kleine Unterfunktion gebastelt, die mir ein paar Infos über das erstellte Item zurückgibt (Siehe unten).

    Hier bekomme ich, wie gesagt, für die Feuerstelle und das Kleine Lager dieselben Werte, also ohne Unterschied zurück.

    Habe ich da nun irgendwas übersehen oder geht das so ohne Weiteres erstmal nicht?


    Gruß, Inu




  • Objekte werden fast ausnahmslos tatsächlich durch ein einzelnes Item repräsentiert (das "objectkit") und haben daher immer dieselbe TypID. Die eigentliche Objekt-ID ist hingegen im "ItemAttribute" hinterlegt. Das "Item.Attribute" ist abstrakt, davon gibt es aber die Ableitungen "Item.ObjectAttribute" (für Objekte), "Item.ClothingAttribute" (für Kleidungsstücke) und "Item.CustomItemAttribute" (für CustomItems).


    In deinem Fall suchst du das "Item.ObjectAttribute", worüber dann die Methode getObjectID() zugänglich ist (die die Objekt-ID zurückgibt). Also:

    Java
    Item.Attribute attr = item.getAttribute();
    if(attr instanceof Item.ObjectAttribute){
    Item.ObjectAttribute obj = (Item.ObjectAttribute) attribute;
    //Dies ist deine gesuchte Objekt-ID
    short objectTypeID = obj.getObjectID();
    //Die Objekt-Variation ist in der Item-Textur gespeichert (standardmäßig 0)
    int objectVariation = item.getVariation();
    }


    Die Objekt-ID könntest du nun zB mit der ID aus einer ObjectDefinition vergleichen um herauszufinden, um welches Objekt es sich genau handelt ;)

Participate now!

Don’t have an account yet? Create a new account now and be part of our community!