CaveTypeContent class

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

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

implements: Content

Поля (8)

МодификаторыТипИмя
CaveNodeType.CaveNodeChildEntry.OrientationModifier DIRECT
IWeightedMap<BlockFluidEntry> EMPTY_FILLING
CaveNodeShapeEnum.CaveNodeShapeGenerator EMPTY_SHAPE
DoubleRange.Constant FIXED_ENTRY_HEIGHT
final String ID
IntRange INT_RANGE_ONE
CaveNodeType.CaveNodeChildEntry.OrientationModifier RANDOM
CaveNodeType var4

Методы (8)

МодификаторыВозвратСигнатура
static CaveNodeType.CaveNodeChildEntry createChildEntrystatic CaveNodeType.CaveNodeChildEntry createChildEntry(@Nonnull CaveNodeType var0, @Nonnull IntRange var1, boolean var2)
static CaveNodeType createNodeTypestatic CaveNodeType createNodeType(@Nonnull String var0, @Nonnull IWeightedMap<BlockFluidEntry> var1, @Nonnull CaveNodeShapeEnum.CaveNodeShapeGenerator var2, @Nonnull CaveNodeType.CaveNodeChildEntry... var3)
public PointGrid gridPointGrid grid()
public IntRange heightIntRange height()
if if(this.generator != null)
if if(var1 instanceof ModifyEvents.CaveTypes var2)
public BlockMask maskBlockMask mask()
public String nameString name()

Исходный код

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

class="kw">import com.hypixel.hytale.builtin.worldgen.modifier.content.Content;
class="kw">import com.hypixel.hytale.builtin.worldgen.modifier.content.common.BlockMask;
class="kw">import com.hypixel.hytale.builtin.worldgen.modifier.content.common.HeightMask;
class="kw">import com.hypixel.hytale.builtin.worldgen.modifier.content.common.PointGrid;
class="kw">import com.hypixel.hytale.builtin.worldgen.modifier.event.ModifyEvent;
class="kw">import com.hypixel.hytale.builtin.worldgen.modifier.event.ModifyEvents;
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.common.map.IWeightedMap;
class="kw">import com.hypixel.hytale.common.map.WeightedMap;
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.supplier.DoubleRange;
class="kw">import com.hypixel.hytale.procedurallib.supplier.IDoubleRange;
class="kw">import com.hypixel.hytale.server.core.prefab.PrefabRotation;
class="kw">import com.hypixel.hytale.server.worldgen.cave.CaveNodeType;
class="kw">import com.hypixel.hytale.server.worldgen.cave.CaveYawMode;
class="kw">import com.hypixel.hytale.server.worldgen.cave.prefab.CavePrefabContainer;
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.util.BlockFluidEntry;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;

class="kw">public class CaveTypeContent class="kw">implements Content {
   class="kw">public class="kw">static class="kw">final String ID = "CaveType";
   class="kw">public class="kw">static class="kw">final BuilderCodec<CaveTypeContent> CODEC = BuilderCodec.builder(CaveTypeContent.class, CaveTypeContent::new)
      .append(new KeyedCodec<>("Name", Codec.STRING), (var0, var1) -> var0.name = var1, var0 -> var0.name)
      .documentation("The name of the cave type")
      .add()
      .<PointGrid>append(new KeyedCodec<>("PointGrid", PointGrid.CODEC), (var0, var1) -> var0.grid = var1, var0 -> var0.grid)
      .documentation("The point grid configuration controlling where the cave starting points are placed horizontally")
      .add()
      .<HeightMask>append(new KeyedCodec<>("HeightRange", HeightMask.CODEC), (var0, var1) -> var0.height = var1, var0 -> var0.height)
      .documentation("The height range within which the cave type can be placed")
      .add()
      .<BlockMask>append(new KeyedCodec<>("BlockMask", BlockMask.CODEC), (var0, var1) -> var0.blockMask = var1, var0 -> var0.blockMask)
      .documentation("The block and fluid types that this cave type can replace")
      .add()
      .<CaveTypeGenerator>append(new KeyedCodec<>("Generator", CaveTypeGenerator.TYPE_CODEC), (var0, var1) -> var0.generator = var1, var0 -> var0.generator)
      .documentation("The generator configuration for this cave type")
      .add()
      .build();
   class="kw">protected String name = "";
   class="kw">protected PointGrid grid = new PointGrid();
   class="kw">protected HeightMask height = HeightMask.DEFAULT;
   class="kw">protected BlockMask blockMask = BlockMask.REPLACE_SOLID;
   @Nullable
   class="kw">protected CaveTypeGenerator generator = null;

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

