Files
OpenAAC5/src/main/java/me/konsolas/aac/movement/PlayerPose.java
T
2026-11-01 21:25:46 -05:00

50 lines
2.1 KiB
Java

package me.konsolas.aac.movement;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.function.Function;
import me.konsolas.aac.protocol.ProtocolVersion;
import me.konsolas.aac.util.math.AxisAlignedBoundingBox;
import org.bukkit.util.Vector;
public enum PlayerPose {
STANDING(result -> PlayerDimensions.STANDING, result -> 1.62F), SNEAKING(result -> {
ProtocolVersion version = ProtocolVersion.V1_14;
if (result.isAtLeast(version)) {
return PlayerDimensions.SNEAKING;
} else {
ProtocolVersion version2 = ProtocolVersion.V1_9;
return result.isAtLeast(version2) ? PlayerDimensions.SNEAKING_LEGACY : PlayerDimensions.STANDING;
}
}, result -> {
ProtocolVersion version = ProtocolVersion.V1_14;
return result.isAtLeast(version) ? 1.27F : 1.54F;
}), FALL_FLYING(result -> PlayerDimensions.SWIMMING, result -> 0.4F), SWIMMING(result -> PlayerDimensions.SWIMMING, result -> 0.4F);
public static List<PlayerPose> POSES = Collections.unmodifiableList(Arrays.asList(values()));
private final Function<ProtocolVersion, EntityDimensions> dimensionsFunction;
private final Function<ProtocolVersion, Float> eyeHeightFunction;
private PlayerPose(Function<ProtocolVersion, EntityDimensions> dimensionsFunction, Function<ProtocolVersion, Float> eyeHeightFunction) {
this.dimensionsFunction = dimensionsFunction;
this.eyeHeightFunction = eyeHeightFunction;
}
public EntityDimensions findEntityDimensions(ProtocolVersion version) {
return (EntityDimensions) this.dimensionsFunction.apply(version);
}
public float calculateValue(ProtocolVersion version) {
return (Float) this.eyeHeightFunction.apply(version);
}
public boolean checkPlayerPose(Vector vector, MovementEnvironment movementEnvironment) {
AxisAlignedBoundingBox box = new AxisAlignedBoundingBox(vector, this.findEntityDimensions(movementEnvironment.getProtocolVersion()));
return movementEnvironment.collides(box);
}
}