OreCluster class

Пакет: com.hypixel.hytale.builtin.worldgen.modifier.content.cave.ore

Файл: com/hypixel/hytale/builtin/worldgen/modifier/content/cave/ore/OreCluster.java

implements: CaveTypeGenerator

Поля (6)

МодификаторыТипИмя
final String ID
CaveNodeType var3
CaveNodeType.CaveNodeChildEntry var4
CaveNodeType var5
CaveNodeType.CaveNodeChildEntry var6
CaveNodeType var7

Методы (2)

МодификаторыВозвратСигнатура
protected CaveNodeShapeEnum.CaveNodeShapeGenerator buildClusterShapeCaveNodeShapeEnum.CaveNodeShapeGenerator buildClusterShape()
protected CaveNodeShapeEnum.CaveNodeShapeGenerator buildStartShapeCaveNodeShapeEnum.CaveNodeShapeGenerator buildStartShape(@Nonnull CaveTypeContent var1)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.worldgen.modifier.content.cave.ore;

class="kw">import com.hypixel.hytale.builtin.worldgen.modifier.content.Codecs;
class="kw">import com.hypixel.hytale.builtin.worldgen.modifier.content.cave.CaveTypeContent;
class="kw">import com.hypixel.hytale.builtin.worldgen.modifier.content.cave.CaveTypeGenerator;
class="kw">import com.hypixel.hytale.builtin.worldgen.modifier.content.common.BlockEntry;
class="kw">import com.hypixel.hytale.builtin.worldgen.modifier.content.common.HeightMask;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.math.range.IntRange;
class="kw">import com.hypixel.hytale.procedurallib.condition.DefaultCoordinateCondition;
class="kw">import com.hypixel.hytale.procedurallib.json.SeedString;
class="kw">import com.hypixel.hytale.procedurallib.property.NoiseProperty;
class="kw">import com.hypixel.hytale.procedurallib.supplier.DoubleRange;
class="kw">import com.hypixel.hytale.procedurallib.supplier.FloatRange;
class="kw">import com.hypixel.hytale.server.worldgen.SeedStringResource;
class="kw">import com.hypixel.hytale.server.worldgen.cave.CaveBiomeMaskFlags;
class="kw">import com.hypixel.hytale.server.worldgen.cave.CaveNodeType;
class="kw">import com.hypixel.hytale.server.worldgen.cave.CaveType;
class="kw">import com.hypixel.hytale.server.worldgen.cave.shape.CaveNodeShapeEnum;
class="kw">import com.hypixel.hytale.server.worldgen.cave.shape.EmptyLineCaveNodeShape;
class="kw">import com.hypixel.hytale.server.worldgen.cave.shape.PipeCaveNodeShape;
class="kw">import javax.annotation.Nonnull;

