minecraft-src/net/minecraft/core/AxisCycle.java
2025-07-04 01:41:11 +03:00

82 lines
1.8 KiB
Java

package net.minecraft.core;
public enum AxisCycle {
NONE {
@Override
public int cycle(int x, int y, int z, Direction.Axis axis) {
return axis.choose(x, y, z);
}
@Override
public double cycle(double x, double y, double z, Direction.Axis axis) {
return axis.choose(x, y, z);
}
@Override
public Direction.Axis cycle(Direction.Axis axis) {
return axis;
}
@Override
public AxisCycle inverse() {
return this;
}
},
FORWARD {
@Override
public int cycle(int x, int y, int z, Direction.Axis axis) {
return axis.choose(z, x, y);
}
@Override
public double cycle(double x, double y, double z, Direction.Axis axis) {
return axis.choose(z, x, y);
}
@Override
public Direction.Axis cycle(Direction.Axis axis) {
return AXIS_VALUES[Math.floorMod(axis.ordinal() + 1, 3)];
}
@Override
public AxisCycle inverse() {
return BACKWARD;
}
},
BACKWARD {
@Override
public int cycle(int x, int y, int z, Direction.Axis axis) {
return axis.choose(y, z, x);
}
@Override
public double cycle(double x, double y, double z, Direction.Axis axis) {
return axis.choose(y, z, x);
}
@Override
public Direction.Axis cycle(Direction.Axis axis) {
return AXIS_VALUES[Math.floorMod(axis.ordinal() - 1, 3)];
}
@Override
public AxisCycle inverse() {
return FORWARD;
}
};
public static final Direction.Axis[] AXIS_VALUES = Direction.Axis.values();
public static final AxisCycle[] VALUES = values();
public abstract int cycle(int x, int y, int z, Direction.Axis axis);
public abstract double cycle(double x, double y, double z, Direction.Axis axis);
public abstract Direction.Axis cycle(Direction.Axis axis);
public abstract AxisCycle inverse();
public static AxisCycle between(Direction.Axis to, Direction.Axis axis2) {
return VALUES[Math.floorMod(axis2.ordinal() - to.ordinal(), 3)];
}
}