PoolTradeSlot class

Пакет: com.hypixel.hytale.builtin.adventure.shop.barter

Файл: com/hypixel/hytale/builtin/adventure/shop/barter/PoolTradeSlot.java

extends: TradeSlot

Поля (8)

МодификаторыТипИмя
List var2
double var2
ObjectArrayList var3
int var4
int var6
double var6
WeightedTrade var7
double var9

Методы (9)

МодификаторыВозвратСигнатура
for for(int var5 = 0; var5 < var4; var5++)
for for(WeightedTrade var5 : var0)
abstract for for(int var8 = 0; var8 < var0.size()
public int getPoolSlotCountint getPoolSlotCount()
if if(this.trades.length == 0)
if if(var6 >= 0)
if if(var2 <= 0.0)
if if(var9 < var6)
static int selectWeightedIndexint selectWeightedIndex(@Nonnull List<WeightedTrade> var0, @Nonnull Random var1)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.adventure.shop.barter;

class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.codec.codecs.array.ArrayCodec;
class="kw">import com.hypixel.hytale.codec.validation.Validators;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrayList;
class="kw">import java.util.Arrays;
class="kw">import java.util.List;
class="kw">import java.util.Random;
class="kw">import javax.annotation.Nonnull;

class="kw">public class PoolTradeSlot class="kw">extends TradeSlot {
   @Nonnull
   class="kw">public class="kw">static class="kw">final BuilderCodec<PoolTradeSlot> CODEC = BuilderCodec.builder(PoolTradeSlot.class, PoolTradeSlot::new)
      .append(new KeyedCodec<>("SlotCount", Codec.INTEGER), (var0, var1) -> var0.slotCount = var1, var0 -> var0.slotCount)
      .addValidator(Validators.greaterThanOrEqual(1))
      .add()
      .<WeightedTrade[]>append(
         new KeyedCodec<>("Trades", new ArrayCodec<>(WeightedTrade.CODEC, WeightedTrade[]::new)), (var0, var1) -> var0.trades = var1, var0 -> var0.trades
      )
      .addValidator(Validators.nonNull())
      .add()
      .build();
   class="kw">protected int slotCount = 1;
   class="kw">protected WeightedTrade[] trades = WeightedTrade.EMPTY_ARRAY;

   class="kw">public PoolTradeSlot(int var1, @Nonnull WeightedTrade[] var2) {
      this.slotCount = var1;
      this.trades = var2;
   }

   class="kw">protected PoolTradeSlot() {
   }

   class="kw">public int getPoolSlotCount() {
      class="kw">return this.slotCount;
   }

   @Nonnull
   class="kw">public WeightedTrade[] getTrades() {
      class="kw">return this.trades;
   }

   @Nonnull
   @Override
   class="kw">public List<BarterTrade> resolve(@Nonnull Random var1) {
      List var2 = new ObjectArrayList(this.slotCount);
      if (this.trades.length == 0) {
         class="kw">return var2;
      }

      ObjectArrayList var3 = new ObjectArrayList(this.trades.length);
      var3.addAll(Arrays.asList(this.trades));
      int var4 = Math.min(this.slotCount, var3.size());

      for (int var5 = 0; var5 < var4; var5++) {
         int var6 = selectWeightedIndex(var3, var1);
         if (var6 >= 0) {
            WeightedTrade var7 = (WeightedTrade)var3.remove(var6);
            var2.add(var7.toBarterTrade(var1));
         }
      }

      class="kw">return var2;
   }

   @Override
   class="kw">public int getSlotCount() {
      class="kw">return this.slotCount;
   }

   class="kw">private class="kw">static int selectWeightedIndex(@Nonnull List<WeightedTrade> var0, @Nonnull Random var1) {
      if (var0.isEmpty()) {
         class="kw">return -1;
      }

      double var2 = 0.0;

      for (WeightedTrade var5 : var0) {
         var2 += var5.getWeight();
      }

      if (var2 <= 0.0) {
         class="kw">return var1.nextInt(var0.size());
      }

      double var9 = var1.nextDouble() * var2;
      double var6 = 0.0;

      for (int var8 = 0; var8 < var0.size(); var8++) {
         var6 += var0.get(var8).getWeight();
         if (var9 < var6) {
            class="kw">return var8;
         }
      }

      class="kw">return var0.size() - 1;
   }

   @Nonnull
   @Override
   class="kw">public String toString() {
      class="kw">return "PoolTradeSlot{slotCount=" + this.slotCount + ", trades=" + Arrays.toString(this.trades) + "}";
   }
}