From 99af49661b953674c08efcd6e80665549e062492 Mon Sep 17 00:00:00 2001 From: gnembon Date: Mon, 30 Sep 2019 10:39:25 -0300 Subject: [PATCH] added string ops and biome getter --- .../java/carpet/script/CarpetExpression.java | 12 ++++++++++++ src/main/java/carpet/script/Expression.java | 16 ++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/src/main/java/carpet/script/CarpetExpression.java b/src/main/java/carpet/script/CarpetExpression.java index 0ab51a92..c80dee86 100644 --- a/src/main/java/carpet/script/CarpetExpression.java +++ b/src/main/java/carpet/script/CarpetExpression.java @@ -400,6 +400,8 @@ public class CarpetExpression * place_item('piston,x,y,z,'down') // places a piston facing down * place_item('carrot',x,y,z) // attempts to plant a carrot plant. Returns true if could place carrots at that position. * + *

biome(pos)

+ *

returns biome at that block position.

*

set_biome(pos, biome_name)

*

changes biome at that block position.

*

update(pos)

@@ -997,6 +999,16 @@ public class CarpetExpression return (_c, _t) -> res; }); + this.expr.addLazyFunction("biome", -1, (c, t, lv) -> { + CarpetContext cc = (CarpetContext)c; + BlockValue.LocatorResult locator = BlockValue.fromParams(cc, lv, 0); + ServerWorld world = cc.s.getWorld(); + BlockPos pos = locator.block.getPos(); + Biome biome = world.getBiome(pos); + Value res = new StringValue(biome.getTranslationKey().replaceFirst("^biome\\.minecraft\\.", "")); + return (_c, _t) -> res; + }); + this.expr.addLazyFunction("set_biome", -1, (c, t, lv) -> { CarpetContext cc = (CarpetContext)c; BlockValue.LocatorResult locator = BlockValue.fromParams(cc, lv, 0); diff --git a/src/main/java/carpet/script/Expression.java b/src/main/java/carpet/script/Expression.java index f3256963..a812c876 100644 --- a/src/main/java/carpet/script/Expression.java +++ b/src/main/java/carpet/script/Expression.java @@ -20,6 +20,7 @@ import carpet.script.value.ListValue; import carpet.script.value.NumericValue; import carpet.script.value.StringValue; import carpet.script.value.Value; +import org.apache.commons.lang3.text.WordUtils; import java.math.BigInteger; import java.util.ArrayList; @@ -2288,6 +2289,14 @@ public class Expression implements Cloneable *
*

Auxiliary functions

* + *

lower(expr), uppper(expr), title(expr)

+ *

Returns lowercase, uppercase or titlecase representation of a string representation of the passed expression

+ *
+     * lower('aBc') => 'abc'
+     * upper('aBc') => 'ABC'
+     * title('aBc') => 'Abc'
+     * 
+ * *

length(expr)

*

Returns length of the expression, the length of the string, * the length of the integer part of the number, or length of the list

@@ -2483,6 +2492,13 @@ public class Expression implements Cloneable } }); + addUnaryFunction("lower", v -> new StringValue(v.getString().toLowerCase(Locale.ROOT))); + + addUnaryFunction("upper", v -> new StringValue(v.getString().toUpperCase(Locale.ROOT))); + + addUnaryFunction("title", v -> new StringValue(WordUtils.capitalizeFully(v.getString()))); + + addUnaryFunction("type", v -> new StringValue(v.getTypeString())); addUnaryFunction("length", v -> new NumericValue(v.length()));