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