CheckTagWorldHeightRadiusProvider class
Пакет: com.hypixel.hytale.builtin.adventure.objectives.config.worldlocationproviders
Файл: com/hypixel/hytale/builtin/adventure/objectives/config/worldlocationproviders/CheckTagWorldHeightRadiusProvider.java
extends: WorldLocationProvider
Поля (12)
| Модификаторы | Тип | Имя |
|---|---|---|
|
int |
var1 |
|
WorldChunk |
var10 |
|
int |
var11 |
|
int |
var12 |
|
String |
var2 |
|
CheckTagWorldHeightRadiusProvider |
var2 |
|
SpiralIterator |
var3 |
|
String |
var4 |
|
long |
var4 |
|
int |
var6 |
|
int |
var7 |
|
long |
var8 |
Методы (7)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
return new |
Vector3ireturn new Vector3i(var6, var11 + 1, var7) |
|
|
for for(int var1 = 0; var1 < var0.blockTags.length; var1++) |
|
|
for for(int var3 = 0; var3 < var1.length; var3++) |
|
|
for for(int var13 = 0; var13 < this.blockTagsIndexes.length; var13++) |
|
|
if if(var0.blockTags != null) |
|
|
if if(var10 != null) |
|
|
if if(this == var1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.adventure.objectives.config.worldlocationproviders;
class="kw">import com.hypixel.hytale.assetstore.AssetRegistry;
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.validation.Validators;
class="kw">import com.hypixel.hytale.math.iterator.SpiralIterator;
class="kw">import com.hypixel.hytale.math.util.ChunkUtil;
class="kw">import com.hypixel.hytale.math.util.MathUtil;
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.WorldChunk;
class="kw">import java.util.Arrays;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3i;
class="kw">public class CheckTagWorldHeightRadiusProvider class="kw">extends WorldLocationProvider {
@Nonnull
class="kw">public class="kw">static class="kw">final BuilderCodec<CheckTagWorldHeightRadiusProvider> CODEC = BuilderCodec.builder(
CheckTagWorldHeightRadiusProvider.class, CheckTagWorldHeightRadiusProvider::new, BASE_CODEC
)
.append(new KeyedCodec<>("BlockTags", Codec.STRING_ARRAY), (var0, var1) -> var0.blockTags = var1, var0 -> var0.blockTags)
.addValidator(Validators.nonEmptyArray())
.addValidator(Validators.uniqueInArray())
.add()
.<Integer>append(new KeyedCodec<>("Radius", Codec.INTEGER), (var0, var1) -> var0.radius = var1, var0 -> var0.radius)
.addValidator(Validators.greaterThan(0))
.add()
.afterDecode(var0 -> {
if (var0.blockTags != null) {
var0.blockTagsIndexes = new int[var0.blockTags.length];
for (int var1 = 0; var1 < var0.blockTags.length; var1++) {
String var2 = var0.blockTags[var1];
var0.blockTagsIndexes[var1] = AssetRegistry.getOrCreateTagIndex(var2);
}
}
})
.build();
class="kw">protected String[] blockTags;
class="kw">protected int radius = 5;
class="kw">private int[] blockTagsIndexes;
class="kw">public CheckTagWorldHeightRadiusProvider(@Nonnull String[] var1, int var2) {
this.blockTags = var1;
this.radius = var2;
this.blockTagsIndexes = new int[var1.length];
for (int var3 = 0; var3 < var1.length; var3++) {
String var4 = var1[var3];
this.blockTagsIndexes[var3] = AssetRegistry.getOrCreateTagIndex(var4);
}
}
class="kw">protected CheckTagWorldHeightRadiusProvider() {
}
@Nullable
@Override
class="kw">public Vector3i runCondition(@Nonnull World var1, @Nonnull Vector3i var2) {
SpiralIterator var3 = new SpiralIterator(var2.x, var2.z, this.radius);
while (var3.hasNext()) {
long var4 = var3.next();
int var6 = MathUtil.unpackLeft(var4);
int var7 = MathUtil.unpackRight(var4);
long var8 = ChunkUtil.indexChunkFromBlock(var6, var7);
WorldChunk var10 = var1.getNonTickingChunk(var8);
if (var10 != null) {
int var11 = var10.getHeight(var6, var7);
int var12 = var10.getBlock(var6, var11, var7);
for (int var13 = 0; var13 < this.blockTagsIndexes.length; var13++) {
if (BlockType.getAssetMap().getIndexesForTag(this.blockTagsIndexes[var13]).contains(var12)) {
class="kw">return new Vector3i(var6, var11 + 1, var7);
}
}
}
}
class="kw">return null;
}
@Override
class="kw">public boolean equals(@Nullable Object var1) {
if (this == var1) {
class="kw">return true;
} else if (var1 != null && this.getClass() == var1.getClass()) {
CheckTagWorldHeightRadiusProvider var2 = (CheckTagWorldHeightRadiusProvider)var1;
class="kw">return this.radius != var2.radius ? false : Arrays.equals(this.blockTags, var2.blockTags);
} else {
class="kw">return false;
}
}
@Override
class="kw">public int hashCode() {
int var1 = Arrays.hashCode(this.blockTags);
class="kw">return 31 * var1 + this.radius;
}
@Nonnull
@Override
class="kw">public String toString() {
class="kw">return "CheckTagWorldHeightRadiusProvider{blockTags=" + Arrays.toString(this.blockTags) + ", radius=" + this.radius + "} " + super.toString();
}
}