Temel Öğe Kullanımı

Öğeler bir :javadoc: ItemStack vasıtasıyla temsil edilir. `` ItemStack``, yığındaki öğenin miktarı, öğenin türü ve dayanıklılık gibi ilave veriler gibi bilgileri içeren bir envanterdir. Bir: javadoc: ‘Stack’in kendisi bir öğe olarak bir “Itemstack” ‘in grafik gösterimidir. Her zaman bir kopyasını alacağınıza ve `` Itemstack`` gerçek * olmadığına* dikkat edin ve eğer isterseniz tekrar bir envantere koyabilirsiniz.

Öğe Türünü Kontrol Etme

Maddenin türünü kontrol etmek çok basittir. Sadece: javadoc: ItemStack # getItem () yöntemini çağırmanız yeterlidir.

import org.spongepowered.api.item.ItemType;
import org.spongepowered.api.item.ItemTypes;
import org.spongepowered.api.item.inventory.ItemStack;

public boolean isStick(ItemStack stack) {
    ItemType type = stack.getItem();
    return type.equals(ItemTypes.STICK);
}

Ne kadar basit olduğunu görüyor musunuz? Çubuklar yığınlanabildiğinden kaç tane var olduğunu da öğrenebiliriz.

Bir “ItemStack`` içindeki miktarı elde etmek nispeten kolaydır. : Javadoc: ItemStack # getQuantity () yöntemi bu işlemi bizim yerimize halleder.

ItemStack Verilerini Değiştirme

Dayanıklılık veya bir öğenin geçmişi gibi verileri düzenlemek, yalnızca tuşları kullanarak gerçekleştirilir. Sadece değiştirilmesi gereken anahtarı belirtmeniz yeterlidir:

import org.spongepowered.api.data.key.Keys;

public void setUnbreakable(ItemStack stack) {
    stack.offer(Keys.UNBREAKABLE, true);
}

Burada şunu belirttik: javadoc: Keys # UNBREAKABLE anahtarı değiştirmek istediğimiz anahtardır. Daha sonra öğenin hiçbir zaman kopmayacağını ima etmek için değerini “true” olarak ayarlarız. Bunların tamamı, değişiklikleri “ItemStack” ‘e geri döndürmek için `` ItemStack`` yöntemiyle `` offer () `` paketinde bulunur.

Farklı tuşların işlerine göre farklı değerler gerektirecektir. Örneğin, bir öğenin ayrıntılarını değiştirmek için, bir Boolean veya başka bir değer yerine javadoc: Text öğesinin bir” Liste “si belirtilmesi gerekecektir. Anahtarın öğe için gerçekten geçerli olup olmadığını kontrol etmek de önemlidir. Örneğin, bazı öğelerin dayanıklılığı olmayabilir veya öğeye lore uygulanmış olabilir.

import org.spongepowered.api.text.Text;

import java.util.List;

public void setLore(ItemStack stack, List<Text> itemLore) {
    if (stack.get(Keys.ITEM_LORE).isPresent()) {
        stack.offer(Keys.ITEM_LORE, itemLore);
    }
}

Öğe özellikleri

Bazı maddeler belirli özellikleri barındırabilir. Örneğin, belirli öğeler belirli bir blok içerebilir, örneğin, elmas bir kazma gibi. Özellikler, bir öğenin, öğenin türünü gerçekten kontrol etmeden bir işleme neden olup olamayacağını belirlemek için kullanılır. Bir maddenin obsidien mayın olup olmadığını kontrol edebiliriz: o maddenin: javadoc: HarvestingProperty’sini kullanabiliriz.

import org.spongepowered.api.block.BlockTypes;
import org.spongepowered.api.data.property.item.HarvestingProperty;

import java.util.Optional;

public boolean canMineObsidian(ItemStack stack) {
    Optional<HarvestingProperty> optional =
        stack.getProperty(HarvestingProperty.class);

    if (optional.isPresent()) {
        HarvestingProperty property = optional.get();
        return property.getValue().contains(BlockTypes.OBSIDIAN);
    }
    return false;
}

Bu kod, öğenin bir kazma gibi bir “HarvestingProperty” olup olmadığını kontrol edecektir. Varsa, öğe türünü kontrol etmeye gerek kalmadan obsidieni hasat edebilecekse, o zaman dönecektir. Bu, bir mod veya Minecraft güncelleştirmesinin, obsidien madenciliği yetenekleri ile yeni bir araç eklediği durumlarda yararlıdır.

ItemStacks’leri karşılaştırma

`` ItemStack`` sınıfı, iki `` ItemStack`` s karşılaştırması için düzgün bir yöntem içerir. Var olan bir `` ItemStack`` öğesinin: javadoc: ItemStack # equalTo (ItemStack) yöntemini kullanarak, iki `` ItemStack`` öğesinin ‘eşit’ olup olmadığını görebiliriz. Diğer bir deyişle, aynı yığın boyutunu paylaşır: javadoc: ‘Öğe Türü’ ve veri. Buna bir örnek aşağıda gösterilmiştir:

public boolean isEqual(ItemStack stack1, ItemStack stack2) {
    return stack1.equalTo(stack2);
}