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