EnvironmentCondition class
Пакет: com.hypixel.hytale.server.core.modules.entity.condition
Файл: com/hypixel/hytale/server/core/modules/entity/condition/EnvironmentCondition.java
extends: Condition
Поля (9)
| Модификаторы | Тип | Имя |
|---|---|---|
|
Ref |
var10 |
|
Store |
var11 |
|
BlockChunk |
var12 |
|
int |
var13 |
|
TransformComponent |
var4 |
|
Vector3d |
var5 |
|
World |
var6 |
|
ChunkStore |
var7 |
|
long |
var8 |
Методы (2)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
public |
int[] |
getEnvironmentsint[] getEnvironments() |
|
|
if if(this.environments == null && this.unknownEnvironments != null) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.modules.entity.condition;
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.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.math.util.ChunkUtil;
class="kw">import com.hypixel.hytale.server.core.asset.type.environment.config.Environment;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.BlockChunk;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import java.time.Instant;
class="kw">import java.util.Arrays;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;
class="kw">public class EnvironmentCondition class="kw">extends Condition {
@Nonnull
class="kw">public class="kw">static class="kw">final BuilderCodec<EnvironmentCondition> CODEC = BuilderCodec.builder(
EnvironmentCondition.class, EnvironmentCondition::new, Condition.BASE_CODEC
)
.append(
new KeyedCodec<>("Environments", new ArrayCodec<>(Codec.STRING, String[]::new)),
(var0, var1) -> var0.unknownEnvironments = var1,
var0 -> var0.unknownEnvironments
)
.documentation("The environments to evaluate the condition against.")
.add()
.afterDecode(var0 -> var0.environments = null)
.build();
class="kw">protected String[] unknownEnvironments;
@Nullable
class="kw">protected int[] environments;
class="kw">protected EnvironmentCondition() {
}
class="kw">public int[] getEnvironments() {
if (this.environments == null && this.unknownEnvironments != null) {
this.environments = Arrays.stream(this.unknownEnvironments).mapToInt(var0 -> Environment.getAssetMap().getIndex(var0)).sorted().toArray();
}
class="kw">return this.environments;
}
@Override
class="kw">public boolean eval0(@Nonnull ComponentAccessor<EntityStore> var1, @Nonnull Ref<EntityStore> var2, @Nonnull Instant var3) {
TransformComponent var4 = var1.getComponent(var2, TransformComponent.getComponentType());
assert var4 != null;
Vector3d var5 = var4.getPosition();
World var6 = var1.getExternalData().getWorld();
ChunkStore var7 = var6.getChunkStore();
long var8 = ChunkUtil.indexChunkFromBlock(var5.x(), var5.z());
Ref var10 = var7.getChunkReference(var8);
if (var10 != null && var10.isValid()) {
Store var11 = var7.getStore();
BlockChunk var12 = var11.getComponent(var10, BlockChunk.getComponentType());
assert var12 != null;
int var13 = var12.getEnvironment(var5);
class="kw">return Arrays.binarySearch(this.getEnvironments(), var13) >= 0;
} else {
class="kw">return false;
}
}
@Nonnull
@Override
class="kw">public String toString() {
class="kw">return "EnvironmentCondition{unknownEnvironments="
+ Arrays.toString(this.unknownEnvironments)
+ ", environments="
+ Arrays.toString(this.environments)
+ "} "
+ super.toString();
}
}