LookBlocksBelowProvider class
Пакет: com.hypixel.hytale.builtin.adventure.objectives.config.worldlocationproviders
Файл: com/hypixel/hytale/builtin/adventure/objectives/config/worldlocationproviders/LookBlocksBelowProvider.java
extends: WorldLocationProvider
Поля (23)
| Модификаторы | Тип | Имя |
|---|---|---|
|
|
break |
|
|
break |
|
int |
var1 |
|
|
var1 |
|
|
var1 |
|
int |
var10 |
|
int |
var11 |
|
|
var11 |
|
|
var11 |
|
BlockType |
var12 |
|
String |
var13 |
|
boolean |
var14 |
|
|
var14 |
|
int |
var16 |
|
String |
var2 |
|
LookBlocksBelowProvider |
var2 |
|
Vector3i |
var3 |
|
long |
var4 |
|
String |
var6 |
|
WorldChunk |
var6 |
|
int |
var7 |
|
int |
var8 |
|
int |
var9 |
Методы (12)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
for for(int var1 = 0; var1 < var0.blockTags.length; var1++) |
|
|
for for(int var5 = 0; var5 < var1.length; var5++) |
|
|
for for(int var15 = 0; var15 < this.blockTagsIndexes.length; var15++) |
|
|
if if(var0.blockTags != null) |
|
|
if if(var0.minRange > var0.maxRange) |
|
|
if if(var6 == null) |
|
|
if if(var12 == null) |
|
|
if if(var11 == this.count) |
|
|
if if(!var14) |
|
|
if if(this == var1) |
|
|
if if(this.count != var2.count) |
|
|
while while(var9 >= this.minRange && var7 - var9 <= this.maxRange) |
Исходный код
Показать/скрыть
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.util.ChunkUtil;
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 LookBlocksBelowProvider class="kw">extends WorldLocationProvider {
@Nonnull
class="kw">public class="kw">static class="kw">final BuilderCodec<LookBlocksBelowProvider> CODEC = BuilderCodec.builder(
LookBlocksBelowProvider.class, LookBlocksBelowProvider::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<>("Count", Codec.INTEGER), (var0, var1) -> var0.count = var1, var0 -> var0.count)
.addValidator(Validators.greaterThan(0))
.add()
.<Integer>append(new KeyedCodec<>("MinRange", Codec.INTEGER), (var0, var1) -> var0.minRange = var1, var0 -> var0.minRange)
.addValidator(Validators.greaterThanOrEqual(0))
.add()
.<Integer>append(new KeyedCodec<>("MaxRange", Codec.INTEGER), (var0, var1) -> var0.maxRange = var1, var0 -> var0.maxRange)
.addValidator(Validators.greaterThanOrEqual(1))
.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);
}
if (var0.minRange > var0.maxRange) {
throw new IllegalArgumentException(
"LookBlocksBelowCondition.MinRange ("
+ var0.minRange
+ ") needs to be greater than LookBlocksBelowCondition.MaxRange ("
+ var0.maxRange
+ ")"
);
}
}
}
)
.build();
class="kw">protected String[] blockTags;
class="kw">protected int count = 1;
class="kw">protected int minRange = 0;
class="kw">protected int maxRange = 10;
class="kw">private int[] blockTagsIndexes;
class="kw">public LookBlocksBelowProvider(@Nonnull String[] var1, int var2, int var3, int var4) {
this.blockTags = var1;
this.count = var2;
this.minRange = var3;
this.maxRange = var4;
this.blockTagsIndexes = new int[var1.length];
for (int var5 = 0; var5 < var1.length; var5++) {
String var6 = var1[var5];
this.blockTagsIndexes[var5] = AssetRegistry.getOrCreateTagIndex(var6);
}
}
class="kw">protected LookBlocksBelowProvider() {
}
@Nullable
@Override
class="kw">public Vector3i runCondition(@Nonnull World var1, @Nonnull Vector3i var2) {
Vector3i var3 = new Vector3i(var2);
long var4 = ChunkUtil.indexChunkFromBlock(var3.x, var3.z);
WorldChunk var6 = var1.getChunk(var4);
if (var6 == null) {
class="kw">return null;
}
int var7 = var3.y;
int var8 = var3.x;
int var9 = var3.y;
int var10 = var3.z;
int var11 = 0;
while (var9 >= this.minRange && var7 - var9 <= this.maxRange) {
BlockType var12 = var6.getBlockType(var8, var9, var10);
if (var12 == null) {
var9--;
var11 = 0;
} else {
String var13 = var12.getId();
boolean var14 = false;
for (int var15 = 0; var15 < this.blockTagsIndexes.length; var15++) {
int var16 = this.blockTagsIndexes[var15];
if (BlockType.getAssetMap().getKeysForTag(var16).contains(var13)) {
var14 = true;
var11++;
break;
}
}
if (var11 == this.count) {
break;
}
var9--;
if (!var14) {
var11 = 0;
}
}
}
class="kw">return var11 == this.count ? new Vector3i(var8, var9, var10) : null;
}
@Override
class="kw">public boolean equals(@Nullable Object var1) {
if (this == var1) {
class="kw">return true;
}
if (var1 != null && this.getClass() == var1.getClass()) {
LookBlocksBelowProvider var2 = (LookBlocksBelowProvider)var1;
if (this.count != var2.count) {
class="kw">return false;
} else if (this.minRange != var2.minRange) {
class="kw">return false;
} else {
class="kw">return this.maxRange != var2.maxRange ? false : Arrays.equals(this.blockTags, var2.blockTags);
}
} else {
class="kw">return false;
}
}
@Override
class="kw">public int hashCode() {
int var1 = Arrays.hashCode(this.blockTags);
var1 = 31 * var1 + this.count;
var1 = 31 * var1 + this.minRange;
class="kw">return 31 * var1 + this.maxRange;
}
@Nonnull
@Override
class="kw">public String toString() {
class="kw">return "LookBlocksBelowProvider{blockTags="
+ Arrays.toString(this.blockTags)
+ ", count="
+ this.count
+ ", minRange="
+ this.minRange
+ ", maxRange="
+ this.maxRange
+ "} "
+ super.toString();
}
}