diff --git a/src/main/kotlin/dev/znci/rocket/scripting/ScriptManager.kt b/src/main/kotlin/dev/znci/rocket/scripting/ScriptManager.kt index 6c96679..6206ab8 100644 --- a/src/main/kotlin/dev/znci/rocket/scripting/ScriptManager.kt +++ b/src/main/kotlin/dev/znci/rocket/scripting/ScriptManager.kt @@ -17,6 +17,7 @@ package dev.znci.rocket.scripting import dev.znci.rocket.scripting.classes.Command import dev.znci.rocket.scripting.functions.* +import dev.znci.rocket.util.RocketEnums import org.bukkit.event.Event import java.io.File import org.luaj.vm2.Globals @@ -66,6 +67,11 @@ object ScriptManager { globals.set("commands", LuaCommands()) globals.set("http", LuaHTTPClient()) globals.set("location", LuaLocations()) + + globals.set("Material", RocketEnums.RocketMaterial.getLuaTable()) + globals.set("WorldType", RocketEnums.RocketWorldType.getLuaTable()) + globals.set("Environment", RocketEnums.RocketEnvironment.getLuaTable()) + val scriptResult = globals.load(text, "script", globals) scriptResult.call() diff --git a/src/main/kotlin/dev/znci/rocket/util/RocketEnum.kt b/src/main/kotlin/dev/znci/rocket/util/RocketEnum.kt new file mode 100644 index 0000000..6c1c795 --- /dev/null +++ b/src/main/kotlin/dev/znci/rocket/util/RocketEnum.kt @@ -0,0 +1,37 @@ +package dev.znci.rocket.util + +import org.bukkit.Material +import org.bukkit.World +import org.bukkit.WorldType +import org.luaj.vm2.LuaTable + +class RocketEnum(private val values: List) { + fun getValues(): List { + return values + } + + fun isValid(key: String): Boolean { + return values.contains(key) + } + + fun getLuaTable(): LuaTable { + val table = LuaTable() + + values.forEach() { value -> + table.set(value, value) + } + + return table + } +} + +fun > enumToStringList(enumClass: Class): List { + return enumClass.enumConstants.map { it.name } +} + + +data object RocketEnums { + val RocketMaterial = RocketEnum(enumToStringList(Material::class.java)) + val RocketWorldType = RocketEnum(enumToStringList(WorldType::class.java)) + val RocketEnvironment = RocketEnum(enumToStringList(World.Environment::class.java)) +} \ No newline at end of file