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 ALL = Set.of(values()); public static final Set 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 unpack(int packedMovements) { Set set = EnumSet.noneOf(RelativeMovement.class); for (RelativeMovement relativeMovement : values()) { if (relativeMovement.isSet(packedMovements)) { set.add(relativeMovement); } } return set; } public static int pack(Set movements) { int i = 0; for (RelativeMovement relativeMovement : movements) { i |= relativeMovement.getMask(); } return i; } }