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;
      }
   }
}