use expression switches

This commit is contained in:
dfsek
2021-09-26 13:16:43 -07:00
parent 3de02c5d63
commit 8f51707505
39 changed files with 366 additions and 687 deletions
@@ -43,7 +43,7 @@ public class BiomePipeline {
public static final class BiomePipelineBuilder { public static final class BiomePipelineBuilder {
private final int init; private final int init;
List<Stage> stages = new ArrayList<>(); private final List<Stage> stages = new ArrayList<>();
private int expand; private int expand;
public BiomePipelineBuilder(int init) { public BiomePipelineBuilder(int init) {
@@ -27,7 +27,7 @@ public class BiomePipelineProvider implements BiomeProvider {
holderCache = CacheBuilder.newBuilder() holderCache = CacheBuilder.newBuilder()
.maximumSize(main == null ? 32 : main.getTerraConfig().getProviderCache()) .maximumSize(main == null ? 32 : main.getTerraConfig().getProviderCache())
.build( .build(
new CacheLoader<SeededVector, BiomeHolder>() { new CacheLoader<>() {
@Override @Override
public BiomeHolder load(@NotNull SeededVector key) { public BiomeHolder load(@NotNull SeededVector key) {
return pipeline.getBiomes(key.x, key.z, key.seed); return pipeline.getBiomes(key.x, key.z, key.seed);
@@ -334,36 +334,21 @@ public class CellularSampler extends NoiseFunction {
} }
} }
switch(returnType) { return switch(returnType) {
case CellValue: case CellValue -> closestHash * (1 / 2147483648.0);
return closestHash * (1 / 2147483648.0); case Distance -> distance0 - 1;
case Distance: case Distance2 -> distance1 - 1;
return distance0 - 1; case Distance2Add -> (distance1 + distance0) * 0.5 - 1;
case Distance2: case Distance2Sub -> distance1 - distance0 - 1;
return distance1 - 1; case Distance2Mul -> distance1 * distance0 * 0.5 - 1;
case Distance2Add: case Distance2Div -> distance0 / distance1 - 1;
return (distance1 + distance0) * 0.5 - 1; case NoiseLookup -> noiseLookup.getNoiseSeeded(sl, center.getX(), center.getZ());
case Distance2Sub: case Distance3 -> distance2 - 1;
return distance1 - distance0 - 1; case Distance3Add -> (distance2 + distance0) * 0.5 - 1;
case Distance2Mul: case Distance3Sub -> distance2 - distance0 - 1;
return distance1 * distance0 * 0.5 - 1; case Distance3Mul -> distance2 * distance0 - 1;
case Distance2Div: case Distance3Div -> distance0 / distance2 - 1;
return distance0 / distance1 - 1; };
case NoiseLookup:
return noiseLookup.getNoiseSeeded(sl, center.getX(), center.getZ());
case Distance3:
return distance2 - 1;
case Distance3Add:
return (distance2 + distance0) * 0.5 - 1;
case Distance3Sub:
return distance2 - distance0 - 1;
case Distance3Mul:
return distance2 * distance0 - 1;
case Distance3Div:
return distance0 / distance2 - 1;
default:
return 0;
}
} }
@Override @Override
@@ -509,36 +494,21 @@ public class CellularSampler extends NoiseFunction {
} }
} }
switch(returnType) { return switch(returnType) {
case CellValue: case CellValue -> closestHash * (1 / 2147483648.0);
return closestHash * (1 / 2147483648.0); case Distance -> distance0 - 1;
case Distance: case Distance2 -> distance1 - 1;
return distance0 - 1; case Distance2Add -> (distance1 + distance0) * 0.5 - 1;
case Distance2: case Distance2Sub -> distance1 - distance0 - 1;
return distance1 - 1; case Distance2Mul -> distance1 * distance0 * 0.5 - 1;
case Distance2Add: case Distance2Div -> distance0 / distance1 - 1;
return (distance1 + distance0) * 0.5 - 1; case NoiseLookup -> noiseLookup.getNoiseSeeded(sl, center.getX(), center.getY(), center.getZ());
case Distance2Sub: case Distance3 -> distance2 - 1;
return distance1 - distance0 - 1; case Distance3Add -> (distance2 + distance0) * 0.5 - 1;
case Distance2Mul: case Distance3Sub -> distance2 - distance0 - 1;
return distance1 * distance0 * 0.5 - 1; case Distance3Mul -> distance2 * distance0 - 1;
case Distance2Div: case Distance3Div -> distance0 / distance2 - 1;
return distance0 / distance1 - 1; };
case NoiseLookup:
return noiseLookup.getNoiseSeeded(sl, center.getX(), center.getY(), center.getZ());
case Distance3:
return distance2 - 1;
case Distance3Add:
return (distance2 + distance0) * 0.5 - 1;
case Distance3Sub:
return distance2 - distance0 - 1;
case Distance3Mul:
return distance2 * distance0 - 1;
case Distance3Div:
return distance0 / distance2 - 1;
default:
return 0;
}
} }
public enum DistanceFunction { public enum DistanceFunction {
@@ -67,8 +67,8 @@ public class HashMapDoubleDouble extends HashIntrinsic {
} }
public boolean containsValue(double value) { public boolean containsValue(double value) {
for(int i = 0; i < this.table.length; ++i) { for(Entry entry : this.table) {
for(HashMapDoubleDouble.Entry e = this.table[i]; e != null; e = e.next) { for(Entry e = entry; e != null; e = e.next) {
if(value == e.value) { if(value == e.value) {
return true; return true;
} }
@@ -152,7 +152,7 @@ public class HashMapDoubleDouble extends HashIntrinsic {
} }
public long memoryEstimate(int ptrsize) { public long memoryEstimate(int ptrsize) {
return (long) ptrsize * (long) (this.capMinus1 + this.size + 1) + (long) (this.size * 64 / 4); return (long) ptrsize * (long) (this.capMinus1 + this.size + 1) + (this.size * 64L / 4);
} }
public HashMapDoubleDouble.Iterator iterator() { public HashMapDoubleDouble.Iterator iterator() {
@@ -45,8 +45,7 @@ public class Entry {
if(entry.containsKey("functions")) { if(entry.containsKey("functions")) {
for(Object function : (JSONArray) entry.get("functions")) { for(Object function : (JSONArray) entry.get("functions")) {
switch(((String) ((JSONObject) function).get("function"))) { switch(((String) ((JSONObject) function).get("function"))) {
case "minecraft:set_count": case "minecraft:set_count", "set_count" -> {
case "set_count":
Object loot = ((JSONObject) function).get("count"); Object loot = ((JSONObject) function).get("count");
long max, min; long max, min;
if(loot instanceof Long) { if(loot instanceof Long) {
@@ -57,15 +56,13 @@ public class Entry {
min = (long) ((JSONObject) loot).get("min"); min = (long) ((JSONObject) loot).get("min");
} }
functions.add(new AmountFunction(FastMath.toIntExact(min), FastMath.toIntExact(max))); functions.add(new AmountFunction(FastMath.toIntExact(min), FastMath.toIntExact(max)));
break; }
case "minecraft:set_damage": case "minecraft:set_damage", "set_damage" -> {
case "set_damage":
long maxDamage = (long) ((JSONObject) ((JSONObject) function).get("damage")).get("max"); long maxDamage = (long) ((JSONObject) ((JSONObject) function).get("damage")).get("max");
long minDamage = (long) ((JSONObject) ((JSONObject) function).get("damage")).get("min"); long minDamage = (long) ((JSONObject) ((JSONObject) function).get("damage")).get("min");
functions.add(new DamageFunction(FastMath.toIntExact(minDamage), FastMath.toIntExact(maxDamage))); functions.add(new DamageFunction(FastMath.toIntExact(minDamage), FastMath.toIntExact(maxDamage)));
break; }
case "minecraft:enchant_with_levels": case "minecraft:enchant_with_levels", "enchant_with_levels" -> {
case "enchant_with_levels":
long maxEnchant = (long) ((JSONObject) ((JSONObject) function).get("levels")).get("max"); long maxEnchant = (long) ((JSONObject) ((JSONObject) function).get("levels")).get("max");
long minEnchant = (long) ((JSONObject) ((JSONObject) function).get("levels")).get("min"); long minEnchant = (long) ((JSONObject) ((JSONObject) function).get("levels")).get("min");
JSONArray disabled = null; JSONArray disabled = null;
@@ -73,7 +70,7 @@ public class Entry {
disabled = (JSONArray) ((JSONObject) function).get("disabled_enchants"); disabled = (JSONArray) ((JSONObject) function).get("disabled_enchants");
functions.add( functions.add(
new EnchantFunction(FastMath.toIntExact(minEnchant), FastMath.toIntExact(maxEnchant), disabled, main)); new EnchantFunction(FastMath.toIntExact(minEnchant), FastMath.toIntExact(maxEnchant), disabled, main));
break; }
} }
} }
} }
@@ -99,16 +99,13 @@ public class Parser {
ParserUtil.checkType(tokens.consume(), Token.Type.GROUP_BEGIN); ParserUtil.checkType(tokens.consume(), Token.Type.GROUP_BEGIN);
switch(identifier.getType()) { return switch(identifier.getType()) {
case FOR_LOOP: case FOR_LOOP -> parseForLoop(tokens, variableMap, identifier.getPosition());
return parseForLoop(tokens, variableMap, identifier.getPosition()); case IF_STATEMENT -> parseIfStatement(tokens, variableMap, identifier.getPosition(), loop);
case IF_STATEMENT: case WHILE_LOOP -> parseWhileLoop(tokens, variableMap, identifier.getPosition());
return parseIfStatement(tokens, variableMap, identifier.getPosition(), loop); default -> throw new UnsupportedOperationException(
case WHILE_LOOP: "Unknown keyword " + identifier.getContent() + ": " + identifier.getPosition());
return parseWhileLoop(tokens, variableMap, identifier.getPosition()); };
default:
throw new UnsupportedOperationException("Unknown keyword " + identifier.getContent() + ": " + identifier.getPosition());
}
} }
private WhileKeyword parseWhileLoop(Tokenizer tokens, Map<String, Returnable.ReturnType> variableMap, Position start) private WhileKeyword parseWhileLoop(Tokenizer tokens, Map<String, Returnable.ReturnType> variableMap, Position start)
@@ -90,17 +90,13 @@ public class ParserUtil {
} }
public static Returnable.ReturnType getVariableReturnType(Token varToken) throws ParseException { public static Returnable.ReturnType getVariableReturnType(Token varToken) throws ParseException {
switch(varToken.getType()) { return switch(varToken.getType()) {
case NUMBER_VARIABLE: case NUMBER_VARIABLE -> Returnable.ReturnType.NUMBER;
return Returnable.ReturnType.NUMBER; case STRING_VARIABLE -> Returnable.ReturnType.STRING;
case STRING_VARIABLE: case BOOLEAN_VARIABLE -> Returnable.ReturnType.BOOLEAN;
return Returnable.ReturnType.STRING; default -> throw new ParseException("Unexpected token " + varToken.getType() + "; expected variable declaration",
case BOOLEAN_VARIABLE: varToken.getPosition());
return Returnable.ReturnType.BOOLEAN; };
default:
throw new ParseException("Unexpected token " + varToken.getType() + "; expected variable declaration",
varToken.getPosition());
}
} }
public static boolean hasPrecedence(Token.Type first, Token.Type second) { public static boolean hasPrecedence(Token.Type first, Token.Type second) {
@@ -9,7 +9,7 @@ import com.dfsek.terra.addons.terrascript.tokenizer.Position;
public interface Function<T> extends Returnable<T> { public interface Function<T> extends Returnable<T> {
Function<?> NULL = new Function<Object>() { Function<?> NULL = new Function<>() {
@Override @Override
public ReturnType returnType() { public ReturnType returnType() {
return null; return null;
@@ -33,15 +33,9 @@ public class Declaration<T> implements Item<T> {
public T apply(ImplementationArguments implementationArguments, Map<String, Variable<?>> variableMap) { public T apply(ImplementationArguments implementationArguments, Map<String, Variable<?>> variableMap) {
T result = value.apply(implementationArguments, variableMap); T result = value.apply(implementationArguments, variableMap);
switch(type) { switch(type) {
case NUMBER: case NUMBER -> variableMap.put(identifier, new NumberVariable((Number) result, position));
variableMap.put(identifier, new NumberVariable((Number) result, position)); case BOOLEAN -> variableMap.put(identifier, new BooleanVariable((Boolean) result, position));
break; case STRING -> variableMap.put(identifier, new StringVariable((String) result, position));
case BOOLEAN:
variableMap.put(identifier, new BooleanVariable((Boolean) result, position));
break;
case STRING:
variableMap.put(identifier, new StringVariable((String) result, position));
break;
} }
return result; return result;
} }
@@ -22,7 +22,7 @@ public class BinaryNumberFunctionBuilder implements FunctionBuilder<Function<Num
@Override @Override
public Function<Number> build(List<Returnable<?>> argumentList, Position position) { public Function<Number> build(List<Returnable<?>> argumentList, Position position) {
return new Function<Number>() { return new Function<>() {
@Override @Override
public ReturnType returnType() { public ReturnType returnType() {
return ReturnType.NUMBER; return ReturnType.NUMBER;
@@ -30,13 +30,9 @@ public class BiomeFunctionBuilder implements FunctionBuilder<BiomeFunction> {
@Override @Override
public Returnable.ReturnType getArgument(int position) { public Returnable.ReturnType getArgument(int position) {
switch(position) { return switch(position) {
case 0: case 0, 1, 2 -> Returnable.ReturnType.NUMBER;
case 1: default -> null;
case 2: };
return Returnable.ReturnType.NUMBER;
default:
return null;
}
} }
} }
@@ -42,17 +42,11 @@ public class BlockFunctionBuilder implements FunctionBuilder<BlockFunction> {
@Override @Override
public Returnable.ReturnType getArgument(int position) { public Returnable.ReturnType getArgument(int position) {
switch(position) { return switch(position) {
case 0: case 0, 1, 2 -> Returnable.ReturnType.NUMBER;
case 1: case 3 -> Returnable.ReturnType.STRING;
case 2: case 4 -> Returnable.ReturnType.BOOLEAN;
return Returnable.ReturnType.NUMBER; default -> null;
case 3: };
return Returnable.ReturnType.STRING;
case 4:
return Returnable.ReturnType.BOOLEAN;
default:
return null;
}
} }
} }
@@ -23,13 +23,9 @@ public class CheckBlockFunctionBuilder implements FunctionBuilder<CheckBlockFunc
@Override @Override
public Returnable.ReturnType getArgument(int position) { public Returnable.ReturnType getArgument(int position) {
switch(position) { return switch(position) {
case 0: case 0, 1, 2 -> Returnable.ReturnType.NUMBER;
case 1: default -> null;
case 2: };
return Returnable.ReturnType.NUMBER;
default:
return null;
}
} }
} }
@@ -31,13 +31,9 @@ public class CheckFunctionBuilder implements FunctionBuilder<CheckFunction> {
@Override @Override
public Returnable.ReturnType getArgument(int position) { public Returnable.ReturnType getArgument(int position) {
switch(position) { return switch(position) {
case 0: case 0, 1, 2 -> Returnable.ReturnType.NUMBER;
case 1: default -> null;
case 2: };
return Returnable.ReturnType.NUMBER;
default:
return null;
}
} }
} }
@@ -31,15 +31,10 @@ public class EntityFunctionBuilder implements FunctionBuilder<EntityFunction> {
@Override @Override
public Returnable.ReturnType getArgument(int position) { public Returnable.ReturnType getArgument(int position) {
switch(position) { return switch(position) {
case 0: case 0, 1, 2 -> Returnable.ReturnType.NUMBER;
case 1: case 3 -> Returnable.ReturnType.STRING;
case 2: default -> null;
return Returnable.ReturnType.NUMBER; };
case 3:
return Returnable.ReturnType.STRING;
default:
return null;
}
} }
} }
@@ -27,13 +27,9 @@ public class GetMarkFunctionBuilder implements FunctionBuilder<GetMarkFunction>
@Override @Override
public Returnable.ReturnType getArgument(int position) { public Returnable.ReturnType getArgument(int position) {
switch(position) { return switch(position) {
case 0: case 0, 1, 2 -> Returnable.ReturnType.NUMBER;
case 1: default -> null;
case 2: };
return Returnable.ReturnType.NUMBER;
default:
return null;
}
} }
} }
@@ -37,15 +37,10 @@ public class LootFunctionBuilder implements FunctionBuilder<LootFunction> {
@Override @Override
public Returnable.ReturnType getArgument(int position) { public Returnable.ReturnType getArgument(int position) {
switch(position) { return switch(position) {
case 0: case 0, 1, 2 -> Returnable.ReturnType.NUMBER;
case 1: case 3 -> Returnable.ReturnType.STRING;
case 2: default -> null;
return Returnable.ReturnType.NUMBER; };
case 3:
return Returnable.ReturnType.STRING;
default:
return null;
}
} }
} }
@@ -31,15 +31,10 @@ public class PullFunctionBuilder implements FunctionBuilder<PullFunction> {
@Override @Override
public Returnable.ReturnType getArgument(int position) { public Returnable.ReturnType getArgument(int position) {
switch(position) { return switch(position) {
case 0: case 0, 1, 2 -> Returnable.ReturnType.NUMBER;
case 1: case 3 -> Returnable.ReturnType.STRING;
case 2: default -> null;
return Returnable.ReturnType.NUMBER; };
case 3:
return Returnable.ReturnType.STRING;
default:
return null;
}
} }
} }
@@ -28,15 +28,10 @@ public class SetMarkFunctionBuilder implements FunctionBuilder<SetMarkFunction>
@Override @Override
public Returnable.ReturnType getArgument(int position) { public Returnable.ReturnType getArgument(int position) {
switch(position) { return switch(position) {
case 0: case 0, 1, 2 -> Returnable.ReturnType.NUMBER;
case 1: case 3 -> Returnable.ReturnType.STRING;
case 2: default -> null;
return Returnable.ReturnType.NUMBER; };
case 3:
return Returnable.ReturnType.STRING;
default:
return null;
}
} }
} }
@@ -32,15 +32,10 @@ public class StateFunctionBuilder implements FunctionBuilder<StateFunction> {
@Override @Override
public Returnable.ReturnType getArgument(int position) { public Returnable.ReturnType getArgument(int position) {
switch(position) { return switch(position) {
case 0: case 0, 1, 2 -> Returnable.ReturnType.NUMBER;
case 1: case 3 -> Returnable.ReturnType.STRING;
case 2: default -> null;
return Returnable.ReturnType.NUMBER; };
case 3:
return Returnable.ReturnType.STRING;
default:
return null;
}
} }
} }
@@ -40,13 +40,9 @@ public class StructureFunctionBuilder implements FunctionBuilder<StructureFuncti
@Override @Override
public Returnable.ReturnType getArgument(int position) { public Returnable.ReturnType getArgument(int position) {
switch(position) { return switch(position) {
case 0: case 0, 1, 2 -> Returnable.ReturnType.NUMBER;
case 1: default -> Returnable.ReturnType.STRING;
case 2: };
return Returnable.ReturnType.NUMBER;
default:
return Returnable.ReturnType.STRING;
}
} }
} }
@@ -23,7 +23,7 @@ public class UnaryBooleanFunctionBuilder implements FunctionBuilder<Function<Voi
@Override @Override
public Function<Void> build(List<Returnable<?>> argumentList, Position position) { public Function<Void> build(List<Returnable<?>> argumentList, Position position) {
return new Function<Void>() { return new Function<>() {
@Override @Override
public ReturnType returnType() { public ReturnType returnType() {
return ReturnType.VOID; return ReturnType.VOID;
@@ -21,7 +21,7 @@ public class UnaryNumberFunctionBuilder implements FunctionBuilder<Function<Numb
@Override @Override
public Function<Number> build(List<Returnable<?>> argumentList, Position position) { public Function<Number> build(List<Returnable<?>> argumentList, Position position) {
return new Function<Number>() { return new Function<>() {
@Override @Override
public ReturnType returnType() { public ReturnType returnType() {
return ReturnType.NUMBER; return ReturnType.NUMBER;
@@ -21,7 +21,7 @@ public class UnaryStringFunctionBuilder implements FunctionBuilder<Function<Void
@Override @Override
public Function<Void> build(List<Returnable<?>> argumentList, Position position) { public Function<Void> build(List<Returnable<?>> argumentList, Position position) {
return new Function<Void>() { return new Function<>() {
@Override @Override
public ReturnType returnType() { public ReturnType returnType() {
return ReturnType.VOID; return ReturnType.VOID;
@@ -23,7 +23,7 @@ public class ZeroArgFunctionBuilder<T> implements FunctionBuilder<Function<T>> {
@Override @Override
public Function<T> build(List<Returnable<?>> argumentList, Position position) { public Function<T> build(List<Returnable<?>> argumentList, Position position) {
return new Function<T>() { return new Function<>() {
@Override @Override
public ReturnType returnType() { public ReturnType returnType() {
return type; return type;
@@ -39,14 +39,11 @@ public class ParserTest {
@Override @Override
public Returnable.ReturnType getArgument(int position) { public Returnable.ReturnType getArgument(int position) {
switch(position) { return switch(position) {
case 0: case 0 -> Returnable.ReturnType.STRING;
return Returnable.ReturnType.STRING; case 1 -> Returnable.ReturnType.NUMBER;
case 1: default -> null;
return Returnable.ReturnType.NUMBER; };
default:
return null;
}
} }
}); });
@@ -9,7 +9,7 @@ import com.dfsek.terra.api.util.generic.Lazy;
public interface EnumProperty<T extends Enum<T>> extends Property<T> { public interface EnumProperty<T extends Enum<T>> extends Property<T> {
static <T extends Enum<T>> EnumProperty<T> of(String name, Class<T> clazz) { static <T extends Enum<T>> EnumProperty<T> of(String name, Class<T> clazz) {
return new EnumProperty<T>() { return new EnumProperty<>() {
private final Lazy<Collection<T>> constants = Lazy.lazy(() -> Arrays.asList(clazz.getEnumConstants())); private final Lazy<Collection<T>> constants = Lazy.lazy(() -> Arrays.asList(clazz.getEnumConstants()));
@Override @Override
@@ -28,32 +28,21 @@ public enum Direction {
} }
public Direction rotate(Rotation rotation) { public Direction rotate(Rotation rotation) {
switch(this) { return switch(this) {
case UP: case UP, DOWN -> this;
case DOWN: default -> rotations[(this.rotation + rotation.getDegrees() / 90) % 4];
return this; };
default:
return rotations[(this.rotation + rotation.getDegrees() / 90) % 4];
}
} }
public Direction opposite() { public Direction opposite() {
switch(this) { return switch(this) {
case DOWN: case DOWN -> UP;
return UP; case UP -> DOWN;
case UP: case EAST -> WEST;
return DOWN; case WEST -> EAST;
case EAST: case NORTH -> SOUTH;
return WEST; case SOUTH -> NORTH;
case WEST: };
return EAST;
case NORTH:
return SOUTH;
case SOUTH:
return NORTH;
}
throw new IllegalStateException();
} }
public int getModX() { public int getModX() {
@@ -16,33 +16,22 @@ public enum Rotation {
} }
public static Rotation fromDegrees(int deg) { public static Rotation fromDegrees(int deg) {
switch(FastMath.floorMod(deg, 360)) { return switch(FastMath.floorMod(deg, 360)) {
case 0: case 0 -> Rotation.NONE;
return Rotation.NONE; case 90 -> Rotation.CW_90;
case 90: case 180 -> Rotation.CW_180;
return Rotation.CW_90; case 270 -> Rotation.CCW_90;
case 180: default -> throw new IllegalArgumentException();
return Rotation.CW_180; };
case 270:
return Rotation.CCW_90;
default:
throw new IllegalArgumentException();
}
} }
public Rotation inverse() { public Rotation inverse() {
switch(this) { return switch(this) {
case NONE: case NONE -> NONE;
return NONE; case CCW_90 -> CW_90;
case CCW_90: case CW_90 -> CCW_90;
return CW_90; case CW_180 -> CW_180;
case CW_90: };
return CCW_90;
case CW_180:
return CW_180;
default:
throw new IllegalArgumentException();
}
} }
public Rotation rotate(Rotation rotation) { public Rotation rotate(Rotation rotation) {
@@ -23,15 +23,9 @@ public final class RotationUtil {
public static void rotateVector(Vector2 orig, Rotation r) { public static void rotateVector(Vector2 orig, Rotation r) {
Vector2 copy = orig.clone(); Vector2 copy = orig.clone();
switch(r) { switch(r) {
case CW_90: case CW_90 -> copy.setX(orig.getZ()).setZ(-orig.getX());
copy.setX(orig.getZ()).setZ(-orig.getX()); case CCW_90 -> copy.setX(-orig.getZ()).setZ(orig.getX());
break; case CW_180 -> copy.multiply(-1);
case CCW_90:
copy.setX(-orig.getZ()).setZ(orig.getX());
break;
case CW_180:
copy.multiply(-1);
break;
} }
orig.setX(copy.getX()); orig.setX(copy.getX());
orig.setZ(copy.getZ()); orig.setZ(copy.getZ());
@@ -64,74 +58,44 @@ public final class RotationUtil {
public static RailShape getRotatedRail(RailShape orig, Rotation r) { public static RailShape getRotatedRail(RailShape orig, Rotation r) {
switch(r) { switch(r) {
case CCW_90: case CCW_90:
switch(orig) { return switch(orig) {
case NORTH_WEST: case NORTH_WEST -> RailShape.SOUTH_WEST;
return RailShape.SOUTH_WEST; case NORTH_SOUTH -> RailShape.EAST_WEST;
case NORTH_SOUTH: case SOUTH_WEST -> RailShape.SOUTH_EAST;
return RailShape.EAST_WEST; case SOUTH_EAST -> RailShape.NORTH_EAST;
case SOUTH_WEST: case EAST_WEST -> RailShape.NORTH_SOUTH;
return RailShape.SOUTH_EAST; case NORTH_EAST -> RailShape.NORTH_WEST;
case SOUTH_EAST: case ASCENDING_EAST -> RailShape.ASCENDING_NORTH;
return RailShape.NORTH_EAST; case ASCENDING_WEST -> RailShape.ASCENDING_SOUTH;
case EAST_WEST: case ASCENDING_NORTH -> RailShape.ASCENDING_WEST;
return RailShape.NORTH_SOUTH; case ASCENDING_SOUTH -> RailShape.ASCENDING_EAST;
case NORTH_EAST: };
return RailShape.NORTH_WEST;
case ASCENDING_EAST:
return RailShape.ASCENDING_NORTH;
case ASCENDING_WEST:
return RailShape.ASCENDING_SOUTH;
case ASCENDING_NORTH:
return RailShape.ASCENDING_WEST;
case ASCENDING_SOUTH:
return RailShape.ASCENDING_EAST;
}
case CW_90: case CW_90:
switch(orig) { return switch(orig) {
case NORTH_WEST: case NORTH_WEST -> RailShape.NORTH_EAST;
return RailShape.NORTH_EAST; case NORTH_SOUTH -> RailShape.EAST_WEST;
case NORTH_SOUTH: case SOUTH_WEST -> RailShape.NORTH_WEST;
return RailShape.EAST_WEST; case SOUTH_EAST -> RailShape.SOUTH_WEST;
case SOUTH_WEST: case EAST_WEST -> RailShape.NORTH_SOUTH;
return RailShape.NORTH_WEST; case NORTH_EAST -> RailShape.SOUTH_EAST;
case SOUTH_EAST: case ASCENDING_EAST -> RailShape.ASCENDING_SOUTH;
return RailShape.SOUTH_WEST; case ASCENDING_WEST -> RailShape.ASCENDING_NORTH;
case EAST_WEST: case ASCENDING_NORTH -> RailShape.ASCENDING_EAST;
return RailShape.NORTH_SOUTH; case ASCENDING_SOUTH -> RailShape.ASCENDING_WEST;
case NORTH_EAST: };
return RailShape.SOUTH_EAST;
case ASCENDING_EAST:
return RailShape.ASCENDING_SOUTH;
case ASCENDING_WEST:
return RailShape.ASCENDING_NORTH;
case ASCENDING_NORTH:
return RailShape.ASCENDING_EAST;
case ASCENDING_SOUTH:
return RailShape.ASCENDING_WEST;
}
case CW_180: case CW_180:
switch(orig) { return switch(orig) {
case NORTH_WEST: case NORTH_WEST -> RailShape.SOUTH_EAST;
return RailShape.SOUTH_EAST; case NORTH_SOUTH -> RailShape.NORTH_SOUTH;
case NORTH_SOUTH: case SOUTH_WEST -> RailShape.NORTH_EAST;
return RailShape.NORTH_SOUTH; case SOUTH_EAST -> RailShape.NORTH_WEST;
case SOUTH_WEST: case EAST_WEST -> RailShape.EAST_WEST;
return RailShape.NORTH_EAST; case NORTH_EAST -> RailShape.SOUTH_WEST;
case SOUTH_EAST: case ASCENDING_EAST -> RailShape.ASCENDING_WEST;
return RailShape.NORTH_WEST; case ASCENDING_WEST -> RailShape.ASCENDING_EAST;
case EAST_WEST: case ASCENDING_NORTH -> RailShape.ASCENDING_SOUTH;
return RailShape.EAST_WEST; case ASCENDING_SOUTH -> RailShape.ASCENDING_NORTH;
case NORTH_EAST: };
return RailShape.SOUTH_WEST;
case ASCENDING_EAST:
return RailShape.ASCENDING_WEST;
case ASCENDING_WEST:
return RailShape.ASCENDING_EAST;
case ASCENDING_NORTH:
return RailShape.ASCENDING_SOUTH;
case ASCENDING_SOUTH:
return RailShape.ASCENDING_NORTH;
}
} }
return orig; return orig;
} }
@@ -66,7 +66,7 @@ public abstract class AbstractPlatform implements Platform {
private final AddonRegistry addonRegistry = new AddonRegistry(this); private final AddonRegistry addonRegistry = new AddonRegistry(this);
private final Lazy<Logger> logger = Lazy.lazy(() -> createLogger()); private final Lazy<Logger> logger = Lazy.lazy(this::createLogger);
private final Lazy<DebugLogger> debugLogger = Lazy.lazy(() -> new DebugLogger(logger())); private final Lazy<DebugLogger> debugLogger = Lazy.lazy(() -> new DebugLogger(logger()));
@Override @Override
@@ -27,8 +27,6 @@ public class PacksCommand implements CommandTemplate {
} }
LangUtil.send("command.packs.main", sender); LangUtil.send("command.packs.main", sender);
registry.entries().forEach(entry -> { registry.entries().forEach(entry -> LangUtil.send("command.packs.pack", sender, entry.getID(), entry.getAuthor(), entry.getVersion()));
LangUtil.send("command.packs.pack", sender, entry.getID(), entry.getAuthor(), entry.getVersion());
});
} }
} }
@@ -39,7 +39,7 @@ public class OpenRegistryImpl<T> implements OpenRegistry<T> {
T obj = get((String) o); T obj = get((String) o);
StringBuilder keys = new StringBuilder("["); StringBuilder keys = new StringBuilder("[");
objects.keySet().forEach(key -> keys.append(key + ", ")); objects.keySet().forEach(key -> keys.append(key).append(", "));
if(obj == null) if(obj == null)
throw new LoadException("No such " + type.getType().getTypeName() + " matching \"" + o + throw new LoadException("No such " + type.getType().getTypeName() + " matching \"" + o +
@@ -30,9 +30,7 @@ public class ProfilerTest {
PROFILER.push("thing4"); PROFILER.push("thing4");
PROFILER.pop("thing4"); PROFILER.pop("thing4");
PROFILER.getTimings().forEach((id, timings) -> { PROFILER.getTimings().forEach((id, timings) -> System.out.println(id + ": " + timings.toString()));
System.out.println(id + ": " + timings.toString());
});
} }
private static void doThing() throws InterruptedException { private static void doThing() throws InterruptedException {
@@ -57,132 +57,81 @@ public final class BukkitAdapter {
} }
public static Axis adapt(org.bukkit.Axis axis) { public static Axis adapt(org.bukkit.Axis axis) {
switch(axis) { return switch(axis) {
case X: case X -> Axis.X;
return Axis.X; case Y -> Axis.Y;
case Y: case Z -> Axis.Z;
return Axis.Y; };
case Z:
return Axis.Z;
default:
throw new IllegalStateException();
}
} }
public static Half adapt(org.bukkit.block.data.Bisected.Half half) { public static Half adapt(org.bukkit.block.data.Bisected.Half half) {
switch(half) { return switch(half) {
case BOTTOM: case BOTTOM -> Half.BOTTOM;
return Half.BOTTOM; case TOP -> Half.TOP;
case TOP: };
return Half.TOP;
default:
throw new IllegalStateException();
}
} }
public static RedstoneConnection adapt(org.bukkit.block.data.type.RedstoneWire.Connection connection) { public static RedstoneConnection adapt(org.bukkit.block.data.type.RedstoneWire.Connection connection) {
switch(connection) { return switch(connection) {
case NONE: case NONE -> RedstoneConnection.NONE;
return RedstoneConnection.NONE; case UP -> RedstoneConnection.UP;
case UP: case SIDE -> RedstoneConnection.SIDE;
return RedstoneConnection.UP; };
case SIDE:
return RedstoneConnection.SIDE;
default:
throw new IllegalStateException();
}
} }
public static org.bukkit.block.data.type.RedstoneWire.Connection adapt(RedstoneConnection connection) { public static org.bukkit.block.data.type.RedstoneWire.Connection adapt(RedstoneConnection connection) {
switch(connection) { return switch(connection) {
case SIDE: case SIDE -> org.bukkit.block.data.type.RedstoneWire.Connection.SIDE;
return org.bukkit.block.data.type.RedstoneWire.Connection.SIDE; case UP -> org.bukkit.block.data.type.RedstoneWire.Connection.UP;
case UP: case NONE -> org.bukkit.block.data.type.RedstoneWire.Connection.NONE;
return org.bukkit.block.data.type.RedstoneWire.Connection.UP; };
case NONE:
return org.bukkit.block.data.type.RedstoneWire.Connection.NONE;
default:
throw new IllegalStateException();
}
} }
public static RailShape adapt(org.bukkit.block.data.Rail.Shape shape) { public static RailShape adapt(org.bukkit.block.data.Rail.Shape shape) {
switch(shape) { return switch(shape) {
case SOUTH_WEST: case SOUTH_WEST -> RailShape.SOUTH_WEST;
return RailShape.SOUTH_WEST; case SOUTH_EAST -> RailShape.SOUTH_EAST;
case SOUTH_EAST: case NORTH_EAST -> RailShape.NORTH_EAST;
return RailShape.SOUTH_EAST; case NORTH_WEST -> RailShape.NORTH_WEST;
case NORTH_EAST: case ASCENDING_EAST -> RailShape.ASCENDING_EAST;
return RailShape.NORTH_EAST; case ASCENDING_WEST -> RailShape.ASCENDING_WEST;
case NORTH_WEST: case ASCENDING_SOUTH -> RailShape.ASCENDING_SOUTH;
return RailShape.NORTH_WEST; case ASCENDING_NORTH -> RailShape.ASCENDING_NORTH;
case ASCENDING_EAST: case NORTH_SOUTH -> RailShape.NORTH_SOUTH;
return RailShape.ASCENDING_EAST; case EAST_WEST -> RailShape.EAST_WEST;
case ASCENDING_WEST: };
return RailShape.ASCENDING_WEST;
case ASCENDING_SOUTH:
return RailShape.ASCENDING_SOUTH;
case ASCENDING_NORTH:
return RailShape.ASCENDING_NORTH;
case NORTH_SOUTH:
return RailShape.NORTH_SOUTH;
case EAST_WEST:
return RailShape.EAST_WEST;
default:
throw new IllegalStateException();
}
} }
public static org.bukkit.block.data.Rail.Shape adapt(RailShape shape) { public static org.bukkit.block.data.Rail.Shape adapt(RailShape shape) {
switch(shape) { return switch(shape) {
case EAST_WEST: case EAST_WEST -> org.bukkit.block.data.Rail.Shape.EAST_WEST;
return org.bukkit.block.data.Rail.Shape.EAST_WEST; case NORTH_SOUTH -> org.bukkit.block.data.Rail.Shape.NORTH_SOUTH;
case NORTH_SOUTH: case ASCENDING_NORTH -> org.bukkit.block.data.Rail.Shape.ASCENDING_NORTH;
return org.bukkit.block.data.Rail.Shape.NORTH_SOUTH; case ASCENDING_SOUTH -> org.bukkit.block.data.Rail.Shape.ASCENDING_SOUTH;
case ASCENDING_NORTH: case ASCENDING_WEST -> org.bukkit.block.data.Rail.Shape.ASCENDING_WEST;
return org.bukkit.block.data.Rail.Shape.ASCENDING_NORTH; case ASCENDING_EAST -> org.bukkit.block.data.Rail.Shape.ASCENDING_EAST;
case ASCENDING_SOUTH: case NORTH_WEST -> org.bukkit.block.data.Rail.Shape.NORTH_WEST;
return org.bukkit.block.data.Rail.Shape.ASCENDING_SOUTH; case NORTH_EAST -> org.bukkit.block.data.Rail.Shape.NORTH_EAST;
case ASCENDING_WEST: case SOUTH_EAST -> org.bukkit.block.data.Rail.Shape.SOUTH_EAST;
return org.bukkit.block.data.Rail.Shape.ASCENDING_WEST; case SOUTH_WEST -> org.bukkit.block.data.Rail.Shape.SOUTH_WEST;
case ASCENDING_EAST: };
return org.bukkit.block.data.Rail.Shape.ASCENDING_EAST;
case NORTH_WEST:
return org.bukkit.block.data.Rail.Shape.NORTH_WEST;
case NORTH_EAST:
return org.bukkit.block.data.Rail.Shape.NORTH_EAST;
case SOUTH_EAST:
return org.bukkit.block.data.Rail.Shape.SOUTH_EAST;
case SOUTH_WEST:
return org.bukkit.block.data.Rail.Shape.SOUTH_WEST;
default:
throw new IllegalStateException();
}
} }
public static org.bukkit.block.data.Bisected.Half adapt(Half half) { public static org.bukkit.block.data.Bisected.Half adapt(Half half) {
switch(half) { return switch(half) {
case TOP: case TOP -> org.bukkit.block.data.Bisected.Half.TOP;
return org.bukkit.block.data.Bisected.Half.TOP; case BOTTOM -> org.bukkit.block.data.Bisected.Half.BOTTOM;
case BOTTOM: default -> throw new IllegalStateException();
return org.bukkit.block.data.Bisected.Half.BOTTOM; };
default:
throw new IllegalStateException();
}
} }
public static org.bukkit.Axis adapt(Axis axis) { public static org.bukkit.Axis adapt(Axis axis) {
switch(axis) { return switch(axis) {
case Z: case Z -> org.bukkit.Axis.Z;
return org.bukkit.Axis.Z; case Y -> org.bukkit.Axis.Y;
case Y: case X -> org.bukkit.Axis.X;
return org.bukkit.Axis.Y; };
case X:
return org.bukkit.Axis.X;
default:
throw new IllegalStateException();
}
} }
public static Vector3 adapt(Location location) { public static Vector3 adapt(Location location) {
@@ -27,21 +27,16 @@ public class BukkitTree implements Tree {
private MaterialSet getSpawnable(TreeType type) { private MaterialSet getSpawnable(TreeType type) {
WorldHandle handle = main.getWorldHandle(); WorldHandle handle = main.getWorldHandle();
switch(type) { return switch(type) {
case CRIMSON_FUNGUS: case CRIMSON_FUNGUS -> MaterialSet.get(handle.createBlockData("minecraft:crimson_nylium"));
return MaterialSet.get(handle.createBlockData("minecraft:crimson_nylium")); case WARPED_FUNGUS -> MaterialSet.get(handle.createBlockData("minecraft:warped_nylium"));
case WARPED_FUNGUS: case BROWN_MUSHROOM, RED_MUSHROOM -> MaterialSet.get(handle.createBlockData("minecraft:mycelium"),
return MaterialSet.get(handle.createBlockData("minecraft:warped_nylium")); handle.createBlockData("minecraft:grass_block"),
case BROWN_MUSHROOM: handle.createBlockData("minecraft:podzol"));
case RED_MUSHROOM: case CHORUS_PLANT -> MaterialSet.get(handle.createBlockData("minecraft:end_stone"));
return MaterialSet.get(handle.createBlockData("minecraft:mycelium"), handle.createBlockData("minecraft:grass_block"), default -> MaterialSet.get(handle.createBlockData("minecraft:grass_block"), handle.createBlockData("minecraft:dirt"),
handle.createBlockData("minecraft:podzol")); handle.createBlockData("minecraft:podzol"));
case CHORUS_PLANT: };
return MaterialSet.get(handle.createBlockData("minecraft:end_stone"));
default:
return MaterialSet.get(handle.createBlockData("minecraft:grass_block"), handle.createBlockData("minecraft:dirt"),
handle.createBlockData("minecraft:podzol"));
}
} }
@Override @Override
@@ -98,32 +98,15 @@ public class BukkitMobSpawner extends BukkitBlockEntity implements MobSpawner {
public void applyState(String state) { public void applyState(String state) {
SerialState.parse(state).forEach((k, v) -> { SerialState.parse(state).forEach((k, v) -> {
switch(k) { switch(k) {
case "type": case "type" -> setSpawnedType(new BukkitEntityType(org.bukkit.entity.EntityType.valueOf(v.toUpperCase())));
setSpawnedType(new BukkitEntityType(org.bukkit.entity.EntityType.valueOf(v.toUpperCase()))); case "delay" -> setDelay(Integer.parseInt(v));
return; case "min_delay" -> setMinSpawnDelay(Integer.parseInt(v));
case "delay": case "max_delay" -> setMaxSpawnDelay(Integer.parseInt(v));
setDelay(Integer.parseInt(v)); case "spawn_count" -> setSpawnCount(Integer.parseInt(v));
return; case "spawn_range" -> setSpawnRange(Integer.parseInt(v));
case "min_delay": case "max_nearby" -> setMaxNearbyEntities(Integer.parseInt(v));
setMinSpawnDelay(Integer.parseInt(v)); case "required_player_range" -> setRequiredPlayerRange(Integer.parseInt(v));
return; default -> throw new IllegalArgumentException("Invalid property: " + k);
case "max_delay":
setMaxSpawnDelay(Integer.parseInt(v));
return;
case "spawn_count":
setSpawnCount(Integer.parseInt(v));
return;
case "spawn_range":
setSpawnRange(Integer.parseInt(v));
return;
case "max_nearby":
setMaxNearbyEntities(Integer.parseInt(v));
return;
case "required_player_range":
setRequiredPlayerRange(Integer.parseInt(v));
return;
default:
throw new IllegalArgumentException("Invalid property: " + k);
} }
}); });
} }
@@ -97,32 +97,15 @@ public abstract class MobSpawnerBlockEntityMixin extends BlockEntity {
public void terra$applyState(String state) { public void terra$applyState(String state) {
SerialState.parse(state).forEach((k, v) -> { SerialState.parse(state).forEach((k, v) -> {
switch(k) { switch(k) {
case "type": case "type" -> terra$setSpawnedType(FabricEntryPoint.getTerraPlugin().getWorldHandle().getEntity(v));
terra$setSpawnedType(FabricEntryPoint.getTerraPlugin().getWorldHandle().getEntity(v)); case "delay" -> terra$setDelay(Integer.parseInt(v));
return; case "min_delay" -> terra$setMinSpawnDelay(Integer.parseInt(v));
case "delay": case "max_delay" -> terra$setMaxSpawnDelay(Integer.parseInt(v));
terra$setDelay(Integer.parseInt(v)); case "spawn_count" -> terra$setSpawnCount(Integer.parseInt(v));
return; case "spawn_range" -> terra$setSpawnRange(Integer.parseInt(v));
case "min_delay": case "max_nearby" -> terra$setMaxNearbyEntities(Integer.parseInt(v));
terra$setMinSpawnDelay(Integer.parseInt(v)); case "required_player_range" -> terra$setRequiredPlayerRange(Integer.parseInt(v));
return; default -> throw new IllegalArgumentException("Invalid property: " + k);
case "max_delay":
terra$setMaxSpawnDelay(Integer.parseInt(v));
return;
case "spawn_count":
terra$setSpawnCount(Integer.parseInt(v));
return;
case "spawn_range":
terra$setSpawnRange(Integer.parseInt(v));
return;
case "max_nearby":
terra$setMaxNearbyEntities(Integer.parseInt(v));
return;
case "required_player_range":
terra$setRequiredPlayerRange(Integer.parseInt(v));
return;
default:
throw new IllegalArgumentException("Invalid property: " + k);
} }
}); });
} }
@@ -30,188 +30,119 @@ public final class FabricAdapter {
} }
public static Direction adapt(com.dfsek.terra.api.block.state.properties.enums.Direction direction) { public static Direction adapt(com.dfsek.terra.api.block.state.properties.enums.Direction direction) {
switch(direction) { return switch(direction) {
case SOUTH: case SOUTH -> Direction.SOUTH;
return Direction.SOUTH; case NORTH -> Direction.NORTH;
case NORTH: case WEST -> Direction.WEST;
return Direction.NORTH; case EAST -> Direction.EAST;
case WEST: case UP -> Direction.UP;
return Direction.WEST; case DOWN -> Direction.DOWN;
case EAST: };
return Direction.EAST;
case UP:
return Direction.UP;
case DOWN:
return Direction.DOWN;
}
throw new IllegalArgumentException();
} }
public static com.dfsek.terra.api.block.state.properties.enums.Direction adapt(Direction direction) { public static com.dfsek.terra.api.block.state.properties.enums.Direction adapt(Direction direction) {
switch(direction) { return switch(direction) {
case SOUTH: case SOUTH -> com.dfsek.terra.api.block.state.properties.enums.Direction.SOUTH;
return com.dfsek.terra.api.block.state.properties.enums.Direction.SOUTH; case NORTH -> com.dfsek.terra.api.block.state.properties.enums.Direction.NORTH;
case NORTH: case WEST -> com.dfsek.terra.api.block.state.properties.enums.Direction.WEST;
return com.dfsek.terra.api.block.state.properties.enums.Direction.NORTH; case EAST -> com.dfsek.terra.api.block.state.properties.enums.Direction.EAST;
case WEST: case UP -> com.dfsek.terra.api.block.state.properties.enums.Direction.UP;
return com.dfsek.terra.api.block.state.properties.enums.Direction.WEST; case DOWN -> com.dfsek.terra.api.block.state.properties.enums.Direction.DOWN;
case EAST: };
return com.dfsek.terra.api.block.state.properties.enums.Direction.EAST;
case UP:
return com.dfsek.terra.api.block.state.properties.enums.Direction.UP;
case DOWN:
return com.dfsek.terra.api.block.state.properties.enums.Direction.DOWN;
}
throw new IllegalArgumentException();
} }
public static WallHeight adapt(WallShape shape) { public static WallHeight adapt(WallShape shape) {
switch(shape) { return switch(shape) {
case LOW: case LOW -> WallHeight.LOW;
return WallHeight.LOW; case NONE -> WallHeight.NONE;
case NONE: case TALL -> WallHeight.TALL;
return WallHeight.NONE; };
case TALL:
return WallHeight.TALL;
}
throw new IllegalArgumentException();
} }
public static WallShape adapt(WallHeight shape) { public static WallShape adapt(WallHeight shape) {
switch(shape) { return switch(shape) {
case LOW: case LOW -> WallShape.LOW;
return WallShape.LOW; case NONE -> WallShape.NONE;
case NONE: case TALL -> WallShape.TALL;
return WallShape.NONE; };
case TALL:
return WallShape.TALL;
}
throw new IllegalArgumentException();
} }
public static RedstoneConnection adapt(WireConnection connection) { public static RedstoneConnection adapt(WireConnection connection) {
switch(connection) { return switch(connection) {
case NONE: case NONE -> RedstoneConnection.NONE;
return RedstoneConnection.NONE; case UP -> RedstoneConnection.UP;
case UP: case SIDE -> RedstoneConnection.SIDE;
return RedstoneConnection.UP; };
case SIDE:
return RedstoneConnection.SIDE;
}
throw new IllegalArgumentException();
} }
public static WireConnection adapt(RedstoneConnection connection) { public static WireConnection adapt(RedstoneConnection connection) {
switch(connection) { return switch(connection) {
case NONE: case NONE -> WireConnection.NONE;
return WireConnection.NONE; case UP -> WireConnection.UP;
case UP: case SIDE -> WireConnection.SIDE;
return WireConnection.UP; };
case SIDE:
return WireConnection.SIDE;
}
throw new IllegalArgumentException();
} }
public static Half adapt(BlockHalf half) { public static Half adapt(BlockHalf half) {
switch(half) { return switch(half) {
case BOTTOM: case BOTTOM -> Half.BOTTOM;
return Half.BOTTOM; case TOP -> Half.TOP;
case TOP: };
return Half.TOP;
default:
throw new IllegalStateException();
}
} }
public static BlockHalf adapt(Half half) { public static BlockHalf adapt(Half half) {
switch(half) { return switch(half) {
case TOP: case TOP -> BlockHalf.TOP;
return BlockHalf.TOP; case BOTTOM -> BlockHalf.BOTTOM;
case BOTTOM: default -> throw new IllegalStateException();
return BlockHalf.BOTTOM; };
default:
throw new IllegalStateException();
}
} }
public static RailShape adapt(net.minecraft.block.enums.RailShape railShape) { public static RailShape adapt(net.minecraft.block.enums.RailShape railShape) {
switch(railShape) { return switch(railShape) {
case EAST_WEST: case EAST_WEST -> RailShape.EAST_WEST;
return RailShape.EAST_WEST; case NORTH_EAST -> RailShape.NORTH_EAST;
case NORTH_EAST: case NORTH_WEST -> RailShape.NORTH_WEST;
return RailShape.NORTH_EAST; case SOUTH_EAST -> RailShape.SOUTH_EAST;
case NORTH_WEST: case SOUTH_WEST -> RailShape.SOUTH_WEST;
return RailShape.NORTH_WEST; case NORTH_SOUTH -> RailShape.NORTH_SOUTH;
case SOUTH_EAST: case ASCENDING_EAST -> RailShape.ASCENDING_EAST;
return RailShape.SOUTH_EAST; case ASCENDING_NORTH -> RailShape.ASCENDING_NORTH;
case SOUTH_WEST: case ASCENDING_SOUTH -> RailShape.ASCENDING_SOUTH;
return RailShape.SOUTH_WEST; case ASCENDING_WEST -> RailShape.ASCENDING_WEST;
case NORTH_SOUTH: };
return RailShape.NORTH_SOUTH;
case ASCENDING_EAST:
return RailShape.ASCENDING_EAST;
case ASCENDING_NORTH:
return RailShape.ASCENDING_NORTH;
case ASCENDING_SOUTH:
return RailShape.ASCENDING_SOUTH;
case ASCENDING_WEST:
return RailShape.ASCENDING_WEST;
}
throw new IllegalStateException();
} }
public static net.minecraft.block.enums.RailShape adapt(RailShape railShape) { public static net.minecraft.block.enums.RailShape adapt(RailShape railShape) {
switch(railShape) { return switch(railShape) {
case EAST_WEST: case EAST_WEST -> net.minecraft.block.enums.RailShape.EAST_WEST;
return net.minecraft.block.enums.RailShape.EAST_WEST; case NORTH_EAST -> net.minecraft.block.enums.RailShape.NORTH_EAST;
case NORTH_EAST: case NORTH_WEST -> net.minecraft.block.enums.RailShape.NORTH_WEST;
return net.minecraft.block.enums.RailShape.NORTH_EAST; case SOUTH_EAST -> net.minecraft.block.enums.RailShape.SOUTH_EAST;
case NORTH_WEST: case SOUTH_WEST -> net.minecraft.block.enums.RailShape.SOUTH_WEST;
return net.minecraft.block.enums.RailShape.NORTH_WEST; case NORTH_SOUTH -> net.minecraft.block.enums.RailShape.NORTH_SOUTH;
case SOUTH_EAST: case ASCENDING_EAST -> net.minecraft.block.enums.RailShape.ASCENDING_EAST;
return net.minecraft.block.enums.RailShape.SOUTH_EAST; case ASCENDING_NORTH -> net.minecraft.block.enums.RailShape.ASCENDING_NORTH;
case SOUTH_WEST: case ASCENDING_SOUTH -> net.minecraft.block.enums.RailShape.ASCENDING_SOUTH;
return net.minecraft.block.enums.RailShape.SOUTH_WEST; case ASCENDING_WEST -> net.minecraft.block.enums.RailShape.ASCENDING_WEST;
case NORTH_SOUTH: };
return net.minecraft.block.enums.RailShape.NORTH_SOUTH;
case ASCENDING_EAST:
return net.minecraft.block.enums.RailShape.ASCENDING_EAST;
case ASCENDING_NORTH:
return net.minecraft.block.enums.RailShape.ASCENDING_NORTH;
case ASCENDING_SOUTH:
return net.minecraft.block.enums.RailShape.ASCENDING_SOUTH;
case ASCENDING_WEST:
return net.minecraft.block.enums.RailShape.ASCENDING_WEST;
}
throw new IllegalStateException();
} }
public static Axis adapt(Direction.Axis axis) { public static Axis adapt(Direction.Axis axis) {
switch(axis) { return switch(axis) {
case X: case X -> Axis.X;
return Axis.X; case Y -> Axis.Y;
case Y: case Z -> Axis.Z;
return Axis.Y; };
case Z:
return Axis.Z;
default:
throw new IllegalStateException();
}
} }
public static Direction.Axis adapt(Axis axis) { public static Direction.Axis adapt(Axis axis) {
switch(axis) { return switch(axis) {
case Z: case Z -> Direction.Axis.Z;
return Direction.Axis.Z; case Y -> Direction.Axis.Y;
case Y: case X -> Direction.Axis.X;
return Direction.Axis.Y; };
case X:
return Direction.Axis.X;
default:
throw new IllegalStateException();
}
} }
} }