Change capitalization of Shulkerscript

This commit is contained in:
Moritz Hölting 2024-09-30 17:23:40 +02:00
parent b8b1a4abe8
commit 685830200a
16 changed files with 3664 additions and 3028 deletions

View File

@ -1,5 +1,5 @@
# Documentation for ShulkerScript # Documentation for Shulkerscript
This is the documentation for ShulkerScript. It is a work in progress and will be updated as the language evolves. This is the documentation for Shulkerscript. It is a work in progress and will be updated as the language evolves.
## Getting Started ## Getting Started
This documentation is created using Astro and Starlight. To get started, you need to install the dependencies and start the development server. This documentation is created using Astro and Starlight. To get started, you need to install the dependencies and start the development server.

View File

@ -8,10 +8,10 @@ export default defineConfig({
site: "https://shulkerscript.hoelting.dev", site: "https://shulkerscript.hoelting.dev",
integrations: [ integrations: [
starlight({ starlight({
title: 'ShulkerScript', title: 'Shulkerscript',
logo: { logo: {
src: './src/assets/logo.webp', src: './src/assets/logo.webp',
alt: 'ShulkerScript Logo', alt: 'Shulkerscript Logo',
}, },
favicon: '/favicon.ico', favicon: '/favicon.ico',
description: 'A simple and powerful scripting language for Minecraft datapacks.', description: 'A simple and powerful scripting language for Minecraft datapacks.',

View File

@ -11,11 +11,11 @@
}, },
"dependencies": { "dependencies": {
"@astrojs/check": "^0.9.3", "@astrojs/check": "^0.9.3",
"@astrojs/starlight": "^0.26.1", "@astrojs/starlight": "^0.28.2",
"astro": "^4.14.3", "astro": "^4.15.9",
"sharp": "^0.33.5", "sharp": "^0.33.5",
"shiki": "^1.14.1", "shiki": "^1.14.1",
"starlight-links-validator": "^0.10.1", "starlight-links-validator": "^0.12.1",
"typescript": "^5.4.5" "typescript": "^5.4.5"
}, },
"packageManager": "pnpm@9.7.0+" "packageManager": "pnpm@9.7.0+"

File diff suppressed because it is too large Load Diff

View File

@ -1,9 +1,9 @@
--- ---
title: Wilkommen bei der ShulkerScript Dokumentation title: Wilkommen bei der Shulkerscript Dokumentation
description: Eine einfache und leistungsstarke Sprache für Minecraft Datapacks description: Eine einfache und leistungsstarke Sprache für Minecraft Datapacks
template: splash template: splash
hero: hero:
tagline: Einführung in ShulkerScript tagline: Einführung in Shulkerscript
image: image:
file: ../../../assets/logo.webp file: ../../../assets/logo.webp
actions: actions:
@ -26,10 +26,10 @@ import { Card, CardGrid } from '@astrojs/starlight/components';
</Card> </Card>
<Card title="Unkomplizierte Functions" icon="add-document"> <Card title="Unkomplizierte Functions" icon="add-document">
Mehrere Funktionsdateien aus einer einzigen Quelldatei generieren und sie Mehrere Funktionsdateien aus einer einzigen Quelldatei generieren und sie
von Minecraft oder anderen ShulkerScript-Dateien aus aufrufen. von Minecraft oder anderen Shulkerscript-Dateien aus aufrufen.
</Card> </Card>
<Card title="In Rust geschrieben" icon="seti:rust"> <Card title="In Rust geschrieben" icon="seti:rust">
Die ShulkerScript-Compiler sind in Rust geschrieben, was für eine hohe Geschwindigkeit und Sicherheit sorgt. Der Shulkerscript-Compiler ist in Rust geschrieben, was für eine hohe Geschwindigkeit und Sicherheit sorgt.
</Card> </Card>
<Card title="Zum Projekt beitragen" icon="github"> <Card title="Zum Projekt beitragen" icon="github">
Zu [dem CLI](https://github.com/moritz-hoelting/shulkerscript-cli) oder [dem Compiler](https://github.com/moritz-hoelting/shulkerscript-lang) beitragen. Zu [dem CLI](https://github.com/moritz-hoelting/shulkerscript-cli) oder [dem Compiler](https://github.com/moritz-hoelting/shulkerscript-lang) beitragen.

View File

@ -1,11 +1,11 @@
--- ---
title: Kommandozeilen-Interface Referenz title: Kommandozeilen-Interface Referenz
description: Referenz für das ShulkerScript Kommandozeilen-Tool description: Referenz für das Shulkerscript Kommandozeilen-Tool
sidebar: sidebar:
label: CLI label: CLI
--- ---
Das ShulkerScript CLI ist ein Kommandozeilen-Tool zum Verwalten von ShulkerScript-Projekten. Das Shulkerscript CLI ist ein Kommandozeilen-Tool zum Verwalten von Shulkerscript-Projekten.
## init ## init
@ -21,17 +21,50 @@ Optionen:
- `--name`: Der Name des Projekts. Standardmäßig der Name des Verzeichnisses. - `--name`: Der Name des Projekts. Standardmäßig der Name des Verzeichnisses.
- `--description`: Die Beschreibung des Projekts. - `--description`: Die Beschreibung des Projekts.
- `--pack-format`: Das Format des Packs. Standardmäßig `26`. - `--pack-format`: Das Format des Packs. Standardmäßig `26`.
- `--icon`: Pfad zu der Icon-Datei. Für das Standard-Icon leer lassen.
- `--batch`: Keine fehlenden Daten durch Eingaben anfordern, Standardwerte verwenden oder fehlschlagen.
- `--vcs`: Das gewünschte Versionskontrollsystem. Standardmäßig `git`. - `--vcs`: Das gewünschte Versionskontrollsystem. Standardmäßig `git`.
## build ## build
Baut das Projekt im angegebenen Pfad in das `dist`-Verzeichnis. Baut das Projekt im angegebenen Pfad in das `dist`-Verzeichnis.
```bash ```bash
shulkerscript build [PATH] shulkerscript build [OPTIONS] [PATH]
``` ```
- `PATH`: Der Pfad zum Verzeichnis, in dem sich das Projekt befindet. Standardmäßig das aktuelle Verzeichnis. - `PATH`: Der Pfad zum Verzeichnis, in dem sich das Projekt befindet. Standardmäßig das aktuelle Verzeichnis.
## package Optionen:
Baut und verpackt das Projekt im angegebenen Pfad in eine `.zip`-Datei. - `--assets <ASSETS>` Pfad zum Assets-Ordner [Standard: `./assets`]
- `--output <OUTPUT>` Ausgabe-Ordner, überschreibt die `DATAPACK_DIR` Umgebungsvariable
- `--no-validate` Validierung des Pack-Formats überspringen
- `--zip` Verpackt die Ausgabe in eine Zip-Datei
Umgebungsvariablen:
- `DATAPACK_DIR` Ausgabe-Ordner [Standard: `./dist`]
## watch
```bash ```bash
shulkerscript build --zip [PATH] shulkerscript watch [OPTIONS] [PATH]
``` ```
- `PATH`: Pfad des zu beobachtenden Ordners [Standard: `.`]
Optionen:
- `--no-initial` Den Befehl nicht initial ausführen
- `--debounce-time <DEBOUNCE_TIME>` Die zu wartende Zeit in ms nach der letzten Änderung bevor der Befehl erneut ausgeführt wird [default: `2000`]
- `--execute <COMMAND>` Die Shulkerscript Befehle, die im Projekt ausgeführt werden sollen, wenn Änderungen erkannt wurden [Mehrfach-Argument, Standard: `build .`]
- `--no-execute` Keine vordefinierten Shulkerscript Befehle ausführen
- `--shell` Die Shell-Befehle, die im Projekt ausgeführt werden sollen, wenn Änderungen erkannt wurden [Mehrfach-Argument]
## clean
Reinigt das Ausgabeverzeichnis des Projekts im angegebenen Pfad.
```bash
shulkerscript clean [OPTIONS] [PATH]
```
- `PATH`: Der Pfad des Projektordners, der gereinigt werden soll [Standard: `.`]
Optionen:
- `--output <OUTPUT>` Der Ausgabeordner, überschreibt die `DATAPACK_DIR` Umgebungsvariable
- `--all` Löscht alle Dateien im Ausgabeverzeichnis, auch wenn sie nicht vom Projekt stammen
- `--force` Notwendig für `--all`, um das Löschen aller Dateien zu bestätigen
Umgebungsvariablen:
- `DATAPACK_DIR` Der Ausgabeordner [Standard: `./dist`]

View File

@ -1,12 +1,12 @@
--- ---
title: Differences to other languages title: Differences to other languages
description: See how ShulkerScript compares to similar languages. description: See how Shulkerscript compares to similar languages.
--- ---
import { Tabs, TabItem, Aside } from "@astrojs/starlight/components"; import { Tabs, TabItem, Aside } from "@astrojs/starlight/components";
import SplitView from "@components/SplitView.astro"; import SplitView from "@components/SplitView.astro";
This page will highlight the differences of ShulkerScript and vanilla mcfunction and mcscript. This page will highlight the differences of Shulkerscript and vanilla mcfunction and mcscript.
:::note[Credits to mcscript] :::note[Credits to mcscript]
I came into contact with [mcscript](https://mcscript.stevertus.com/) by Stevertus a few years ago. I wrote some datapacks I came into contact with [mcscript](https://mcscript.stevertus.com/) by Stevertus a few years ago. I wrote some datapacks
@ -17,12 +17,12 @@ under active development anymore. If you are interested, check out his new proje
## Functions ## Functions
The first difference you can see is that ShulkerScript takes a much different approach to functions than mcfunction and mcscript. The first difference you can see is that Shulkerscript takes a much different approach to functions than mcfunction and mcscript.
The following example declares two functions and calls them second from the first one. The following example declares two functions and calls them second from the first one.
<SplitView gap="10px"> <SplitView gap="10px">
<Tabs slot="left"> <Tabs slot="left">
<TabItem label="ShulkerScript"> <TabItem label="Shulkerscript">
```shulkerscript ```shulkerscript
// functions.shu // functions.shu
#[load] #[load]
@ -71,11 +71,11 @@ The following example declares two functions and calls them second from the firs
## Comments ## Comments
Comments can be expressed differently in all three languages. ShulkerScript uses `//` for single-line comments and `/* */` for multi-line comments. Comments can be expressed differently in all three languages. Shulkerscript uses `//` for single-line comments and `/* */` for multi-line comments.
<SplitView gap="10px"> <SplitView gap="10px">
<Tabs slot="left"> <Tabs slot="left">
<TabItem label="ShulkerScript"> <TabItem label="Shulkerscript">
```shulkerscript ```shulkerscript
// comments.shu // comments.shu
// this is a comment // this is a comment
@ -116,11 +116,11 @@ Comments can be expressed differently in all three languages. ShulkerScript uses
## Execute Command ## Execute Command
Both ShulkerScript and mcfunction offer an easier way for using execute commands, as they are common when building datapacks. Both Shulkerscript and mcfunction offer an easier way for using execute commands, as they are common when building datapacks.
<SplitView gap="10px"> <SplitView gap="10px">
<Tabs slot="left"> <Tabs slot="left">
<TabItem label="ShulkerScript"> <TabItem label="Shulkerscript">
```shulkerscript ```shulkerscript
// execute.shu // execute.shu
fn execute() { fn execute() {
@ -150,16 +150,16 @@ Both ShulkerScript and mcfunction offer an easier way for using execute commands
</SplitView> </SplitView>
:::tip :::tip
ShulkerScript and mcscript each offer a shortcut for `as(...), at("@s")`, which is `asat(@a)`. Shulkerscript and mcscript each offer a shortcut for `as(...), at("@s")`, which is `asat(@a)`.
::: :::
## If-Else Statements ## If-Else Statements
ShulkerScript and mcscript offer a more convenient way to write if-else statements. Shulkerscript and mcscript offer a more convenient way to write if-else statements.
<SplitView gap="10px"> <SplitView gap="10px">
<Tabs slot="left"> <Tabs slot="left">
<TabItem label="ShulkerScript"> <TabItem label="Shulkerscript">
```shulkerscript ```shulkerscript
// conditionals.shu // conditionals.shu
fn conditional() { fn conditional() {
@ -201,13 +201,13 @@ ShulkerScript and mcscript offer a more convenient way to write if-else statemen
### Logical operators ### Logical operators
Both in ShulkerScript and mcscript, logical operators can be used to combine multiple conditions. Both in Shulkerscript and mcscript, logical operators can be used to combine multiple conditions.
In the following code examples, the conditions are represented by `A`, `B`, etc. as placeholders for real conditions. In the following code examples, the conditions are represented by `A`, `B`, etc. as placeholders for real conditions.
<SplitView gap="10px"> <SplitView gap="10px">
<Fragment slot="left"> <Fragment slot="left">
<Tabs> <Tabs>
<TabItem label="ShulkerScript"> <TabItem label="Shulkerscript">
```shulkerscript ```shulkerscript
// logical-operators.shu // logical-operators.shu
fn logical() { fn logical() {
@ -250,7 +250,7 @@ In the following code examples, the conditions are represented by `A`, `B`, etc.
### Interfering with conditions ### Interfering with conditions
The difference between ShulkerScript and the other two languages is that ShulkerScript compiles to a version The difference between Shulkerscript and the other two languages is that Shulkerscript compiles to a version
where it is not possible to trigger both the if and the else statement at the same time. where it is not possible to trigger both the if and the else statement at the same time.
This could be possible when using the trivial approach to translate the following to mcfunction: This could be possible when using the trivial approach to translate the following to mcfunction:
@ -267,7 +267,7 @@ fn thisWorks() {
Here the second command will always be executed, because if the condition is true, the command runs and falsifies the condition. Here the second command will always be executed, because if the condition is true, the command runs and falsifies the condition.
When the inverted condition is checked in the second command, it will always be true. When the inverted condition is checked in the second command, it will always be true.
ShulkerScript fixes this by using a mix of anonymous functions and data stores. Shulkerscript fixes this by using a mix of anonymous functions and data stores.
```mcfunction ```mcfunction
# this-is-incorrect.mcfunction # this-is-incorrect.mcfunction
@ -278,11 +278,11 @@ execute unless block ~ ~-1 ~ minecraft:stone run say Not on stone
## Embedded Programming Language ## Embedded Programming Language
ShulkerScript allows running Lua code during compilation and running the returned output in Minecraft, mcscript offers JavaScript modals. Shulkerscript allows running Lua code during compilation and running the returned output in Minecraft, mcscript offers JavaScript modals.
<SplitView gap="10px"> <SplitView gap="10px">
<Tabs slot="left"> <Tabs slot="left">
<TabItem label="ShulkerScript"> <TabItem label="Shulkerscript">
```shulkerscript ```shulkerscript
// lua.shu // lua.shu
fn execute() { fn execute() {

View File

@ -1,6 +1,6 @@
--- ---
title: GitHub title: GitHub
description: View and contribute to the source code of ShulkerScript on GitHub. description: View and contribute to the source code of Shulkerscript on GitHub.
--- ---
import { CardGrid, LinkCard, Aside } from "@astrojs/starlight/components"; import { CardGrid, LinkCard, Aside } from "@astrojs/starlight/components";
@ -32,6 +32,13 @@ The project is split into multiple repositories:
description="Library for compiling the intermediate representation to a datapack that can be read by Minecraft. description="Library for compiling the intermediate representation to a datapack that can be read by Minecraft.
Also, provides an interface for constructing datapacks programatically in rust." Also, provides an interface for constructing datapacks programatically in rust."
/> />
<LinkCard
title="shulkerscript-webpage"
href="https://github.com/moritz-hoelting/shulkerscript-webpage"
target="_blank"
description="This website you are currently viewing.
It is built with Astro and hosted on GitHub pages."
/>
<Aside type="note" title="Keep in mind"> <Aside type="note" title="Keep in mind">
Please raise issues in the respective repositories if it is related to a specific part of the project. Please raise issues in the respective repositories if it is related to a specific part of the project.

View File

@ -1,19 +1,64 @@
--- ---
title: Getting Started title: Getting Started
description: Get started with ShulkerScript description: Get started with Shulkerscript
--- ---
import { Steps, FileTree } from '@astrojs/starlight/components'; import { Steps, FileTree, Tabs, TabItem } from '@astrojs/starlight/components';
## Installation ## Installation
To get started with ShulkerScript, you need to install the ShulkerScript CLI. To get started with Shulkerscript, you need to install the Shulkerscript CLI.
You can either [download](#download-from-github) the latest release from the GitHub releases page or [build it from source](#building-from-source). You can either [download](#download-from-github) the latest release from the GitHub releases page or [build it from source](#building-from-source).
{/* :::tip
Before you install the CLI, you can try it out in your browser by using the [online playground](/playground).
::: */}
### Quickinstall script *(recommended)*
<Steps>
1. <Tabs>
<TabItem label="Windows" icon="seti:windows">
Open a PowerShell terminal and run
```powershell
iex (iwr "https://raw.githubusercontent.com/moritz-hoelting/shulkerscript-cli/main/install.ps1").Content
```
</TabItem>
<TabItem label="Linux / macOS" icon="linux">
Open a bash terminal and run
```bash
curl -sfSL https://raw.githubusercontent.com/moritz-hoelting/shulkerscript-cli/main/install.sh | bash
```
</TabItem>
</Tabs>
2. Test the installation by running
```bash
shulkerscript --version
```
</Steps>
:::note[Info]
The script will check if you have cargo-binstall installed and use it if available.
Otherwise it will download the binary from GitHub if available for your platform.
As a fallback it will build the CLI from source if Rust is installed.
:::
### Download with cargo-binstall
<Steps>
1. Make sure you have [cargo-binstall](https://github.com/cargo-bins/cargo-binstall) installed. If not, follow the [installation instructions](https://github.com/cargo-bins/cargo-binstall?tab=readme-ov-file#installation).
2. Run
```bash
cargo-binstall --git https://github.com/moritz-hoelting/shulkerscript-cli shulkerscript-cli
```
3. Test the installation by running
```bash
shulkerscript --version
```
</Steps>
### Download from GitHub ### Download from GitHub
<Steps> <Steps>
1. Go to the [GitHub releases page](https://github.com/moritz-hoelting/shulkerscript-cli/releases) and download the latest release for your platform. 1. Go to the [GitHub releases page](https://github.com/moritz-hoelting/shulkerscript-cli/releases) and download the latest release for your platform.
2. Extract the downloaded archive. 2. Extract the downloaded archive.
3. Move the extracted binary to a directory in your PATH. 3. Move the extracted binary to a directory in your [PATH](https://en.wikipedia.org/wiki/PATH_(variable)) *(required for the CLI to be accessible from anywhere)*.
4. Test the installation by running 4. Test the installation by running
```bash ```bash
shulkerscript --version shulkerscript --version
@ -22,11 +67,14 @@ You can either [download](#download-from-github) the latest release from the Git
</Steps> </Steps>
### Building from source ### Building from source
:::caution
This method takes the longest. If you have no reason to build from source, you may want to take a look at the other installation methods.
:::
<Steps> <Steps>
1. Make sure you have [Rust and Cargo](https://rustup.rs) installed. 1. Make sure you have [Rust and Cargo](https://rustup.rs) installed.
2. Install the CLI by running 2. Install the CLI by running
```bash ```bash
cargo install --git https://github.com/moritz-hoelting/shulkerscript-cli.git cargo install --git https://github.com/moritz-hoelting/shulkerscript-cli
``` ```
3. Test the installation by running 3. Test the installation by running
```bash ```bash
@ -42,7 +90,7 @@ You can either [download](#download-from-github) the latest release from the Git
```bash ```bash
shulkerscript init shulkerscript init
``` ```
This will create a new ShulkerScript project in the current directory. This will create a new Shulkerscript project in the current directory.
4. Open the `pack.toml` file in your favorite text editor and configure the project to your liking. 4. Open the `pack.toml` file in your favorite text editor and configure the project to your liking.
</Steps> </Steps>

View File

@ -1,6 +1,6 @@
--- ---
title: Syntax title: Syntax
description: Learn the syntax of ShulkerScript description: Learn the syntax of Shulkerscript
--- ---
## Comments ## Comments
@ -50,7 +50,7 @@ pub fn hello() {
This code defines a function called `main` that will be executed every tick. This code defines a function called `main` that will be executed every tick.
:::note :::note
ShulkerScript always requires at least one function annotated with `tick`, `load` or `deobfuscate`. Shulkerscript always requires at least one function annotated with `tick`, `load` or `deobfuscate`.
Otherwise no `.mcfunction` files will be generated. Otherwise no `.mcfunction` files will be generated.
::: :::
@ -109,7 +109,7 @@ from "./foo" import bar, baz;
## Tags ## Tags
In Minecraft, tags are used to group multiple items, blocks, entities, etc. together. 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. In Shulkerscript, tags can be defined right in the code, where they are needed.
```shulkerscript ```shulkerscript
tag "foo" of "block" [ tag "foo" of "block" [
"minecraft:stone", "minecraft:stone",
@ -223,7 +223,7 @@ In most cases, you can use [literal commands](#literal-commands) instead of the
::: :::
## Lua Code ## Lua Code
The `lua` keyword is used to embed Lua code in your ShulkerScript code. It can be combined with the `run` keyword to include the result of the Lua code in the output. The `lua` keyword is used to embed Lua code in your Shulkerscript code. It can be combined with the `run` keyword to include the result of the Lua code in the output.
```shulkerscript ```shulkerscript
run lua() { run lua() {
-- Lua code goes here -- Lua code goes here

View File

@ -1,9 +1,9 @@
--- ---
title: Welcome to the ShulkerScript docs title: Welcome to the Shulkerscript docs
description: Get started writing your datapacks with ShulkerScript description: Get started writing your datapacks with Shulkerscript
template: splash template: splash
hero: hero:
tagline: Intro to getting started with ShulkerScript tagline: Intro to getting started with Shulkerscript
image: image:
file: ../../assets/logo.webp file: ../../assets/logo.webp
actions: actions:
@ -25,10 +25,10 @@ import { Card, CardGrid } from '@astrojs/starlight/components';
while at the same time providing powerful features not found in `.mcfunction` files. while at the same time providing powerful features not found in `.mcfunction` files.
</Card> </Card>
<Card title="Easy Functions" icon="add-document"> <Card title="Easy Functions" icon="add-document">
Generate multiple function files from a single source file, and call them from Minecraft or other ShulkerScript files. Generate multiple function files from a single source file, and call them from Minecraft or other Shulkerscript files.
</Card> </Card>
<Card title="Written in Rust" icon="seti:rust"> <Card title="Written in Rust" icon="seti:rust">
Fast compile times and a small binary size make ShulkerScript a great choice for your next project. Fast compile times and a small binary size make Shulkerscript a great choice for your next project.
</Card> </Card>
<Card title="Contribute to this project" icon="github"> <Card title="Contribute to this project" icon="github">
Contribute to [the CLI](https://github.com/moritz-hoelting/shulkerscript-cli) or [the compiler](https://github.com/moritz-hoelting/shulkerscript-lang). Contribute to [the CLI](https://github.com/moritz-hoelting/shulkerscript-cli) or [the compiler](https://github.com/moritz-hoelting/shulkerscript-lang).

View File

@ -1,9 +1,9 @@
--- ---
title: Command-line interface reference title: Command-line interface reference
description: Reference for the ShulkerScript command-line tool description: Reference for the Shulkerscript command-line tool
--- ---
The ShulkerScript CLI is a command-line tool for managing ShulkerScript projects. The Shulkerscript CLI is a command-line tool for managing Shulkerscript projects.
## init ## init
@ -48,7 +48,9 @@ shulkerscript watch [OPTIONS] [PATH]
Options: Options:
- `--no-initial` Do not run the command initially - `--no-initial` Do not run the command initially
- `--debounce-time <DEBOUNCE_TIME>` The time to wait in ms after the last change before running the command [default: `2000`] - `--debounce-time <DEBOUNCE_TIME>` The time to wait in ms after the last change before running the command [default: `2000`]
- `--execute <COMMAND>` The commands (cli subcommands or shell commands) to execute in the project when changes have been detected [multi-arg, default: `build`] - `--execute <COMMAND>` The shulkerscript commands to execute in the project when changes have been detected [multi-arg, default: `build .`]
- `--no-execute` Do not execute any predefined shulkerscript commands
- `--shell` The shell commands to execute in the project when changes have been detected [multi-arg]
## clean ## clean
Clean the output directory of the project at the specified path. Clean the output directory of the project at the specified path.

View File

@ -1,15 +1,15 @@
--- ---
title: Lua Integration title: Lua Integration
description: Reference for writing Lua code in ShulkerScript description: Reference for writing Lua code in Shulkerscript
sidebar: sidebar:
badge: badge:
text: WIP text: WIP
variant: caution variant: caution
--- ---
ShulkerScript supports writing Lua code directly in your scripts. This allows you to use Lua's powerful features and libraries to extend the functionality of your scripts. Shulkerscript supports writing Lua code directly in your scripts. This allows you to use Lua's powerful features and libraries to extend the functionality of your scripts.
The Lua code is embedded in the ShulkerScript code using the `lua` keyword. In the future, you will be able to pass arguments to the Lua code, but for now, you can only write Lua code without arguments. The Lua code is embedded in the Shulkerscript code using the `lua` keyword. In the future, you will be able to pass arguments to the Lua code, but for now, you can only write Lua code without arguments.
Your Lua code should return a string value when used in combination with the run keyword. This string returned will be included in the output. Your Lua code should return a string value when used in combination with the run keyword. This string returned will be included in the output.
@ -25,13 +25,13 @@ run lua() {
The following globals are available in the Lua environment: The following globals are available in the Lua environment:
- `shu_location`: The relative filepath of the script being executed - `shu_location`: The relative filepath of the script being executed
After variables are introduced in ShulkerScript, it is planned to make them available in the Lua environment as well. After variables are introduced in Shulkerscript, it is planned to make them available in the Lua environment as well.
:::note :::note
If you can think of any other globals that should be available in the Lua environment, please let us know! This could include: If you can think of any other globals that should be available in the Lua environment, please let us know! This could include:
- variables with values (like `shu_location`) - variables with values (like `shu_location`)
- functions that calculate/modify values (general utility things not provided by Lua or specific to ShulkerScript) - functions that calculate/modify values (general utility things not provided by Lua or specific to Shulkerscript)
- functions that interact with the ShulkerScript environment (flags to set for the compiler to alter the build process) - functions that interact with the Shulkerscript environment (flags to set for the compiler to alter the build process)
Please either write a mail or open an issue on GitHub. The links can be found in the upper right corner of the page. Please either write a mail or open an issue on GitHub. The links can be found in the upper right corner of the page.
::: :::

View File

@ -10,7 +10,7 @@ The project is configured in the `pack.toml` file at the root of the project. It
# The name of the datapack # The name of the datapack
name = "shulkerpack" name = "shulkerpack"
# The description of the datapack # The description of the datapack
description = "I created this datapack with ShulkerScript" description = "I created this datapack with Shulkerscript"
# The pack format of the datapack (https://minecraft.wiki/w/Data_pack#Pack_format) # The pack format of the datapack (https://minecraft.wiki/w/Data_pack#Pack_format)
pack_format = 26 pack_format = 26
# The version of the datapack (currently not used) # The version of the datapack (currently not used)

View File

@ -1,8 +1,8 @@
--- ---
title: Roadmap title: Roadmap
description: Our Plans for the future of ShulkerScript. description: Our Plans for the future of Shulkerscript.
hero: hero:
tagline: Our Plans for the future of ShulkerScript. tagline: Our Plans for the future of Shulkerscript.
image: image:
file: ../../assets/logo.webp file: ../../assets/logo.webp
actions: actions:
@ -24,7 +24,11 @@ import { Steps } from '@astrojs/starlight/components';
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**\ 3. **Improved Migration**\
Do you have an idea for a feature that should be added to ShulkerScript? The migration tool will detect that a function is contained in `tick`/`load` tag and will automatically
add the corresponding annotation to the function declaration. Execute commands will be converted to
execute blocks and `function` commands will be converted to function invocations.
4. **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. 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>

View File

@ -3,7 +3,7 @@ import type { LanguageInput } from "shiki";
export const shulkerscriptGrammar: LanguageInput = { export const shulkerscriptGrammar: LanguageInput = {
name: "shulkerscript", name: "shulkerscript",
aliases: ["shu"], aliases: ["shu"],
displayName: "ShulkerScript", displayName: "Shulkerscript",
fileTypes: ["shu"], fileTypes: ["shu"],
scopeName: "source.shulkerscript", scopeName: "source.shulkerscript",
patterns: [ patterns: [