Spawner interface
Пакет: com.hypixel.hytale.builtin.adventure.worldevents.condition.spawner
Файл: com/hypixel/hytale/builtin/adventure/worldevents/condition/spawner/Spawner.java
Поля (11)
| Модификаторы | Тип | Имя |
|---|---|---|
|
ArrayCodec<Spawner.Config> |
ARRAY_CODEC |
|
Spawner[] |
EMPTY_ARRAY |
|
Spawner.Config[] |
EMPTY_ARRAY |
|
PASS,
FAIL, |
ERROR |
|
CodecMapCodec<Spawner.Config> |
TYPE_CODEC |
|
Ref |
var4 |
|
Ref |
var4 |
|
BlockSection |
var5 |
|
FluidSection |
var5 |
|
int |
var5 |
|
BlockType |
var6 |
Методы (14)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
Result Result() |
abstract |
Spawner |
createSpawner create() |
static |
int |
findSurfaceint findSurface(int var0, int var1, int var2, int var3, int var4, @Nonnull ChunkStore var5) |
|
|
for for(int var6 = 1; var6 <= var4; var6++) |
|
|
for for(int var7 = 1; var7 <= var3; var7++) |
static |
int |
getBlockIdint getBlockId(int var0, int var1, int var2, @Nonnull ChunkStore var3) |
static |
int |
getFluidIdint getFluidId(int var0, int var1, int var2, @Nonnull ChunkStore var3) |
|
|
if if(var4 == null) |
|
|
if if(var4 == null) |
|
|
if if(var5 != 0 && var5 != 1) |
abstract |
boolean |
onCompleteboolean onComplete(@Nonnull Vector3ic var1, @Nonnull WorldEvent var2) |
abstract |
Spawner.Result |
testSpawner.Result test(@Nonnull World var1, @Nonnull Vector3ic var2, @Nonnull Random var3) |
static |
boolean |
testSurfaceboolean testSurface(int var0, int var1, int var2, int var3, @Nonnull ChunkStore var4) |
|
default void |
validatedefault void validate(@Nonnull Validator var1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.adventure.worldevents.condition.spawner;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.event.Validator;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.event.WorldEvent;
class="kw">import com.hypixel.hytale.codec.codecs.array.ArrayCodec;
class="kw">import com.hypixel.hytale.codec.lookup.CodecMapCodec;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.protocol.Opacity;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.section.BlockSection;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.section.FluidSection;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
class="kw">import java.util.Random;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3ic;
class="kw">public class="kw">interface Spawner {
Spawner[] EMPTY_ARRAY = new Spawner[0];
int INVALID_HEIGHT = Integer.MIN_VALUE;
Spawner.Result test(@Nonnull World var1, @Nonnull Vector3ic var2, @Nonnull Random var3);
boolean onComplete(@Nonnull Vector3ic var1, @Nonnull WorldEvent var2);
class="kw">static int findSurface(int var0, int var1, int var2, int var3, int var4, @Nonnull ChunkStore var5) {
if (testSurface(var0, var1, var2, var3, var5)) {
class="kw">return var1;
}
for (int var6 = 1; var6 <= var4; var6++) {
if (testSurface(var0, var1 - var6, var2, var3, var5)) {
class="kw">return var1 - var6;
}
if (testSurface(var0, var1 + var6, var2, var3, var5)) {
class="kw">return var1 + var6;
}
}
class="kw">return Integer.MIN_VALUE;
}
class="kw">static int getBlockId(int var0, int var1, int var2, @Nonnull ChunkStore var3) {
Ref var4 = var3.getChunkSectionReferenceAtBlock(var0, var1, var2);
if (var4 == null) {
class="kw">return 1;
}
BlockSection var5 = var3.getStore().getComponent(var4, BlockSection.getComponentType());
class="kw">return var5 == null ? 1 : var5.get(var0, var1, var2);
}
class="kw">static int getFluidId(int var0, int var1, int var2, @Nonnull ChunkStore var3) {
Ref var4 = var3.getChunkSectionReferenceAtBlock(var0, var1, var2);
if (var4 == null) {
class="kw">return 0;
}
FluidSection var5 = var3.getStore().getComponent(var4, FluidSection.getComponentType());
class="kw">return var5 == null ? 0 : var5.getFluidId(var0, var1, var2);
}
class="kw">private class="kw">static boolean testSurface(int var0, int var1, int var2, int var3, @Nonnull ChunkStore var4) {
int var5 = getBlockId(var0, var1, var2, var4);
if (var5 != 0 && var5 != 1) {
BlockType var6 = BlockType.getAssetMap().getAsset(var5);
if (var6 != null && var6.getOpacity() != Opacity.Transparent) {
for (int var7 = 1; var7 <= var3; var7++) {
if (getBlockId(var0, var1 + var7, var2, var4) != 0) {
class="kw">return false;
}
}
class="kw">return true;
} else {
class="kw">return false;
}
} else {
class="kw">return false;
}
}
class="kw">interface Config {
Spawner.Config[] EMPTY_ARRAY = new Spawner.Config[0];
CodecMapCodec<Spawner.Config> TYPE_CODEC = new CodecMapCodec<>("Type", true);
ArrayCodec<Spawner.Config> ARRAY_CODEC = new ArrayCodec<>(TYPE_CODEC, Spawner.Config[]::new);
@Nonnull
Spawner create();
class="kw">default void validate(@Nonnull Validator var1) {
}
}
enum Result {
PASS,
FAIL,
ERROR;
Result() {
}
}
}