Penggunaan Item Dasar

Barang-barang yang direpresentasikan melalui :javadoc:`kerjatumpukan`. kerjatumpukan adalah aplikasi persediaan barang dengan informasi seperti jumlah kerja pada tumpukan, jenis barang, dan data tambahan seperti daya tahan. Aplikasi :javadoc:`kerja` itu sendiri adalah representasi grafik dari sebuah kerjatumpukan sebagai sebuah entitas. Diketahui bahwa anda akan selalu mendapatkan kopi dan tidak sebenarnya kerjatumpukan dan dengan demikian, anda akan perlu untuk mengatur kembali ke inventarisasi jika diinginkan.

Memeriksa Jenis item

Memeriksa jenis barang sangat sederhana. Anda hanya perlu menelepon :javadoc:`barangTumpukan#mendapatkanbarang()` metode.

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);
}

Melihat bagaimana sederhana itu? Karena tongkat dapat stack, kita juga dapat mengetahui berapa banyak yang hadir.

Mendapatkan jumlah item dalam sebuah ItemStack` relatif mudah. Metode : javadoc: ItemStack # getQuantity () akan menangani ini untuk kita.

Memodifikasi ItemStack Data

Memanipulasi data seperti daya tahan atau pengetahuan tentang item dapat dicapai dengan hanya menggunakan kunci. Anda hanya perlu untuk menentukan kunci yang perlu diubah:

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

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

Dalam hal ini, kita ditentukan bahwa :javadoc:`Tombol#TIDAKAKANHARCUR` kunci adalah kunci yang kita ingin perubahan. Kemudian kita tentukan nilainya menjadi benar untuk menyiratkan bahwa kerja tidak akan pernah istirahat. Semua ini tertutup dalam () metode kerjatumpukan untuk kembali berubah kembali ke kerjatumpukan.

Kunci yang berlainan akan membutuhkan harga yang berlainan berdasarkan pekerjaan mereka. Misalnya, untuk mengubah daftar barang, seseorang perlu menentukan Daftar dari Text dan bukan harga boolean atau lainnya. Penting juga untuk melakukan pengecekan untuk melihat apakah kunci benar-benar dapat diterapkan pada barang tersebut. Contohnya, beberapa barang mungkin tidak memiliki daya tahan atau mungkin sudah memiliki pengetahuan yang diterapkan pada barang tersebut.

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);
    }
}

Item Properti

Item tertentu mungkin menahan properti tertentu. Sebagai contoh, item tertentu bisa menambang blok tertentu, seperti perkakas berlian ke obsidian. Properti digunakan sebagai penetuan jika sebuah item bisa menyebabkan sebuah tindakan tanpa benar-benar memeriksa tipe dari jenis item. Kita bisa memeriksa dapatkah sebuah blok bisa menambang obsidian dengan menggunakan HarvestingProperty dari item tersebut.

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;
}

Kode ini akan memeriksa apakah item tersebut memiliki PanenTanaman, seperti beliung beli. Jika ada, maka akan kembali jika barang ini bisa memanen obsidian tanpa perlu mengecek jenis barangnya. Ini berguna jika sebuah mod atau memperbarui Minecraft menambahkan alat baru dengan kemampuan pertambangan obsidian.

Membandingkan ItemStacks

kerjatumpukan kelas berisi rapi metode untuk membandingkan dua kerjatumpukans. Dengan menggunakan :javadoc:`kerjatumpukan#sama(kerjatumpukan)` metode dari yang sudah ada kerjatumpukan, kita dapat melihat jika dua kerjatumpukans adalah 'sama'. Artinya, mereka berbagi sama ukuran tumpukan, :javadoc:`tipepekerjaan`, dan data. Contoh lihat di bawah ini:

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