   class="kw">public String name() {
      class="kw">return this.name;
   }

   class="kw">public PointGrid grid() {
      class="kw">return this.grid;
   }

   class="kw">public BlockMask mask() {
      class="kw">return this.blockMask;
   }

   class="kw">public IntRange height() {
      class="kw">return this.height.range();
   }

   @Override
   class="kw">public Content.Type type() {
      class="kw">return Content.Type.CAVE_TYPE;
   }

   @Override
   class="kw">public <T> void applyTo(ModifyEvent<T> var1) class="kw">throws Exception {
      if (this.generator != null) {
         if (var1 class="kw">instanceof ModifyEvents.CaveTypes var2) {
            var2.entries().add(this.generator.create(var1.seed(), this));
         }
      }
   }

   class="kw">public class="kw">interface Util {
      IntRange INT_RANGE_ONE = new IntRange(1, 1);
      DoubleRange.Constant FIXED_ENTRY_HEIGHT = DoubleRange.ZERO;
      CaveNodeType.CaveNodeChildEntry.OrientationModifier DIRECT = (var0, var1) -> var0;
      CaveNodeType.CaveNodeChildEntry.OrientationModifier RANDOM = (var0, var1) -> var0 + var1.nextFloat() * (float) (Math.PI * 2);
      CaveNodeShapeEnum.CaveNodeShapeGenerator EMPTY_SHAPE = new EmptyLineCaveNodeShape.EmptyLineCaveNodeShapeGenerator(DoubleRange.ZERO);
      IWeightedMap<BlockFluidEntry> EMPTY_FILLING = WeightedMap.builder(BlockFluidEntry.EMPTY_ARRAY).put(BlockFluidEntry.EMPTY, 1.0).build();

      class="kw">static CaveNodeType createNodeType(
         @Nonnull String var0,
         @Nonnull IWeightedMap<BlockFluidEntry> var1,
         @Nonnull CaveNodeShapeEnum.CaveNodeShapeGenerator var2,
         @Nonnull CaveNodeType.CaveNodeChildEntry... var3
      ) {
         CaveNodeType var4 = new CaveNodeType(
            var0,
            (CavePrefabContainer)null,
            var1,
            var2,
            DefaultCoordinateCondition.DEFAULT_TRUE,
            (IDoubleRange)null,
            CaveNodeType.CaveNodeCoverEntry.EMPTY_ARRAY,
            6,
            0
         );
         var4.setChildren(var3);
         class="kw">return var4;
      }

      class="kw">static CaveNodeType.CaveNodeChildEntry createChildEntry(@Nonnull CaveNodeType var0, @Nonnull IntRange var1, boolean var2) {
         class="kw">return new CaveNodeType.CaveNodeChildEntry(
            WeightedMap.builder(CaveNodeType.EMPTY_ARRAY).put(var0, 1.0).build(),
            new Vector3d(0.0),
            new Vector3d(0.0),
            PrefabRotation.VALUES,
            (IDoubleRange)null,
            new DoubleRange.Normal(var1.getInclusiveMin(), var1.getInclusiveMax()),
            var2 ? RANDOM : DIRECT,
            var2 ? RANDOM : DIRECT,
            1.0,
            CaveYawMode.NODE
         );
      }
   }
}