First version of the docs
This commit is contained in:
commit
17b38c7449
|
@ -0,0 +1,21 @@
|
||||||
|
# build output
|
||||||
|
dist/
|
||||||
|
# generated types
|
||||||
|
.astro/
|
||||||
|
|
||||||
|
# dependencies
|
||||||
|
node_modules/
|
||||||
|
|
||||||
|
# logs
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
pnpm-debug.log*
|
||||||
|
|
||||||
|
|
||||||
|
# environment variables
|
||||||
|
.env
|
||||||
|
.env.production
|
||||||
|
|
||||||
|
# macOS-specific files
|
||||||
|
.DS_Store
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"recommendations": ["astro-build.astro-vscode"],
|
||||||
|
"unwantedRecommendations": []
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"version": "0.2.0",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"command": "./node_modules/.bin/astro dev",
|
||||||
|
"name": "Development server",
|
||||||
|
"request": "launch",
|
||||||
|
"type": "node-terminal"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,18 @@
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
## 🧞 Commands
|
||||||
|
|
||||||
|
All commands are run from the root of the project, from a terminal:
|
||||||
|
|
||||||
|
| Command | Action |
|
||||||
|
| :------------------------ | :----------------------------------------------- |
|
||||||
|
| `npm install` | Installs dependencies |
|
||||||
|
| `npm run dev` | Starts local dev server at `localhost:4321` |
|
||||||
|
| `npm run build` | Build your production site to `./dist/` |
|
||||||
|
| `npm run preview` | Preview your build locally, before deploying |
|
||||||
|
| `npm run astro ...` | Run CLI commands like `astro add`, `astro check` |
|
||||||
|
| `npm run astro -- --help` | Get help using the Astro CLI |
|
|
@ -0,0 +1,61 @@
|
||||||
|
import { defineConfig } from 'astro/config';
|
||||||
|
import starlight from '@astrojs/starlight';
|
||||||
|
import starlightLinksValidator from "starlight-links-validator";
|
||||||
|
import shikiConfig from './src/utils/shiki';
|
||||||
|
|
||||||
|
// https://astro.build/config
|
||||||
|
export default defineConfig({
|
||||||
|
integrations: [
|
||||||
|
starlight({
|
||||||
|
title: 'ShulkerScript',
|
||||||
|
logo: {
|
||||||
|
src: './src/assets/logo.webp',
|
||||||
|
alt: 'ShulkerScript Logo',
|
||||||
|
},
|
||||||
|
favicon: '/favicon.ico',
|
||||||
|
description: 'A simple and powerful scripting language for Minecraft datapacks.',
|
||||||
|
social: {
|
||||||
|
github: 'https://github.com/moritz-hoelting/shulkerscript-cli',
|
||||||
|
},
|
||||||
|
tableOfContents: { minHeadingLevel: 1, maxHeadingLevel: 3 },
|
||||||
|
defaultLocale: 'root',
|
||||||
|
locales: {
|
||||||
|
root: {
|
||||||
|
label: 'English',
|
||||||
|
lang: 'en',
|
||||||
|
},
|
||||||
|
de: {
|
||||||
|
label: 'Deutsch',
|
||||||
|
lang: 'de',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
editLink: {
|
||||||
|
baseUrl: 'https://github.com/moritz-hoelting/shulkerscript-webpage/edit/main',
|
||||||
|
},
|
||||||
|
plugins: [starlightLinksValidator({
|
||||||
|
errorOnFallbackPages: false,
|
||||||
|
})],
|
||||||
|
expressiveCode: {
|
||||||
|
shiki: shikiConfig,
|
||||||
|
},
|
||||||
|
sidebar: [
|
||||||
|
{
|
||||||
|
label: 'Guides',
|
||||||
|
autogenerate: {
|
||||||
|
directory: 'guides',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Reference',
|
||||||
|
autogenerate: {
|
||||||
|
directory: 'reference',
|
||||||
|
},
|
||||||
|
badge: {
|
||||||
|
text: 'WIP',
|
||||||
|
variant: 'caution',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
});
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"name": "",
|
||||||
|
"type": "module",
|
||||||
|
"version": "0.0.1",
|
||||||
|
"scripts": {
|
||||||
|
"dev": "astro dev",
|
||||||
|
"start": "astro dev",
|
||||||
|
"build": "astro check && astro build",
|
||||||
|
"preview": "astro preview",
|
||||||
|
"astro": "astro"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@astrojs/check": "^0.5.10",
|
||||||
|
"@astrojs/starlight": "^0.21.3",
|
||||||
|
"astro": "^4.3.5",
|
||||||
|
"sharp": "^0.32.5",
|
||||||
|
"starlight-links-validator": "^0.7.1",
|
||||||
|
"typescript": "^5.4.3"
|
||||||
|
}
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
|
@ -0,0 +1 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128"><path fill-rule="evenodd" d="M81 36 64 0 47 36l-1 2-9-10a6 6 0 0 0-9 9l10 10h-2L0 64l36 17h2L28 91a6 6 0 1 0 9 9l9-10 1 2 17 36 17-36v-2l9 10a6 6 0 1 0 9-9l-9-9 2-1 36-17-36-17-2-1 9-9a6 6 0 1 0-9-9l-9 10v-2Zm-17 2-2 5c-4 8-11 15-19 19l-5 2 5 2c8 4 15 11 19 19l2 5 2-5c4-8 11-15 19-19l5-2-5-2c-8-4-15-11-19-19l-2-5Z" clip-rule="evenodd"/><path d="M118 19a6 6 0 0 0-9-9l-3 3a6 6 0 1 0 9 9l3-3Zm-96 4c-2 2-6 2-9 0l-3-3a6 6 0 1 1 9-9l3 3c3 2 3 6 0 9Zm0 82c-2-2-6-2-9 0l-3 3a6 6 0 1 0 9 9l3-3c3-2 3-6 0-9Zm96 4a6 6 0 0 1-9 9l-3-3a6 6 0 1 1 9-9l3 3Z"/><style>path{fill:#000}@media (prefers-color-scheme:dark){path{fill:#fff}}</style></svg>
|
After Width: | Height: | Size: 696 B |
Binary file not shown.
After Width: | Height: | Size: 5.6 KiB |
|
@ -0,0 +1,6 @@
|
||||||
|
import { defineCollection } from 'astro:content';
|
||||||
|
import { docsSchema } from '@astrojs/starlight/schema';
|
||||||
|
|
||||||
|
export const collections = {
|
||||||
|
docs: defineCollection({ schema: docsSchema() }),
|
||||||
|
};
|
|
@ -0,0 +1,39 @@
|
||||||
|
---
|
||||||
|
title: Wilkommen bei der ShulkerScript Dokumentation
|
||||||
|
description: Eine einfache und leistungsstarke Sprache für Minecraft Datapacks
|
||||||
|
template: splash
|
||||||
|
hero:
|
||||||
|
tagline: Einführung in ShulkerScript
|
||||||
|
image:
|
||||||
|
file: ../../../assets/logo.webp
|
||||||
|
actions:
|
||||||
|
- text: Los geht's
|
||||||
|
link: guides/getting-started/
|
||||||
|
icon: right-arrow
|
||||||
|
variant: primary
|
||||||
|
- text: Beitragen
|
||||||
|
link: https://github.com/moritz-hoelting/shulkerscript-cli
|
||||||
|
icon: external
|
||||||
|
---
|
||||||
|
|
||||||
|
import { Card, CardGrid } from '@astrojs/starlight/components';
|
||||||
|
|
||||||
|
|
||||||
|
<CardGrid stagger>
|
||||||
|
<Card title="Einfacher Syntax" icon="seti:html">
|
||||||
|
Der Syntax ist ähnlich zu anderen Programmiersprachen, was das Lernen einfach macht,
|
||||||
|
und bietet gleichzeitig leistungsstarke Funktionen, die in `.mcfunction` Dateien nicht zu finden sind.
|
||||||
|
</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.
|
||||||
|
</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.
|
||||||
|
</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.
|
||||||
|
</Card>
|
||||||
|
</CardGrid>
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
---
|
||||||
|
title: Kommandozeilen-Interface Referenz
|
||||||
|
description: Referenz für das ShulkerScript Kommandozeilen-Tool
|
||||||
|
sidebar:
|
||||||
|
label: CLI
|
||||||
|
---
|
||||||
|
|
||||||
|
Das ShulkerScript CLI ist ein Kommandozeilen-Tool zum Verwalten von ShulkerScript-Projekten.
|
||||||
|
|
||||||
|
|
||||||
|
## init
|
||||||
|
Initialisiert ein Projekt im angegebenen Pfad.
|
||||||
|
Erstellt Projektdateien und -verzeichnisse.
|
||||||
|
```bash
|
||||||
|
shulkerscript init [OPTIONS] [PATH]
|
||||||
|
```
|
||||||
|
- `PATH`: Der Pfad zu dem Verzeichnis, in dem das Projekt erstellt werden soll. Standardmäßig das aktuelle Verzeichnis.
|
||||||
|
|
||||||
|
Optionen:
|
||||||
|
- `--force`: Erlaubt das Initialisieren in einem nicht-leeren Verzeichnis.
|
||||||
|
- `--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`.
|
||||||
|
|
||||||
|
## build
|
||||||
|
Baut das Projekt im angegebenen Pfad in das `dist`-Verzeichnis.
|
||||||
|
```bash
|
||||||
|
shulkerscript build [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.
|
||||||
|
```bash
|
||||||
|
shulkerscript package [PATH]
|
||||||
|
```
|
|
@ -0,0 +1,94 @@
|
||||||
|
---
|
||||||
|
title: Getting Started
|
||||||
|
description: Get started with ShulkerScript
|
||||||
|
---
|
||||||
|
import { Steps, FileTree } from '@astrojs/starlight/components';
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
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).
|
||||||
|
|
||||||
|
### 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.
|
||||||
|
4. Test the installation by running
|
||||||
|
```bash
|
||||||
|
shulkerscript --version
|
||||||
|
```
|
||||||
|
You should see the version of the CLI printed to the console.
|
||||||
|
</Steps>
|
||||||
|
|
||||||
|
### Building from source
|
||||||
|
<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
|
||||||
|
```
|
||||||
|
3. Test the installation by running
|
||||||
|
```bash
|
||||||
|
shulkerscript --version
|
||||||
|
```
|
||||||
|
</Steps>
|
||||||
|
|
||||||
|
## Creating a new project
|
||||||
|
<Steps>
|
||||||
|
1. Create a new directory for your project.
|
||||||
|
2. Navigate into the directory.
|
||||||
|
3. Run
|
||||||
|
```bash
|
||||||
|
shulkerscript init
|
||||||
|
```
|
||||||
|
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>
|
||||||
|
|
||||||
|
The project structure should look like this:
|
||||||
|
<FileTree>
|
||||||
|
- src/
|
||||||
|
- main.shu
|
||||||
|
- .gitignore
|
||||||
|
- pack.toml
|
||||||
|
- pack.png
|
||||||
|
</FileTree>
|
||||||
|
|
||||||
|
## Writing your first script
|
||||||
|
After opening the file `src/main.shu` in your favorite text editor, you should see the following content:
|
||||||
|
```shulkerscript title="src/main.shu"
|
||||||
|
#[tick]
|
||||||
|
fn main() {
|
||||||
|
/say Hello, world!
|
||||||
|
}
|
||||||
|
```
|
||||||
|
The annotation `#[tick]` tells the compiler that this function should be executed every tick.
|
||||||
|
Every line that starts with a `/` is a command that will included in the output. You can add as many commands as you like.
|
||||||
|
To begin with, you can change the message in the `/say` command to something else.
|
||||||
|
|
||||||
|
## Building the project
|
||||||
|
<Steps>
|
||||||
|
1. Navigate into the project directory.
|
||||||
|
2. Run
|
||||||
|
```bash
|
||||||
|
shulkerscript build
|
||||||
|
```
|
||||||
|
This will compile the project and output the result to the `dist` directory.
|
||||||
|
3. Alternatively you can run
|
||||||
|
```bash
|
||||||
|
shulkerscript watch
|
||||||
|
```
|
||||||
|
to automatically rebuild the project when a file changes.
|
||||||
|
</Steps>
|
||||||
|
|
||||||
|
## Distributing the project
|
||||||
|
<Steps>
|
||||||
|
1. Navigate into the project directory.
|
||||||
|
2. Run
|
||||||
|
```bash
|
||||||
|
shulkerscript package
|
||||||
|
```
|
||||||
|
This will create a ZIP archive containing the compiled project.
|
||||||
|
3. You can now distribute the archive to your users.
|
||||||
|
</Steps>
|
|
@ -0,0 +1,67 @@
|
||||||
|
---
|
||||||
|
title: Syntax
|
||||||
|
description: Learn the syntax of ShulkerScript
|
||||||
|
sidebar:
|
||||||
|
badge:
|
||||||
|
text: WIP
|
||||||
|
variant: caution
|
||||||
|
---
|
||||||
|
|
||||||
|
## Comments
|
||||||
|
Single line comments start with `//` and continue until the end of the line.
|
||||||
|
Multiline comments start with `/*` and end with `*/`.
|
||||||
|
|
||||||
|
```shulkerscript
|
||||||
|
// This is a single line comment
|
||||||
|
/* This is a
|
||||||
|
multiline comment */
|
||||||
|
```
|
||||||
|
|
||||||
|
These comments are completely ignored by the compiler and will not show up in the generated datapack.
|
||||||
|
If you want to include a comment in the datapack, you can use the doccomment syntax.
|
||||||
|
```shulkerscript
|
||||||
|
/// This is a doccomment
|
||||||
|
```
|
||||||
|
|
||||||
|
## Literal Commands
|
||||||
|
Literal commands are commands that are directly included in the output.
|
||||||
|
They start with a `/` and are followed by the command.
|
||||||
|
```shulkerscript
|
||||||
|
/say Hello, world!
|
||||||
|
```
|
||||||
|
|
||||||
|
This will result in `say Hello, world!` being included in the `.mcfunction` file.
|
||||||
|
|
||||||
|
## Functions
|
||||||
|
Functions are blocks of code that can be executed.
|
||||||
|
They start with `fn` followed by the name of the function, parenthesis and a block of code.
|
||||||
|
Optionally they can be preceeded by annotations.
|
||||||
|
```shulkerscript title="src/main.shu"
|
||||||
|
#[tick]
|
||||||
|
fn main() {
|
||||||
|
/say Hello, world!
|
||||||
|
}
|
||||||
|
```
|
||||||
|
This code defines a function called `main` that will be executed every tick.
|
||||||
|
|
||||||
|
### Annotations
|
||||||
|
Annotations are special attributes that can be attached to functions.
|
||||||
|
They start with `#` followed by the name of the annotation in square brackets. Some annotations can have arguments assigned to them with the `=` operator.
|
||||||
|
|
||||||
|
Currently the following annotations are supported:
|
||||||
|
- `#[tick]`: The function will be executed every tick.
|
||||||
|
- `#[load]`: The function will be executed when the datapack is loaded.
|
||||||
|
- `#[deobfuscate]`: The function will keep the original name in the output (path of the `.shu`-file followed by the function name).
|
||||||
|
- `#[deobfuscate = "path/to/function"]`: The function will be named as specified in the argument.
|
||||||
|
|
||||||
|
## Conditional Statements
|
||||||
|
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.
|
||||||
|
Optionally they can be followed by an `else` block.
|
||||||
|
```shulkerscript
|
||||||
|
if ("block ~ ~-1 ~ minecraft:stone") {
|
||||||
|
/say On stone
|
||||||
|
} else {
|
||||||
|
/say Not on stone
|
||||||
|
}
|
||||||
|
```
|
|
@ -0,0 +1,38 @@
|
||||||
|
---
|
||||||
|
title: Welcome to the ShulkerScript docs
|
||||||
|
description: Get started writing your datapacks with ShulkerScript
|
||||||
|
template: splash
|
||||||
|
hero:
|
||||||
|
tagline: Intro to getting started with ShulkerScript
|
||||||
|
image:
|
||||||
|
file: ../../assets/logo.webp
|
||||||
|
actions:
|
||||||
|
- text: Get started
|
||||||
|
link: guides/getting-started/
|
||||||
|
icon: right-arrow
|
||||||
|
variant: primary
|
||||||
|
- text: Contribute
|
||||||
|
link: https://github.com/moritz-hoelting/shulkerscript-cli
|
||||||
|
icon: external
|
||||||
|
---
|
||||||
|
|
||||||
|
import { Card, CardGrid } from '@astrojs/starlight/components';
|
||||||
|
|
||||||
|
|
||||||
|
<CardGrid stagger>
|
||||||
|
<Card title="Simple Syntax" icon="seti:html">
|
||||||
|
The syntax is similar to other programming languages, making it easy to learn,
|
||||||
|
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.
|
||||||
|
</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.
|
||||||
|
</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).
|
||||||
|
</Card>
|
||||||
|
</CardGrid>
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
---
|
||||||
|
title: Command-line interface reference
|
||||||
|
description: Reference for the ShulkerScript command-line tool
|
||||||
|
sidebar:
|
||||||
|
label: CLI
|
||||||
|
---
|
||||||
|
|
||||||
|
The ShulkerScript CLI is a command-line tool for managing ShulkerScript projects.
|
||||||
|
|
||||||
|
|
||||||
|
## init
|
||||||
|
Initalize a project at the specified path.
|
||||||
|
Creates project files and directories.
|
||||||
|
```bash
|
||||||
|
shulkerscript init [OPTIONS] [PATH]
|
||||||
|
```
|
||||||
|
- `PATH`: The path to the directory where the project should be created. Defaults to the current directory.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
- `--force`: Allow initalizing in a non-empty directory.
|
||||||
|
- `--name`: The name of the project. Defaults to the name of the directory.
|
||||||
|
- `--description`: The description of the project.
|
||||||
|
- `--pack-format`: The format of the pack. Defaults to `26`.
|
||||||
|
|
||||||
|
## build
|
||||||
|
Build the project at the specified path to the `dist` folder.
|
||||||
|
```bash
|
||||||
|
shulkerscript build [PATH]
|
||||||
|
```
|
||||||
|
- `PATH`: The path to the directory where the project is located. Defaults to the current directory.
|
||||||
|
|
||||||
|
## package
|
||||||
|
Build and package the project at the specified path to a `.zip` file.
|
||||||
|
```bash
|
||||||
|
shulkerscript package [PATH]
|
||||||
|
```
|
|
@ -0,0 +1,2 @@
|
||||||
|
/// <reference path="../.astro/types.d.ts" />
|
||||||
|
/// <reference types="astro/client" />
|
|
@ -0,0 +1,20 @@
|
||||||
|
import type { PluginShikiOptions } from "@astrojs/starlight/expressive-code";
|
||||||
|
|
||||||
|
const config: PluginShikiOptions = {
|
||||||
|
langs: [
|
||||||
|
/*{
|
||||||
|
name: 'shulkerscript',
|
||||||
|
aliases: ['shu'],
|
||||||
|
displayName: 'ShulkerScript',
|
||||||
|
fileTypes: ['shu'],
|
||||||
|
scopeName: 'source.shulkerscript',
|
||||||
|
patterns: [
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}*/
|
||||||
|
]
|
||||||
|
};
|
||||||
|
|
||||||
|
export default config;
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"extends": "astro/tsconfigs/strict"
|
||||||
|
}
|
Loading…
Reference in New Issue