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
al5
GRASS
satgeriye 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.