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
3 changes: 3 additions & 0 deletions src/main/kotlin/dev/znci/rocket/Rocket.kt
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ package dev.znci.rocket

import dev.znci.rocket.commands.RocketCommand
import dev.znci.rocket.i18n.LocaleManager
import dev.znci.rocket.scripting.ScriptManager
import dev.znci.rocket.scripting.events.EventListener
import org.bukkit.plugin.java.JavaPlugin
import java.io.File
Expand Down Expand Up @@ -45,6 +46,8 @@ class Rocket : JavaPlugin() {
scriptsFolder.mkdirs()
}

ScriptManager.scriptsFolder = scriptsFolder

// Register commands
this.getCommand("rocket")?.setExecutor(RocketCommand(this))

Expand Down
29 changes: 25 additions & 4 deletions src/main/kotlin/dev/znci/rocket/commands/RocketCommand.kt
Original file line number Diff line number Diff line change
Expand Up @@ -17,22 +17,22 @@ package dev.znci.rocket.commands

import dev.znci.rocket.i18n.LocaleManager
import dev.znci.rocket.scripting.ScriptManager
import dev.znci.rocket.scripting.ScriptManager.scriptsFolder
import org.bukkit.command.Command
import org.bukkit.command.CommandExecutor
import org.bukkit.command.CommandSender
import org.bukkit.command.TabExecutor
import org.bukkit.plugin.java.JavaPlugin
import java.io.File

class RocketCommand(private val plugin: JavaPlugin) : CommandExecutor {
class RocketCommand(private val plugin: JavaPlugin) : TabExecutor {
override fun onCommand(sender: CommandSender, command: Command, label: String, args: Array<out String>): Boolean {
if (args.size != 2) {
sender.sendMessage(LocaleManager.getMessageAsComponent("rocket_command.usage"))
return true
}

val action = args[0].lowercase()
val scriptName = args[1]
val scriptsFolder = File(plugin.dataFolder, "scripts")
val scriptName = if (!args[1].endsWith(".lua")) "${args[1]}.lua" else args[1]

if (!scriptsFolder.exists() || !scriptsFolder.isDirectory) {
sender.sendMessage(LocaleManager.getMessageAsComponent("rocket_command.scripts_folder_not_found"))
Expand Down Expand Up @@ -88,4 +88,25 @@ class RocketCommand(private val plugin: JavaPlugin) : CommandExecutor {
}
return true
}

@Suppress("SENSELESS_COMPARISON")
override fun onTabComplete(
sender: CommandSender,
command: Command,
label: String,
args: Array<out String>
): MutableList<String>? {

if (!sender.isOp) return null
if (args.size == 1) {
return mutableListOf("reload", "disable")
} else if (args.size == 2) {
return if (args[0] == "reload") ScriptManager.getAllScripts().toMutableList()
else if (args[0] == "disable") ScriptManager.getAllScripts(false).toMutableList()
else null
}
return null

}

}
14 changes: 12 additions & 2 deletions src/main/kotlin/dev/znci/rocket/scripting/ScriptManager.kt
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,13 @@ package dev.znci.rocket.scripting

import dev.znci.rocket.scripting.classes.Command
import dev.znci.rocket.scripting.functions.*
import org.bukkit.entity.Player
import org.bukkit.event.Event
import java.io.File
import org.luaj.vm2.Globals
import org.luaj.vm2.LuaError
import org.luaj.vm2.LuaTable
import org.luaj.vm2.LuaValue
import org.luaj.vm2.lib.jse.JsePlatform
import java.util.ArrayList

object ScriptManager {
var scriptsFolder: File = File("")
Expand All @@ -47,6 +46,17 @@ object ScriptManager {
}
}

fun getAllScripts(includeDisabled: Boolean = true): List<String> {
val list = ArrayList<String>()
scriptsFolder.walkTopDown().forEach { file ->
if (file.isFile) {
if (includeDisabled && file.startsWith("-")) return@forEach
list.add(file.path.removePrefix("plugins/rocket/scripts/"))
}
}
return list
}

fun runScript(text: String): String? {
try {
globals.set("players", LuaPlayers())
Expand Down