Trade-Offers

Topik ini mencakup ingame : javadoc: TradeOffer yang ditawarkan oleh : javadoc: ` Villager` s / : javadoc: Merchant s.

Pedagang

`` Merchant`` adalah wadah untuk TradeOffers`. Varian yang paling umum adalah `` Villager``. Antarmuka `` Merchant`` dapat digunakan untuk membuka jendela perdagangan.

TradeOffers` dapat ditambahkan ke dan dihapus dari` Merchants` menggunakan : javadoc: ` TradeOfferData`.

Pengorbanan

Perdagangan tawarkan terdiri dari

  • pembelian primer / pertama : javadoc: ItemStackSnapshot
  • sebuah pembelian sekunder opsional ItemStackSnapshot`
  • sebuah penjualan `` ItemStackSnapshot``
  • sudah digunakan menggunakan
  • maksimal yang tersedia menggunakan
  • bendera untuk menunjukkan apakah pengalaman bola-bola yang melahirkan di perdagangan

TradeOffers` dapat dibuat menggunakan` Builder` atau a : javadoc: ` TradeOfferGenerator`.

TradeOfferBuilder

TradeOfferBuilders` terutama digunakan jika Anda ingin secara dinamis membuat` TradeOffers` on the fly.

Blok kode berikut membangun sebuah `` TradeOffer` baru yang memungkinkan `` Pemain`` untuk menukar lima `` DIRT`` menjadi tiga item blok `` GRASS``. Penawaran perdagangan ini memiliki empat kegunaan awal, setelah itu `` Merchant` mungkin memerlukan waktu untuk menawarkan `` TradeOffer` lagi ini.

TradeOffer offer = TradeOffer.builder()
    .firstBuyingItem(ItemStack.of(ItemTypes.DIRT, 5))
    .sellingItem(ItemStack.of(ItemTypes.GRASS, 3))
    .uses(0)
    .maxUses(4)
    .canGrantExperience(false)
    .build();

TradeOfferListMutator

J : javadoc: TradeOfferListMutator adalah antarmuka yang dipanggil saat` jumlah penduduk di tingkat desa. Ini bisa digunakan untuk mengganti 'TradeOffers yang ada (tingkat yang lebih tinggi) dan menambahkan' TradeOffers` baru. Simplist dan hanya API yang disediakan variannya adalah `` TradeOfferGenerator``. Berbeda `` TradeOfferListMutators`` untuk setiap level dan `` Career`` dapat dikonfigurasi di : javadoc: VillagerRegistry.

Catatan

Daftar TradeOffer` di` Penduduk Desa mungkin dihasilkan dengan malas saat inventaris perdagangan dibuka untuk pertama kalinya.

TradeOfferGenerator

TradeOfferGenerators adalah template sederhana untuk 'TradeOffers` baru. Mereka adalah varian dari `` TradeOfferListMutator`` yang hanya akan menambahkan entri baru dan tidak mengubah atau menghapus TradeOffers yang ada di desa tersebut.

TradeOfferGenerator tradeOfferGenerator = TradeOfferGenerator.builder()
        .setPrimaryItemGenerator(random -> ItemStack.of(ItemTypes.DIRT, random.nextInt(3) + 5))
        .setSellingGenerator(random -> ItemStack.of(ItemTypes.GRASS, 5))
        .startingUses(VariableAmount.baseWithVariance(2, 1))
        .maxUses(VariableAmount.fixed(5))
        .experienceChance(0.5)
        .build();

TradeOfferGenerator ini secara acak akan menghasilkan` TradeOffers` yang akan

  • beli 5-8 `` DIRT``
  • jual 5 `` GRASS``
  • memiliki 2-4 kegunaan awal yang tersisa
  • 5 penggunaan maksimal

Kesempatan yang dihasilkan '' TradeOffer'' akan memberikan pengalaman adalah 50%.

Catatan

Anda dapat menggunakan '' ItemStackGenerators'' untuk secara dinamis menerapkan pesona atau data khusus lainnya untuk membeli dan menjual barang-barang.

VillagerRegistry

'' VillagerRegistry'' dapat diperoleh dari :javadoc: 'GameRegistry'. Ini akan digunakan untuk mengkonfigurasi '' TradeOfferListMutator'' yang akan diterapkan pada '' Villager'' di level-up.

VillagerRegistry villagerRegistry = this.game.getRegistry().getVillagerRegistry();
List<TradeOfferListMutator> generators = new ArrayList<>(villagerRegistry.getMutatorsForCareer(Careers.FARMER, 1));
generators.addAll(additionalFarmerLevel1TradeOffers());
villagerRegistry.setMutators(Careers.FARMER, 1, generators);

Terendah specifiable tingkat-up mutator adalah tingkat 1. Ini setara dengan yang baru spawned '' Villager''.

Catatan

Perubahan pada `` VillagerRegistry`` akan hilang saat restart server dan tidak akan berdampak pada `` TradeOffers`` dari `` penduduk desa` yang telah diratakan di masa lalu.