82 lines
1.8 KiB
Java
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)];
|
|
}
|
|
}
|