Skip to content

Commit f6dd4b0

Browse files
committed
Update FileListener.
1 parent 24134d0 commit f6dd4b0

File tree

3 files changed

+49
-20
lines changed

3 files changed

+49
-20
lines changed

common/src/main/kotlin/me/scoretwo/fastscript/api/script/ScriptManager.kt

Lines changed: 46 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,14 @@ import me.scoretwo.utils.bukkit.configuration.yaml.ConfigurationSection
1313
import me.scoretwo.utils.bukkit.configuration.yaml.patchs.getLowerCaseNode
1414
import me.scoretwo.utils.sender.GlobalSender
1515
import me.scoretwo.utils.syntaxes.save
16+
import org.apache.commons.io.monitor.FileAlterationListener
17+
import org.apache.commons.io.monitor.FileAlterationMonitor
18+
import org.apache.commons.io.monitor.FileAlterationObserver
1619
import java.io.File
1720

1821
class ScriptManager {
1922

20-
val folders = mutableListOf(File(plugin.dataFolder, "scripts"))
23+
private val folders = mutableMapOf<File, FileAlterationListener>()
2124

2225
val scripts = mutableMapOf<String, CustomScript>()
2326

@@ -27,10 +30,36 @@ class ScriptManager {
2730

2831
var operationCount = 0
2932

33+
val defaultFolder: File get() {
34+
folders.forEach {
35+
return it.key
36+
}
37+
return File("")
38+
}
39+
40+
private fun addFolder(folder: File) {
41+
folders[folder] = object : FileAlterationListener {
42+
override fun onStart(observer: FileAlterationObserver) {}
43+
override fun onDirectoryCreate(file: File) {}
44+
override fun onDirectoryChange(file: File) {}
45+
override fun onDirectoryDelete(file: File) {}
46+
override fun onFileCreate(file: File) {}
47+
override fun onFileDelete(file: File) {}
48+
override fun onStop(observer: FileAlterationObserver) {}
49+
override fun onFileChange(file: File) {
50+
println(file.name + " changed.")
51+
52+
53+
54+
}
55+
}
56+
}
57+
3058
init {
31-
if (!folders[0].exists()) {
32-
folders[0].mkdirs()
33-
File(folders[0], "example.js").writeText(
59+
addFolder(File(plugin.dataFolder, "scripts"))
60+
if (!defaultFolder.exists()) {
61+
defaultFolder.mkdirs()
62+
File(defaultFolder, "example.js").writeText(
3463
"""
3564
function main() {
3665
sender.sendMessage("§athis is demo.")
@@ -163,9 +192,11 @@ class ScriptManager {
163192
var fail = 0
164193
scripts.clear()
165194

166-
folders.addAll(mutableListOf<File>().also { files -> settings.getStringList(settings.getLowerCaseNode("load-script-files")).forEach { files.add(File(it)) } })
195+
settings.getStringList(settings.getLowerCaseNode("load-script-files")).forEach {
196+
addFolder(File(it))
197+
}
167198

168-
folders.forEach { file ->
199+
folders.keys.forEach { file ->
169200
if (file.isDirectory && file.exists()) file.listFiles()?.forEach {
170201
loadScript(it).also {
171202
total++
@@ -181,6 +212,15 @@ class ScriptManager {
181212
}
182213
}
183214

215+
if (settings.getBoolean(settings.getLowerCaseNode("options.file-listener"))) {
216+
folders.forEach {
217+
val observer = FileAlterationObserver(it.key)
218+
observer.addListener(it.value)
219+
val monitor = FileAlterationMonitor(100L, observer)
220+
monitor.start()
221+
}
222+
}
223+
184224
val placeholders = mapOf(
185225
"id" to "scripts",
186226
"total" to "$total",

common/src/main/kotlin/me/scoretwo/fastscript/command/commands/ScriptCommand.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,12 +217,13 @@ class ScriptCommand: SimpleCommand(arrayOf("script")) {
217217
when (args[0].toLowerCase()) {
218218
":reload" -> {
219219
reload()
220+
return true
220221
}
221222
":clear" -> {
222223
subCommands.clear()
224+
return true
223225
}
224226
}
225-
return true
226227
}
227228
return super.execute(sender, parents, args)
228229
}

common/src/main/kotlin/me/scoretwo/fastscript/listeners/FileListener.kt

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,7 @@ import java.io.File
77
import java.util.concurrent.TimeUnit
88

99

10-
class FileListener: FileAlterationListener {
11-
12-
val monitor: FileAlterationMonitor
13-
14-
constructor(directory: File): this(directory, 20)
15-
16-
constructor(directory: File, interval: Long): this(interval, FileAlterationObserver(directory))
17-
18-
constructor(interval: Long, observer: FileAlterationObserver) {
19-
observer.addListener(this)
20-
monitor = FileAlterationMonitor(interval, observer)
21-
monitor.start()
22-
}
10+
class FileListener(): FileAlterationListener {
2311

2412
override fun onStart(observer: FileAlterationObserver) {
2513

0 commit comments

Comments
 (0)