diff --git a/lib/TerranVirtualDisk-src.jar b/lib/TerranVirtualDisk-src.jar index efc8d1d65..fd3d9d350 100644 Binary files a/lib/TerranVirtualDisk-src.jar and b/lib/TerranVirtualDisk-src.jar differ diff --git a/lib/TerranVirtualDisk.jar b/lib/TerranVirtualDisk.jar index 6a11b4951..b5fe5cbf4 100644 Binary files a/lib/TerranVirtualDisk.jar and b/lib/TerranVirtualDisk.jar differ diff --git a/src/net/torvald/terrarum/KVHashMap.kt b/src/net/torvald/terrarum/KVHashMap.kt index 0900058ef..6613d1a29 100644 --- a/src/net/torvald/terrarum/KVHashMap.kt +++ b/src/net/torvald/terrarum/KVHashMap.kt @@ -46,8 +46,6 @@ open class KVHashMap { if (value == null) return null -// if (value is JsonPrimitive) return value.asInt - return value as Int } @@ -58,12 +56,17 @@ open class KVHashMap { if (value is Int) return value.toDouble() -// else if (value is JsonPrimitive) return value.asDouble return value as Double } fun getAsFloat(key: String): Float? { + val value = get(key) + + if (value == null) return null + + if (value is Float) return value as Float + return getAsDouble(key)?.toFloat() } @@ -72,8 +75,6 @@ open class KVHashMap { if (value == null) return null -// if (value is JsonPrimitive) return value.asString - return value as String } @@ -82,8 +83,6 @@ open class KVHashMap { if (value == null) return null -// if (value is JsonPrimitive) return value.asBoolean - return value as Boolean } diff --git a/src/net/torvald/terrarum/Terrarum.kt b/src/net/torvald/terrarum/Terrarum.kt index 19ed2abf4..d20f02be6 100644 --- a/src/net/torvald/terrarum/Terrarum.kt +++ b/src/net/torvald/terrarum/Terrarum.kt @@ -12,6 +12,7 @@ import com.badlogic.gdx.graphics.glutils.ShapeRenderer import com.badlogic.gdx.utils.Disposable import com.jme3.math.FastMath import net.torvald.UnsafeHelper +import net.torvald.gdx.graphics.Cvec import net.torvald.random.HQRNG import net.torvald.terrarum.AppLoader.* import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE @@ -654,4 +655,16 @@ val MaterialCodex: MaterialCodex val FactionCodex: FactionCodex get() = Terrarum.factionCodex val Apocryphas: HashMap - get() = Terrarum.apocryphas \ No newline at end of file + get() = Terrarum.apocryphas + +class Codex : KVHashMap() { + + fun getAsCvec(key: String): Cvec? { + val value = get(key) + + if (value == null) return null + + return value as Cvec + } + +} \ No newline at end of file diff --git a/src/net/torvald/terrarum/blockproperties/BlockProp.kt b/src/net/torvald/terrarum/blockproperties/BlockProp.kt index 44bce4a99..27b79cd0d 100644 --- a/src/net/torvald/terrarum/blockproperties/BlockProp.kt +++ b/src/net/torvald/terrarum/blockproperties/BlockProp.kt @@ -95,4 +95,9 @@ class BlockProp { @Transient var rngBase0 = Math.random().toFloat() // initial cycle phase (xxxxFuncX) @Transient var rngBase1 = Math.random().toFloat() // flicker P0, etc @Transient var rngBase2 = Math.random().toFloat() // flicker P1, etc + + /** + * Mainly intended to be used by third-party modules + */ + val extra = Codex() } \ No newline at end of file diff --git a/src/net/torvald/terrarum/blockproperties/WireProp.kt b/src/net/torvald/terrarum/blockproperties/WireProp.kt index bbe4f7cd5..48e5d6d3a 100644 --- a/src/net/torvald/terrarum/blockproperties/WireProp.kt +++ b/src/net/torvald/terrarum/blockproperties/WireProp.kt @@ -1,5 +1,6 @@ package net.torvald.terrarum.blockproperties +import net.torvald.terrarum.Codex import net.torvald.terrarum.gameitem.ItemID /** @@ -19,4 +20,8 @@ class WireProp { var canBranch: Boolean = true + /** + * Mainly intended to be used by third-party modules + */ + val extra = Codex() } \ No newline at end of file diff --git a/src/net/torvald/terrarum/gameactors/faction/Faction.kt b/src/net/torvald/terrarum/gameactors/faction/Faction.kt index 9271c09d8..dd8acaa0d 100644 --- a/src/net/torvald/terrarum/gameactors/faction/Faction.kt +++ b/src/net/torvald/terrarum/gameactors/faction/Faction.kt @@ -18,6 +18,11 @@ class Faction(name: String) : Comparable { lateinit var factionFearful: HashSet var referenceID: FactionID = generateUniqueID() + /** + * Mainly intended to be used by third-party modules + */ + val extra = Codex() + init { factionAmicable = HashSet() factionNeutral = HashSet() diff --git a/src/net/torvald/terrarum/gameitem/GameItem.kt b/src/net/torvald/terrarum/gameitem/GameItem.kt index 1ec2b4e86..a68baed39 100644 --- a/src/net/torvald/terrarum/gameitem/GameItem.kt +++ b/src/net/torvald/terrarum/gameitem/GameItem.kt @@ -143,6 +143,11 @@ abstract class GameItem(val originalID: ItemID) : Comparable, Cloneabl @Transient var using = false // Always false when loaded from savegame + /** + * Mainly intended to be used by third-party modules + */ + open val extra = Codex() + /** * Effects applied continuously while in pocket */ diff --git a/src/net/torvald/terrarum/itemproperties/Material.kt b/src/net/torvald/terrarum/itemproperties/Material.kt index 68ff82aea..553b03d8f 100644 --- a/src/net/torvald/terrarum/itemproperties/Material.kt +++ b/src/net/torvald/terrarum/itemproperties/Material.kt @@ -1,6 +1,7 @@ package net.torvald.terrarum.itemproperties import net.torvald.terrarum.AppLoader.printmsg +import net.torvald.terrarum.Codex import net.torvald.terrarum.blockproperties.floatVal import net.torvald.terrarum.blockproperties.intVal import net.torvald.terrarum.utils.CSVFetcher @@ -24,6 +25,11 @@ class Material { var durability: Int = 0 // tools only var identifier: String = "Name not set" + + /** + * Mainly intended to be used by third-party modules + */ + val extra = Codex() } class MaterialCodex {