I created ScriptCraft to make it easier for younger programmers to create their own Minecraft Mods. Mods are written using the Javascript programming language. Once the ScriptCraft mod is installed, you can add your own new Mods by adding Javascript (.js) files in a directory.
- If you're new to programming and want to start modding Minecraft, then Start Here.
- If you've already used Scratch, have attended a few CoderDojo sessions, or have already dabbled with Javascript, then Start Here.
- Watch some demos of what you can do with ScriptCraft.
This is a simple mod in a file called greet.js in the scriptcraft/plugins directory...
exports.greet = function( player ) {
player.sendMessage('Hello ' + player.name );
};
At the in-game prompt, type...
/js greet(self)
... to see the greeting. Anything you can do using CraftBukkit's API in Java, you can do using ScriptCraft in Javascript.
ScriptCraft is a plugin for Minecraft Servers which lets operators,
administrators and plug-in authors customize the game using
Javascript. ScriptCraft makes it easier to create your own mods. Mods
can be written in Javscript and can use the full Bukkit API. The
ScriptCraft mod also lets you enter javascript commands at the in-game
prompt. To bring up the in-game prompt press the /
key then type
js
followed by any javascript statement. E.g. /js 1+1
will print
2.
ScriptCraft also includes many objects and functions to make building
and modding easier using Javascript. The Javascript Drone
object
bundled with ScriptCraft provides an easy way to build at-scale in
Minecraft. See the attached cottage.js file for an example
of how you can use the sample Drone plugin to create new buildings in
Minecraft.
You will need to have Java version 6 or 7 installed on your
machine. Check the version by typing java -version
at a command
prompt. You will need to install Bukkit on your machine. Bukkit
is a version of Minecraft (server) that makes it easy to install
plugins and customize Minecraft. You can download the CraftBukkit
server here.
If you don't want to compile from source, you can download the compiled plugin here and copy it the craftbukkit's plugins directory.
Once installed, a new scriptcraft/plugins directory is automatically created in
the same directory as the plugins folder. All files in the scriptcraft/plugins
directory will be automatically loaded when CraftBukkit starts. Only
players who are ops can use this plugin. You can grant a player op
privileges by typing 'op ' at the server console prompt or
by adding the player's username to the ops.txt file in your
craftbukkit directory.
Launch CraftBukkit, then launch the Minecraft client and create a new
server connection. The IP address will be localhost
. Once you've
connected to your bukkit server and have entered the game, look at a
ground-level block and type ...
/js up().box('35:15', 4, 9, 1)
... This will create a black monolith structure 4 blocks wide by 9 blocks high by 1 block long. Take a look at the src/main/javascript/drone/drone.js file to see what ScriptCraft's drone can do. If you're interested in customizing minecraft beyond just creating new buildings, take a look at [./homes/homes.js][homes] and [./chat/color.js][chatcolor] for examples of how to create a javascript plugin for Minecraft.
A Javascript mod for minecraft is just a javascript source file (.js) located in the craftbukkit/plugins/scriptcraft/plugins directory. All .js files in this directory will be automatically loaded when the craftbukkit server starts. To get started writing your own mod, first take a look at some of the existing mods in the homes, chat, arrows and signs directories. The chat/color.js mod is probably the simplest mod to get started with.
Because the Bukkit API is open, all of the Bukkit API is accessible via javascript once the ScriptCraft plugin is loaded. There are a couple of useful Java objects exposed via javascript in the Bukkit ScriptCraft plugin...
-
__plugin
- the ScriptCraft Plugin itself. This is a useful starting point for accessing other Bukkit objects. The__plugin
object is of type org.bukkit.plugin.java.JavaPlugin and all of its properties and methods are accessible. For example...js __plugin.server.motd
returns the server's message of the day (javascript is more concise than the equivalent java code: __plugin.getServer().getMotd() ). -
server
- The top-level org.bukkit.Server object. See the Bukkit API docs for reference. -
self
- The player/command-block or server console operator who invoked the/js
command. Again, this is a good jumping off point for diving into the Bukkit API.
If you would like to contribute source code and/or documentation changes please read contributing.md
ScriptCraft is a Bukkit Plugin and uses the Bukkit Configuration API. On first loading, ScriptCraft will create a config.yml file in the plugins/scriptcraft/ directory. This file looks like this...
extract-js:
plugins: true
modules: true
lib: true
This file allows scriptcraft admins to turn on or off re-unzipping of the modules
,
plugins
and lib
folders when deploying a new version of
scriptcraft. It's strongly recommended that the lib
directory always
be set to true to get the latest core scriptcraft code . The modules
and plugins directories are optional and not part of scriptcraft core.
ScriptCraft has its own website with further information.
- To get started using ScriptCraft to Learn Javascript, read The Young Person's Guide to Programming in Minecraft.
- The ScriptCraft API documentation.
- To delve deeper into creating your own minecraft mod for use by others, read Creating a complete Minecraft Mod in Javascript.
- Take a look at some examples
You can find more information about ScriptCraft on my blog.