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
This is the documentation for ShulkerScript. It is a work in progress and will be updated as the language evolves.
# Documentation for Shulkerscript
This is the documentation for Shulkerscript. It is a work in progress and will be updated as the language evolves.
## Getting Started
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",
integrations: [
starlight({
title: 'ShulkerScript',
title: 'Shulkerscript',
logo: {
src: './src/assets/logo.webp',
alt: 'ShulkerScript Logo',
alt: 'Shulkerscript Logo',
},
favicon: '/favicon.ico',
description: 'A simple and powerful scripting language for Minecraft datapacks.',

View File

@ -11,11 +11,11 @@
},
"dependencies": {
"@astrojs/check": "^0.9.3",
"@astrojs/starlight": "^0.26.1",
"astro": "^4.14.3",
"@astrojs/starlight": "^0.28.2",
"astro": "^4.15.9",
"sharp": "^0.33.5",
"shiki": "^1.14.1",
"starlight-links-validator": "^0.10.1",
"starlight-links-validator": "^0.12.1",
"typescript": "^5.4.5"
},
"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
template: splash
hero:
tagline: Einführung in ShulkerScript
tagline: Einführung in Shulkerscript
image:
file: ../../../assets/logo.webp
actions:
@ -26,10 +26,10 @@ import { Card, CardGrid } from '@astrojs/starlight/components';
</Card>
<Card title="Unkomplizierte Functions" icon="add-document">
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 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 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.

View File

@ -1,11 +1,11 @@
---
title: Kommandozeilen-Interface Referenz
description: Referenz für das ShulkerScript Kommandozeilen-Tool
description: Referenz für das Shulkerscript Kommandozeilen-Tool
sidebar:
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
@ -21,17 +21,50 @@ Optionen:
- `--name`: Der Name des Projekts. Standardmäßig der Name des Verzeichnisses.
- `--description`: Die Beschreibung des Projekts.
- `--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`.
## build
Baut das Projekt im angegebenen Pfad in das `dist`-Verzeichnis.
```bash
shulkerscript build [PATH]
shulkerscript build [OPTIONS] [PATH]
```
- `PATH`: Der Pfad zum Verzeichnis, in dem sich das Projekt befindet. Standardmäßig das aktuelle Verzeichnis.
## package
Baut und verpackt das Projekt im angegebenen Pfad in eine `.zip`-Datei.
Optionen:
- `--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
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
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 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]
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
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.
<SplitView gap="10px">
<Tabs slot="left">
<TabItem label="ShulkerScript">
<TabItem label="Shulkerscript">
```shulkerscript
// functions.shu
#[load]
@ -71,11 +71,11 @@ The following example declares two functions and calls them second from the firs
## 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">
<Tabs slot="left">
<TabItem label="ShulkerScript">
<TabItem label="Shulkerscript">
```shulkerscript
// comments.shu
// this is a comment
@ -116,11 +116,11 @@ Comments can be expressed differently in all three languages. ShulkerScript uses
## 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">
<Tabs slot="left">
<TabItem label="ShulkerScript">
<TabItem label="Shulkerscript">
```shulkerscript
// execute.shu
fn execute() {
@ -150,16 +150,16 @@ Both ShulkerScript and mcfunction offer an easier way for using execute commands
</SplitView>
:::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
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">
<Tabs slot="left">
<TabItem label="ShulkerScript">
<TabItem label="Shulkerscript">
```shulkerscript
// conditionals.shu
fn conditional() {
@ -201,13 +201,13 @@ ShulkerScript and mcscript offer a more convenient way to write if-else statemen
### 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.
<SplitView gap="10px">
<Fragment slot="left">
<Tabs>
<TabItem label="ShulkerScript">
<TabItem label="Shulkerscript">
```shulkerscript
// logical-operators.shu
fn logical() {
@ -250,7 +250,7 @@ In the following code examples, the conditions are represented by `A`, `B`, etc.
### 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.
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.
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
# this-is-incorrect.mcfunction
@ -278,11 +278,11 @@ execute unless block ~ ~-1 ~ minecraft:stone run say Not on stone
## 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">
<Tabs slot="left">
<TabItem label="ShulkerScript">
<TabItem label="Shulkerscript">
```shulkerscript
// lua.shu
fn execute() {

View File

@ -1,6 +1,6 @@
---
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";
@ -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.
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">
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
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
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).
{/* :::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
<Steps>
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.
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
```bash
shulkerscript --version
@ -22,11 +67,14 @@ You can either [download](#download-from-github) the latest release from the Git
</Steps>
### 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>
1. Make sure you have [Rust and Cargo](https://rustup.rs) installed.
2. Install the CLI by running
```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
```bash
@ -42,7 +90,7 @@ You can either [download](#download-from-github) the latest release from the Git
```bash
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.
</Steps>

View File

@ -1,6 +1,6 @@
---
title: Syntax
description: Learn the syntax of ShulkerScript
description: Learn the syntax of Shulkerscript
---
## Comments
@ -50,7 +50,7 @@ pub fn hello() {
This code defines a function called `main` that will be executed every tick.
:::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.
:::
@ -109,7 +109,7 @@ 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.
In Shulkerscript, tags can be defined right in the code, where they are needed.
```shulkerscript
tag "foo" of "block" [
"minecraft:stone",
@ -223,7 +223,7 @@ In most cases, you can use [literal commands](#literal-commands) instead of the
:::
## 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
run lua() {
-- Lua code goes here

View File

@ -1,9 +1,9 @@
---
title: Welcome to the ShulkerScript docs
description: Get started writing your datapacks with ShulkerScript
title: Welcome to the Shulkerscript docs
description: Get started writing your datapacks with Shulkerscript
template: splash
hero:
tagline: Intro to getting started with ShulkerScript
tagline: Intro to getting started with Shulkerscript
image:
file: ../../assets/logo.webp
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.
</Card>
<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 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 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).

View File

@ -1,9 +1,9 @@
---
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
@ -48,7 +48,9 @@ shulkerscript watch [OPTIONS] [PATH]
Options:
- `--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`]
- `--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 the output directory of the project at the specified path.

View File

@ -1,15 +1,15 @@
---
title: Lua Integration
description: Reference for writing Lua code in ShulkerScript
description: Reference for writing Lua code in Shulkerscript
sidebar:
badge:
text: WIP
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.
@ -25,13 +25,13 @@ run lua() {
The following globals are available in the Lua environment:
- `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
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`)
- 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 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)
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
name = "shulkerpack"
# 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)
pack_format = 26
# The version of the datapack (currently not used)

View File

@ -1,8 +1,8 @@
---
title: Roadmap
description: Our Plans for the future of ShulkerScript.
description: Our Plans for the future of Shulkerscript.
hero:
tagline: Our Plans for the future of ShulkerScript.
tagline: Our Plans for the future of Shulkerscript.
image:
file: ../../assets/logo.webp
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
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.
3. **Your Ideas**\
Do you have an idea for a feature that should be added to ShulkerScript?
3. **Improved Migration**\
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.
</Steps>

View File

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