minecraft-src/com/mojang/math/Quadrant.java
2025-07-04 03:45:38 +03:00

50 lines
1.2 KiB
Java

package com.mojang.math;
import com.google.gson.JsonParseException;
import com.mojang.serialization.Codec;
import com.mojang.serialization.DataResult;
import net.minecraft.util.Mth;
public enum Quadrant {
R0(0),
R90(1),
R180(2),
R270(3);
public static final Codec<Quadrant> CODEC = Codec.INT.comapFlatMap(integer -> {
return switch (Mth.positiveModulo(integer, 360)) {
case 0 -> DataResult.success(R0);
case 90 -> DataResult.success(R90);
case 180 -> DataResult.success(R180);
case 270 -> DataResult.success(R270);
default -> DataResult.error(() -> "Invalid rotation " + integer + " found, only 0/90/180/270 allowed");
};
}, quadrant -> {
return switch (quadrant) {
case R0 -> 0;
case R90 -> 90;
case R180 -> 180;
case R270 -> 270;
};
});
public final int shift;
private Quadrant(final int shift) {
this.shift = shift;
}
@Deprecated
public static Quadrant parseJson(int rotation) {
return switch (Mth.positiveModulo(rotation, 360)) {
case 0 -> R0;
case 90 -> R90;
case 180 -> R180;
case 270 -> R270;
default -> throw new JsonParseException("Invalid rotation " + rotation + " found, only 0/90/180/270 allowed");
};
}
public int rotateVertexIndex(int shift) {
return (shift + this.shift) % 4;
}
}