@@ -13,11 +13,14 @@ import me.scoretwo.utils.bukkit.configuration.yaml.ConfigurationSection
1313import me.scoretwo.utils.bukkit.configuration.yaml.patchs.getLowerCaseNode
1414import me.scoretwo.utils.sender.GlobalSender
1515import 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
1619import java.io.File
1720
1821class 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 " ,
0 commit comments