class="kw">public class OreCluster class="kw">implements CaveTypeGenerator {
   class="kw">public class="kw">static class="kw">final String ID = "OreCluster";
   class="kw">public class="kw">static class="kw">final BuilderCodec<OreCluster> CODEC = BuilderCodec.builder(OreCluster.class, OreCluster::new)
      .documentation(
         "Ore cluster generator: at each grid point picks a random height, radius, length, for the cluster shape, and a random selection of blocks to place"
      )
      .<BlockEntry[]>append(new KeyedCodec<>("Blocks", BlockEntry.ARRAY_CODEC), (var0, var1) -> var0.blocks = var1, var0 -> var0.blocks)
      .documentation("Weighted list of block types to randomly fill the ore cluster with")
      .add()
      .<IntRange>append(new KeyedCodec<>("Radius", Codecs.INT_RANGE), (var0, var1) -> var0.radius = var1, var0 -> var0.radius)
      .documentation("The radius range of the ore cluster shape")
      .add()
      .<IntRange>append(new KeyedCodec<>("Length", Codecs.INT_RANGE), (var0, var1) -> var0.length = var1, var0 -> var0.length)
      .documentation("The length range of the ore cluster shape")
      .add()
      .<IntRange>append(new KeyedCodec<>("Repetitions", Codecs.INT_RANGE), (var0, var1) -> var0.repetitions = var1, var0 -> var0.repetitions)
      .documentation("The number of ore clusters to generate per grid point")
      .add()
      .build();
   class="kw">protected class="kw">static class="kw">final FloatRange.Normal YAW = new FloatRange.Normal((float) -Math.PI, (float) Math.PI);
   class="kw">protected class="kw">static class="kw">final FloatRange.Constant PITCH_UP = new FloatRange.Constant((float) Math.PI);
   class="kw">protected class="kw">static class="kw">final FloatRange.Constant NODE_RECURSION_DEPTH = new FloatRange.Constant(2.0F);
   class="kw">protected BlockEntry[] blocks = BlockEntry.EMPTY_ARRAY;
   class="kw">protected IntRange radius = new IntRange();
   class="kw">protected IntRange length = new IntRange();
   class="kw">protected IntRange repetitions = new IntRange(1, 3);

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

   @Nonnull
   @Override
   class="kw">public CaveType create(@Nonnull SeedString<SeedStringResource> var1, @Nonnull CaveTypeContent var2) {
      CaveNodeType var3 = CaveTypeContent.Util.createNodeType(var2.name(), BlockEntry.build(this.blocks), this.buildClusterShape());
      CaveNodeType.CaveNodeChildEntry var4 = CaveTypeContent.Util.createChildEntry(var3, CaveTypeContent.Util.INT_RANGE_ONE, false);
      CaveNodeType var5 = CaveTypeContent.Util.createNodeType("Start", CaveTypeContent.Util.EMPTY_FILLING, this.buildStartShape(var2), var4);
      CaveNodeType.CaveNodeChildEntry var6 = CaveTypeContent.Util.createChildEntry(var5, this.repetitions, true);
      CaveNodeType var7 = CaveTypeContent.Util.createNodeType("Entry", CaveTypeContent.Util.EMPTY_FILLING, CaveTypeContent.Util.EMPTY_SHAPE, var6);
      class="kw">return new CaveType(
         var2.name(),
         var7,
         YAW,
         PITCH_UP,
         NODE_RECURSION_DEPTH,
         HeightMask.DEFAULT_HEIGHT_THRESHOLD,
         var2.grid().build(var1),
         CaveBiomeMaskFlags.DEFAULT_ALLOW,
         var2.mask().getBlockMask(),
         DefaultCoordinateCondition.DEFAULT_TRUE,
         DefaultCoordinateCondition.DEFAULT_TRUE,
         CaveTypeContent.Util.FIXED_ENTRY_HEIGHT,
         (NoiseProperty)null,
         CaveType.FluidLevel.EMPTY,
         0,
         true,
         true,
         this.radius.getInclusiveMax()
      );
   }

   class="kw">protected CaveNodeShapeEnum.CaveNodeShapeGenerator buildStartShape(@Nonnull CaveTypeContent var1) {
      class="kw">return new EmptyLineCaveNodeShape.EmptyLineCaveNodeShapeGenerator(
         new DoubleRange.Normal(var1.height().getInclusiveMin(), var1.height().getInclusiveMax())
      );
   }

   class="kw">protected CaveNodeShapeEnum.CaveNodeShapeGenerator buildClusterShape() {
      class="kw">return new PipeCaveNodeShape.PipeCaveNodeShapeGenerator(
         new DoubleRange.Normal(this.radius.getInclusiveMin(), this.radius.getInclusiveMax()),
         new DoubleRange.Normal(this.radius.getInclusiveMin(), this.radius.getInclusiveMax()),
         new DoubleRange.Normal(this.length.getInclusiveMin(), this.length.getInclusiveMax()),
         false
      );
   }
}