0.2.0 |
|
---|---|
0.1.2 |
|
0.1.0 |
|
#35 in #df
26 downloads per month
375KB
2K
SLoC
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 DF Website For ease of use with Blackstone, we recommend downloading the Recode Mod.
Installation
Building from Source
You can install the compiler using the Cargo toolchain.
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
- Player Event
- Entity Event
- Player Action
- Entity Action
- Game Action
- If Player
- If Entity
- If Game
- Set Variable
- If Variable
- Repeat
- Function
- Call Function
- Process
- Start Process
- Else
- Select Object
- NOT Functionality
Values
- Items (Vanilla, not customizable)
- Text
- Number
- Variable
- 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
- version
- init
- build (script)
- build-all
- 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:
[game]
name = "Islands 2"
id = 51025
And for a library, an example one would be:
[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:
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);
}
Dependencies
~10MB
~171K SLoC