PositionProbeAir class

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

Файл: com/hypixel/hytale/server/npc/util/PositionProbeAir.java

extends: PositionProbeBase

Поля (2)

МодификаторыТипИмя
protected boolean inAir
boolean var4

Методы (6)

МодификаторыВозвратСигнатура
private boolean blockTestboolean blockTest(int var1, @Nonnull BoxBlockIntersectionEvaluator var2, @Nonnull CollisionConfig var3)
if if(var3.blockMaterial == BlockMaterial.Solid)
if if(var4 && var3.blockY > this.groundLevel)
public boolean isInAirboolean isInAir()
public boolean isOnSolidboolean isOnSolid()
public boolean probePositionboolean probePosition(@Nonnull Ref<EntityStore> var1, @Nonnull Box var2, @Nonnull Vector3d var3, @Nonnull CollisionResult var4, @Nonnull ComponentAccessor<EntityStore> var5)

Исходный код

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

class="kw">import com.hypixel.hytale.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.math.shape.Box;
class="kw">import com.hypixel.hytale.protocol.BlockMaterial;
class="kw">import com.hypixel.hytale.server.core.modules.collision.BoxBlockIntersectionEvaluator;
class="kw">import com.hypixel.hytale.server.core.modules.collision.CollisionConfig;
class="kw">import com.hypixel.hytale.server.core.modules.collision.CollisionMath;
class="kw">import com.hypixel.hytale.server.core.modules.collision.CollisionResult;
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 PositionProbeAir class="kw">extends PositionProbeBase {
   class="kw">protected boolean inAir;
   class="kw">protected boolean onSolid;
   class="kw">protected boolean collideWithFluid;

   class="kw">public PositionProbeAir() {
   }

   class="kw">public boolean probePosition(
      @Nonnull Ref<EntityStore> var1, @Nonnull Box var2, @Nonnull Vector3d var3, @Nonnull CollisionResult var4, @Nonnull ComponentAccessor<EntityStore> var5
   ) {
      this.collideWithFluid = (var4.getConfig().getCollisionByMaterial() & 2) != 0;
      this.inAir = super.probePosition(var1, var2, var3, var4, this, PositionProbeAir::blockTest, 6, var5);
      class="kw">return this.inAir;
   }

   class="kw">private boolean blockTest(int var1, @Nonnull BoxBlockIntersectionEvaluator var2, @Nonnull CollisionConfig var3) {
      if (CollisionMath.isTouching(var1)) {
         if (var3.blockMaterial == BlockMaterial.Solid) {
            boolean var4 = var2.isOnGround();
            this.onGround |= var4;
            this.touchCeil = this.touchCeil | var2.touchesCeil();
            this.onSolid |= var4;
            if (var4 && var3.blockY > this.groundLevel) {
               this.groundLevel = var3.blockY;
            }
         }

         class="kw">return false;
      } else if (CollisionMath.isOverlapping(var1) && (var3.blockMaterialMask & 2) != 0) {
         this.inWater = true;
         class="kw">return this.collideWithFluid;
      } else {
         class="kw">return true;
      }
   }

   class="kw">public boolean isInAir() {
      class="kw">return this.inAir;
   }

   class="kw">public boolean isOnSolid() {
      class="kw">return this.onSolid;
   }

   @Override
   class="kw">protected void reset() {
      super.reset();
      this.inAir = false;
      this.onSolid = false;
   }

   @Nonnull
   @Override
   class="kw">public String toString() {
      class="kw">return "PositionProbeAir{inAir=" + this.inAir + ", onSolid=" + this.onSolid + "} " + super.toString();
   }
}