Advertisement
egef

Untitled

Nov 9th, 2022
1,021
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.30 KB | None | 0 0
  1.     record VerticalGradientMaterialCondition(Identifier randomName, YOffset trueAtAndBelow, YOffset falseAtAndAbove) implements MaterialCondition
  2.     {
  3.         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)));
  4.  
  5.         @Override
  6.         public CodecHolder<? extends MaterialCondition> codec() {
  7.             return CODEC;
  8.         }
  9.  
  10.         @Override
  11.         public BooleanSupplier apply(final MaterialRuleContext materialRuleContext) {
  12.             final int i = this.trueAtAndBelow().getY(materialRuleContext.heightContext);
  13.             final int j = this.falseAtAndAbove().getY(materialRuleContext.heightContext);
  14.             final RandomSplitter randomSplitter = materialRuleContext.noiseConfig.getOrCreateRandomDeriver(this.randomName());
  15.             class VerticalGradientPredicate
  16.             extends FullLazyAbstractPredicate {
  17.                 VerticalGradientPredicate() {
  18.                     super(materialRuleContext2);
  19.                 }
  20.  
  21.                 @Override
  22.                 protected boolean test() {
  23.                     int i2 = this.context.blockY;
  24.                     if (i2 <= i) {
  25.                         return true;
  26.                     }
  27.                     if (i2 >= j) {
  28.                         return false;
  29.                     }
  30.                     double d = MathHelper.map((double)i2, (double)i, (double)j, 1.0, 0.0);
  31.                     Random random = randomSplitter.split(this.context.blockX, i2, this.context.blockZ);
  32.                     return (double)random.nextFloat() < d;
  33.                 }
  34.             }
  35.             return new VerticalGradientPredicate();
  36.         }
  37.  
  38.         @Override
  39.         public /* synthetic */ Object apply(Object context) {
  40.             return this.apply((MaterialRuleContext)context);
  41.         }
  42.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement