Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions src/main/kotlin/dev/znci/rocket/scripting/ScriptManager.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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()
Expand Down
37 changes: 37 additions & 0 deletions src/main/kotlin/dev/znci/rocket/util/RocketEnum.kt
Original file line number Diff line number Diff line change
@@ -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<String>) {
fun getValues(): List<String> {
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 <T : Enum<T>> enumToStringList(enumClass: Class<T>): List<String> {
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))
}