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