FlatWorldGenProvider class
Пакет: com.hypixel.hytale.server.core.universe.world.worldgen.provider
Файл: com/hypixel/hytale/server/core/universe/world/worldgen/provider/FlatWorldGenProvider.java
implements: IWorldGenProvider
Поля (14)
| Модификаторы | Тип | Имя |
|---|---|---|
|
public static final BuilderCodec<FlatWorldGenProvider.Layer> |
CODEC |
final |
String |
ID |
|
public int |
blockId |
|
public String |
blockType |
|
public String |
environment |
|
public int |
environmentId |
|
public int |
from |
|
private final FlatWorldGenProvider.Layer[] |
layers |
|
private final int |
tintId |
|
public int |
to |
|
int |
var1 |
|
int |
var6 |
|
int |
var7 |
|
GeneratedBlockChunk |
var8 |
Методы (22)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
public |
FlatWorldGenpublic FlatWorldGen(FlatWorldGenProvider.Layer[] var1, int var2) |
|
public |
Layerpublic Layer() |
|
public |
Layerpublic Layer(int var1, int var2, String var3, String var4) |
abstract |
throw new |
WorldGenLoadExceptionthrow new WorldGenLoadException("Failed to load 'Flat' WorldGen config, 'To' must be greater than 'From': " + var5) |
abstract |
throw new |
WorldGenLoadExceptionthrow new WorldGenLoadException("Unknown key! " + var5.environment) |
abstract |
throw new |
WorldGenLoadExceptionthrow new WorldGenLoadException("Unknown key! " + var5.blockType) |
|
|
for for(FlatWorldGenProvider.Layer var5 : this.layers) |
|
|
for for(int var9 = 0; var9 < 32; var9++) |
|
|
for for(int var10 = 0; var10 < 32; var10++) |
|
|
for for(FlatWorldGenProvider.Layer var12 : this.layers) |
|
|
for for(int var13 = 0; var13 < 32; var13++) |
|
|
for for(int var14 = 0; var14 < 32; var14++) |
|
|
for for(int var15 = var12.from; var15 < var12.to; var15++) |
|
public CompletableFuture<GeneratedChunk> |
generatepublic CompletableFuture<GeneratedChunk> generate(int var1, long var2, int var4, int var5, LongPredicate var6, Long2FloatFunction var7) |
|
public Transform[] |
getSpawnPointspublic Transform[] getSpawnPoints(int var1) |
|
public WorldGenTimingsCollector |
getTimingspublic WorldGenTimingsCollector getTimings() |
|
|
if if(var5.from >= var5.to) |
|
|
if if(var5.environment != null) |
|
|
if if(var6 == Integer.MIN_VALUE) |
|
|
if if(var5.blockType != null) |
|
|
if if(var7 == Integer.MIN_VALUE) |
|
public String |
toStringpublic String toString() |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.universe.world.worldgen.provider;
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.codec.codecs.array.ArrayCodec;
class="kw">import com.hypixel.hytale.codec.validation.Validators;
class="kw">import com.hypixel.hytale.codec.validation.validator.RangeRefValidator;
class="kw">import com.hypixel.hytale.math.vector.Transform;
class="kw">import com.hypixel.hytale.protocol.Color;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType;
class="kw">import com.hypixel.hytale.server.core.asset.type.environment.config.Environment;
class="kw">import com.hypixel.hytale.server.core.asset.util.ColorParseUtil;
class="kw">import com.hypixel.hytale.server.core.codec.ProtocolCodecs;
class="kw">import com.hypixel.hytale.server.core.universe.world.worldgen.GeneratedBlockChunk;
class="kw">import com.hypixel.hytale.server.core.universe.world.worldgen.GeneratedChunk;
class="kw">import com.hypixel.hytale.server.core.universe.world.worldgen.GeneratedEntityChunk;
class="kw">import com.hypixel.hytale.server.core.universe.world.worldgen.IWorldGen;
class="kw">import com.hypixel.hytale.server.core.universe.world.worldgen.WorldGenLoadException;
class="kw">import com.hypixel.hytale.server.core.universe.world.worldgen.WorldGenTimingsCollector;
class="kw">import it.unimi.dsi.fastutil.longs.Long2FloatFunction;
class="kw">import java.util.Arrays;
class="kw">import java.util.concurrent.CompletableFuture;
class="kw">import java.util.function.LongPredicate;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class FlatWorldGenProvider class="kw">implements IWorldGenProvider {
class="kw">public class="kw">static class="kw">final String ID = "Flat";
class="kw">public class="kw">static class="kw">final BuilderCodec<FlatWorldGenProvider> CODEC = BuilderCodec.<FlatWorldGenProvider>builder(
FlatWorldGenProvider.class, FlatWorldGenProvider::new
)
.documentation("A world generation provider that generates a flat world with defined layers.")
.<Color>append(new KeyedCodec<>("Tint", ProtocolCodecs.COLOR), (var0, var1) -> var0.tint = var1, var0 -> var0.tint)
.documentation("The tint to set for all chunks that are generated.")
.add()
.<FlatWorldGenProvider.Layer[]>append(
new KeyedCodec<>("Layers", new ArrayCodec<>(FlatWorldGenProvider.Layer.CODEC, FlatWorldGenProvider.Layer[]::new)),
(var0, var1) -> var0.layers = var1,
var0 -> var0.layers
)
.documentation("The list of layers to add to the world.")
.addValidator(Validators.nonNull())
.add()
.build();
class="kw">public class="kw">static class="kw">final Color DEFAULT_TINT = new Color((byte)91, (byte)-98, (byte)40);
class="kw">private Color tint = DEFAULT_TINT;
class="kw">private FlatWorldGenProvider.Layer[] layers;
class="kw">public FlatWorldGenProvider() {
this.layers = new FlatWorldGenProvider.Layer[]{new FlatWorldGenProvider.Layer(0, 1, Environment.UNKNOWN.getId(), "Soil_Grass")};
}
class="kw">public FlatWorldGenProvider(Color var1, FlatWorldGenProvider.Layer[] var2) {
this.tint = var1;
this.layers = var2;
}
@Nonnull
@Override
class="kw">public IWorldGen getGenerator() class="kw">throws WorldGenLoadException {
int var1 = ColorParseUtil.colorToARGBInt(this.tint);
for (FlatWorldGenProvider.Layer var5 : this.layers) {
if (var5.from >= var5.to) {
throw new WorldGenLoadException("Failed to load 'Flat' WorldGen config, 'To' must be greater than 'From': " + var5);
}
var5.from = Math.max(var5.from, 0);
var5.to = Math.min(var5.to, 320);
if (var5.environment != null) {
int var6 = Environment.getAssetMap().getIndex(var5.environment);
if (var6 == Integer.MIN_VALUE) {
throw new WorldGenLoadException("Unknown key! " + var5.environment);
}
var5.environmentId = var6;
} else {
var5.environmentId = 0;
}
if (var5.blockType != null) {
int var7 = BlockType.getAssetMap().getIndex(var5.blockType);
if (var7 == Integer.MIN_VALUE) {
throw new WorldGenLoadException("Unknown key! " + var5.blockType);
}
var5.blockId = var7;
} else {
var5.blockId = 0;
}
}
class="kw">return new FlatWorldGenProvider.FlatWorldGen(this.layers, var1);
}
@Nonnull
@Override
class="kw">public String toString() {
class="kw">return "FlatWorldGenProvider{tint=" + this.tint + ", layers=" + Arrays.toString(this.layers) + "}";
}
class="kw">private class="kw">static class FlatWorldGen class="kw">implements IWorldGen {
class="kw">private class="kw">final FlatWorldGenProvider.Layer[] layers;
class="kw">private class="kw">final int tintId;
class="kw">public FlatWorldGen(FlatWorldGenProvider.Layer[] var1, int var2) {
this.layers = var1;
this.tintId = var2;
}
@Nullable
@Override
class="kw">public WorldGenTimingsCollector getTimings() {
class="kw">return null;
}
@Nonnull
@Override
class="kw">public Transform[] getSpawnPoints(int var1) {
class="kw">return new Transform[]{new Transform(0.0, 81.0, 0.0)};
}
@Nonnull
@Override
class="kw">public CompletableFuture<GeneratedChunk> generate(int var1, long var2, int var4, int var5, LongPredicate var6, Long2FloatFunction var7) {
GeneratedBlockChunk var8 = new GeneratedBlockChunk(var2, var4, var5);
for (int var9 = 0; var9 < 32; var9++) {
for (int var10 = 0; var10 < 32; var10++) {
var8.setTint(var9, var10, this.tintId);
}
}
for (FlatWorldGenProvider.Layer var12 : this.layers) {
for (int var13 = 0; var13 < 32; var13++) {
for (int var14 = 0; var14 < 32; var14++) {
for (int var15 = var12.from; var15 < var12.to; var15++) {
var8.setBlock(var13, var15, var14, var12.blockId, 0, 0);
var8.setEnvironment(var13, var15, var14, var12.environmentId);
}
var8.setTint(var13, var14, this.tintId);
}
}
}
class="kw">return CompletableFuture.completedFuture(new GeneratedChunk(var8, new GeneratedEntityChunk(), GeneratedChunk.makeSections()));
}
}
class="kw">public class="kw">static class Layer {
class="kw">public class="kw">static class="kw">final BuilderCodec<FlatWorldGenProvider.Layer> CODEC = BuilderCodec.<FlatWorldGenProvider.Layer>builder(
FlatWorldGenProvider.Layer.class, FlatWorldGenProvider.Layer::new
)
.documentation("A layer of blocks for a given range.")
.<Integer>append(new KeyedCodec<>("From", Codec.INTEGER), (var0, var1) -> var0.from = var1, var0 -> var0.from)
.documentation("The Y coordinate (inclusive) to start placing blocks at.")
.add()
.<Integer>append(new KeyedCodec<>("To", Codec.INTEGER), (var0, var1) -> var0.to = var1, var0 -> var0.to)
.documentation("The Y coordinate (exclusive) to stop placing blocks at.")
.addValidator(new RangeRefValidator<>("1/From", null, false))
.add()
.<String>append(new KeyedCodec<>("BlockType", Codec.STRING), (var0, var1) -> var0.blockType = var1, var0 -> var0.blockType)
.documentation("The type of block that will be used for all blocks placed at this layer.")
.addValidator(BlockType.VALIDATOR_CACHE.getValidator())
.add()
.<String>append(new KeyedCodec<>("Environment", Codec.STRING), (var0, var1) -> var0.environment = var1, var0 -> var0.environment)
.documentation("The environment to set for every block placed.")
.addValidator(Environment.VALIDATOR_CACHE.getValidator())
.add()
.build();
class="kw">public int from = Integer.MIN_VALUE;
class="kw">public int to = Integer.MAX_VALUE;
class="kw">public String environment;
class="kw">public String blockType;
class="kw">public int environmentId;
class="kw">public int blockId;
class="kw">public Layer() {
}
class="kw">public Layer(int var1, int var2, String var3, String var4) {
this.from = var1;
this.to = var2;
this.environment = var3;
this.blockType = var4;
}
@Nonnull
@Override
class="kw">public String toString() {
class="kw">return "Layer{from=" + this.from + ", to=" + this.to + ", environment='" + this.environment + "', blockType=" + this.blockType + "}";
}
}
}