The proper way to do yaml in skript
Rather then checking the file each time this addon caches the yaml file to memory
These results speak for themselves..
The skript used for this test is found here
Loads a yaml file into memory
- The first input is the yaml file path(ie. "plugins/MyAwesomePlugin/config.yml")
- The second input allows you to choose your own id for this file
- If the second input isn't used then the files name minus the extention is used as the id for example 'config.yml' becomes 'config'
[re]load [y[a]ml] %string% [as %-string%]
#Both examples produce the same id for use in other effects/expressions
load yaml "plugins/MyAwesomePlugin/config.yml"
load yaml "plugins/MyAwesomePlugin/config.yml" as "config"
#to get similar function as the other addons you would do this sort of thing with the id...
load yaml "plugins/MyAwesomePlugin/config.yml" as "plugins/MyAwesomePlugin/config.yml"
set yaml value "version" from "plugins/MyAwesomePlugin/config.yml" to 1.0
broadcast "%yaml value "version" from "plugins/MyAwesomePlugin/config.yml"%"
Unloads a yaml file from memory
unload [y[a]ml] %string%
unload yaml "config"
Saves the current cached yaml elements to file
save [y[a]ml] %string%
save yaml "config"
Returns a list of all 'cached' yaml file ids
[(the|all (of the|the))] [currently] loaded y[a]ml [files]
set {_list::*} to the currently loaded yaml files
broadcast "%{_list::*}%"
Gets, sets, removes values/nodes etc.. of a cached yaml file
- Requires the id used/created from the load effect
- This expression does not save to file
- Lists accept list variables for input
- Using 'without string checks' optional is a tiny bit faster but doesn't check/convert strings for numbers or booleans
[[skript-]y[a]ml] (1¦value|2¦(node|path)[s]|3¦(node|path)[s with] keys|4¦list) %string% (of|in|from) %string% [without string checks]
set yaml value "test1.test2" from "config" to "test3"
set yaml list "list.name" from "config" to {_list::*}
set {_test} to yaml value "test1.test2" from "config"
broadcast "%{_test}%"
#similar syntax as skQuery and skellett
Gets a list of all nodes of a cached yaml file
[all] [[skript-]y[a]ml] (node|path)[s] (of|in|from) %string%
set yaml value "test1.test2" from "config" to "test3"
set yaml value "boop.beep" from "config" to "bop"
set {_list::*} to all yaml nodes of "config"
broadcast "%{_list::*}%"
Checks if one or more yaml files are loaded into memory using said id
y[a]ml[s] %strings% (is|are) loaded
y[a]ml[s] %strings% ((are|is) not|(is|are)n[']t) loaded
Checks if one or more paths exist in a cached yaml file using said id
- First input is the path
- Second input is the id
- If multiple paths are checked at once it will return false on the first one found to not exist
[skript-]y[a]ml [(node|path)[s]] %strings% (of|in|from) %string% exists
[skript-]y[a]ml [(node|path)[s]] %strings% (of|in|from) %string% does(n't| not) exist
set skript-yaml value "test.test" from "config" to "test"
set skript-yaml value "test2.test2" from "config" to "test"
yaml path "test.test" and "test2.test2" in "config" exists:
broadcast "this works"
yaml path "test.test" and "boop.boop" in "config" exists:
broadcast "this will fail"
- Updated version thanks to @Pikachu920 of this Skript API
createYMLFile("plugins/MyAwesomePlugin/boop.yml", "list: listName:50;3.14;true;false;yes;no;on;off||value: valueName1:true||value: valueName2:2||value: valueName3:2.6||value: valueName4:This is a string")
- Same as above test made by @Rezz converted to skript-yaml by @Pickachu920
I'd like to thank the whole Skript community, without users like you I wouldn't have bothered to make this!
A special shout out goes to @Pikachu920 for helping me with the syntax and some ideas <3