From c1232298b32c219f53f09149509272df026b3b6f Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 10 Aug 2021 09:14:47 -0700 Subject: [PATCH] replace implementation arguments with context --- ...ionArguments.java => TerraProperties.java} | 5 +++-- .../builders/BinaryNumberFunctionBuilder.java | 2 +- .../builders/UnaryBooleanFunctionBuilder.java | 8 ++++---- .../builders/UnaryNumberFunctionBuilder.java | 2 +- .../builders/UnaryStringFunctionBuilder.java | 2 +- .../builders/ZeroArgFunctionBuilder.java | 8 ++++---- .../terrascript/functions/BiomeFunction.java | 13 ++++++------ .../terrascript/functions/BlockFunction.java | 20 +++++++++---------- .../functions/CheckBlockFunction.java | 10 +++++----- .../terrascript/functions/CheckFunction.java | 8 ++++---- .../terrascript/functions/EntityFunction.java | 8 ++++---- .../functions/GetMarkFunction.java | 8 ++++---- .../terrascript/functions/LootFunction.java | 10 +++++----- .../terrascript/functions/PullFunction.java | 8 ++++---- .../terrascript/functions/RandomFunction.java | 4 ++-- .../functions/RecursionsFunction.java | 4 ++-- .../functions/SetMarkFunction.java | 8 ++++---- .../terrascript/functions/StateFunction.java | 8 ++++---- .../functions/StructureFunction.java | 12 +++++------ .../addons/terrascript/parser/lang/Block.java | 6 +++--- .../lang/keywords/looplike/ForKeyword.java | 4 ++-- .../lang/keywords/looplike/IfKeyword.java | 8 ++++---- .../lang/keywords/looplike/WhileKeyword.java | 4 ++-- .../lang/operations/BinaryOperation.java | 2 +- .../lang/operations/UnaryOperation.java | 2 +- .../parser/lang/variables/Assignment.java | 4 ++-- .../parser/lang/variables/Declaration.java | 2 +- .../script/StructureScriptImpl.java | 15 ++++++++------ .../src/test/java/structure/ParserTest.java | 6 +++--- 29 files changed, 102 insertions(+), 99 deletions(-) rename common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/{TerraImplementationArguments.java => TerraProperties.java} (84%) diff --git a/common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/TerraImplementationArguments.java b/common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/TerraProperties.java similarity index 84% rename from common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/TerraImplementationArguments.java rename to common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/TerraProperties.java index c9189bd05..9bdad98ac 100644 --- a/common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/TerraImplementationArguments.java +++ b/common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/TerraProperties.java @@ -1,13 +1,14 @@ package com.dfsek.terra.addons.terrascript.api; import com.dfsek.terra.addons.terrascript.api.ImplementationArguments; +import com.dfsek.terra.api.properties.Properties; import com.dfsek.terra.api.structure.buffer.Buffer; import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.api.world.World; import java.util.Random; -public class TerraImplementationArguments implements ImplementationArguments { +public class TerraProperties implements Properties { private final Buffer buffer; private final Rotation rotation; private final Random random; @@ -15,7 +16,7 @@ public class TerraImplementationArguments implements ImplementationArguments { private final int recursions; private boolean waterlog = false; - public TerraImplementationArguments(Buffer buffer, Rotation rotation, Random random, World world, int recursions) { + public TerraProperties(Buffer buffer, Rotation rotation, Random random, World world, int recursions) { this.buffer = buffer; this.rotation = rotation; this.random = random; diff --git a/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/BinaryNumberFunctionBuilder.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/BinaryNumberFunctionBuilder.java index 619fc9764..a4fb5ef3d 100644 --- a/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/BinaryNumberFunctionBuilder.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/BinaryNumberFunctionBuilder.java @@ -30,7 +30,7 @@ public class BinaryNumberFunctionBuilder implements FunctionBuilder> variableMap) { - return function.apply(((Returnable) argumentList.get(0)).apply(, implementationArguments, variableMap), ((Returnable) argumentList.get(1)).apply(, implementationArguments, variableMap)); + return function.apply(((Returnable) argumentList.get(0)).apply(context, variableMap), ((Returnable) argumentList.get(1)).apply(context, variableMap)); } @Override diff --git a/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/UnaryBooleanFunctionBuilder.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/UnaryBooleanFunctionBuilder.java index 357cdc2b6..ec449b451 100644 --- a/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/UnaryBooleanFunctionBuilder.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/UnaryBooleanFunctionBuilder.java @@ -5,7 +5,7 @@ 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.api.lang.Variable; -import com.dfsek.terra.addons.terrascript.api.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.api.TerraProperties; import com.dfsek.terra.api.properties.Context; import java.util.List; @@ -14,9 +14,9 @@ import java.util.function.BiConsumer; public class UnaryBooleanFunctionBuilder implements FunctionBuilder> { - private final BiConsumer function; + private final BiConsumer function; - public UnaryBooleanFunctionBuilder(BiConsumer function) { + public UnaryBooleanFunctionBuilder(BiConsumer function) { this.function = function; } @@ -31,7 +31,7 @@ public class UnaryBooleanFunctionBuilder implements FunctionBuilder> variableMap) { - function.accept(((Returnable) argumentList.get(0)).apply(, implementationArguments, variableMap), (TerraImplementationArguments) implementationArguments); + function.accept(((Returnable) argumentList.get(0)).apply(context, variableMap), context.get(TerraProperties.class)); return null; } diff --git a/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/UnaryNumberFunctionBuilder.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/UnaryNumberFunctionBuilder.java index 7f2f384f9..813435290 100644 --- a/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/UnaryNumberFunctionBuilder.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/UnaryNumberFunctionBuilder.java @@ -29,7 +29,7 @@ public class UnaryNumberFunctionBuilder implements FunctionBuilder> variableMap) { - return function.apply(((Returnable) argumentList.get(0)).apply(, implementationArguments, variableMap)); + return function.apply(((Returnable) argumentList.get(0)).apply(context, variableMap)); } @Override diff --git a/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/UnaryStringFunctionBuilder.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/UnaryStringFunctionBuilder.java index 0409e1750..3c35effda 100644 --- a/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/UnaryStringFunctionBuilder.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/UnaryStringFunctionBuilder.java @@ -29,7 +29,7 @@ public class UnaryStringFunctionBuilder implements FunctionBuilder> variableMap) { - function.accept(((Returnable) argumentList.get(0)).apply(, implementationArguments, variableMap)); + function.accept(((Returnable) argumentList.get(0)).apply(context, variableMap)); return null; } diff --git a/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/ZeroArgFunctionBuilder.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/ZeroArgFunctionBuilder.java index a3ef576b0..2a63f354f 100644 --- a/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/ZeroArgFunctionBuilder.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/ZeroArgFunctionBuilder.java @@ -5,17 +5,17 @@ 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.api.lang.Variable; -import com.dfsek.terra.addons.terrascript.api.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.api.TerraProperties; import com.dfsek.terra.api.properties.Context; import java.util.List; import java.util.Map; public class ZeroArgFunctionBuilder implements FunctionBuilder> { - private final java.util.function.Function function; + private final java.util.function.Function function; private final Returnable.ReturnType type; - public ZeroArgFunctionBuilder(java.util.function.Function function, Returnable.ReturnType type) { + public ZeroArgFunctionBuilder(java.util.function.Function function, Returnable.ReturnType type) { this.function = function; this.type = type; } @@ -30,7 +30,7 @@ public class ZeroArgFunctionBuilder implements FunctionBuilder> { @Override public T apply(Context context, Map> variableMap) { - return function.apply((TerraImplementationArguments) implementationArguments); + return function.apply(context.get(TerraProperties.class)); } @Override diff --git a/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/BiomeFunction.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/BiomeFunction.java index b3b5b1fc8..7711f9b6a 100644 --- a/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/BiomeFunction.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/BiomeFunction.java @@ -2,9 +2,9 @@ package com.dfsek.terra.addons.terrascript.functions; import com.dfsek.terra.addons.terrascript.api.Function; import com.dfsek.terra.addons.terrascript.api.Position; +import com.dfsek.terra.addons.terrascript.api.TerraProperties; import com.dfsek.terra.addons.terrascript.api.lang.Returnable; import com.dfsek.terra.addons.terrascript.api.lang.Variable; -import com.dfsek.terra.addons.terrascript.api.TerraImplementationArguments; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.properties.Context; import com.dfsek.terra.api.util.RotationUtil; @@ -32,15 +32,14 @@ public class BiomeFunction implements Function { @Override public String apply(Context context, Map> variableMap) { - TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; + TerraProperties properties = context.get(TerraProperties.class); + Vector2 xz = new Vector2(x.apply(context, variableMap).doubleValue(), z.apply(context, variableMap).doubleValue()); - Vector2 xz = new Vector2(x.apply(, implementationArguments, variableMap).doubleValue(), z.apply(, implementationArguments, variableMap).doubleValue()); + RotationUtil.rotateVector(xz, properties.getRotation()); - RotationUtil.rotateVector(xz, arguments.getRotation()); + BiomeProvider grid = properties.getWorld().getBiomeProvider(); - BiomeProvider grid = arguments.getWorld().getBiomeProvider(); - - return grid.getBiome(arguments.getBuffer().getOrigin().clone().add(new Vector3(FastMath.roundToInt(xz.getX()), y.apply(, implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ()))), arguments.getWorld().getSeed()).getID(); + return grid.getBiome(properties.getBuffer().getOrigin().clone().add(new Vector3(FastMath.roundToInt(xz.getX()), y.apply(context, variableMap).intValue(), FastMath.roundToInt(xz.getZ()))), properties.getWorld().getSeed()).getID(); } diff --git a/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/BlockFunction.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/BlockFunction.java index 84ffef363..f46bd620f 100644 --- a/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/BlockFunction.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/BlockFunction.java @@ -7,7 +7,7 @@ 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.api.buffer.items.BufferedBlock; -import com.dfsek.terra.addons.terrascript.api.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.api.TerraProperties; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.properties.Context; @@ -37,25 +37,25 @@ public class BlockFunction implements Function { this.position = position; } - void setBlock(ImplementationArguments implementationArguments, Map> variableMap, TerraImplementationArguments arguments, BlockState rot) { - Vector2 xz = new Vector2(x.apply(, implementationArguments, variableMap).doubleValue(), z.apply(, implementationArguments, variableMap).doubleValue()); + void setBlock(Context context, Map> variableMap, TerraProperties arguments, BlockState rot) { + Vector2 xz = new Vector2(x.apply(context, variableMap).doubleValue(), z.apply(context, variableMap).doubleValue()); RotationUtil.rotateVector(xz, arguments.getRotation()); RotationUtil.rotateBlockData(rot, arguments.getRotation().inverse()); - arguments.getBuffer().addItem(new BufferedBlock(rot, overwrite.apply(, implementationArguments, variableMap), main, arguments.isWaterlog()), new Vector3(FastMath.roundToInt(xz.getX()), y.apply(, implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ()))); + arguments.getBuffer().addItem(new BufferedBlock(rot, overwrite.apply(context, variableMap), main, arguments.isWaterlog()), new Vector3(FastMath.roundToInt(xz.getX()), y.apply(context, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ()))); } @Override public Void apply(Context context, Map> variableMap) { - TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - BlockState rot = getBlockState(implementationArguments, variableMap).clone(); - setBlock(implementationArguments, variableMap, arguments, rot); + TerraProperties arguments = context.get(TerraProperties.class); + BlockState rot = getBlockState(context, variableMap).clone(); + setBlock(context, variableMap, arguments, rot); return null; } - protected BlockState getBlockState(ImplementationArguments arguments, Map> variableMap) { - return data.computeIfAbsent(blockData.apply(, arguments, variableMap), main.getWorldHandle()::createBlockData); + protected BlockState getBlockState(Context context, Map> variableMap) { + return data.computeIfAbsent(blockData.apply(context, variableMap), main.getWorldHandle()::createBlockData); } @Override @@ -77,7 +77,7 @@ public class BlockFunction implements Function { } @Override - protected BlockState getBlockState(ImplementationArguments arguments, Map> variableMap) { + protected BlockState getBlockState(Context arguments, Map> variableMap) { return state; } } diff --git a/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/CheckBlockFunction.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/CheckBlockFunction.java index 9917a1350..05a378c7b 100644 --- a/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/CheckBlockFunction.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/CheckBlockFunction.java @@ -4,7 +4,7 @@ import com.dfsek.terra.addons.terrascript.api.Function; 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.api.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.api.TerraProperties; import com.dfsek.terra.api.properties.Context; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; @@ -27,13 +27,13 @@ public class CheckBlockFunction implements Function { @Override public String apply(Context context, Map> variableMap) { - TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; + TerraProperties properties = context.get(TerraProperties.class); - Vector2 xz = new Vector2(x.apply(, implementationArguments, variableMap).doubleValue(), z.apply(, implementationArguments, variableMap).doubleValue()); + Vector2 xz = new Vector2(x.apply(context, variableMap).doubleValue(), z.apply(context, variableMap).doubleValue()); - RotationUtil.rotateVector(xz, arguments.getRotation()); + RotationUtil.rotateVector(xz, properties.getRotation()); - String data = arguments.getWorld().getBlockData(arguments.getBuffer().getOrigin().clone().add(new Vector3(FastMath.roundToInt(xz.getX()), y.apply(, implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ())))).getAsString(); + String data = properties.getWorld().getBlockData(properties.getBuffer().getOrigin().clone().add(new Vector3(FastMath.roundToInt(xz.getX()), y.apply(context, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ())))).getAsString(); if(data.contains("[")) return data.substring(0, data.indexOf('[')); // Strip properties else return data; } diff --git a/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/CheckFunction.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/CheckFunction.java index 6d140a13f..727385ab8 100644 --- a/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/CheckFunction.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/CheckFunction.java @@ -4,7 +4,7 @@ import com.dfsek.terra.addons.terrascript.api.Function; 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.api.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.api.TerraProperties; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.properties.Context; import com.dfsek.terra.api.util.RotationUtil; @@ -34,14 +34,14 @@ public class CheckFunction implements Function { public String apply(Context context, Map> variableMap) { - TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; + TerraProperties arguments = context.get(TerraProperties.class); - Vector2 xz = new Vector2(x.apply(, implementationArguments, variableMap).doubleValue(), z.apply(, implementationArguments, variableMap).doubleValue()); + Vector2 xz = new Vector2(x.apply(context, variableMap).doubleValue(), z.apply(context, variableMap).doubleValue()); RotationUtil.rotateVector(xz, arguments.getRotation()); - Vector3 location = arguments.getBuffer().getOrigin().clone().add(new Vector3(FastMath.roundToInt(xz.getX()), y.apply(, implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ()))); + Vector3 location = arguments.getBuffer().getOrigin().clone().add(new Vector3(FastMath.roundToInt(xz.getX()), y.apply(context, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ()))); return apply(location, arguments.getWorld()); } diff --git a/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/EntityFunction.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/EntityFunction.java index 97053082b..c51a6abd1 100644 --- a/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/EntityFunction.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/EntityFunction.java @@ -7,7 +7,7 @@ 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.api.buffer.items.BufferedEntity; -import com.dfsek.terra.addons.terrascript.api.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.api.TerraProperties; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.properties.Context; @@ -36,12 +36,12 @@ public class EntityFunction implements Function { @Override public Void apply(Context context, Map> variableMap) { - TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = new Vector2(x.apply(, implementationArguments, variableMap).doubleValue(), z.apply(, implementationArguments, variableMap).doubleValue()); + TerraProperties arguments = context.get(TerraProperties.class); + Vector2 xz = new Vector2(x.apply(context, variableMap).doubleValue(), z.apply(context, variableMap).doubleValue()); RotationUtil.rotateVector(xz, arguments.getRotation()); - arguments.getBuffer().addItem(new BufferedEntity(data, main), new Vector3(xz.getX(), y.apply(, implementationArguments, variableMap).doubleValue(), xz.getZ())); + arguments.getBuffer().addItem(new BufferedEntity(data, main), new Vector3(xz.getX(), y.apply(context, variableMap).doubleValue(), xz.getZ())); return null; } diff --git a/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/GetMarkFunction.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/GetMarkFunction.java index 34f989621..412d42a5c 100644 --- a/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/GetMarkFunction.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/GetMarkFunction.java @@ -4,7 +4,7 @@ import com.dfsek.terra.addons.terrascript.api.Function; 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.api.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.api.TerraProperties; import com.dfsek.terra.api.properties.Context; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; @@ -26,11 +26,11 @@ public class GetMarkFunction implements Function { @Override public String apply(Context context, Map> variableMap) { - TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = new Vector2(x.apply(, implementationArguments, variableMap).doubleValue(), z.apply(, implementationArguments, variableMap).doubleValue()); + TerraProperties arguments = context.get(TerraProperties.class); + Vector2 xz = new Vector2(x.apply(context, variableMap).doubleValue(), z.apply(context, variableMap).doubleValue()); RotationUtil.rotateVector(xz, arguments.getRotation()); - String mark = arguments.getBuffer().getMark(new Vector3(FastMath.floorToInt(xz.getX()), FastMath.floorToInt(y.apply(, implementationArguments, variableMap).doubleValue()), FastMath.floorToInt(xz.getZ()))); + String mark = arguments.getBuffer().getMark(new Vector3(FastMath.floorToInt(xz.getX()), FastMath.floorToInt(y.apply(context, variableMap).doubleValue()), FastMath.floorToInt(xz.getZ()))); return mark == null ? "" : mark; } diff --git a/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/LootFunction.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/LootFunction.java index 43bc64ffe..3df46c5e4 100644 --- a/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/LootFunction.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/LootFunction.java @@ -6,7 +6,7 @@ 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.api.buffer.items.BufferedLootApplication; -import com.dfsek.terra.addons.terrascript.api.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.api.TerraProperties; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.properties.Context; import com.dfsek.terra.api.registry.Registry; @@ -39,12 +39,12 @@ public class LootFunction implements Function { @Override public Void apply(Context context, Map> variableMap) { - TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = new Vector2(x.apply(, implementationArguments, variableMap).doubleValue(), z.apply(, implementationArguments, variableMap).doubleValue()); + TerraProperties arguments = context.get(TerraProperties.class); + Vector2 xz = new Vector2(x.apply(context, variableMap).doubleValue(), z.apply(context, variableMap).doubleValue()); RotationUtil.rotateVector(xz, arguments.getRotation()); - String id = data.apply(, implementationArguments, variableMap); + String id = data.apply(context, variableMap); LootTable table = registry.get(id); if(table == null) { @@ -52,7 +52,7 @@ public class LootFunction implements Function { return null; } - arguments.getBuffer().addItem(new BufferedLootApplication(table, main, script), new Vector3(FastMath.roundToInt(xz.getX()), y.apply(, implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ()))); + arguments.getBuffer().addItem(new BufferedLootApplication(table, main, script), new Vector3(FastMath.roundToInt(xz.getX()), y.apply(context, variableMap).intValue(), FastMath.roundToInt(xz.getZ()))); return null; } diff --git a/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/PullFunction.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/PullFunction.java index da09bd245..aa39a08cb 100644 --- a/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/PullFunction.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/PullFunction.java @@ -7,7 +7,7 @@ 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.api.buffer.items.BufferedPulledBlock; -import com.dfsek.terra.addons.terrascript.api.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.api.TerraProperties; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.properties.Context; @@ -35,13 +35,13 @@ public class PullFunction implements Function { @Override public Void apply(Context context, Map> variableMap) { - TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = new Vector2(x.apply(, implementationArguments, variableMap).doubleValue(), z.apply(, implementationArguments, variableMap).doubleValue()); + TerraProperties arguments = context.get(TerraProperties.class); + Vector2 xz = new Vector2(x.apply(context, variableMap).doubleValue(), z.apply(context, variableMap).doubleValue()); RotationUtil.rotateVector(xz, arguments.getRotation()); BlockState rot = data.clone(); RotationUtil.rotateBlockData(rot, arguments.getRotation().inverse()); - arguments.getBuffer().addItem(new BufferedPulledBlock(rot), new Vector3(FastMath.roundToInt(xz.getX()), y.apply(, implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ()))); + arguments.getBuffer().addItem(new BufferedPulledBlock(rot), new Vector3(FastMath.roundToInt(xz.getX()), y.apply(context, variableMap).intValue(), FastMath.roundToInt(xz.getZ()))); return null; } diff --git a/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/RandomFunction.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/RandomFunction.java index 674f0f0fc..115a95a80 100644 --- a/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/RandomFunction.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/RandomFunction.java @@ -4,7 +4,7 @@ import com.dfsek.terra.addons.terrascript.api.Function; 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.api.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.api.TerraProperties; import com.dfsek.terra.api.properties.Context; import java.util.Map; @@ -26,7 +26,7 @@ public class RandomFunction implements Function { @Override public Integer apply(Context context, Map> variableMap) { - return ((TerraImplementationArguments) implementationArguments).getRandom().nextInt(numberReturnable.apply(, implementationArguments, variableMap).intValue()); + return context.get(TerraProperties.class).getRandom().nextInt(numberReturnable.apply(context, variableMap).intValue()); } @Override diff --git a/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/RecursionsFunction.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/RecursionsFunction.java index 681cfbff7..53aa29f24 100644 --- a/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/RecursionsFunction.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/RecursionsFunction.java @@ -3,7 +3,7 @@ package com.dfsek.terra.addons.terrascript.functions; import com.dfsek.terra.addons.terrascript.api.Function; import com.dfsek.terra.addons.terrascript.api.Position; import com.dfsek.terra.addons.terrascript.api.lang.Variable; -import com.dfsek.terra.addons.terrascript.api.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.api.TerraProperties; import com.dfsek.terra.api.properties.Context; import java.util.Map; @@ -22,7 +22,7 @@ public class RecursionsFunction implements Function { @Override public Number apply(Context context, Map> variableMap) { - return ((TerraImplementationArguments) implementationArguments).getRecursions(); + return context.get(TerraProperties.class).getRecursions(); } @Override diff --git a/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/SetMarkFunction.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/SetMarkFunction.java index 8be4d5bcb..956f211bc 100644 --- a/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/SetMarkFunction.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/SetMarkFunction.java @@ -4,7 +4,7 @@ import com.dfsek.terra.addons.terrascript.api.Function; 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.api.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.api.TerraProperties; import com.dfsek.terra.api.properties.Context; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.vector.Vector2; @@ -28,12 +28,12 @@ public class SetMarkFunction implements Function { @Override public Void apply(Context context, Map> variableMap) { - TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = new Vector2(x.apply(, implementationArguments, variableMap).doubleValue(), z.apply(, implementationArguments, variableMap).doubleValue()); + TerraProperties arguments = context.get(TerraProperties.class); + Vector2 xz = new Vector2(x.apply(context, variableMap).doubleValue(), z.apply(context, variableMap).doubleValue()); RotationUtil.rotateVector(xz, arguments.getRotation()); - arguments.getBuffer().setMark(mark.apply(, implementationArguments, variableMap), new Vector3(FastMath.floorToInt(xz.getX()), FastMath.floorToInt(y.apply(, implementationArguments, variableMap).doubleValue()), FastMath.floorToInt(xz.getZ()))); + arguments.getBuffer().setMark(mark.apply(context, variableMap), new Vector3(FastMath.floorToInt(xz.getX()), FastMath.floorToInt(y.apply(context, variableMap).doubleValue()), FastMath.floorToInt(xz.getZ()))); return null; } diff --git a/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/StateFunction.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/StateFunction.java index f44add61a..b4cf820da 100644 --- a/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/StateFunction.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/StateFunction.java @@ -5,7 +5,7 @@ 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.api.buffer.items.BufferedStateManipulator; -import com.dfsek.terra.addons.terrascript.api.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.api.TerraProperties; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.properties.Context; import com.dfsek.terra.api.util.RotationUtil; @@ -32,11 +32,11 @@ public class StateFunction implements Function { @Override public Void apply(Context context, Map> variableMap) { - TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = new Vector2(x.apply(, implementationArguments, variableMap).doubleValue(), z.apply(, implementationArguments, variableMap).doubleValue()); + TerraProperties arguments = context.get(TerraProperties.class); + Vector2 xz = new Vector2(x.apply(context, variableMap).doubleValue(), z.apply(context, variableMap).doubleValue()); RotationUtil.rotateVector(xz, arguments.getRotation()); - arguments.getBuffer().addItem(new BufferedStateManipulator(main, data.apply(, implementationArguments, variableMap)), new Vector3(FastMath.roundToInt(xz.getX()), y.apply(, implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ()))); + arguments.getBuffer().addItem(new BufferedStateManipulator(main, data.apply(context, variableMap)), new Vector3(FastMath.roundToInt(xz.getX()), y.apply(context, variableMap).intValue(), FastMath.roundToInt(xz.getZ()))); return null; } diff --git a/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/StructureFunction.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/StructureFunction.java index f62f3d120..5fedfa11e 100644 --- a/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/StructureFunction.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/functions/StructureFunction.java @@ -5,7 +5,7 @@ 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.api.buffer.IntermediateBuffer; -import com.dfsek.terra.addons.terrascript.api.TerraImplementationArguments; +import com.dfsek.terra.addons.terrascript.api.TerraProperties; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.properties.Context; import com.dfsek.terra.api.registry.Registry; @@ -45,16 +45,16 @@ public class StructureFunction implements Function { @Override public Boolean apply(Context context, Map> variableMap) { - TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; + TerraProperties arguments = context.get(TerraProperties.class); if(arguments.getRecursions() > main.getTerraConfig().getMaxRecursion()) throw new RuntimeException("Structure recursion too deep: " + arguments.getRecursions()); - Vector2 xz = new Vector2(x.apply(, implementationArguments, variableMap).doubleValue(), z.apply(, implementationArguments, variableMap).doubleValue()); + Vector2 xz = new Vector2(x.apply(context, variableMap).doubleValue(), z.apply(context, variableMap).doubleValue()); RotationUtil.rotateVector(xz, arguments.getRotation()); - String app = id.apply(, implementationArguments, variableMap); + String app = id.apply(context, variableMap); Structure script = registry.get(app); if(script == null) { main.logger().severe("No such structure " + app); @@ -62,7 +62,7 @@ public class StructureFunction implements Function { } Rotation rotation1; - String rotString = rotations.get(arguments.getRandom().nextInt(rotations.size())).apply(, implementationArguments, variableMap); + String rotString = rotations.get(arguments.getRandom().nextInt(rotations.size())).apply(context, variableMap); try { rotation1 = Rotation.valueOf(rotString); } catch(IllegalArgumentException e) { @@ -70,7 +70,7 @@ public class StructureFunction implements Function { return null; } - Vector3 offset = new Vector3(FastMath.roundToInt(xz.getX()), y.apply(, implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ())); + Vector3 offset = new Vector3(FastMath.roundToInt(xz.getX()), y.apply(context, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ())); return script.generate(new IntermediateBuffer(arguments.getBuffer(), offset), arguments.getWorld(), arguments.getRandom(), arguments.getRotation().rotate(rotation1), arguments.getRecursions() + 1); } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Block.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Block.java index 471ab2668..bcb04e843 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Block.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Block.java @@ -23,15 +23,15 @@ public class Block implements Item> { return items; } - public ReturnInfo apply(ImplementationArguments implementationArguments) { - return apply(, implementationArguments, new HashMap<>()); + public ReturnInfo apply(Context context) { + return apply(context, new HashMap<>()); } @Override public ReturnInfo apply(Context context, Map> variableMap) { Map> scope = new HashMap<>(variableMap); for(Item item : items) { - Object result = item.apply(, implementationArguments, scope); + Object result = item.apply(context, scope); if(result instanceof ReturnInfo) { ReturnInfo level = (ReturnInfo) result; if(!level.getLevel().equals(ReturnLevel.NONE)) return level; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/ForKeyword.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/ForKeyword.java index 6d0e540bc..838a2519c 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/ForKeyword.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/ForKeyword.java @@ -27,8 +27,8 @@ public class ForKeyword implements Keyword> { @Override public Block.ReturnInfo apply(Context context, Map> variableMap) { - for(initializer.apply(, implementationArguments, variableMap); statement.apply(, implementationArguments, variableMap); incrementer.apply(, implementationArguments, variableMap)) { - Block.ReturnInfo level = conditional.apply(, implementationArguments, variableMap); + for(initializer.apply(context, variableMap); statement.apply(context, variableMap); incrementer.apply(context, variableMap)) { + Block.ReturnInfo level = conditional.apply(context, variableMap); if(level.getLevel().equals(Block.ReturnLevel.BREAK)) break; if(level.getLevel().isReturnFast()) return level; } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/IfKeyword.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/IfKeyword.java index e0c58f2d1..21edde118 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/IfKeyword.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/IfKeyword.java @@ -28,14 +28,14 @@ public class IfKeyword implements Keyword> { @Override public Block.ReturnInfo apply(Context context, Map> variableMap) { - if(statement.apply(, implementationArguments, variableMap)) return conditional.apply(, implementationArguments, variableMap); + if(statement.apply(context, variableMap)) return conditional.apply(context, variableMap); else { for(Pair, Block> pair : elseIf) { - if(pair.getLeft().apply(, implementationArguments, variableMap)) { - return pair.getRight().apply(, implementationArguments, variableMap); + if(pair.getLeft().apply(context, variableMap)) { + return pair.getRight().apply(context, variableMap); } } - if(elseBlock != null) return elseBlock.apply(, implementationArguments, variableMap); + if(elseBlock != null) return elseBlock.apply(context, variableMap); } return new Block.ReturnInfo<>(Block.ReturnLevel.NONE, null); } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/WhileKeyword.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/WhileKeyword.java index ebe0b6daf..2977c0bb5 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/WhileKeyword.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/WhileKeyword.java @@ -22,8 +22,8 @@ public class WhileKeyword implements Keyword> { @Override public Block.ReturnInfo apply(Context context, Map> variableMap) { - while(statement.apply(, implementationArguments, variableMap)) { - Block.ReturnInfo level = conditional.apply(, implementationArguments, variableMap); + while(statement.apply(context, variableMap)) { + Block.ReturnInfo level = conditional.apply(context, variableMap); if(level.getLevel().equals(Block.ReturnLevel.BREAK)) break; if(level.getLevel().isReturnFast()) return level; } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BinaryOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BinaryOperation.java index da0de0009..ea6f66de5 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BinaryOperation.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BinaryOperation.java @@ -27,6 +27,6 @@ public abstract class BinaryOperation implements Returnable { @Override public O apply(Context context, Map> variableMap) { - return apply(left.apply(, implementationArguments, variableMap), right.apply(, implementationArguments, variableMap)); + return apply(left.apply(context, variableMap), right.apply(context, variableMap)); } } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/UnaryOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/UnaryOperation.java index 85d624cf3..9e4373ac6 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/UnaryOperation.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/UnaryOperation.java @@ -20,7 +20,7 @@ public abstract class UnaryOperation implements Returnable { @Override public T apply(Context context, Map> variableMap) { - return apply(input.apply(, implementationArguments, variableMap)); + return apply(input.apply(context, variableMap)); } @Override diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Assignment.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Assignment.java index 46beae6b0..febc9fb1a 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Assignment.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Assignment.java @@ -21,8 +21,8 @@ public class Assignment implements Item { @SuppressWarnings("unchecked") @Override - public synchronized T apply(Context context, Map> variableMap) { - T val = value.apply(, implementationArguments, variableMap); + public T apply(Context context, Map> variableMap) { + T val = value.apply(context, variableMap); ((Variable) variableMap.get(identifier)).setValue(val); return val; } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Declaration.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Declaration.java index 910087c32..1f29586c1 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Declaration.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Declaration.java @@ -31,7 +31,7 @@ public class Declaration implements Item { @Override public T apply(Context context, Map> variableMap) { - T result = value.apply(, implementationArguments, variableMap); + T result = value.apply(context, variableMap); switch(type) { case NUMBER: variableMap.put(identifier, new NumberVariable((Number) result, position)); 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 index 9b0b3fc09..2847e2b83 100644 --- 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 @@ -2,7 +2,7 @@ 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.TerraProperties; 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; @@ -10,6 +10,7 @@ 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.properties.Context; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.structure.LootTable; import com.dfsek.terra.api.structure.Structure; @@ -75,7 +76,7 @@ public class StructureScriptImpl implements StructureScript { try { return cache.get(location, () -> { StructureBuffer buf = new StructureBuffer(location); - buf.setSucceeded(applyBlock(new TerraImplementationArguments(buf, rotation, random, world, 0))); + buf.setSucceeded(applyBlock(new TerraProperties(buf, rotation, random, world, 0))); return buf; }); } catch(ExecutionException e) { @@ -87,7 +88,7 @@ public class StructureScriptImpl implements StructureScript { @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)); + return applyBlock(new TerraProperties(buffer, rotation, random, world, recursions)); } } @@ -96,7 +97,7 @@ public class StructureScriptImpl implements StructureScript { 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)); + return applyBlock(new TerraProperties(buffer, rotation, random, world, 0)); } } @@ -105,9 +106,11 @@ public class StructureScriptImpl implements StructureScript { return id; } - private boolean applyBlock(TerraImplementationArguments arguments) { + private boolean applyBlock(TerraProperties arguments) { try { - return block.apply(arguments).getLevel() != Block.ReturnLevel.FAIL; + Context context = new Context(); + context.put(arguments); + return block.apply(context).getLevel() != Block.ReturnLevel.FAIL; } catch(RuntimeException e) { main.logger().severe("Failed to generate structure at " + arguments.getBuffer().getOrigin() + ": " + e.getMessage()); main.getDebugLogger().stack(e); diff --git a/common/addons/structure-terrascript-loader/src/test/java/structure/ParserTest.java b/common/addons/structure-terrascript-loader/src/test/java/structure/ParserTest.java index 8b53254b4..6f9760297 100644 --- a/common/addons/structure-terrascript-loader/src/test/java/structure/ParserTest.java +++ b/common/addons/structure-terrascript-loader/src/test/java/structure/ParserTest.java @@ -54,9 +54,9 @@ public class ParserTest { long t = System.nanoTime() - l; System.out.println("Took " + (double) t / 1000000); - block.apply(, null, new HashMap<>()); + block.apply(null, new HashMap<>()); - block.apply(, null, new HashMap<>()); + block.apply(null, new HashMap<>()); } private static class Test1 implements Function { @@ -72,7 +72,7 @@ public class ParserTest { @Override public Void apply(Context context, Map> variableMap) { - System.out.println("string: " + a.apply(, implementationArguments, variableMap) + ", double: " + b.apply(, implementationArguments, variableMap)); + System.out.println("string: " + a.apply(context, variableMap) + ", double: " + b.apply(context, variableMap)); return null; }