OpenCraft Manual

OpenCraft is a Free and Open Source implementation of the Minecraft server.

Starting OpenCraft depends on the installation method. The most common is via the single .jar file, which can be executed via java -jar opencraft-server.jar.

If building from source, simply run ant run which will cause Apache Ant to go through all the stages of compilation and finally run the server.

Creating Worlds

There are two ways to create worlds in OpenCraft.

If you've got a world already made, just drop it into its own subdirectory under data/maps. OpenCraft supports pretty much all formats, and any unsupported format is a bug.

There is a naming convention you must follow when adding a map. Each world gets their own directory under data/maps/, and each save of a world starts with that world's name. For instance, if you have a save file named 'simcity.dat', you would copy it into opencraft as data/maps/simcity/simcity.dat. If the file was named 'simcity.mclevel', you'd save it into data/maps/simcity/simcity.mclevel.

If you're looking to create a world from scratch, you need to be in the game for that, and you need the org.opencraft.server.cmd.impl.GenerateCommand.execute permission. Once you're in, run /generate which will give you the list of parameters you need to supply.

Development Notes

The hackers of OpenCraft use this place to keep notes related to development.

Alpha Protocol

The original, 'classic' protocol is available at http://www.minecraftwiki.net/wiki/Development_Resources#Packet_Protocol

The new protocol can be found on a different wiki at http://wiki.tkte.ch/minecraft:protocol

Without any experimentation, it looks like the two protocols can co-exist.

Once a classic client connects, the first packet it sends should be ID 0, which is the authentication packet. An alpha client sends packet ID 1, which is the identification. tdfischer is working on writing the code that would cause different protocol versions to co-exist in the server.

Installation

No formal installation is required to get an OpenCraft server up and running.

Mobile Opencraft

Break out your favorite classic server because here comes a brand new way to play Minecraft on the go! Mobile Opencraft makes use of Qt and C++, and is presently targeted at the n900 phone, but it can run on anything that has Qt. The mobile 2D client makes use of a block sheet derived from the excellent work of Doku, the latest of which can be located here. The texture shown in the following demos were edited by me slightly.

A video of the program in action: http://www.youtube.com/watch?v=dl6s8OIvYkE

The water route thing that I modified in the video as seen in the simulator. The solid blocks are at the current viewing plane, and the half faded ones are one level below. image1

The same image, but with the block selection menu open. image2

The same section, but this time we can see the effect in 3D. image3

A 2D view of my house. image4

Underground library. Everyone needs one, or five of these. image5

Not pictured is a chat window, and an options window that lets you switch between drag and paint, and tap to paint (no accidental dragging).

More content will be appearing here!

Permissions

Included with OpenCraft is this example permissions file:

VERSION 1

// Example permissions

ROLE Player {
    org.opencraft.server.cmd.impl.TeleportCommand.execute
    org.opencraft.server.cmd.impl.GotoCommand.execute
    org.opencraft.server.cmd.impl.HelpCommand.execute
    org.opencraft.server.cmd.impl.SpawnCommand.execute
    org.opencraft.server.cmd.impl.MeCommand.execute
    org.opencraft.server.cmd.impl.LevelsCommand.execute
    org.opencraft.server.cmd.impl.PingCommand.execute
    org.opencraft.server.cmd.impl.RollCommand.execute
}

ROLE Builder {
    @Player
    org.opencraft.server.Build
    org.opencraft.server.Destroy
}

ROLE Op {
    @Builder
    org.opencraft.server.cmd.impl.KickCommand.execute
    org.opencraft.server.cmd.impl.SummonCommand.execute
    org.opencraft.server.cmd.impl.SayCommand.execute
    org.opencraft.server.cmd.impl.SetspawnCommand.execute
}

GROUP admins {
    //Add your administrators here
}

GROUP operators {
    //Add your operators here
}

GROUP builders {
    //Add your builders here
}

//Grants the Player role to all players
ALLOW @Player to @ALL

//Gives admins everything
ALLOW * to @admins
ALLOW @Builder to @builders
ALLOW @Op to @operators

//Let everyone build on the default world
WORLD default {
    ALLOW @Builder to @ALL
}

In OpenCraft security, there are five types of 'blocks':

The VERSION block is not required, but if present it must be the first line of the file. The current permission syntax is version 1.

ROLE blocks give names to collections of permissions.

GROUP blocks do the same, but for users.

ALLOW blocks associate permissions or roles with individual users or groups.

WORLD blocks limit the scope of everything to a specific world in the server.

Be careful, the file is case sensitive.