Change capitalization of Shulkerscript
This commit is contained in:
parent
b8b1a4abe8
commit
685830200a
|
@ -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.
|
||||||
|
|
|
@ -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.',
|
||||||
|
|
|
@ -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+"
|
||||||
|
|
6466
pnpm-lock.yaml
6466
pnpm-lock.yaml
File diff suppressed because it is too large
Load Diff
|
@ -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.
|
||||||
|
|
|
@ -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`]
|
|
@ -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() {
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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>
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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).
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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.
|
||||||
:::
|
:::
|
|
@ -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)
|
||||||
|
|
|
@ -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>
|
|
@ -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: [
|
||||||
|
|
Loading…
Reference in New Issue