ActionPlaceBlock class

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

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

extends: ActionBase

Поля (12)

МодификаторыТипИмя
final ComponentType<EntityStore, BoundingBox> BOUNDING_BOX_COMPONENT_TYPE
TransformComponent var10
double var11
BoundingBox var13
int var14
int var15
int var16
String var7
World var7
BlockType var8
WorldChunk var8
World var9

Методы (4)

МодификаторыВозвратСигнатура
if if(var7 == null)
if if(var8 == null)
if if(var13 != null)
abstract super super(var1)

Исходный код

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

class="kw">import com.hypixel.hytale.component.ComponentType;
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.asset.type.blocktype.config.BlockType;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.BoundingBox;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
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 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.ActionBase;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.world.builders.BuilderActionPlaceBlock;
class="kw">import com.hypixel.hytale.server.npc.instructions.ExecutionSupport;
class="kw">import com.hypixel.hytale.server.npc.sensorinfo.CachedPositionProvider;
class="kw">import com.hypixel.hytale.server.npc.sensorinfo.InfoProvider;
class="kw">import com.hypixel.hytale.server.npc.util.BlockPlacementHelper;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;

class="kw">public class ActionPlaceBlock class="kw">extends ActionBase {
   class="kw">protected class="kw">static class="kw">final ComponentType<EntityStore, BoundingBox> BOUNDING_BOX_COMPONENT_TYPE = BoundingBox.getComponentType();
   class="kw">protected class="kw">final double range;
   class="kw">protected class="kw">final boolean allowEmptyMaterials;
   class="kw">protected class="kw">final Vector3d target = new Vector3d();

   class="kw">public ActionPlaceBlock(@Nonnull BuilderActionPlaceBlock var1, @Nonnull BuilderSupport var2) {
      super(var1);
      this.range = var1.getRange(var2);
      this.allowEmptyMaterials = var1.isAllowEmptyMaterials(var2);
   }

   @Override
   class="kw">public boolean canExecute(
      @Nonnull Ref<EntityStore> var1, @Nonnull ExecutionSupport var2, @Nullable InfoProvider var3, double var4, @Nonnull Store<EntityStore> var6
   ) {
      if (super.canExecute(var1, var2, var3, var4, var6) && var3 != null && var3.hasPosition()) {
         String var7 = var2.getWorldSupport().getBlockToPlace();
         if (var7 == null) {
            class="kw">return false;
         }

         BlockType var8 = BlockType.getAssetMap().getAsset(var7);
         if (var8 == null) {
            class="kw">return false;
         }

         var3.getPositionProvider().providePosition(this.target);
         World var9 = var6.getExternalData().getWorld();
         TransformComponent var10 = var6.getComponent(var1, TransformComponent.getComponentType());
         assert var10 != null;
         double var11 = this.range;
         BoundingBox var13 = var6.getComponent(var1, BOUNDING_BOX_COMPONENT_TYPE);
         if (var13 != null) {
            var11 += var13.getBoundingBox().getMaximumExtent();
         }

         int var14 = MathUtil.floor(this.target.x());
         int var15 = MathUtil.floor(this.target.y());
         int var16 = MathUtil.floor(this.target.z());
         if (var10.getPosition().distanceSquared(var14, var15, var16) > var11 * var11) {
            class="kw">return false;
         } else if (var3 class="kw">instanceof CachedPositionProvider && !((CachedPositionProvider)var3).isFromCache()) {
            class="kw">return true;
         } else {
            class="kw">return !BlockPlacementHelper.canPlaceUnitBlock(var9, var8, this.allowEmptyMaterials, var14, var15, var16)
               ? false
               : BlockPlacementHelper.canPlaceBlock(var9, var8, 0, this.allowEmptyMaterials, var14, var15, var16);
         }
      } else {
         class="kw">return false;
      }
   }

   @Override
   class="kw">public boolean execute(
      @Nonnull Ref<EntityStore> var1, @Nonnull ExecutionSupport var2, @Nullable InfoProvider var3, double var4, @Nonnull Store<EntityStore> var6
   ) {
      super.execute(var1, var2, var3, var4, var6);
      World var7 = var6.getExternalData().getWorld();
      WorldChunk var8 = var7.getNonTickingChunk(ChunkUtil.indexChunkFromBlock(this.target.x(), this.target.z()));
      var8.setBlock(MathUtil.floor(this.target.x()), MathUtil.floor(this.target.y()), MathUtil.floor(this.target.z()), var2.getWorldSupport().getBlockToPlace());
      class="kw">return true;
   }
}