diff --git a/build.gradle b/build.gradle index 8d6579c0a..a614f23db 100644 --- a/build.gradle +++ b/build.gradle @@ -32,7 +32,7 @@ plugins { } group 'com.volmit.iris' -version '1.7' +version '1.7.1' def apiVersion = '1.17' def name = getRootProject().getName() // See settings.gradle def main = 'com.volmit.iris.Iris' @@ -153,6 +153,10 @@ repositories { // maven { allowInsecureProtocol true, url 'http://archive.arcane.art/repository/arcane'} } +compileJava { + options.compilerArgs << '-parameters' +} + shadowJar { minimize() diff --git a/src/main/java/com/volmit/iris/core/IrisSettings.java b/src/main/java/com/volmit/iris/core/IrisSettings.java index ed02347d9..9d8de9366 100644 --- a/src/main/java/com/volmit/iris/core/IrisSettings.java +++ b/src/main/java/com/volmit/iris/core/IrisSettings.java @@ -129,6 +129,7 @@ public class IrisSettings { public boolean systemEntitySpawnOverrides = true; public boolean systemEntityInitialSpawns = true; public int maxBiomeChildDepth = 4; + public boolean preventLeafDecay = true; } @Data diff --git a/src/main/java/com/volmit/iris/util/data/B.java b/src/main/java/com/volmit/iris/util/data/B.java index ff96be0b9..15de96ad3 100644 --- a/src/main/java/com/volmit/iris/util/data/B.java +++ b/src/main/java/com/volmit/iris/util/data/B.java @@ -19,6 +19,7 @@ package com.volmit.iris.util.data; import com.volmit.iris.Iris; +import com.volmit.iris.core.IrisSettings; import com.volmit.iris.util.collection.KList; import com.volmit.iris.util.collection.KMap; import com.volmit.iris.util.collection.KSet; @@ -156,10 +157,15 @@ public class B { bx = Bukkit.createBlockData(ix); } - if (bx instanceof Leaves) { + if (bx instanceof Leaves && IrisSettings.get().getGenerator().preventLeafDecay) { ((Leaves) bx).setPersistent(true); } + else if(bx instanceof Leaves) + { + ((Leaves) bx).setPersistent(false); + } + blockDataCache.put(ix, bx); return bx; } catch (Exception e) { diff --git a/src/main/java/com/volmit/iris/util/decree/DecreeParameterHandler.java b/src/main/java/com/volmit/iris/util/decree/DecreeParameterHandler.java index 9d7d437eb..e52d54fd4 100644 --- a/src/main/java/com/volmit/iris/util/decree/DecreeParameterHandler.java +++ b/src/main/java/com/volmit/iris/util/decree/DecreeParameterHandler.java @@ -23,6 +23,8 @@ import com.volmit.iris.util.decree.exceptions.DecreeParsingException; import com.volmit.iris.util.decree.exceptions.DecreeWhichException; import org.jetbrains.annotations.NotNull; +import java.util.concurrent.atomic.AtomicReference; + public interface DecreeParameterHandler { /** * Should return the possible values for this type @@ -111,4 +113,55 @@ public interface DecreeParameterHandler { { return "NOEXAMPLE"; } + + default double getMultiplier(AtomicReference g) + { + double multiplier = 1; + String in = g.get(); + boolean valid = true; + while(valid) { + boolean trim = false; + if (in.toLowerCase().endsWith("k")) + { + multiplier *= 1000; + trim = true; + } + + else if(in.toLowerCase().endsWith("m")) + { + multiplier *= 1000000; + trim = true; + } + + else if(in.toLowerCase().endsWith("h")) + { + multiplier *= 100; + trim = true; + } + + else if(in.toLowerCase().endsWith("c")) + { + multiplier *= 16; + trim = true; + } + + else if(in.toLowerCase().endsWith("r")) + { + multiplier *= (16 * 32); + trim = true; + } + + else { + valid = false; + } + + if(trim) + { + in = in.substring(0, in.length() - 1); + } + } + + g.set(in); + return multiplier; + } } diff --git a/src/main/java/com/volmit/iris/util/decree/handlers/DoubleHandler.java b/src/main/java/com/volmit/iris/util/decree/handlers/DoubleHandler.java index 45c4c7b92..0fc5577ea 100644 --- a/src/main/java/com/volmit/iris/util/decree/handlers/DoubleHandler.java +++ b/src/main/java/com/volmit/iris/util/decree/handlers/DoubleHandler.java @@ -24,6 +24,8 @@ import com.volmit.iris.util.decree.exceptions.DecreeParsingException; import com.volmit.iris.util.format.Form; import com.volmit.iris.util.math.RNG; +import java.util.concurrent.atomic.AtomicReference; + public class DoubleHandler implements DecreeParameterHandler { @Override public KList getPossibilities() { @@ -34,7 +36,9 @@ public class DoubleHandler implements DecreeParameterHandler { public Double parse(String in) throws DecreeParsingException { try { - return Double.parseDouble(in); + AtomicReference r = new AtomicReference<>(in); + double m = getMultiplier(r); + return Double.parseDouble(r.get()) * m; } catch(Throwable e) diff --git a/src/main/java/com/volmit/iris/util/decree/handlers/FloatHandler.java b/src/main/java/com/volmit/iris/util/decree/handlers/FloatHandler.java index 27f127f80..8f7942ca4 100644 --- a/src/main/java/com/volmit/iris/util/decree/handlers/FloatHandler.java +++ b/src/main/java/com/volmit/iris/util/decree/handlers/FloatHandler.java @@ -24,6 +24,8 @@ import com.volmit.iris.util.decree.exceptions.DecreeParsingException; import com.volmit.iris.util.format.Form; import com.volmit.iris.util.math.RNG; +import java.util.concurrent.atomic.AtomicReference; + public class FloatHandler implements DecreeParameterHandler { @Override public KList getPossibilities() { @@ -34,7 +36,9 @@ public class FloatHandler implements DecreeParameterHandler { public Float parse(String in) throws DecreeParsingException { try { - return Float.parseFloat(in); + AtomicReference r = new AtomicReference<>(in); + double m = getMultiplier(r); + return (float)(Float.parseFloat(r.get()) * m); } catch(Throwable e) diff --git a/src/main/java/com/volmit/iris/util/decree/handlers/IntegerHandler.java b/src/main/java/com/volmit/iris/util/decree/handlers/IntegerHandler.java index b9bb6f983..454866a2f 100644 --- a/src/main/java/com/volmit/iris/util/decree/handlers/IntegerHandler.java +++ b/src/main/java/com/volmit/iris/util/decree/handlers/IntegerHandler.java @@ -24,6 +24,9 @@ import com.volmit.iris.util.decree.exceptions.DecreeParsingException; import com.volmit.iris.util.format.Form; import com.volmit.iris.util.math.RNG; +import java.util.Locale; +import java.util.concurrent.atomic.AtomicReference; + public class IntegerHandler implements DecreeParameterHandler { @Override public KList getPossibilities() { @@ -34,7 +37,9 @@ public class IntegerHandler implements DecreeParameterHandler { public Integer parse(String in) throws DecreeParsingException { try { - return Integer.parseInt(in); + AtomicReference r = new AtomicReference<>(in); + double m = getMultiplier(r); + return (int)(Integer.valueOf(r.get()).doubleValue() * m); } catch(Throwable e) diff --git a/src/main/java/com/volmit/iris/util/decree/handlers/LongHandler.java b/src/main/java/com/volmit/iris/util/decree/handlers/LongHandler.java index 1d7085a16..cfe40ea33 100644 --- a/src/main/java/com/volmit/iris/util/decree/handlers/LongHandler.java +++ b/src/main/java/com/volmit/iris/util/decree/handlers/LongHandler.java @@ -23,6 +23,8 @@ import com.volmit.iris.util.decree.DecreeParameterHandler; import com.volmit.iris.util.decree.exceptions.DecreeParsingException; import com.volmit.iris.util.math.RNG; +import java.util.concurrent.atomic.AtomicReference; + public class LongHandler implements DecreeParameterHandler { @Override public KList getPossibilities() { @@ -33,7 +35,9 @@ public class LongHandler implements DecreeParameterHandler { public Long parse(String in) throws DecreeParsingException { try { - return Long.parseLong(in); + AtomicReference r = new AtomicReference<>(in); + double m = getMultiplier(r); + return (long)(Long.valueOf(r.get()).doubleValue() * m); } catch(Throwable e) diff --git a/src/main/java/com/volmit/iris/util/decree/handlers/ShortHandler.java b/src/main/java/com/volmit/iris/util/decree/handlers/ShortHandler.java index 6fb6d6ce4..174f20d47 100644 --- a/src/main/java/com/volmit/iris/util/decree/handlers/ShortHandler.java +++ b/src/main/java/com/volmit/iris/util/decree/handlers/ShortHandler.java @@ -23,6 +23,8 @@ import com.volmit.iris.util.decree.DecreeParameterHandler; import com.volmit.iris.util.decree.exceptions.DecreeParsingException; import com.volmit.iris.util.math.RNG; +import java.util.concurrent.atomic.AtomicReference; + public class ShortHandler implements DecreeParameterHandler { @Override public KList getPossibilities() { @@ -33,7 +35,9 @@ public class ShortHandler implements DecreeParameterHandler { public Short parse(String in) throws DecreeParsingException { try { - return Short.parseShort(in); + AtomicReference r = new AtomicReference<>(in); + double m = getMultiplier(r); + return (short)(Short.valueOf(r.get()).doubleValue() * m); } catch(Throwable e)