Resource Locations
Resource Locations represent the path of a resource in Zoglin. These behave similarly to the Resource Locations in vanilla datapacks, except for a few changes to make using them slightly more streamlined.
Namespace
The namespace in a Resource Location is referenced by writing the name of the
namespace, followed by a colon (:).
For example, in the Resource Location foo:bar, the namespace is foo.
The name before the colon can be omitted to infer the current namespace.
For example, :bar is equivalent to the foo:bar from before.
[foo]:bar/baz/qux
^ namespace
Path
The path in a Resource Location represents the path to a resource within a given namespace.
For example, in the Resource Location foo:bar/baz, the path is bar/baz.
Omitting a namespace altogether means that the Resource Location infers the namespace and current module.
foo:[bar/baz/qux]
^ path
Target
The target is the final element of a Resource Location path. It is primarily used by variables, and represents the name of the variable, whereas the rest of the path represents the location.
For example, the variable foo:bar/baz would be equivalent to the storage foo:bar baz.
foo:bar/baz/[qux]
^ target
Example
The following example shows different Resource Location formats, which all refer to the same path (foo:bar/baz/qux).
namespace foo
module bar {
fn baz() {
# Full path
foo:bar/baz/qux
# Inferred namespace
:bar/baz/qux
# Inferred namespace + module
~/baz/qux
# Inferred namespace + module + function
qux
}
}