SplitChanceBlockGrowthProcedure class

Пакет: com.hypixel.hytale.builtin.blocktick.procedure

Файл: com/hypixel/hytale/builtin/blocktick/procedure/SplitChanceBlockGrowthProcedure.java

extends: BasicChanceBlockGrowthProcedure

Поля (4)

МодификаторыТипИмя
BsonDocument var2
int var3
int var6
String var6

Методы (6)

МодификаторыВозвратСигнатура
for for(int var3 = 0; var3 < var0.data.length; var3++)
for for(int var10 : var3)
if if(var0.data != null && var0.chances != null)
if if(var3.length != var4.length)
if if(var10 < 0)
abstract super super(var1, var2, null, var5)

Исходный код

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

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.validation.Validators;
class="kw">import com.hypixel.hytale.common.util.RandomUtil;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktick.config.TickProcedure;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import java.util.Arrays;
class="kw">import java.util.Map.Entry;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.bson.BsonDocument;
class="kw">import org.bson.BsonValue;

class="kw">public class SplitChanceBlockGrowthProcedure class="kw">extends BasicChanceBlockGrowthProcedure {
   @Nonnull
   class="kw">public class="kw">static class="kw">final BuilderCodec<SplitChanceBlockGrowthProcedure> CODEC = BuilderCodec.builder(
         SplitChanceBlockGrowthProcedure.class, SplitChanceBlockGrowthProcedure::new, TickProcedure.BASE_CODEC
      )
      .append(new KeyedCodec<>("NextIds", Codec.BSON_DOCUMENT), (var0, var1, var2) -> {
         var0.data = new String[var1.size()];
         var0.chances = new int[var0.data.length];
         int var3 = 0;

         for (Entry var5 : var1.entrySet()) {
            var0.data[var3] = var5.getKey();
            var0.chances[var3] = Codec.INTEGER.decode(var5.getValue(), var2);
            var0.sumChances = var0.sumChances + var0.chances[var3];
            var3++;
         }
      }, (var0, var1) -> {
         if (var0.data != null && var0.chances != null) {
            BsonDocument var2 = new BsonDocument();

            for (int var3 = 0; var3 < var0.data.length; var3++) {
               var2.append(var0.data[var3], Codec.INTEGER.encode(var0.chances[var3], var1));
            }

            class="kw">return var2;
         } else {
            class="kw">return null;
         }
      })
      .addValidator(Validators.nonNull())
      .add()
      .addField(new KeyedCodec<>("ChanceMin", Codec.INTEGER), (var0, var1) -> var0.chanceMin = var1, var0 -> var0.chanceMin)
      .addField(new KeyedCodec<>("Data", Codec.INTEGER), (var0, var1) -> var0.chance = var1, var0 -> var0.chance)
      .addField(new KeyedCodec<>("NextTicking", Codec.BOOLEAN), (var0, var1) -> var0.nextTicking = var1, var0 -> var0.nextTicking)
      .build();
   class="kw">protected int[] chances;
   class="kw">protected String[] data;
   class="kw">protected int sumChances;

   class="kw">public SplitChanceBlockGrowthProcedure() {
   }

   class="kw">public SplitChanceBlockGrowthProcedure(int var1, int var2, @Nonnull int[] var3, @Nonnull String[] var4, boolean var5) {
      super(var1, var2, null, var5);
      this.chances = var3;
      this.data = var4;
      if (var3.length != var4.length) {
         throw new IllegalArgumentException(String.valueOf(var4.length));
      }

      int var6 = 0;

      for (int var10 : var3) {
         if (var10 < 0) {
            throw new IllegalArgumentException(String.valueOf(var10));
         }

         var6 += var10;
      }

      this.sumChances = var6;
   }

   @Override
   class="kw">protected boolean executeToBlock(@Nonnull World var1, int var2, int var3, int var4, String var5) {
      String var6 = RandomUtil.roll(this.getRandom().nextInt(this.sumChances), this.data, this.chances);
      class="kw">return super.executeToBlock(var1, var2, var3, var4, var6);
   }

   @Nonnull
   @Override
   class="kw">public String toString() {
      class="kw">return "SplitChanceBlockGrowthProcedure{chanceMin="
         + this.chanceMin
         + ", chance="
         + this.chance
         + ", to="
         + this.to
         + ", nextTicking="
         + this.nextTicking
         + ", chances="
         + Arrays.toString(this.chances)
         + ", data="
         + Arrays.toString(this.data)
         + ", sumChances="
         + this.sumChances
         + "}";
   }
}