Home - Pantonshire/Vulcan GitHub Wiki

What is Vulcan?

Vulcan is domain-specific lanuage (DSL) for Minecraft modding, intended for teaching basic programming concepts to beginners.
The general idea is that the user codes their mod in the Vulcan language, which I have attempted to make as easy to understand for new programmers as possible, then that code is compiled to Java, creating a working Minecraft mod. For now, the compilation of the generated Java code is manual, but soon it will be done automatically.

Overview of the language

The purpose of the Vulcan language is to be easy to understand for new programmers rather than being concise or neat. The syntax attempts to mimic the structure of an English sentence; the goal is that every line of code should make sense to somebody who has never programmed before. For example, the current syntax for calling the method "jump" in object "player" would be:
tell player to jump
rather than the more traditional player.jump(). The syntax for passing arguments into a method varies based on what the method is, as this helps the code to look like English. For example, calling the method "burn" in the object "player" with the argument "5" would look like:
tell player to burn for 5 seconds.

All of the code written must be contained in different "behaviours". A behaviour is a bit like an abstract method that you can override; all of the code inside it will be called in specific situations, and there will be parameters that are available to be used in the code.

I added a lot of new features to the language in version alpha 0.2.0: declaring and assigning variables, selection and iteration. Vulcan now supports if statements, repeat loops (which are just for loops) and while loops.

Downloads

See the downloads page for a list of downloads.

Changelog

See the changelog here.
I update the changelog as often as possible, but it may not be fully up-to-date.

Planned features

  • "player" type for changing player attributes and recieving player-based events
  • "world" type for doing worldgen stuff
  • Event handler to receive Forge events
  • Crafting recipes
  • Ability to reference items and blocks by name, item and block data types
  • Adding potion effects to entities
  • Tools and armour
  • Throwable items
  • "biome" type for adding new biomes into the overworld
  • "dimension" type for adding new dimensions (don't expect this any time soon!)
  • "fluid" type for adding liquids, automatically create bucket
  • Possible integration with existing mods?
  • Ability for objects to reference themselves with "this" or "self", or similar
  • An IDE for Vulcan
  • Alternative flavours of Vulcan: more traditional programming syntax, French, German (maybe more!)