From fb505fe28ba9b741b327cc67673ea7b8f80d1c21 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 8 Aug 2021 12:22:54 -0700 Subject: [PATCH] constant returnable helper method --- .../terrascript/api/lang/Returnable.java | 24 +++++++++++++++++++ .../builders/BlockFunctionBuilder.java | 17 +------------ 2 files changed, 25 insertions(+), 16 deletions(-) diff --git a/common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/lang/Returnable.java b/common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/lang/Returnable.java index 7562fb31b..1287665ad 100644 --- a/common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/lang/Returnable.java +++ b/common/addons/api-terrascript/src/main/java/com/dfsek/terra/addons/terrascript/api/lang/Returnable.java @@ -1,5 +1,10 @@ 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 java.util.Map; + public interface Returnable extends Item { ReturnType returnType(); @@ -16,4 +21,23 @@ public interface Returnable extends Item { return comparable; } } + + static Returnable constant(T value, ReturnType type, Position position) { + return new Returnable() { + @Override + public ReturnType returnType() { + return type; + } + + @Override + public T apply(ImplementationArguments implementationArguments, Map> variableMap) { + return value; + } + + @Override + public Position getPosition() { + return position; + } + }; + } } diff --git a/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/BlockFunctionBuilder.java b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/BlockFunctionBuilder.java index ed2a61bb8..f3e36c142 100644 --- a/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/BlockFunctionBuilder.java +++ b/common/addons/structure-terrascript-functions/src/main/java/com/dfsek/terra/addons/terrascript/builders/BlockFunctionBuilder.java @@ -24,22 +24,7 @@ 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 Returnable() { - @Override - public ReturnType returnType() { - return ReturnType.BOOLEAN; - } - - @Override - public Boolean apply(ImplementationArguments implementationArguments, Map> variableMap) { - return true; - } - - @Override - public Position getPosition() { - return position; - } - }; + Returnable booleanReturnable = Returnable.constant(true, Returnable.ReturnType.BOOLEAN, position); if(argumentList.size() == 5) booleanReturnable = (Returnable) argumentList.get(4); 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);