Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- record VerticalGradientMaterialCondition(Identifier randomName, YOffset trueAtAndBelow, YOffset falseAtAndAbove) implements MaterialCondition
- {
- static final CodecHolder<VerticalGradientMaterialCondition> CODEC = CodecHolder.of(RecordCodecBuilder.mapCodec(instance -> instance.group(((MapCodec)Identifier.CODEC.fieldOf("random_name")).forGetter(VerticalGradientMaterialCondition::randomName), ((MapCodec)YOffset.OFFSET_CODEC.fieldOf("true_at_and_below")).forGetter(VerticalGradientMaterialCondition::trueAtAndBelow), ((MapCodec)YOffset.OFFSET_CODEC.fieldOf("false_at_and_above")).forGetter(VerticalGradientMaterialCondition::falseAtAndAbove)).apply((Applicative<VerticalGradientMaterialCondition, ?>)instance, VerticalGradientMaterialCondition::new)));
- @Override
- public CodecHolder<? extends MaterialCondition> codec() {
- return CODEC;
- }
- @Override
- public BooleanSupplier apply(final MaterialRuleContext materialRuleContext) {
- final int i = this.trueAtAndBelow().getY(materialRuleContext.heightContext);
- final int j = this.falseAtAndAbove().getY(materialRuleContext.heightContext);
- final RandomSplitter randomSplitter = materialRuleContext.noiseConfig.getOrCreateRandomDeriver(this.randomName());
- class VerticalGradientPredicate
- extends FullLazyAbstractPredicate {
- VerticalGradientPredicate() {
- super(materialRuleContext2);
- }
- @Override
- protected boolean test() {
- int i2 = this.context.blockY;
- if (i2 <= i) {
- return true;
- }
- if (i2 >= j) {
- return false;
- }
- double d = MathHelper.map((double)i2, (double)i, (double)j, 1.0, 0.0);
- Random random = randomSplitter.split(this.context.blockX, i2, this.context.blockZ);
- return (double)random.nextFloat() < d;
- }
- }
- return new VerticalGradientPredicate();
- }
- @Override
- public /* synthetic */ Object apply(Object context) {
- return this.apply((MaterialRuleContext)context);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement