GroundProjectionTransform class
Пакет: com.hypixel.hytale.server.npc.sensorinfo
Файл: com/hypixel/hytale/server/npc/sensorinfo/GroundProjectionTransform.java
implements: PositionSetTransform
Поля (10)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
int |
maxScanDown |
|
int |
var10 |
|
int |
var12 |
|
BlockType |
var13 |
|
ChunkStore |
var4 |
|
Ref |
var5 |
|
BlockChunk |
var6 |
|
int |
var7 |
|
int |
var8 |
|
int |
var9 |
Методы (3)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
for for(int var11 = var9; var11 >= var10; var11--) |
|
|
if if(var6 == null) |
|
|
if if(var12 != 0) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.sensorinfo;
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.math.util.MathUtil;
class="kw">import com.hypixel.hytale.protocol.BlockMaterial;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType;
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 javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;
class="kw">public class GroundProjectionTransform class="kw">implements PositionSetTransform {
class="kw">private class="kw">final int maxScanDown;
class="kw">public GroundProjectionTransform(int var1) {
this.maxScanDown = var1;
}
@Override
class="kw">public boolean transform(@Nonnull Vector3d var1, @Nonnull Vector3d var2, @Nonnull Store<EntityStore> var3) {
ChunkStore var4 = var3.getExternalData().getWorld().getChunkStore();
Ref var5 = var4.getChunkReference(ChunkUtil.indexChunkFromBlock(var1.x, var1.z));
if (var5 != null && var5.isValid()) {
BlockChunk var6 = var4.getStore().getComponent(var5, BlockChunk.getComponentType());
if (var6 == null) {
class="kw">return false;
}
int var7 = MathUtil.floor(var1.x);
int var8 = MathUtil.floor(var1.z);
int var9 = MathUtil.floor(var1.y);
int var10 = Math.max(0, var9 - this.maxScanDown);
for (int var11 = var9; var11 >= var10; var11--) {
int var12 = var6.getBlock(var7, var11, var8);
if (var12 != 0) {
BlockType var13 = BlockType.getAssetMap().getAsset(var12);
if (var13 != null && var13.getMaterial() == BlockMaterial.Solid) {
var2.set(var1.x, var11 + 1, var1.z);
class="kw">return true;
}
}
}
class="kw">return false;
} else {
class="kw">return false;
}
}
}