From 2e8bc8d56113fa799d53da9896bb23a9472c49df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB?= Date: Mon, 22 Aug 2022 22:55:28 -0500 Subject: [PATCH] sub structures use pos as origin --- .../script/functions/StructureFunction.java | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) 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-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java index 84245a763..e79ec1129 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java @@ -7,6 +7,8 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import com.dfsek.terra.api.util.vector.Vector3Int; + import net.jafama.FastMath; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -66,20 +68,24 @@ public class StructureFunction implements Function { String app = id.apply(implementationArguments, scope); + int xValue = FastMath.roundToInt(xz.getX()); + int yValue = y.apply(implementationArguments, scope).intValue(); + int zValue = FastMath.roundToInt(xz.getZ()); + Vector3Int origin = Vector3Int.of(xValue, yValue, zValue); return registry.getByID(app).map(script -> { if(script instanceof StructureScript structureScript) { - return structureScript.generate(arguments.getOrigin(), + return structureScript.generate(origin, arguments.getWorld() - .buffer(FastMath.roundToInt(xz.getX()), - y.apply(implementationArguments, scope).intValue(), - FastMath.roundToInt(xz.getZ())), + .buffer(xValue, + yValue, + zValue), arguments.getRotation(), arguments.getRecursions() + 1); } return script.generate(arguments.getOrigin(), arguments.getWorld() - .buffer(FastMath.roundToInt(xz.getX()), - y.apply(implementationArguments, scope).intValue(), - FastMath.roundToInt(xz.getZ())), + .buffer(xValue, + yValue, + zValue), arguments.getRotation()); }).orElseGet(() -> { LOGGER.error("No such structure {}", app);