@@ -13,11 +13,14 @@ import me.scoretwo.utils.bukkit.configuration.yaml.ConfigurationSection
13
13
import me.scoretwo.utils.bukkit.configuration.yaml.patchs.getLowerCaseNode
14
14
import me.scoretwo.utils.sender.GlobalSender
15
15
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
16
19
import java.io.File
17
20
18
21
class ScriptManager {
19
22
20
- val folders = mutableListOf ( File (plugin.dataFolder, " scripts " ) )
23
+ private val folders = mutableMapOf< File , FileAlterationListener >( )
21
24
22
25
val scripts = mutableMapOf<String , CustomScript >()
23
26
@@ -27,10 +30,36 @@ class ScriptManager {
27
30
28
31
var operationCount = 0
29
32
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
+
30
58
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(
34
63
"""
35
64
function main() {
36
65
sender.sendMessage("§athis is demo.")
@@ -163,9 +192,11 @@ class ScriptManager {
163
192
var fail = 0
164
193
scripts.clear()
165
194
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
+ }
167
198
168
- folders.forEach { file ->
199
+ folders.keys. forEach { file ->
169
200
if (file.isDirectory && file.exists()) file.listFiles()?.forEach {
170
201
loadScript(it).also {
171
202
total++
@@ -181,6 +212,15 @@ class ScriptManager {
181
212
}
182
213
}
183
214
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
+
184
224
val placeholders = mapOf (
185
225
" id" to " scripts" ,
186
226
" total" to " $total " ,
0 commit comments