add syntax documentation for tags
This commit is contained in:
parent
b03a43a04c
commit
3af5da0ba2
|
@ -33,5 +33,5 @@ shulkerscript build [PATH]
|
||||||
## package
|
## package
|
||||||
Baut und verpackt das Projekt im angegebenen Pfad in eine `.zip`-Datei.
|
Baut und verpackt das Projekt im angegebenen Pfad in eine `.zip`-Datei.
|
||||||
```bash
|
```bash
|
||||||
shulkerscript package [PATH]
|
shulkerscript build --zip [PATH]
|
||||||
```
|
```
|
|
@ -97,7 +97,7 @@ Only functions annotated with `#[tick]`, `#[load]`, `#[deobfuscate]` or called f
|
||||||
1. Navigate into the project directory.
|
1. Navigate into the project directory.
|
||||||
2. Run
|
2. Run
|
||||||
```bash
|
```bash
|
||||||
shulkerscript package
|
shulkerscript build --zip
|
||||||
```
|
```
|
||||||
This will create a ZIP archive containing the compiled project.
|
This will create a ZIP archive containing the compiled project.
|
||||||
3. You can now distribute the archive to your users.
|
3. You can now distribute the archive to your users.
|
||||||
|
|
|
@ -111,6 +111,41 @@ Multiple functions can be imported by separating them with a comma.
|
||||||
from "./foo" import bar, baz;
|
from "./foo" import bar, baz;
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Tags
|
||||||
|
In Minecraft, tags are used to group multiple items, blocks, entities, etc. together.
|
||||||
|
In ShulkerScript, tags can be defined right in the code, where they are needed.
|
||||||
|
```shulkerscript
|
||||||
|
tag "foo" of "block" [
|
||||||
|
"minecraft:stone",
|
||||||
|
"minecraft:dirt"
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
This will result in a tag of type `block` with the name `foo` containing the blocks `minecraft:stone` and `minecraft:dirt`.
|
||||||
|
|
||||||
|
If you want the tag to replace, instead of append to the existing tag, you can use the `replace` keyword.
|
||||||
|
```shulkerscript
|
||||||
|
tag "foo" of "block" replace [
|
||||||
|
"minecraft:stone",
|
||||||
|
"minecraft:dirt"
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
The type has to be the name of the subfolder in the `tags` folder of the data pack. Most often you will use tags with
|
||||||
|
the types:
|
||||||
|
- `function`
|
||||||
|
- `block`
|
||||||
|
- `item`
|
||||||
|
- `entity_type`
|
||||||
|
- `fluid`
|
||||||
|
- `game_event`
|
||||||
|
|
||||||
|
But you can also use custom types, refer to [this page](https://minecraft.wiki/w/Tag) for more information.
|
||||||
|
|
||||||
|
:::tip
|
||||||
|
`of "[type]"` can be omitted and will default to `"function"`.
|
||||||
|
:::
|
||||||
|
|
||||||
## Conditional Statements
|
## Conditional Statements
|
||||||
Conditional statements are used to execute code based on a condition.
|
Conditional statements are used to execute code based on a condition.
|
||||||
They start with `if` followed by a condition in parenthesis and a block of code.
|
They start with `if` followed by a condition in parenthesis and a block of code.
|
||||||
|
|
|
@ -20,13 +20,11 @@ import { Steps } from '@astrojs/starlight/components';
|
||||||
```shulkerscript
|
```shulkerscript
|
||||||
from "path/to/file.shu" import *;
|
from "path/to/file.shu" import *;
|
||||||
```
|
```
|
||||||
2. **Better Error Reports**\
|
2. **Variables & Constants**\
|
||||||
Improve the error reports to be more helpful and easier to understand.
|
|
||||||
3. **Tag support**\
|
|
||||||
Add a way to define tags in the project and use them in the code.
|
|
||||||
This will eliminate the need for providing tags in the asset directory.
|
|
||||||
4. **Variables & Constants**\
|
|
||||||
Add support for variables and constants. Constants can be any type (string, number, etc.) and
|
Add support for variables and constants. Constants can be any type (string, number, etc.) and
|
||||||
can be passed from function to function. They will be processed by the compiler. Variables will be
|
can be passed from function to function. They will be processed by the compiler. Variables will be
|
||||||
mutable and can be changed at any time, and are stored as entries in minecraft scoreboards.
|
mutable and can be changed at any time, and are stored as entries in minecraft scoreboards.
|
||||||
|
3. **Your Ideas**\
|
||||||
|
Do you have an idea for a feature that should be added to ShulkerScript?
|
||||||
|
Let us know by opening an issue on GitHub or writing a mail! Links can be found in the upper right corner of the page.
|
||||||
</Steps>
|
</Steps>
|
|
@ -21,11 +21,14 @@ export const shulkerscriptGrammar: LanguageInput = {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
include: "#importStatement",
|
include: "#importStatement",
|
||||||
}
|
},
|
||||||
|
{
|
||||||
|
include: "#tagDeclaration",
|
||||||
|
},
|
||||||
],
|
],
|
||||||
repository: {
|
repository: {
|
||||||
"$base": {},
|
$base: {},
|
||||||
"$self": {},
|
$self: {},
|
||||||
// Groupings
|
// Groupings
|
||||||
functionContents: {
|
functionContents: {
|
||||||
patterns: [
|
patterns: [
|
||||||
|
@ -67,7 +70,7 @@ export const shulkerscriptGrammar: LanguageInput = {
|
||||||
end: "}",
|
end: "}",
|
||||||
captures: {
|
captures: {
|
||||||
1: {
|
1: {
|
||||||
name: "keyword.control.public.shulkerscript"
|
name: "keyword.control.public.shulkerscript",
|
||||||
},
|
},
|
||||||
2: {
|
2: {
|
||||||
name: "keyword.control.function.shulkerscript",
|
name: "keyword.control.function.shulkerscript",
|
||||||
|
@ -99,7 +102,29 @@ export const shulkerscriptGrammar: LanguageInput = {
|
||||||
1: {
|
1: {
|
||||||
name: "entity.name.function.shulkerscript",
|
name: "entity.name.function.shulkerscript",
|
||||||
},
|
},
|
||||||
}
|
},
|
||||||
|
},
|
||||||
|
tagDeclaration: {
|
||||||
|
begin: '^\\s*(tag)\\s+("\\w+")\\s+(?:(of)\\s+("\\w+")\\s+)?(?:(replace)\\s+)?\\[',
|
||||||
|
end: "]",
|
||||||
|
patterns: [{ include: "#stringLiteral" }],
|
||||||
|
captures: {
|
||||||
|
1: {
|
||||||
|
name: "keyword.control.tag.shulkerscript",
|
||||||
|
},
|
||||||
|
2: {
|
||||||
|
name: "string.quoted.double.shulkerscript",
|
||||||
|
},
|
||||||
|
3: {
|
||||||
|
name: "keyword.control.of.shulkerscript",
|
||||||
|
},
|
||||||
|
4: {
|
||||||
|
name: "string.quoted.double.shulkerscript",
|
||||||
|
},
|
||||||
|
5: {
|
||||||
|
name: "keyword.control.replace.shulkerscript",
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
binaryOperator: {
|
binaryOperator: {
|
||||||
name: "punctuation.operator.binary.shulkerscript",
|
name: "punctuation.operator.binary.shulkerscript",
|
||||||
|
@ -171,10 +196,10 @@ export const shulkerscriptGrammar: LanguageInput = {
|
||||||
end: "import\\s(\\w+(?:\\s?,\\s?(?:\\w+))*)\\s?,?\\s?",
|
end: "import\\s(\\w+(?:\\s?,\\s?(?:\\w+))*)\\s?,?\\s?",
|
||||||
captures: {
|
captures: {
|
||||||
1: {
|
1: {
|
||||||
name: "entity.name.function.shulkerscript"
|
name: "entity.name.function.shulkerscript",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
patterns: [{ include: "#stringLiteral" }]
|
patterns: [{ include: "#stringLiteral" }],
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue