diff --git a/common/addons/api-terrascript/build.gradle.kts b/common/addons/api-terrascript/build.gradle.kts index 7d82dc72f..a323c705d 100644 --- a/common/addons/api-terrascript/build.gradle.kts +++ b/common/addons/api-terrascript/build.gradle.kts @@ -1,2 +1,3 @@ dependencies { + "shadedApi"("commons-io:commons-io:2.6") } diff --git a/common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/StructureScript.java b/common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/StructureScript.java new file mode 100644 index 000000000..88c1302cf --- /dev/null +++ b/common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/StructureScript.java @@ -0,0 +1,13 @@ +package com.dfsek.terra.addons.terrascript.api; + +import com.dfsek.terra.api.structure.Structure; +import com.dfsek.terra.api.structure.rotation.Rotation; +import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.api.world.World; + +import java.util.Random; + +public interface StructureScript extends Structure { + @SuppressWarnings("try") + boolean test(Vector3 location, World world, Random random, Rotation rotation); +} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/TerraImplementationArguments.java b/common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/TerraImplementationArguments.java similarity index 96% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/TerraImplementationArguments.java rename to common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/TerraImplementationArguments.java index 4b8799354..c9189bd05 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/TerraImplementationArguments.java +++ b/common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/TerraImplementationArguments.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.terrascript.script; +package com.dfsek.terra.addons.terrascript.api; import com.dfsek.terra.addons.terrascript.api.ImplementationArguments; import com.dfsek.terra.api.structure.buffer.Buffer; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/Cell.java b/common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/buffer/Cell.java similarity index 92% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/Cell.java rename to common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/buffer/Cell.java index 534e57c5b..aff81ff7b 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/Cell.java +++ b/common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/buffer/Cell.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.terrascript.buffer; +package com.dfsek.terra.addons.terrascript.api.buffer; import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.vector.Vector3; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/DirectBuffer.java b/common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/buffer/DirectBuffer.java similarity index 96% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/DirectBuffer.java rename to common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/buffer/DirectBuffer.java index 71adec30f..5feb7c517 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/DirectBuffer.java +++ b/common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/buffer/DirectBuffer.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.terrascript.buffer; +package com.dfsek.terra.addons.terrascript.api.buffer; import com.dfsek.terra.api.structure.buffer.Buffer; import com.dfsek.terra.api.structure.buffer.BufferedItem; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/IntermediateBuffer.java b/common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/buffer/IntermediateBuffer.java similarity index 95% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/IntermediateBuffer.java rename to common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/buffer/IntermediateBuffer.java index 4c59a1cf9..c06c78311 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/IntermediateBuffer.java +++ b/common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/buffer/IntermediateBuffer.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.terrascript.buffer; +package com.dfsek.terra.addons.terrascript.api.buffer; import com.dfsek.terra.api.structure.buffer.Buffer; import com.dfsek.terra.api.structure.buffer.BufferedItem; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/StructureBuffer.java b/common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/buffer/StructureBuffer.java similarity index 97% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/StructureBuffer.java rename to common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/buffer/StructureBuffer.java index 79025f0d5..50be48037 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/StructureBuffer.java +++ b/common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/buffer/StructureBuffer.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.terrascript.buffer; +package com.dfsek.terra.addons.terrascript.api.buffer; import com.dfsek.terra.api.structure.buffer.Buffer; import com.dfsek.terra.api.structure.buffer.BufferedItem; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedBlock.java b/common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/buffer/items/BufferedBlock.java similarity index 95% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedBlock.java rename to common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/buffer/items/BufferedBlock.java index 0ccaaa938..a1399f8d3 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedBlock.java +++ b/common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/buffer/items/BufferedBlock.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.terrascript.buffer.items; +package com.dfsek.terra.addons.terrascript.api.buffer.items; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedEntity.java b/common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/buffer/items/BufferedEntity.java similarity index 93% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedEntity.java rename to common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/buffer/items/BufferedEntity.java index 300b9c989..823ab3dc6 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedEntity.java +++ b/common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/buffer/items/BufferedEntity.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.terrascript.buffer.items; +package com.dfsek.terra.addons.terrascript.api.buffer.items; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.entity.Entity; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedLootApplication.java b/common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/buffer/items/BufferedLootApplication.java similarity index 93% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedLootApplication.java rename to common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/buffer/items/BufferedLootApplication.java index 176184216..2364dc121 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedLootApplication.java +++ b/common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/buffer/items/BufferedLootApplication.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.addons.terrascript.buffer.items; +package com.dfsek.terra.addons.terrascript.api.buffer.items; -import com.dfsek.terra.addons.terrascript.script.StructureScript; +import com.dfsek.terra.addons.terrascript.api.StructureScript; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.block.entity.Container; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedPulledBlock.java b/common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/buffer/items/BufferedPulledBlock.java similarity index 92% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedPulledBlock.java rename to common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/buffer/items/BufferedPulledBlock.java index 2073a0105..c7dcdf653 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedPulledBlock.java +++ b/common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/buffer/items/BufferedPulledBlock.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.terrascript.buffer.items; +package com.dfsek.terra.addons.terrascript.api.buffer.items; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.structure.buffer.BufferedItem; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedStateManipulator.java b/common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/buffer/items/BufferedStateManipulator.java similarity index 93% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedStateManipulator.java rename to common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/buffer/items/BufferedStateManipulator.java index 769f29f26..39be11aa5 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedStateManipulator.java +++ b/common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/buffer/items/BufferedStateManipulator.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.terrascript.buffer.items; +package com.dfsek.terra.addons.terrascript.api.buffer.items; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.entity.BlockEntity; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/ConstantExpression.java b/common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/lang/ConstantExpression.java similarity index 92% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/ConstantExpression.java rename to common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/lang/ConstantExpression.java index ed6cb408e..0f1840645 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/ConstantExpression.java +++ b/common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/lang/ConstantExpression.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.terrascript.parser.lang.constants; +package com.dfsek.terra.addons.terrascript.api.lang; import com.dfsek.terra.addons.terrascript.api.ImplementationArguments; import com.dfsek.terra.addons.terrascript.api.Position; diff --git a/common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/lang/Item.java b/common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/lang/Item.java index 8bc53049c..79760ea6f 100644 --- a/common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/lang/Item.java +++ b/common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/lang/Item.java @@ -2,6 +2,7 @@ package com.dfsek.terra.addons.terrascript.api.lang; import com.dfsek.terra.addons.terrascript.api.ImplementationArguments; import com.dfsek.terra.addons.terrascript.api.Position; +import com.dfsek.terra.api.properties.Context; import java.util.Map; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BinaryNumberFunctionBuilder.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/BinaryNumberFunctionBuilder.java similarity index 96% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BinaryNumberFunctionBuilder.java rename to common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/BinaryNumberFunctionBuilder.java index a584a635b..c2990bb16 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BinaryNumberFunctionBuilder.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/BinaryNumberFunctionBuilder.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.terrascript.script.builders; +package com.dfsek.terra.addons.terrascript.builders; import com.dfsek.terra.addons.terrascript.api.Function; import com.dfsek.terra.addons.terrascript.api.FunctionBuilder; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BiomeFunctionBuilder.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/BiomeFunctionBuilder.java similarity index 89% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BiomeFunctionBuilder.java rename to common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/BiomeFunctionBuilder.java index b7b814e73..51b2729f0 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BiomeFunctionBuilder.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/BiomeFunctionBuilder.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.addons.terrascript.script.builders; +package com.dfsek.terra.addons.terrascript.builders; import com.dfsek.terra.addons.terrascript.api.FunctionBuilder; import com.dfsek.terra.addons.terrascript.api.Position; import com.dfsek.terra.addons.terrascript.api.lang.Returnable; -import com.dfsek.terra.addons.terrascript.script.functions.BiomeFunction; +import com.dfsek.terra.addons.terrascript.functions.BiomeFunction; import com.dfsek.terra.api.TerraPlugin; import java.util.List; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BlockFunctionBuilder.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/BlockFunctionBuilder.java similarity index 60% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BlockFunctionBuilder.java rename to common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/BlockFunctionBuilder.java index bf8f14fa8..ed2a61bb8 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BlockFunctionBuilder.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/BlockFunctionBuilder.java @@ -1,15 +1,17 @@ -package com.dfsek.terra.addons.terrascript.script.builders; +package com.dfsek.terra.addons.terrascript.builders; import com.dfsek.terra.addons.terrascript.api.FunctionBuilder; +import com.dfsek.terra.addons.terrascript.api.ImplementationArguments; import com.dfsek.terra.addons.terrascript.api.Position; import com.dfsek.terra.addons.terrascript.api.exception.ParseException; +import com.dfsek.terra.addons.terrascript.api.lang.ConstantExpression; import com.dfsek.terra.addons.terrascript.api.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.constants.BooleanConstant; -import com.dfsek.terra.addons.terrascript.parser.lang.constants.StringConstant; -import com.dfsek.terra.addons.terrascript.script.functions.BlockFunction; +import com.dfsek.terra.addons.terrascript.api.lang.Variable; +import com.dfsek.terra.addons.terrascript.functions.BlockFunction; import com.dfsek.terra.api.TerraPlugin; import java.util.List; +import java.util.Map; public class BlockFunctionBuilder implements FunctionBuilder { private final TerraPlugin main; @@ -22,10 +24,25 @@ public class BlockFunctionBuilder implements FunctionBuilder { @Override public BlockFunction build(List> argumentList, Position position) throws ParseException { if(argumentList.size() < 4) throw new ParseException("Expected data", position); - Returnable booleanReturnable = new BooleanConstant(true, position); + Returnable booleanReturnable = new Returnable() { + @Override + public ReturnType returnType() { + return ReturnType.BOOLEAN; + } + + @Override + public Boolean apply(ImplementationArguments implementationArguments, Map> variableMap) { + return true; + } + + @Override + public Position getPosition() { + return position; + } + }; if(argumentList.size() == 5) booleanReturnable = (Returnable) argumentList.get(4); - if(argumentList.get(3) instanceof StringConstant) { - return new BlockFunction.Constant((Returnable) argumentList.get(0), (Returnable) argumentList.get(1), (Returnable) argumentList.get(2), (StringConstant) argumentList.get(3), booleanReturnable, main, position); + if(argumentList.get(3).returnType() == Returnable.ReturnType.STRING && argumentList.get(3) instanceof ConstantExpression) { + return new BlockFunction.Constant((Returnable) argumentList.get(0), (Returnable) argumentList.get(1), (Returnable) argumentList.get(2), (ConstantExpression) argumentList.get(3), booleanReturnable, main, position); } return new BlockFunction((Returnable) argumentList.get(0), (Returnable) argumentList.get(1), (Returnable) argumentList.get(2), (Returnable) argumentList.get(3), booleanReturnable, main, position); } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckBlockFunctionBuilder.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/CheckBlockFunctionBuilder.java similarity index 87% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckBlockFunctionBuilder.java rename to common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/CheckBlockFunctionBuilder.java index f5cc5f751..23a56d44b 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckBlockFunctionBuilder.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/CheckBlockFunctionBuilder.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.addons.terrascript.script.builders; +package com.dfsek.terra.addons.terrascript.builders; import com.dfsek.terra.addons.terrascript.api.FunctionBuilder; import com.dfsek.terra.addons.terrascript.api.Position; import com.dfsek.terra.addons.terrascript.api.lang.Returnable; -import com.dfsek.terra.addons.terrascript.script.functions.CheckBlockFunction; +import com.dfsek.terra.addons.terrascript.functions.CheckBlockFunction; import java.util.List; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckFunctionBuilder.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/CheckFunctionBuilder.java similarity index 90% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckFunctionBuilder.java rename to common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/CheckFunctionBuilder.java index cb199ac6e..93c3abe0d 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckFunctionBuilder.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/CheckFunctionBuilder.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.addons.terrascript.script.builders; +package com.dfsek.terra.addons.terrascript.builders; import com.dfsek.terra.addons.terrascript.api.FunctionBuilder; import com.dfsek.terra.addons.terrascript.api.Position; import com.dfsek.terra.addons.terrascript.api.exception.ParseException; import com.dfsek.terra.addons.terrascript.api.lang.Returnable; -import com.dfsek.terra.addons.terrascript.script.functions.CheckFunction; +import com.dfsek.terra.addons.terrascript.functions.CheckFunction; import com.dfsek.terra.api.TerraPlugin; import java.util.List; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/EntityFunctionBuilder.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/EntityFunctionBuilder.java similarity index 90% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/EntityFunctionBuilder.java rename to common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/EntityFunctionBuilder.java index e5d2a4353..21f086742 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/EntityFunctionBuilder.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/EntityFunctionBuilder.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.addons.terrascript.script.builders; +package com.dfsek.terra.addons.terrascript.builders; import com.dfsek.terra.addons.terrascript.api.FunctionBuilder; import com.dfsek.terra.addons.terrascript.api.Position; import com.dfsek.terra.addons.terrascript.api.exception.ParseException; import com.dfsek.terra.addons.terrascript.api.lang.Returnable; -import com.dfsek.terra.addons.terrascript.script.functions.EntityFunction; +import com.dfsek.terra.addons.terrascript.functions.EntityFunction; import com.dfsek.terra.api.TerraPlugin; import java.util.List; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/GetMarkFunctionBuilder.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/GetMarkFunctionBuilder.java similarity index 88% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/GetMarkFunctionBuilder.java rename to common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/GetMarkFunctionBuilder.java index 128094676..9a6dc21a6 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/GetMarkFunctionBuilder.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/GetMarkFunctionBuilder.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.addons.terrascript.script.builders; +package com.dfsek.terra.addons.terrascript.builders; import com.dfsek.terra.addons.terrascript.api.FunctionBuilder; import com.dfsek.terra.addons.terrascript.api.Position; import com.dfsek.terra.addons.terrascript.api.lang.Returnable; -import com.dfsek.terra.addons.terrascript.script.functions.GetMarkFunction; +import com.dfsek.terra.addons.terrascript.functions.GetMarkFunction; import java.util.List; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/LootFunctionBuilder.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/LootFunctionBuilder.java similarity index 88% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/LootFunctionBuilder.java rename to common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/LootFunctionBuilder.java index e4f354e31..496142117 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/LootFunctionBuilder.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/LootFunctionBuilder.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.addons.terrascript.script.builders; +package com.dfsek.terra.addons.terrascript.builders; import com.dfsek.terra.addons.terrascript.api.FunctionBuilder; import com.dfsek.terra.addons.terrascript.api.Position; +import com.dfsek.terra.addons.terrascript.api.StructureScript; import com.dfsek.terra.addons.terrascript.api.lang.Returnable; -import com.dfsek.terra.addons.terrascript.script.StructureScript; -import com.dfsek.terra.addons.terrascript.script.functions.LootFunction; +import com.dfsek.terra.addons.terrascript.functions.LootFunction; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.structure.LootTable; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/PullFunctionBuilder.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/PullFunctionBuilder.java similarity index 90% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/PullFunctionBuilder.java rename to common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/PullFunctionBuilder.java index 2c65dd9bf..25fb169b8 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/PullFunctionBuilder.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/PullFunctionBuilder.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.addons.terrascript.script.builders; +package com.dfsek.terra.addons.terrascript.builders; import com.dfsek.terra.addons.terrascript.api.FunctionBuilder; import com.dfsek.terra.addons.terrascript.api.Position; import com.dfsek.terra.addons.terrascript.api.exception.ParseException; import com.dfsek.terra.addons.terrascript.api.lang.Returnable; -import com.dfsek.terra.addons.terrascript.script.functions.PullFunction; +import com.dfsek.terra.addons.terrascript.functions.PullFunction; import com.dfsek.terra.api.TerraPlugin; import java.util.List; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RandomFunctionBuilder.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/RandomFunctionBuilder.java similarity index 86% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RandomFunctionBuilder.java rename to common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/RandomFunctionBuilder.java index fc52a9292..58517a564 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RandomFunctionBuilder.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/RandomFunctionBuilder.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.addons.terrascript.script.builders; +package com.dfsek.terra.addons.terrascript.builders; import com.dfsek.terra.addons.terrascript.api.FunctionBuilder; import com.dfsek.terra.addons.terrascript.api.Position; import com.dfsek.terra.addons.terrascript.api.exception.ParseException; import com.dfsek.terra.addons.terrascript.api.lang.Returnable; -import com.dfsek.terra.addons.terrascript.script.functions.RandomFunction; +import com.dfsek.terra.addons.terrascript.functions.RandomFunction; import java.util.List; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RecursionsFunctionBuilder.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/RecursionsFunctionBuilder.java similarity index 83% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RecursionsFunctionBuilder.java rename to common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/RecursionsFunctionBuilder.java index c4ad509fe..4c12b7faa 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RecursionsFunctionBuilder.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/RecursionsFunctionBuilder.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.addons.terrascript.script.builders; +package com.dfsek.terra.addons.terrascript.builders; import com.dfsek.terra.addons.terrascript.api.FunctionBuilder; import com.dfsek.terra.addons.terrascript.api.Position; import com.dfsek.terra.addons.terrascript.api.exception.ParseException; import com.dfsek.terra.addons.terrascript.api.lang.Returnable; -import com.dfsek.terra.addons.terrascript.script.functions.RecursionsFunction; +import com.dfsek.terra.addons.terrascript.functions.RecursionsFunction; import java.util.List; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/SetMarkFunctionBuilder.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/SetMarkFunctionBuilder.java similarity index 89% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/SetMarkFunctionBuilder.java rename to common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/SetMarkFunctionBuilder.java index c8abd46df..6acd00192 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/SetMarkFunctionBuilder.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/SetMarkFunctionBuilder.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.addons.terrascript.script.builders; +package com.dfsek.terra.addons.terrascript.builders; import com.dfsek.terra.addons.terrascript.api.FunctionBuilder; import com.dfsek.terra.addons.terrascript.api.Position; import com.dfsek.terra.addons.terrascript.api.exception.ParseException; import com.dfsek.terra.addons.terrascript.api.lang.Returnable; -import com.dfsek.terra.addons.terrascript.script.functions.SetMarkFunction; +import com.dfsek.terra.addons.terrascript.functions.SetMarkFunction; import java.util.List; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StateFunctionBuilder.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/StateFunctionBuilder.java similarity index 91% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StateFunctionBuilder.java rename to common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/StateFunctionBuilder.java index d69c1fc3a..2d162d54f 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StateFunctionBuilder.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/StateFunctionBuilder.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.addons.terrascript.script.builders; +package com.dfsek.terra.addons.terrascript.builders; import com.dfsek.terra.addons.terrascript.api.FunctionBuilder; import com.dfsek.terra.addons.terrascript.api.Position; import com.dfsek.terra.addons.terrascript.api.exception.ParseException; import com.dfsek.terra.addons.terrascript.api.lang.Returnable; -import com.dfsek.terra.addons.terrascript.script.functions.StateFunction; +import com.dfsek.terra.addons.terrascript.functions.StateFunction; import com.dfsek.terra.api.TerraPlugin; import java.util.List; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StructureFunctionBuilder.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/StructureFunctionBuilder.java similarity index 92% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StructureFunctionBuilder.java rename to common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/StructureFunctionBuilder.java index db90bd9a2..168ce792c 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StructureFunctionBuilder.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/StructureFunctionBuilder.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.addons.terrascript.script.builders; +package com.dfsek.terra.addons.terrascript.builders; import com.dfsek.terra.addons.terrascript.api.FunctionBuilder; import com.dfsek.terra.addons.terrascript.api.Position; import com.dfsek.terra.addons.terrascript.api.exception.ParseException; import com.dfsek.terra.addons.terrascript.api.lang.Returnable; -import com.dfsek.terra.addons.terrascript.script.functions.StructureFunction; +import com.dfsek.terra.addons.terrascript.functions.StructureFunction; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.structure.Structure; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryBooleanFunctionBuilder.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/UnaryBooleanFunctionBuilder.java similarity index 92% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryBooleanFunctionBuilder.java rename to common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/UnaryBooleanFunctionBuilder.java index ebdf37733..61f365cb2 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryBooleanFunctionBuilder.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/UnaryBooleanFunctionBuilder.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.terrascript.script.builders; +package com.dfsek.terra.addons.terrascript.builders; import com.dfsek.terra.addons.terrascript.api.Function; import com.dfsek.terra.addons.terrascript.api.FunctionBuilder; @@ -6,7 +6,7 @@ import com.dfsek.terra.addons.terrascript.api.ImplementationArguments; import com.dfsek.terra.addons.terrascript.api.Position; import com.dfsek.terra.addons.terrascript.api.lang.Returnable; import com.dfsek.terra.addons.terrascript.api.lang.Variable; -import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.api.TerraImplementationArguments; import java.util.List; import java.util.Map; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryNumberFunctionBuilder.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/UnaryNumberFunctionBuilder.java similarity index 96% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryNumberFunctionBuilder.java rename to common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/UnaryNumberFunctionBuilder.java index 76510b0b6..ac2d56c53 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryNumberFunctionBuilder.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/UnaryNumberFunctionBuilder.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.terrascript.script.builders; +package com.dfsek.terra.addons.terrascript.builders; import com.dfsek.terra.addons.terrascript.api.Function; import com.dfsek.terra.addons.terrascript.api.FunctionBuilder; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryStringFunctionBuilder.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/UnaryStringFunctionBuilder.java similarity index 96% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryStringFunctionBuilder.java rename to common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/UnaryStringFunctionBuilder.java index 174ab6dec..094671f3e 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryStringFunctionBuilder.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/UnaryStringFunctionBuilder.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.terrascript.script.builders; +package com.dfsek.terra.addons.terrascript.builders; import com.dfsek.terra.addons.terrascript.api.Function; import com.dfsek.terra.addons.terrascript.api.FunctionBuilder; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/ZeroArgFunctionBuilder.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/ZeroArgFunctionBuilder.java similarity index 92% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/ZeroArgFunctionBuilder.java rename to common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/ZeroArgFunctionBuilder.java index 36e718205..62294041a 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/ZeroArgFunctionBuilder.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/ZeroArgFunctionBuilder.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.terrascript.script.builders; +package com.dfsek.terra.addons.terrascript.builders; import com.dfsek.terra.addons.terrascript.api.Function; import com.dfsek.terra.addons.terrascript.api.FunctionBuilder; @@ -6,7 +6,7 @@ import com.dfsek.terra.addons.terrascript.api.ImplementationArguments; import com.dfsek.terra.addons.terrascript.api.Position; import com.dfsek.terra.addons.terrascript.api.lang.Returnable; import com.dfsek.terra.addons.terrascript.api.lang.Variable; -import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.api.TerraImplementationArguments; import java.util.List; import java.util.Map; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/BiomeFunction.java similarity index 93% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java rename to common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/BiomeFunction.java index 39bed1e39..3b35df91b 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/BiomeFunction.java @@ -1,11 +1,11 @@ -package com.dfsek.terra.addons.terrascript.script.functions; +package com.dfsek.terra.addons.terrascript.functions; import com.dfsek.terra.addons.terrascript.api.Function; import com.dfsek.terra.addons.terrascript.api.ImplementationArguments; import com.dfsek.terra.addons.terrascript.api.Position; import com.dfsek.terra.addons.terrascript.api.lang.Returnable; import com.dfsek.terra.addons.terrascript.api.lang.Variable; -import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.api.TerraImplementationArguments; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/BlockFunction.java similarity index 89% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java rename to common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/BlockFunction.java index 23bb67fc8..c96194a94 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/BlockFunction.java @@ -1,13 +1,13 @@ -package com.dfsek.terra.addons.terrascript.script.functions; +package com.dfsek.terra.addons.terrascript.functions; import com.dfsek.terra.addons.terrascript.api.Function; import com.dfsek.terra.addons.terrascript.api.ImplementationArguments; import com.dfsek.terra.addons.terrascript.api.Position; +import com.dfsek.terra.addons.terrascript.api.lang.ConstantExpression; import com.dfsek.terra.addons.terrascript.api.lang.Returnable; import com.dfsek.terra.addons.terrascript.api.lang.Variable; -import com.dfsek.terra.addons.terrascript.buffer.items.BufferedBlock; -import com.dfsek.terra.addons.terrascript.parser.lang.constants.StringConstant; -import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.api.buffer.items.BufferedBlock; +import com.dfsek.terra.addons.terrascript.api.TerraImplementationArguments; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.util.RotationUtil; @@ -70,7 +70,7 @@ public class BlockFunction implements Function { public static class Constant extends BlockFunction { private final BlockState state; - public Constant(Returnable x, Returnable y, Returnable z, StringConstant blockData, Returnable overwrite, TerraPlugin main, Position position) { + public Constant(Returnable x, Returnable y, Returnable z, ConstantExpression blockData, Returnable overwrite, TerraPlugin main, Position position) { super(x, y, z, blockData, overwrite, main, position); this.state = main.getWorldHandle().createBlockData(blockData.getConstant()); } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckBlockFunction.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/CheckBlockFunction.java similarity index 93% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckBlockFunction.java rename to common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/CheckBlockFunction.java index 351d4b3a6..ddaba9467 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckBlockFunction.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/CheckBlockFunction.java @@ -1,11 +1,11 @@ -package com.dfsek.terra.addons.terrascript.script.functions; +package com.dfsek.terra.addons.terrascript.functions; import com.dfsek.terra.addons.terrascript.api.Function; import com.dfsek.terra.addons.terrascript.api.ImplementationArguments; import com.dfsek.terra.addons.terrascript.api.Position; import com.dfsek.terra.addons.terrascript.api.lang.Returnable; import com.dfsek.terra.addons.terrascript.api.lang.Variable; -import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.api.TerraImplementationArguments; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckFunction.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/CheckFunction.java similarity index 95% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckFunction.java rename to common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/CheckFunction.java index d613969bb..72b6aae72 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckFunction.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/CheckFunction.java @@ -1,11 +1,11 @@ -package com.dfsek.terra.addons.terrascript.script.functions; +package com.dfsek.terra.addons.terrascript.functions; import com.dfsek.terra.addons.terrascript.api.Function; import com.dfsek.terra.addons.terrascript.api.ImplementationArguments; import com.dfsek.terra.addons.terrascript.api.Position; import com.dfsek.terra.addons.terrascript.api.lang.Returnable; import com.dfsek.terra.addons.terrascript.api.lang.Variable; -import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.api.TerraImplementationArguments; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/EntityFunction.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/EntityFunction.java similarity index 88% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/EntityFunction.java rename to common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/EntityFunction.java index b42109621..dd6e890ac 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/EntityFunction.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/EntityFunction.java @@ -1,14 +1,14 @@ -package com.dfsek.terra.addons.terrascript.script.functions; +package com.dfsek.terra.addons.terrascript.functions; import com.dfsek.terra.addons.terrascript.api.Function; import com.dfsek.terra.addons.terrascript.api.ImplementationArguments; import com.dfsek.terra.addons.terrascript.api.Position; import com.dfsek.terra.addons.terrascript.api.exception.ParseException; +import com.dfsek.terra.addons.terrascript.api.lang.ConstantExpression; import com.dfsek.terra.addons.terrascript.api.lang.Returnable; import com.dfsek.terra.addons.terrascript.api.lang.Variable; -import com.dfsek.terra.addons.terrascript.buffer.items.BufferedEntity; -import com.dfsek.terra.addons.terrascript.parser.lang.constants.ConstantExpression; -import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.api.buffer.items.BufferedEntity; +import com.dfsek.terra.addons.terrascript.api.TerraImplementationArguments; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.util.RotationUtil; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/GetMarkFunction.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/GetMarkFunction.java similarity index 92% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/GetMarkFunction.java rename to common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/GetMarkFunction.java index 967ce7c88..1640402f5 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/GetMarkFunction.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/GetMarkFunction.java @@ -1,11 +1,11 @@ -package com.dfsek.terra.addons.terrascript.script.functions; +package com.dfsek.terra.addons.terrascript.functions; import com.dfsek.terra.addons.terrascript.api.Function; import com.dfsek.terra.addons.terrascript.api.ImplementationArguments; import com.dfsek.terra.addons.terrascript.api.Position; import com.dfsek.terra.addons.terrascript.api.lang.Returnable; import com.dfsek.terra.addons.terrascript.api.lang.Variable; -import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.api.TerraImplementationArguments; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/LootFunction.java similarity index 89% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java rename to common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/LootFunction.java index c7d7bdb35..3d438697d 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/LootFunction.java @@ -1,13 +1,13 @@ -package com.dfsek.terra.addons.terrascript.script.functions; +package com.dfsek.terra.addons.terrascript.functions; import com.dfsek.terra.addons.terrascript.api.Function; import com.dfsek.terra.addons.terrascript.api.ImplementationArguments; import com.dfsek.terra.addons.terrascript.api.Position; +import com.dfsek.terra.addons.terrascript.api.StructureScript; import com.dfsek.terra.addons.terrascript.api.lang.Returnable; import com.dfsek.terra.addons.terrascript.api.lang.Variable; -import com.dfsek.terra.addons.terrascript.buffer.items.BufferedLootApplication; -import com.dfsek.terra.addons.terrascript.script.StructureScript; -import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.api.buffer.items.BufferedLootApplication; +import com.dfsek.terra.addons.terrascript.api.TerraImplementationArguments; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.structure.LootTable; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/PullFunction.java similarity index 88% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java rename to common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/PullFunction.java index eace8de3b..83ce3013f 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/PullFunction.java @@ -1,14 +1,14 @@ -package com.dfsek.terra.addons.terrascript.script.functions; +package com.dfsek.terra.addons.terrascript.functions; import com.dfsek.terra.addons.terrascript.api.Function; import com.dfsek.terra.addons.terrascript.api.ImplementationArguments; import com.dfsek.terra.addons.terrascript.api.Position; import com.dfsek.terra.addons.terrascript.api.exception.ParseException; +import com.dfsek.terra.addons.terrascript.api.lang.ConstantExpression; import com.dfsek.terra.addons.terrascript.api.lang.Returnable; import com.dfsek.terra.addons.terrascript.api.lang.Variable; -import com.dfsek.terra.addons.terrascript.buffer.items.BufferedPulledBlock; -import com.dfsek.terra.addons.terrascript.parser.lang.constants.ConstantExpression; -import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.api.buffer.items.BufferedPulledBlock; +import com.dfsek.terra.addons.terrascript.api.TerraImplementationArguments; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.util.RotationUtil; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RandomFunction.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/RandomFunction.java similarity index 89% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RandomFunction.java rename to common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/RandomFunction.java index e2d754c6d..d72718b71 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RandomFunction.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/RandomFunction.java @@ -1,11 +1,11 @@ -package com.dfsek.terra.addons.terrascript.script.functions; +package com.dfsek.terra.addons.terrascript.functions; import com.dfsek.terra.addons.terrascript.api.Function; import com.dfsek.terra.addons.terrascript.api.ImplementationArguments; import com.dfsek.terra.addons.terrascript.api.Position; import com.dfsek.terra.addons.terrascript.api.lang.Returnable; import com.dfsek.terra.addons.terrascript.api.lang.Variable; -import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.api.TerraImplementationArguments; import java.util.Map; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RecursionsFunction.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/RecursionsFunction.java similarity index 85% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RecursionsFunction.java rename to common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/RecursionsFunction.java index 5819350e3..72ddf4bce 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RecursionsFunction.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/RecursionsFunction.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.addons.terrascript.script.functions; +package com.dfsek.terra.addons.terrascript.functions; import com.dfsek.terra.addons.terrascript.api.Function; import com.dfsek.terra.addons.terrascript.api.ImplementationArguments; import com.dfsek.terra.addons.terrascript.api.Position; import com.dfsek.terra.addons.terrascript.api.lang.Variable; -import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.api.TerraImplementationArguments; import java.util.Map; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/SetMarkFunction.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/SetMarkFunction.java similarity index 92% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/SetMarkFunction.java rename to common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/SetMarkFunction.java index 3ab0c0d06..f8aea8adc 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/SetMarkFunction.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/SetMarkFunction.java @@ -1,11 +1,11 @@ -package com.dfsek.terra.addons.terrascript.script.functions; +package com.dfsek.terra.addons.terrascript.functions; import com.dfsek.terra.addons.terrascript.api.Function; import com.dfsek.terra.addons.terrascript.api.ImplementationArguments; import com.dfsek.terra.addons.terrascript.api.Position; import com.dfsek.terra.addons.terrascript.api.lang.Returnable; import com.dfsek.terra.addons.terrascript.api.lang.Variable; -import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.api.TerraImplementationArguments; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector3; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StateFunction.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/StateFunction.java similarity index 89% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StateFunction.java rename to common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/StateFunction.java index 8ac1f2666..531dbadd8 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StateFunction.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/StateFunction.java @@ -1,12 +1,12 @@ -package com.dfsek.terra.addons.terrascript.script.functions; +package com.dfsek.terra.addons.terrascript.functions; import com.dfsek.terra.addons.terrascript.api.Function; import com.dfsek.terra.addons.terrascript.api.ImplementationArguments; import com.dfsek.terra.addons.terrascript.api.Position; import com.dfsek.terra.addons.terrascript.api.lang.Returnable; import com.dfsek.terra.addons.terrascript.api.lang.Variable; -import com.dfsek.terra.addons.terrascript.buffer.items.BufferedStateManipulator; -import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.api.buffer.items.BufferedStateManipulator; +import com.dfsek.terra.addons.terrascript.api.TerraImplementationArguments; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/StructureFunction.java similarity index 94% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java rename to common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/StructureFunction.java index 2e660c20c..f0d56ae70 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/StructureFunction.java @@ -1,12 +1,12 @@ -package com.dfsek.terra.addons.terrascript.script.functions; +package com.dfsek.terra.addons.terrascript.functions; import com.dfsek.terra.addons.terrascript.api.Function; import com.dfsek.terra.addons.terrascript.api.ImplementationArguments; import com.dfsek.terra.addons.terrascript.api.Position; import com.dfsek.terra.addons.terrascript.api.lang.Returnable; import com.dfsek.terra.addons.terrascript.api.lang.Variable; -import com.dfsek.terra.addons.terrascript.buffer.IntermediateBuffer; -import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.api.buffer.IntermediateBuffer; +import com.dfsek.terra.addons.terrascript.api.TerraImplementationArguments; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.structure.Structure; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java index 738580e4d..28e4cc181 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java @@ -2,7 +2,7 @@ package com.dfsek.terra.addons.terrascript; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.terra.addons.terrascript.api.exception.ParseException; -import com.dfsek.terra.addons.terrascript.script.StructureScript; +import com.dfsek.terra.addons.terrascript.script.StructureScriptImpl; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.addon.annotations.Addon; @@ -36,7 +36,7 @@ public class TerraScriptAddon extends TerraAddon { event.getPack().getLoader().open("", ".tesf").thenEntries(entries -> { for(Map.Entry entry : entries) { try { - StructureScript structureScript = new StructureScript(entry.getValue(), main, structureRegistry, lootRegistry, event.getPack().getRegistryFactory().create()); + com.dfsek.terra.addons.terrascript.api.StructureScript structureScript = new StructureScriptImpl(entry.getValue(), main, structureRegistry, lootRegistry, event.getPack().getRegistryFactory().create()); structureRegistry.register(structureScript.getID(), structureScript); } catch(ParseException e) { throw new LoadException("Failed to load script: ", e); diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java index ccf09a819..102184255 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java @@ -9,7 +9,7 @@ import com.dfsek.terra.addons.terrascript.api.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.Block; import com.dfsek.terra.addons.terrascript.parser.lang.Keyword; import com.dfsek.terra.addons.terrascript.parser.lang.constants.BooleanConstant; -import com.dfsek.terra.addons.terrascript.parser.lang.constants.ConstantExpression; +import com.dfsek.terra.addons.terrascript.api.lang.ConstantExpression; import com.dfsek.terra.addons.terrascript.parser.lang.constants.NumericConstant; import com.dfsek.terra.addons.terrascript.parser.lang.constants.StringConstant; import com.dfsek.terra.addons.terrascript.parser.lang.keywords.flow.BreakKeyword; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/BooleanConstant.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/BooleanConstant.java index 1178385be..3b1a6cb91 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/BooleanConstant.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/BooleanConstant.java @@ -1,6 +1,7 @@ package com.dfsek.terra.addons.terrascript.parser.lang.constants; import com.dfsek.terra.addons.terrascript.api.Position; +import com.dfsek.terra.addons.terrascript.api.lang.ConstantExpression; public class BooleanConstant extends ConstantExpression { public BooleanConstant(Boolean constant, Position position) { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/NumericConstant.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/NumericConstant.java index ed3963183..ea434d792 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/NumericConstant.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/NumericConstant.java @@ -1,6 +1,7 @@ package com.dfsek.terra.addons.terrascript.parser.lang.constants; import com.dfsek.terra.addons.terrascript.api.Position; +import com.dfsek.terra.addons.terrascript.api.lang.ConstantExpression; import com.dfsek.terra.addons.terrascript.api.lang.Returnable; public class NumericConstant extends ConstantExpression { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/StringConstant.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/StringConstant.java index 878e3d328..eceae6669 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/StringConstant.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/StringConstant.java @@ -1,6 +1,7 @@ package com.dfsek.terra.addons.terrascript.parser.lang.constants; import com.dfsek.terra.addons.terrascript.api.Position; +import com.dfsek.terra.addons.terrascript.api.lang.ConstantExpression; import com.dfsek.terra.addons.terrascript.api.lang.Returnable; public class StringConstant extends ConstantExpression { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java deleted file mode 100644 index 08dd34cfe..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.dfsek.terra.addons.terrascript.script; - -import com.dfsek.terra.addons.terrascript.api.FunctionBuilder; -import com.dfsek.terra.addons.terrascript.api.exception.ParseException; -import com.dfsek.terra.addons.terrascript.api.lang.Returnable; -import com.dfsek.terra.addons.terrascript.buffer.DirectBuffer; -import com.dfsek.terra.addons.terrascript.buffer.StructureBuffer; -import com.dfsek.terra.addons.terrascript.parser.Parser; -import com.dfsek.terra.addons.terrascript.parser.lang.Block; -import com.dfsek.terra.addons.terrascript.script.builders.BinaryNumberFunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.builders.BiomeFunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.builders.BlockFunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.builders.CheckBlockFunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.builders.CheckFunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.builders.EntityFunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.builders.GetMarkFunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.builders.LootFunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.builders.PullFunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.builders.RandomFunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.builders.RecursionsFunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.builders.SetMarkFunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.builders.StateFunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.builders.StructureFunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.builders.UnaryBooleanFunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.builders.UnaryNumberFunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.builders.UnaryStringFunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.builders.ZeroArgFunctionBuilder; -import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.profiler.ProfileFrame; -import com.dfsek.terra.api.registry.Registry; -import com.dfsek.terra.api.structure.LootTable; -import com.dfsek.terra.api.structure.Structure; -import com.dfsek.terra.api.structure.buffer.Buffer; -import com.dfsek.terra.api.structure.rotation.Rotation; -import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.api.world.World; -import com.google.common.cache.Cache; -import com.google.common.cache.CacheBuilder; -import net.jafama.FastMath; -import org.apache.commons.io.IOUtils; - -import java.io.IOException; -import java.io.InputStream; -import java.nio.charset.Charset; -import java.util.Random; -import java.util.concurrent.ExecutionException; - -public class StructureScript implements Structure { - private final Block block; - private final String id; - private final Cache cache; - private final TerraPlugin main; - private String tempID; - - public StructureScript(InputStream inputStream, TerraPlugin main, Registry registry, Registry lootRegistry, Registry> functionRegistry) throws ParseException { - Parser parser; - try { - parser = new Parser(IOUtils.toString(inputStream, Charset.defaultCharset())); - } catch(IOException e) { - throw new RuntimeException(e); - } - - functionRegistry.forEach(parser::registerFunction); // Register registry functions. - - parser - .registerFunction("block", new BlockFunctionBuilder(main)) - .registerFunction("debugBlock", new BlockFunctionBuilder(main)) - .registerFunction("check", new CheckFunctionBuilder(main)) - .registerFunction("structure", new StructureFunctionBuilder(registry, main)) - .registerFunction("randomInt", new RandomFunctionBuilder()) - .registerFunction("recursions", new RecursionsFunctionBuilder()) - .registerFunction("setMark", new SetMarkFunctionBuilder()) - .registerFunction("getMark", new GetMarkFunctionBuilder()) - .registerFunction("pull", new PullFunctionBuilder(main)) - .registerFunction("loot", new LootFunctionBuilder(main, lootRegistry, this)) - .registerFunction("entity", new EntityFunctionBuilder(main)) - .registerFunction("getBiome", new BiomeFunctionBuilder(main)) - .registerFunction("getBlock", new CheckBlockFunctionBuilder()) - .registerFunction("state", new StateFunctionBuilder(main)) - .registerFunction("setWaterlog", new UnaryBooleanFunctionBuilder((waterlog, args) -> args.setWaterlog(waterlog))) - .registerFunction("originX", new ZeroArgFunctionBuilder(arguments -> arguments.getBuffer().getOrigin().getX(), Returnable.ReturnType.NUMBER)) - .registerFunction("originY", new ZeroArgFunctionBuilder(arguments -> arguments.getBuffer().getOrigin().getY(), Returnable.ReturnType.NUMBER)) - .registerFunction("originZ", new ZeroArgFunctionBuilder(arguments -> arguments.getBuffer().getOrigin().getZ(), Returnable.ReturnType.NUMBER)) - .registerFunction("rotation", new ZeroArgFunctionBuilder<>(arguments -> arguments.getRotation().toString(), Returnable.ReturnType.STRING)) - .registerFunction("rotationDegrees", new ZeroArgFunctionBuilder<>(arguments -> arguments.getRotation().getDegrees(), Returnable.ReturnType.NUMBER)) - .registerFunction("print", new UnaryStringFunctionBuilder(string -> main.getDebugLogger().info("[" + tempID + "] " + string))) - .registerFunction("abs", new UnaryNumberFunctionBuilder(number -> FastMath.abs(number.doubleValue()))) - .registerFunction("pow", new BinaryNumberFunctionBuilder((number, number2) -> FastMath.pow(number.doubleValue(), number2.doubleValue()))) - .registerFunction("sqrt", new UnaryNumberFunctionBuilder(number -> FastMath.sqrt(number.doubleValue()))) - .registerFunction("floor", new UnaryNumberFunctionBuilder(number -> FastMath.floor(number.doubleValue()))) - .registerFunction("ceil", new UnaryNumberFunctionBuilder(number -> FastMath.ceil(number.doubleValue()))) - .registerFunction("log", new UnaryNumberFunctionBuilder(number -> FastMath.log(number.doubleValue()))) - .registerFunction("round", new UnaryNumberFunctionBuilder(number -> FastMath.round(number.doubleValue()))) - .registerFunction("sin", new UnaryNumberFunctionBuilder(number -> FastMath.sin(number.doubleValue()))) - .registerFunction("cos", new UnaryNumberFunctionBuilder(number -> FastMath.cos(number.doubleValue()))) - .registerFunction("tan", new UnaryNumberFunctionBuilder(number -> FastMath.tan(number.doubleValue()))) - .registerFunction("asin", new UnaryNumberFunctionBuilder(number -> FastMath.asin(number.doubleValue()))) - .registerFunction("acos", new UnaryNumberFunctionBuilder(number -> FastMath.acos(number.doubleValue()))) - .registerFunction("atan", new UnaryNumberFunctionBuilder(number -> FastMath.atan(number.doubleValue()))) - .registerFunction("max", new BinaryNumberFunctionBuilder((number, number2) -> FastMath.max(number.doubleValue(), number2.doubleValue()))) - .registerFunction("min", new BinaryNumberFunctionBuilder((number, number2) -> FastMath.min(number.doubleValue(), number2.doubleValue()))); - - if(!main.getTerraConfig().isDebugScript()) { - parser.ignoreFunction("debugBlock"); - } - - block = parser.parse(); - this.id = parser.getID(); - tempID = id; - this.main = main; - this.cache = CacheBuilder.newBuilder().maximumSize(main.getTerraConfig().getStructureCache()).build(); - } - - @Override - @SuppressWarnings("try") - public boolean generate(Vector3 location, World world, Chunk chunk, Random random, Rotation rotation) { - try(ProfileFrame ignore = main.getProfiler().profile("terrascript_chunk:" + id)) { - StructureBuffer buffer = computeBuffer(location, world, random, rotation); - buffer.paste(location, chunk); - return buffer.succeeded(); - } - } - - @SuppressWarnings("try") - public boolean test(Vector3 location, World world, Random random, Rotation rotation) { - try(ProfileFrame ignore = main.getProfiler().profile("terrascript_test:" + id)) { - StructureBuffer buffer = computeBuffer(location, world, random, rotation); - return buffer.succeeded(); - } - } - - private StructureBuffer computeBuffer(Vector3 location, World world, Random random, Rotation rotation) { - try { - return cache.get(location, () -> { - StructureBuffer buf = new StructureBuffer(location); - buf.setSucceeded(applyBlock(new TerraImplementationArguments(buf, rotation, random, world, 0))); - return buf; - }); - } catch(ExecutionException e) { - throw new RuntimeException(e); - } - } - - @Override - @SuppressWarnings("try") - public boolean generate(Buffer buffer, World world, Random random, Rotation rotation, int recursions) { - try(ProfileFrame ignore = main.getProfiler().profile("terrascript_recursive:" + id)) { - return applyBlock(new TerraImplementationArguments(buffer, rotation, random, world, recursions)); - } - } - - @Override - @SuppressWarnings("try") - public boolean generate(Vector3 location, World world, Random random, Rotation rotation) { - try(ProfileFrame ignore = main.getProfiler().profile("terrascript_direct:" + id)) { - DirectBuffer buffer = new DirectBuffer(location, world); - return applyBlock(new TerraImplementationArguments(buffer, rotation, random, world, 0)); - } - } - - @Override - public String getID() { - return id; - } - - private boolean applyBlock(TerraImplementationArguments arguments) { - try { - return block.apply(arguments).getLevel() != Block.ReturnLevel.FAIL; - } catch(RuntimeException e) { - main.logger().severe("Failed to generate structure at " + arguments.getBuffer().getOrigin() + ": " + e.getMessage()); - main.getDebugLogger().stack(e); - return false; - } - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScriptImpl.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScriptImpl.java new file mode 100644 index 000000000..9b0b3fc09 --- /dev/null +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScriptImpl.java @@ -0,0 +1,117 @@ +package com.dfsek.terra.addons.terrascript.script; + +import com.dfsek.terra.addons.terrascript.api.FunctionBuilder; +import com.dfsek.terra.addons.terrascript.api.StructureScript; +import com.dfsek.terra.addons.terrascript.api.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.api.buffer.DirectBuffer; +import com.dfsek.terra.addons.terrascript.api.buffer.StructureBuffer; +import com.dfsek.terra.addons.terrascript.api.exception.ParseException; +import com.dfsek.terra.addons.terrascript.parser.Parser; +import com.dfsek.terra.addons.terrascript.parser.lang.Block; +import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.profiler.ProfileFrame; +import com.dfsek.terra.api.registry.Registry; +import com.dfsek.terra.api.structure.LootTable; +import com.dfsek.terra.api.structure.Structure; +import com.dfsek.terra.api.structure.buffer.Buffer; +import com.dfsek.terra.api.structure.rotation.Rotation; +import com.dfsek.terra.api.vector.Vector3; +import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.world.World; +import com.google.common.cache.Cache; +import com.google.common.cache.CacheBuilder; +import org.apache.commons.io.IOUtils; + +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.Charset; +import java.util.Random; +import java.util.concurrent.ExecutionException; + +public class StructureScriptImpl implements StructureScript { + private final Block block; + private final String id; + private final Cache cache; + private final TerraPlugin main; + private String tempID; + + public StructureScriptImpl(InputStream inputStream, TerraPlugin main, Registry registry, Registry lootRegistry, Registry> functionRegistry) throws ParseException { + Parser parser; + try { + parser = new Parser(IOUtils.toString(inputStream, Charset.defaultCharset())); + } catch(IOException e) { + throw new RuntimeException(e); + } + + functionRegistry.forEach(parser::registerFunction); // Register registry functions. + + block = parser.parse(); + this.id = parser.getID(); + tempID = id; + this.main = main; + this.cache = CacheBuilder.newBuilder().maximumSize(main.getTerraConfig().getStructureCache()).build(); + } + + @Override + @SuppressWarnings("try") + public boolean generate(Vector3 location, World world, Chunk chunk, Random random, Rotation rotation) { + try(ProfileFrame ignore = main.getProfiler().profile("terrascript_chunk:" + id)) { + StructureBuffer buffer = computeBuffer(location, world, random, rotation); + buffer.paste(location, chunk); + return buffer.succeeded(); + } + } + + @Override + @SuppressWarnings("try") + public boolean test(Vector3 location, World world, Random random, Rotation rotation) { + try(ProfileFrame ignore = main.getProfiler().profile("terrascript_test:" + id)) { + StructureBuffer buffer = computeBuffer(location, world, random, rotation); + return buffer.succeeded(); + } + } + + private StructureBuffer computeBuffer(Vector3 location, World world, Random random, Rotation rotation) { + try { + return cache.get(location, () -> { + StructureBuffer buf = new StructureBuffer(location); + buf.setSucceeded(applyBlock(new TerraImplementationArguments(buf, rotation, random, world, 0))); + return buf; + }); + } catch(ExecutionException e) { + throw new RuntimeException(e); + } + } + + @Override + @SuppressWarnings("try") + public boolean generate(Buffer buffer, World world, Random random, Rotation rotation, int recursions) { + try(ProfileFrame ignore = main.getProfiler().profile("terrascript_recursive:" + id)) { + return applyBlock(new TerraImplementationArguments(buffer, rotation, random, world, recursions)); + } + } + + @Override + @SuppressWarnings("try") + public boolean generate(Vector3 location, World world, Random random, Rotation rotation) { + try(ProfileFrame ignore = main.getProfiler().profile("terrascript_direct:" + id)) { + DirectBuffer buffer = new DirectBuffer(location, world); + return applyBlock(new TerraImplementationArguments(buffer, rotation, random, world, 0)); + } + } + + @Override + public String getID() { + return id; + } + + private boolean applyBlock(TerraImplementationArguments arguments) { + try { + return block.apply(arguments).getLevel() != Block.ReturnLevel.FAIL; + } catch(RuntimeException e) { + main.logger().severe("Failed to generate structure at " + arguments.getBuffer().getOrigin() + ": " + e.getMessage()); + main.getDebugLogger().stack(e); + return false; + } + } +}