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

  • a primary/first buying 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

A TradeOfferListMutator is an interface that is invoked during Villager level ups. It can be used to replace existing TradeOffers (e.g. higher tier) and add new TradeOffers. Its simplest and only API provided variant is the TradeOfferGenerator. The different TradeOfferListMutators for each level and Career can be configured in the 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

The VillagerRegistry can be obtained from the GameRegistry. It will be used to configure the TradeOfferListMutator that will be applied on a Villager's 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.