minecraft-src/net/minecraft/world/entity/RelativeMovement.java
2025-07-04 01:41:11 +03:00

50 lines
1 KiB
Java

package net.minecraft.world.entity;
import java.util.EnumSet;
import java.util.Set;
public enum RelativeMovement {
X(0),
Y(1),
Z(2),
Y_ROT(3),
X_ROT(4);
public static final Set<RelativeMovement> ALL = Set.of(values());
public static final Set<RelativeMovement> ROTATION = Set.of(X_ROT, Y_ROT);
private final int bit;
private RelativeMovement(final int bit) {
this.bit = bit;
}
private int getMask() {
return 1 << this.bit;
}
private boolean isSet(int packedMovements) {
return (packedMovements & this.getMask()) == this.getMask();
}
public static Set<RelativeMovement> unpack(int packedMovements) {
Set<RelativeMovement> set = EnumSet.noneOf(RelativeMovement.class);
for (RelativeMovement relativeMovement : values()) {
if (relativeMovement.isSet(packedMovements)) {
set.add(relativeMovement);
}
}
return set;
}
public static int pack(Set<RelativeMovement> movements) {
int i = 0;
for (RelativeMovement relativeMovement : movements) {
i |= relativeMovement.getMask();
}
return i;
}
}