PositionProbeWater class

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

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

extends: PositionProbeBase

Поля (6)

МодификаторыТипИмя
boolean var4
boolean var5
boolean var6
boolean var7
double var9
private double ySwim

Методы (3)

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

Исходный код

Показать/скрыть
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.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 PositionProbeWater class="kw">extends PositionProbeBase {
   class="kw">private double ySwim;

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

   class="kw">public boolean probePosition(
      @Nonnull Ref<EntityStore> var1,
      @Nonnull Box var2,
      @Nonnull Vector3d var3,
      @Nonnull CollisionResult var4,
      double var5,
      @Nonnull ComponentAccessor<EntityStore> var7
   ) {
      this.ySwim = var3.y + var5 + 1.0E-6;
      class="kw">return super.probePosition(var1, var2, var3, var4, this, PositionProbeWater::blockTest, 6, var7);
   }

   class="kw">private boolean blockTest(int var1, @Nonnull BoxBlockIntersectionEvaluator var2, @Nonnull CollisionConfig var3) {
      boolean var4 = (var3.blockMaterialMask & 4) != 0;
      boolean var5 = (var3.blockMaterialMask & 2) != 0;
      boolean var6 = (var3.blockMaterialMask & 8) != 0;
      if (var4 && CollisionMath.isTouching(var1)) {
         boolean var7 = var2.isOnGround();
         this.onGround |= var7;
         this.touchCeil = this.touchCeil | var2.touchesCeil();
         if (var7 && var3.blockY > this.groundLevel) {
            this.groundLevel = var3.blockY;
         }
      }

      if ((!var5 || !CollisionMath.isOverlapping(var1)) && !var6) {
         class="kw">return var4;
      }

      double var9 = var3.blockY + 1;
      this.inWater = this.inWater | var9 >= this.ySwim;
      class="kw">return false;
   }

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

   @Nonnull
   @Override
   class="kw">public String toString() {
      class="kw">return "PositionProbeWater{ySwim=" + this.ySwim + "} " + super.toString();
   }
}