Ticaret-Teklifleri

Bu başlık, oyun içi oyunları kapsar: javadoc: TradeOffer s tarafından sunulmaktadır: javadoc:` Villager ‘s /: javadoc: Merchant s.

Tüccar

Bir Merchant, TradeOffers için bir barındırıcıdır. En yaygın biçimi Villager``dir. Ticaret pencerelerini açmak için ``Merchant arayüzü kullanılabilir.

TradeOffers`, :javadoc:`TradeOfferData kullanılarak ``Merchants``a eklenebilir ve bunlardan çıkarılabilir.

TicaretTeklifi

Bir ticaret teklifi bunlardan oluşur

  • birinci/ilk alış :javadoc: ItemStackSnapshot

  • isteğe bağlı bir ikincil satın alma “ItemStackSnapshot``

  • “ItemStackSnapshot” satışı

  • zaten kullanılan kullanır

  • maksimum kullanılabilir kullanımlar

  • tecrübe kürelerinin ticarette üretilip üretilmediğini gösteren bir bayrak

TradeOffers, Builder veya bir :javadoc:`TradeOfferGenerator`kullanılarak oluşturulabilir.

TradeOfferBuilder

TradeOfferBuilders çoğunlukla dinamik olarak anında``TradeOffers`` oluşturmak istiyorsanız kullanılır.

Aşağıdaki kod bloğu, Players ların beş “DIRT” ü, üç “GRASS” blok öğesi ile takas etmesine izin veren yeni bir “TradeOffer” oluşturur. Bu takas önerisinin dört kullanım alanı vardır; bundan sonra “Merchant” ın “TradeOffer” ı tekrar önermek için biraz zamana ihtiyacı olabilir.

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

TradeOfferListMutator

C :javadoc: TradeOfferListMutator,” Villager” level aldığında çağrılan bir arabirimdir. Mevcut “TradeOffers” (eski seviyedeki) yerine geçmek ve yeni “TradeOffers” eklemek için kullanılabilir. Basit ve yalnızca API tarafından sağlanan varyant “TradeOfferGenerator” dır. Her leveliçin farklı “TradeOfferListMutators” ve Career, :javadoc:` VillagerRegistry`de yapılandırılabilir.

Not

Ticaret envanteri ilk kez açıldığında “Villagers” daki “TradeOffer” listesi kolayca üretilebilir.

TradeOfferGenerator

`` TradeOfferGenerators``, yeni `` TradeOffers`` için basit şablondur. Bunlar, bu köylüdeki varolan hiçbir ‘ ‘TradeOffers’ ‘ ı iptal etmeyecek veya değiştirmeyecek ve sadece yeni girişler ekleyecek ‘ ‘TradeOfferListMutator” ın varyantlarıdır.

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

Bu `` TradeOfferGenerator`` rastgele bir şekilde `` TradeOffers`` üretecektir

  • 5-8 DIRT al

  • 5 GRASS sat

  • geriye kalan 2-4 kullanım ilk kullanıma sahiptir

  • Maximum 5 kullanım

Üretilen “TradeOffer” ‘ın deneyim kazandırma şansı% 50’dir.

Not

`` ItemStackGenerators`` ‘ı dinamik olarak büyü uygulamak için veya diğer özel verileri alıp satan öğelere uygulayabilirsiniz.

VillagerRegistry

“VillagerRegistry”, :javadoc: GameRegistry den elde edilebilir. “Villagers” in level almasında uygulanacak “TradeOfferListMutator” öğesini yapılandırmak için kullanılacaktır.

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

Özelleştirilebilir en düşük level artırıcı mutator seviye 1’dir. Bu, yeni üretilen “Köylüler” e eşdeğerdir.

Not

“VillagerRegistry” ‘daki değişiklikler sunucu yeniden başlatıldığında kaybolacak ve geçmişte level almış “Villagers” ın “TradeOffers” da herhangi bir etkisi olmayacaktır.