shulker 0.2.0

A build tool for the Blackstone programming language.
# Blackstone & Shulker


Blackstone is a programming language designed to help create plots on the MCDiamondFire Minecraft server. Shulker is a build tool that allows you to use the Blackstone programming language.

Shulker also allows you to distribute your code publicly - whether you just want your game to be open-source or you want to make a library others can use.

## Community Links


[Discord](https://discord.gg/c7qzkNAURV)
[DF Website](https://mcdiamondfire.com)
For ease of use with Blackstone, we recommend downloading the [Recode Mod](https://github.com/homchom/recode).

## Installation


### Building from Source


You can install the compiler using the Cargo toolchain.

```text
cargo install shulker
```
It will automatically handle building from source for you.

### Releases Page


You can also install it through our `Releases` page on the sidebar. During official releases, we will compile binaries for Windows & Linux.

## Features


### Code Blocks


- [x] Player Event
- [x] Entity Event
- [x] Player Action
- [x] Entity Action
- [x] Game Action
- [x] If Player
- [x] If Entity
- [x] If Game
- [ ] Set Variable
- [ ] If Variable
- [ ] Repeat
- [x] Function
- [x] Call Function
- [x] Process
- [x] Start Process
- [ ] Else
- [ ] Select Object
- [ ] NOT Functionality

### Values


- [x] Items (Vanilla, not customizable)
- [x] Text
- [x] Number
- [x] Variable
- [x] Location
- [ ] Sound
- [ ] Vector
- [ ] Sound
- [ ] Particle
- [ ] Potion
- [ ] Game Value

### Bonus / Planned Features


- [ ] Function Parameters
- [ ] Object-Oriented Programming
- [ ] Compiler-Enforced Strong Typing
- [ ] Tests
- [ ] Customizable Items

Note that none of the bonus features are *guaranteed* to be implemented.
We do think they would be useful, though.

### Shulker / Compiler Commands


- [x] version
- [ ] init
- [x] build (script)
- [x] build-all
- [x] build-stdout (script)
- [ ] build_test
- [ ] add (package)

### DFS Suggestions


None yet! Let us know if there's some cool ones you'd like to see in our Discord!

# Build Utilities

Shulker will allow you to define your game & library in the `Shulker.toml` file.

## Shulker.toml

For example, a `Shulker.toml` for a game would be:
```yaml
[game]
name = "Islands 2"
id = 51025
```
And for a library, an example one would be:
```yaml
[library]
name = "Entity Utilities"
id = "entity_utilities"
description = "This is a library used to make manipulating entities just better."
creator = "Endistic"
```

## Publishing & Creating Libraries

`todo!()`

## Special Thanks


`todo!()`

## Documentation


All code must be inside an Event, Function, or Procedure. Here's some basic examples:

```rs
playerEvent(Join) {
    //supports comments too!
    default.sendMessage("Hello world!");
}

func FunnyFunction {
    // variables must be manually scoped - local, game, or save
    var game.joke = "Among us";
    // defaults to local
    var list = ["a", "b", "c"];
    // default.sendMessage(...) == print(...)
    default.sendMessage(joke);
}
```