CaptureKnockbackInput class
Пакет: com.hypixel.hytale.server.core.modules.entity.player
Файл: com/hypixel/hytale/server/core/modules/entity/player/KnockbackPredictionSystems.java
extends: EntityTickingSystem<EntityStore>
Поля (16)
| Модификаторы | Тип | Имя |
|---|---|---|
|
private static final Set<Dependency<EntityStore>> |
DEPENDENCIES |
|
private static final Query<EntityStore> |
QUERY |
|
|
break |
|
|
break |
|
|
break |
|
|
break |
|
Vector3d |
var10 |
|
Vector3d |
var11 |
|
boolean |
var12 |
|
|
var12 |
|
int |
var13 |
|
MovementStates |
var20 |
|
KnockbackSimulation |
var6 |
|
PlayerInput |
var7 |
|
List |
var8 |
|
Vector3d |
var9 |
Методы (5)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
public Set<Dependency<EntityStore>> |
getDependenciespublic Set<Dependency<EntityStore>> getDependencies() |
|
public Query<EntityStore> |
getQuerypublic Query<EntityStore> getQuery() |
|
|
if if(var20.jumping) |
|
|
if if(!var12) |
|
public void |
tickpublic void tick(float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.modules.entity.player;
class="kw">import com.hypixel.hytale.component.AddReason;
class="kw">import com.hypixel.hytale.component.ArchetypeChunk;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.ComponentType;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.RemoveReason;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.component.dependency.Dependency;
class="kw">import com.hypixel.hytale.component.dependency.Order;
class="kw">import com.hypixel.hytale.component.dependency.SystemDependency;
class="kw">import com.hypixel.hytale.component.query.Query;
class="kw">import com.hypixel.hytale.component.spatial.SpatialResource;
class="kw">import com.hypixel.hytale.component.system.RefChangeSystem;
class="kw">import com.hypixel.hytale.component.system.RefSystem;
class="kw">import com.hypixel.hytale.component.system.tick.EntityTickingSystem;
class="kw">import com.hypixel.hytale.math.shape.Box;
class="kw">import com.hypixel.hytale.math.util.MathUtil;
class="kw">import com.hypixel.hytale.protocol.Color;
class="kw">import com.hypixel.hytale.protocol.MovementSettings;
class="kw">import com.hypixel.hytale.protocol.MovementStates;
class="kw">import com.hypixel.hytale.protocol.packets.entities.ApplyKnockback;
class="kw">import com.hypixel.hytale.server.core.entity.entities.Player;
class="kw">import com.hypixel.hytale.server.core.entity.entities.player.movement.MovementManager;
class="kw">import com.hypixel.hytale.server.core.entity.movement.MovementStatesComponent;
class="kw">import com.hypixel.hytale.server.core.modules.collision.CollisionModule;
class="kw">import com.hypixel.hytale.server.core.modules.collision.CollisionResult;
class="kw">import com.hypixel.hytale.server.core.modules.entity.EntityModule;
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.modules.entity.damage.DeathComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.teleport.Teleport;
class="kw">import com.hypixel.hytale.server.core.modules.physics.util.PhysicsMath;
class="kw">import com.hypixel.hytale.server.core.universe.PlayerRef;
class="kw">import com.hypixel.hytale.server.core.universe.world.ParticleUtil;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import com.hypixel.hytale.server.core.util.PositionUtil;
class="kw">import java.util.List;
class="kw">import java.util.Set;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;
class="kw">public class KnockbackPredictionSystems {
class="kw">public class="kw">static boolean DEBUG_KNOCKBACK_POSITION = false;
class="kw">public class="kw">static class="kw">final float DEFAULT_BLOCK_DRAG = 0.82F;
class="kw">public class="kw">static class="kw">final float AIR_DENSITY = 0.001225F;
class="kw">public class="kw">static class="kw">final float COLLISION_PADDING = 1.0E-4F;
class="kw">public class="kw">static class="kw">final float MAX_CYCLE_MOVEMENT = 0.25F;
class="kw">public class="kw">static class="kw">final float TIME_STEP = 0.016666668F;
class="kw">public class="kw">static class="kw">final int MAX_JUMP_COMBOS = 3;
class="kw">public KnockbackPredictionSystems() {
}
class="kw">public class="kw">static class CaptureKnockbackInput class="kw">extends EntityTickingSystem<EntityStore> {
class="kw">private class="kw">static class="kw">final Query<EntityStore> QUERY = Query.and(PlayerInput.getComponentType(), KnockbackSimulation.getComponentType());
class="kw">private class="kw">static class="kw">final Set<Dependency<EntityStore>> DEPENDENCIES = Set.of(new SystemDependency<>(Order.BEFORE, PlayerSystems.ProcessPlayerInput.class));
class="kw">public CaptureKnockbackInput() {
}
@Nonnull
@Override
class="kw">public Query<EntityStore> getQuery() {
class="kw">return QUERY;
}
@Nonnull
@Override
class="kw">public Set<Dependency<EntityStore>> getDependencies() {
class="kw">return DEPENDENCIES;
}
@Override
class="kw">public void tick(
float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5
) {
KnockbackSimulation var6 = var3.getComponent(var2, KnockbackSimulation.getComponentType());
assert var6 != null;
PlayerInput var7 = var3.getComponent(var2, PlayerInput.getComponentType());
assert var7 != null;
List var8 = var7.getMovementUpdateQueue();
Vector3d var9 = var6.getClientPosition();
Vector3d var10 = var6.getClientLastPosition();
Vector3d var11 = var6.getRelativeMovement();
var10.set(var9);
boolean var12 = false;
if (!var8.isEmpty()) {
int var13 = 0;
while (var13 < var8.size()) {
class="kw">switch ((PlayerInput.InputUpdate)var8.get(var13)) {
case PlayerInput.AbsoluteMovement var16:
var9.set(var16.getX(), var16.getY(), var16.getZ());
var8.remove(var13);
break;
case PlayerInput.RelativeMovement var17:
var9.add(var17.getX(), var17.getY(), var17.getZ());
var8.remove(var13);
break;
case PlayerInput.WishMovement var18:
var12 = true;
var11.set(var18.getX(), var18.getY(), var18.getZ());
var8.remove(var13);
break;
case PlayerInput.SetMovementStates var19:
MovementStates var20 = var19.movementStates();
if (var20.jumping) {
var6.setWasJumping(true);
}
var6.setClientMovementStates(var20);
var8.remove(var13);
break;
case null:
class="kw">default:
var13++;
}
}
if (!var12) {
var11.set(var9).sub(var10);
if (var6.hadWishMovement()) {
var6.setClientFinished(true);
}
} else {
var6.setHadWishMovement(true);
}
}
}
}
class="kw">public class="kw">static class ClearOnRemove class="kw">extends RefSystem<EntityStore> {
class="kw">private class="kw">static class="kw">final ComponentType<EntityStore, KnockbackSimulation> KNOCKBACK_SIMULATION_COMPONENT_TYPE = KnockbackSimulation.getComponentType();
class="kw">public ClearOnRemove() {
}
@Override
class="kw">public Query<EntityStore> getQuery() {
class="kw">return KNOCKBACK_SIMULATION_COMPONENT_TYPE;
}
@Override
class="kw">public void onEntityAdded(
@Nonnull Ref<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
) {
}
@Override
class="kw">public void onEntityRemove(
@Nonnull Ref<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
) {
var3.removeComponent(var1, KNOCKBACK_SIMULATION_COMPONENT_TYPE);
}
}
class="kw">public class="kw">static class ClearOnTeleport class="kw">extends RefChangeSystem<EntityStore, Teleport> {
class="kw">private class="kw">static class="kw">final ComponentType<EntityStore, Teleport> TELEPORT_COMPONENT_TYPE = Teleport.getComponentType();
class="kw">private class="kw">static class="kw">final ComponentType<EntityStore, KnockbackSimulation> KNOCKBACK_SIMULATION_COMPONENT_TYPE = KnockbackSimulation.getComponentType();
class="kw">public ClearOnTeleport() {
}
@Override
class="kw">public Query<EntityStore> getQuery() {
class="kw">return KNOCKBACK_SIMULATION_COMPONENT_TYPE;
}
@Nonnull
@Override
class="kw">public ComponentType<EntityStore, Teleport> componentType() {
class="kw">return TELEPORT_COMPONENT_TYPE;
}
class="kw">public void onComponentAdded(
@Nonnull Ref<EntityStore> var1, @Nonnull Teleport var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
) {
var4.removeComponent(var1, KNOCKBACK_SIMULATION_COMPONENT_TYPE);
}
class="kw">public void onComponentSet(
@Nonnull Ref<EntityStore> var1, Teleport var2, @Nonnull Teleport var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5
) {
}
class="kw">public void onComponentRemoved(
@Nonnull Ref<EntityStore> var1, @Nonnull Teleport var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
) {
}
}
class="kw">private enum CollisionAxis {
X,
Y,
Z;
CollisionAxis() {
}
}
class="kw">public class="kw">static class InitKnockback class="kw">extends RefChangeSystem<EntityStore, KnockbackSimulation> {
class="kw">private class="kw">static class="kw">final Query<EntityStore> QUERY = Query.and(
Player.getComponentType(), TransformComponent.getComponentType(), KnockbackSimulation.getComponentType(), MovementStatesComponent.getComponentType()
);
class="kw">public InitKnockback() {
}
@Nonnull
@Override
class="kw">public Query<EntityStore> getQuery() {
class="kw">return QUERY;
}
@Nonnull
@Override
class="kw">public ComponentType<EntityStore, KnockbackSimulation> componentType() {
class="kw">return KnockbackSimulation.getComponentType();
}
class="kw">public void onComponentAdded(
@Nonnull Ref<EntityStore> var1, @Nonnull KnockbackSimulation var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
) {
TransformComponent var5 = var4.getComponent(var1, TransformComponent.getComponentType());
assert var5 != null;
var2.getClientPosition().set(var5.getPosition());
var2.getSimPosition().set(var5.getPosition());
MovementStatesComponent var6 = var4.getComponent(var1, MovementStatesComponent.getComponentType());
assert var6 != null;
var2.setClientMovementStates(new MovementStates(var6.getMovementStates()));
}
class="kw">public void onComponentSet(
@Nonnull Ref<EntityStore> var1,
KnockbackSimulation var2,
@Nonnull KnockbackSimulation var3,
@Nonnull Store<EntityStore> var4,
@Nonnull CommandBuffer<EntityStore> var5
) {
}
class="kw">public void onComponentRemoved(
@Nonnull Ref<EntityStore> var1, @Nonnull KnockbackSimulation var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
) {
Player var5 = var4.getComponent(var1, Player.getComponentType());
assert var5 != null;
Vector3d var6 = var2.getClientPosition();
var5.moveTo(var1, var6.x, var6.y, var6.z, var4);
MovementStatesComponent var7 = var4.getComponent(var1, MovementStatesComponent.getComponentType());
assert var7 != null;
var7.setMovementStates(var2.getClientMovementStates());
}
}
@Deprecated
class="kw">public class="kw">static class SimulateKnockback class="kw">extends EntityTickingSystem<EntityStore> {
class="kw">private class="kw">static class="kw">final ComponentType<EntityStore, BoundingBox> BOUNDING_BOX_COMPONENT_TYPE = BoundingBox.getComponentType();
class="kw">private class="kw">static class="kw">final Query<EntityStore> QUERY = Query.and(
Player.getComponentType(),
TransformComponent.getComponentType(),
KnockbackSimulation.getComponentType(),
BOUNDING_BOX_COMPONENT_TYPE,
MovementStatesComponent.getComponentType(),
MovementManager.getComponentType(),
PlayerRef.getComponentType()
);
class="kw">private class="kw">static class="kw">final Set<Dependency<EntityStore>> DEPENDENCIES = Set.of(new SystemDependency<>(Order.AFTER, PlayerSystems.ProcessPlayerInput.class));
class="kw">public SimulateKnockback() {
}
@Nonnull
@Override
class="kw">public Query<EntityStore> getQuery() {
class="kw">return QUERY;
}
@Nonnull
@Override
class="kw">public Set<Dependency<EntityStore>> getDependencies() {
class="kw">return DEPENDENCIES;
}
@Override
class="kw">public void tick(
float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5
) {
KnockbackSimulation var6 = var3.getComponent(var2, KnockbackSimulation.getComponentType());
assert var6 != null;
TransformComponent var7 = var3.getComponent(var2, TransformComponent.getComponentType());
assert var7 != null;
Player var8 = var3.getComponent(var2, Player.getComponentType());
assert var8 != null;
World var9 = var4.getExternalData().getWorld();
float var10 = var6.getRemainingTime();
var10 -= var1;
var6.setRemainingTime(var10);
if (!(var10 < 0.0F) && !var3.getArchetype().contains(DeathComponent.getComponentType())) {
if (KnockbackPredictionSystems.DEBUG_KNOCKBACK_POSITION) {
Vector3d var11 = var6.getClientPosition();
SpatialResource var12 = var4.getResource(EntityModule.get().getPlayerSpatialResourceType());
List var13 = SpatialResource.getThreadLocalReferenceList();
var12.getSpatialStructure().collect(var11, 75.0, var13);
Color var14 = var6.hadWishMovement() ? new Color((byte)-1, (byte)0, (byte)0) : new Color((byte)0, (byte)0, (byte)-1);
ParticleUtil.spawnParticleEffect("Example_Simple", var11, 0.0F, 0.0F, 0.0F, 1.0F, var14, var13, var5);
}
var6.setTickBuffer(var6.getTickBuffer() + var1);
MovementStates var29 = var6.getClientMovementStates();
while (var6.getTickBuffer() >= 0.016666668F) {
var6.setTickBuffer(var6.getTickBuffer() - 0.016666668F);
Vector3d var30 = var6.getRelativeMovement();
Vector3d var31 = var6.getRequestedVelocity();
Vector3d var32 = var6.getSimPosition();
Vector3d var15 = var6.getSimVelocity();
MovementStatesComponent var16 = var3.getComponent(var2, MovementStatesComponent.getComponentType());
assert var16 != null;
MovementStates var17 = var16.getMovementStates();
MovementManager var18 = var3.getComponent(var2, MovementManager.getComponentType());
assert var18 != null;
MovementSettings var19 = var18.getSettings();
BoundingBox var20 = var3.getComponent(var2, BOUNDING_BOX_COMPONENT_TYPE);
assert var20 != null;
Box var21 = var20.getBoundingBox();
if (var29.flying) {
var6.setRemainingTime(0.0F);
class="kw">return;
}
if (var29.climbing && !var29.onGround) {
var6.setRemainingTime(0.0F);
class="kw">return;
}
if (var29.swimming) {
var6.setRemainingTime(0.0F);
class="kw">return;
}
int var22 = var19.invertedGravity ? 1 : -1;
double var23 = var22 * PhysicsMath.getTerminalVelocity(var19.mass, 0.001225F, Math.abs(var21.width() * var21.depth()), var19.dragCoefficient);
double var25 = PhysicsMath.getAcceleration(var15.y, var23) * 0.016666668F;
if (var15.y < var23 && var25 > 0.0) {
var15.y = Math.min(var15.y + var25, var23);
} else if (var15.y > var23 && var25 < 0.0) {
var15.y = Math.max(var15.y + var25, var23);
}
if (var17.onGround) {
var17.falling = false;
if (var6.wasOnGround() && var6.consumeWasJumping()) {
var15.y = var19.jumpForce;
var17.onGround = false;
var6.setJumpCombo(Math.min(var6.getJumpCombo() + 1, 3));
}
} else {
Vector3d var27 = new Vector3d(var32);
var27.y += 0.1F;
var17.falling = var15.y < 0.0 && CollisionModule.get().validatePosition(var9, var21, var27, new CollisionResult()) != 0;
if (var17.falling) {
var17.jumping = false;
var17.swimJumping = false;
}
}
if (var6.getJumpCombo() != 0 && (var17.onGround && var6.wasOnGround() || var15.x == 0.0 || var15.z == 0.0)) {
var6.setJumpCombo(0);
}
float var33 = this.computeMoveForce(var6, var17, var19);
if (!var17.flying && var6.getRequestedVelocityChangeType() != null) {
class="kw">switch (var6.getRequestedVelocityChangeType()) {
case Add:
var15.add(var31.x * 0.18F * var19.velocityResistance, var31.y, var31.z * 0.18F * var19.velocityResistance);
break;
case Set:
var15.set(var31);
}
PlayerRef var34 = var3.getComponent(var2, PlayerRef.getComponentType());
assert var34 != null;
var34.getPacketHandler()
.write(
new ApplyKnockback(
PositionUtil.toPositionPacket(var7.getPosition()),
(float)var31.x,
(float)var31.y,
(float)var31.z,
var6.getRequestedVelocityChangeType()
)
);
}
var31.zero();
var6.setRequestedVelocityChangeType(null);
Vector3d var35 = var6.getMovementOffset();
var35.zero();
if (var6.hadWishMovement()) {
float var24 = this.convertWishMovement(var6, var17, var19);
var15.fma(var24, var30);
} else {
var35.fma(var33, var30);
var30.zero();
}
var35.fma(0.016666668F, var15);
this.applyMovementOffset(var9, var21, var6, var17, var35);
Ref var36 = var3.getReferenceTo(var2);
if (var10 < 0.2F) {
Vector3d var37 = var6.getClientPosition().lerp(var32, var10 / 0.2F, new Vector3d());
var8.moveTo(var36, var37.x, var37.y, var37.z, var5);
} else {
var8.moveTo(var36, var32.x, var32.y, var32.z, var5);
}
}
} else {
var5.removeComponent(var3.getReferenceTo(var2), KnockbackSimulation.getComponentType());
}
}
class="kw">private float convertWishMovement(@Nonnull KnockbackSimulation var1, @Nonnull MovementStates var2, @Nonnull MovementSettings var3) {
MovementStates var4 = var1.getClientMovementStates();
if (var4 == null) {
var4 = var2;
}
Vector3d var5 = var1.getSimVelocity();
float var6 = (float)Math.sqrt(var5.x * var5.x + var5.z * var5.z);
float var7 = 0.0F;
float var8 = 1.0F;
if (!var2.flying && !var2.climbing) {
var7 = !var2.onGround && !var2.swimming
? convertToNewRange(var6, var3.airDragMinSpeed, var3.airDragMaxSpeed, var3.airDragMin, var3.airDragMax)
: 0.82F;
var8 = !var2.onGround && !var2.swimming
? convertToNewRange(var6, var3.airFrictionMinSpeed, var3.airFrictionMaxSpeed, var3.airFrictionMax, var3.airFrictionMin)
: 1.0F - var7;
}
float var9 = 0.0F;
float var10 = 1.0F;
if (!var4.flying && !var4.climbing) {
var9 = !var4.onGround && !var4.swimming
? convertToNewRange(var6, var3.airDragMinSpeed, var3.airDragMaxSpeed, var3.airDragMin, var3.airDragMax)
: 0.82F;
var10 = !var4.onGround && !var4.swimming
? convertToNewRange(var6, var3.airFrictionMinSpeed, var3.airFrictionMaxSpeed, var3.airFrictionMax, var3.airFrictionMin)
: 1.0F - var9;
}
class="kw">return var8 / var10;
}
class="kw">private float computeMoveForce(@Nonnull KnockbackSimulation var1, @Nonnull MovementStates var2, @Nonnull MovementSettings var3) {
float var4 = 0.0F;
float var5 = 1.0F;
Vector3d var6 = var1.getSimVelocity();
float var7 = (float)Math.sqrt(var6.x * var6.x + var6.z * var6.z);
if (!var2.flying && !var2.climbing) {
var4 = !var2.onGround && !var2.swimming
? convertToNewRange(var7, var3.airDragMinSpeed, var3.airDragMaxSpeed, var3.airDragMin, var3.airDragMax)
: 0.82F;
var5 = !var2.onGround && !var2.swimming
? convertToNewRange(var7, var3.airFrictionMinSpeed, var3.airFrictionMaxSpeed, var3.airFrictionMax, var3.airFrictionMin) / (1.0F - var4)
: 1.0F;
}
var6.x *= var4;
var6.z *= var4;
class="kw">return var5;
}
class="kw">private class="kw">static float convertToNewRange(float var0, float var1, float var2, float var3, float var4) {
if (var3 != var4 && var1 != var2) {
float var5 = (var0 - var1) * (var4 - var3) / (var2 - var1) + var3;
class="kw">return MathUtil.clamp(var5, Math.min(var3, var4), Math.max(var3, var4));
} else {
class="kw">return var3;
}
}
class="kw">public void applyMovementOffset(
@Nonnull World var1, @Nonnull Box var2, @Nonnull KnockbackSimulation var3, @Nonnull MovementStates var4, @Nonnull Vector3d var5
) {
int var6 = (int)Math.ceil(var5.length() / 0.25);
Vector3d var7 = var6 == 1 ? var5 : new Vector3d(var5).mul(1.0F / var6);
var3.setWasOnGround(var4.onGround);
for (int var8 = 0; var8 < var6; var8++) {
this.doMoveCycle(var1, var2, var3, var4, var7);
}
if (var4.onGround) {
var3.getSimVelocity().y = 0.0;
}
}
class="kw">private void doMoveCycle(@Nonnull World var1, @Nonnull Box var2, @Nonnull KnockbackSimulation var3, @Nonnull MovementStates var4, @Nonnull Vector3d var5) {
Vector3d var6 = var3.getSimPosition();
Vector3d var7 = var3.getSimVelocity();
Vector3d var8 = var3.getCheckPosition();
var8.set(var6);
CollisionResult var9 = var3.getCollisionResult();
var9.reset();
var8.y = var8.y + var5.y;
boolean var10 = this.checkCollision(var3, var1, var2, var8, var5, KnockbackPredictionSystems.CollisionAxis.Y, var9);
if (var4.onGround && var5.y < 0.0) {
if (!var10) {
var4.onGround = false;
} else {
var8.y = var8.y - var5.y;
}
} else if (var10) {
if (var5.y <= 0.0) {
var4.onGround = true;
var8.y = var8.y - var5.y;
} else {
var4.onGround = false;
var8.y = var8.y - var5.y;
}
var7.y = 0.0;
} else {
var4.onGround = false;
}
if (var5.x != 0.0) {
var8.x = var8.x + var5.x;
var9.reset();
boolean var11 = this.checkCollision(var3, var1, var2, var8, var5, KnockbackPredictionSystems.CollisionAxis.Y, var9);
if (var11) {
var8.x = var8.x - var5.x;
}
}
if (var5.z != 0.0) {
var8.z = var8.z + var5.z;
var9.reset();
boolean var12 = this.checkCollision(var3, var1, var2, var8, var5, KnockbackPredictionSystems.CollisionAxis.Y, var9);
if (var12) {
var8.z = var8.z - var5.z;
}
}
var6.set(var8);
}
class="kw">private boolean checkCollision(
@Nonnull KnockbackSimulation var1,
@Nonnull World var2,
@Nonnull Box var3,
@Nonnull Vector3d var4,
Vector3d var5,
KnockbackPredictionSystems.CollisionAxis var6,
@Nonnull CollisionResult var7
) {
Vector3d var8 = var1.getTempPosition();
var8.set(var4);
var8.add(0.0, 1.0E-4F, 0.0);
class="kw">return CollisionModule.get().validatePosition(var2, var3, var8, var7) != 0;
}
}
}