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
);
}
}
}