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) + "}";
}
}