SplitChanceBlockGrowthProcedure.java
package com.hypixel.hytale.builtin.blocktick.procedure;
import com.hypixel.hytale.codec.Codec;
import com.hypixel.hytale.codec.KeyedCodec;
import com.hypixel.hytale.codec.builder.BuilderCodec;
import com.hypixel.hytale.codec.validation.Validators;
import com.hypixel.hytale.common.util.RandomUtil;
import com.hypixel.hytale.server.core.asset.type.blocktick.config.TickProcedure;
import com.hypixel.hytale.server.core.universe.world.World;
import java.util.Arrays;
import java.util.Map;
import javax.annotation.Nonnull;
import org.bson.BsonDocument;
import org.bson.BsonValue;
public class SplitChanceBlockGrowthProcedure extends BasicChanceBlockGrowthProcedure {
public static final BuilderCodec<SplitChanceBlockGrowthProcedure> CODEC;
protected int[] chances;
protected String[] data;
protected int sumChances;
public SplitChanceBlockGrowthProcedure() {
}
public SplitChanceBlockGrowthProcedure(int chanceMin, int chance, @Nonnull [] chances, String[] data, nextTicking) {
(chanceMin, chance, (String), nextTicking);
.chances = chances;
.data = data;
(chances.length != data.length) {
(String.valueOf(data.length));
} {
;
( c : chances) {
(c < ) {
(String.valueOf(c));
}
localSumChances += c;
}
.sumChances = localSumChances;
}
}
{
(String)RandomUtil.roll(.getRandom().nextInt(.sumChances), .data, .chances);
.executeToBlock(world, worldX, worldY, worldZ, block);
}
String {
.chanceMin;
+ var10000 + + .chance + + .to + + .nextTicking + + Arrays.toString(.chances) + + Arrays.toString(.data) + + .sumChances + ;
}
{
CODEC = ((BuilderCodec.Builder)((BuilderCodec.Builder)((BuilderCodec.Builder)((BuilderCodec.Builder)BuilderCodec.builder(SplitChanceBlockGrowthProcedure.class, SplitChanceBlockGrowthProcedure::, TickProcedure.BASE_CODEC).append( (, Codec.BSON_DOCUMENT), (proc, v, extraInfo) -> {
proc.data = [v.size()];
proc.chances = [proc.data.length];
;
(Map.Entry<String, BsonValue> entry : v.entrySet()) {
proc.data[i] = (String)entry.getKey();
proc.chances[i] = Codec.INTEGER.decode((BsonValue)entry.getValue(), extraInfo);
proc.sumChances += proc.chances[i];
++i;
}
}, (proc, extraInfo) -> {
(proc.data != && proc.chances != ) {
();
( ; i < proc.data.length; ++i) {
document.append(proc.data[i], Codec.INTEGER.encode(proc.chances[i], extraInfo));
}
document;
} {
;
}
}).addValidator(Validators.nonNull()).add()).addField( (, Codec.INTEGER), (proc, v) -> proc.chanceMin = v, (proc) -> proc.chanceMin)).addField( (, Codec.INTEGER), (proc, v) -> proc.chance = v, (proc) -> proc.chance)).addField( (, Codec.BOOLEAN), (proc, v) -> proc.nextTicking = v, (proc) -> proc.nextTicking)).build();
}
}