SensorBlockType class

Пакет: com.hypixel.hytale.server.npc.corecomponents.world

Файл: com/hypixel/hytale/server/npc/corecomponents/world/SensorBlockType.java

extends: SensorBase

implements: IAnnotatedComponentCollection

Поля (12)

МодификаторыТипИмя
final Sensor sensor
int var10
ChunkStore var11
long var12
Ref var14
Store var15
BlockChunk var16
int var17
InfoProvider var6
IPositionProvider var7
int var8
int var9

Методы (4)

МодификаторыВозвратСигнатура
abstract throw new IndexOutOfBoundsExceptionthrow new IndexOutOfBoundsException()
if if(var6 == null)
if if(var16 == null)
abstract super super(var1)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.corecomponents.world;

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.math.util.MathUtil;
class="kw">import com.hypixel.hytale.server.core.modules.blockset.BlockSetModule;
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 com.hypixel.hytale.server.npc.asset.builder.BuilderSupport;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.SensorBase;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.world.builders.BuilderSensorBlockType;
class="kw">import com.hypixel.hytale.server.npc.entities.NPCEntity;
class="kw">import com.hypixel.hytale.server.npc.instructions.ExecutionSupport;
class="kw">import com.hypixel.hytale.server.npc.instructions.Sensor;
class="kw">import com.hypixel.hytale.server.npc.movement.controllers.MotionController;
class="kw">import com.hypixel.hytale.server.npc.sensorinfo.IPositionProvider;
class="kw">import com.hypixel.hytale.server.npc.sensorinfo.InfoProvider;
class="kw">import com.hypixel.hytale.server.npc.util.IAnnotatedComponent;
class="kw">import com.hypixel.hytale.server.npc.util.IAnnotatedComponentCollection;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class SensorBlockType class="kw">extends SensorBase class="kw">implements IAnnotatedComponentCollection {
   class="kw">protected class="kw">final Sensor sensor;
   class="kw">protected class="kw">final int blockSet;

   class="kw">public SensorBlockType(@Nonnull BuilderSensorBlockType var1, @Nonnull BuilderSupport var2, Sensor var3) {
      super(var1);
      this.sensor = var3;
      this.blockSet = var1.getBlockSet(var2);
   }

   @Override
   class="kw">public boolean matches(@Nonnull Ref<EntityStore> var1, @Nonnull ExecutionSupport var2, double var3, @Nonnull Store<EntityStore> var5) {
      if (super.matches(var1, var2, var3, var5) && this.sensor.matches(var1, var2, var3, var5)) {
         InfoProvider var6 = this.sensor.getSensorInfo();
         if (var6 == null) {
            class="kw">return false;
         }

         IPositionProvider var7 = var6.getPositionProvider();
         int var8 = MathUtil.floor(var7.getX());
         int var9 = MathUtil.floor(var7.getY());
         int var10 = MathUtil.floor(var7.getZ());
         ChunkStore var11 = var5.getExternalData().getWorld().getChunkStore();
         long var12 = ChunkUtil.indexChunkFromBlock(var8, var10);
         Ref var14 = var11.getChunkReference(var12);
         if (var14 != null && var14.isValid()) {
            Store var15 = var11.getStore();
            BlockChunk var16 = var15.getComponent(var14, BlockChunk.getComponentType());
            if (var16 == null) {
               var7.clear();
               class="kw">return false;
            } else {
               int var17 = var16.getBlock(var8, var9, var10);
               if (!BlockSetModule.getInstance().blockInSet(this.blockSet, var17)) {
                  var7.clear();
                  class="kw">return false;
               } else {
                  class="kw">return true;
               }
            }
         } else {
            var7.clear();
            class="kw">return false;
         }
      } else {
         class="kw">return false;
      }
   }

   @Override
   class="kw">public InfoProvider getSensorInfo() {
      class="kw">return this.sensor.getSensorInfo();
   }

   @Override
   class="kw">public void registerWithSupport(ExecutionSupport var1) {
      this.sensor.registerWithSupport(var1);
   }

   @Override
   class="kw">public void motionControllerChanged(
      @Nullable Ref<EntityStore> var1, @Nonnull NPCEntity var2, MotionController var3, @Nullable ComponentAccessor<EntityStore> var4
   ) {
      this.sensor.motionControllerChanged(var1, var2, var3, var4);
   }

   @Override
   class="kw">public void loaded(ExecutionSupport var1) {
      this.sensor.loaded(var1);
   }

   @Override
   class="kw">public void spawned(ExecutionSupport var1) {
      this.sensor.spawned(var1);
   }

   @Override
   class="kw">public void unloaded(ExecutionSupport var1) {
      this.sensor.unloaded(var1);
   }

   @Override
   class="kw">public void removed(ExecutionSupport var1) {
      this.sensor.removed(var1);
   }

   @Override
   class="kw">public void teleported(ExecutionSupport var1, World var2, World var3) {
      this.sensor.teleported(var1, var2, var3);
   }

   @Override
   class="kw">public void done() {
      this.sensor.done();
   }

   @Override
   class="kw">public int componentCount() {
      class="kw">return 1;
   }

   @Override
   class="kw">public IAnnotatedComponent getComponent(int var1) {
      if (var1 >= this.componentCount()) {
         throw new IndexOutOfBoundsException();
      } else {
         class="kw">return this.sensor;
      }
   }

   @Override
   class="kw">public void setContext(IAnnotatedComponent var1, int var2) {
      super.setContext(var1, var2);
      this.sensor.setContext(this, var2);
   }
}