0.3 RC1

This is the first release candidate for OpenCraft 0.3.

The ditz changelog:

  • bugfix: Permissions glitch?
  • bugfix: UnloadCommand needs security
  • bugfix: Anti-aliasing
  • bugfix: Players can't reconnect
  • bugfix: Sand and Gravel Physics
  • bugfix: Spaztic Water
  • bugfix: LoadCommand needs security
  • bugfix: Server list shows inaccurate player count
  • bugfix: GCJ Errors
  • bugfix: Name Verification
  • bugfix: GenerateCommand needs security
  • Automatic level backups
  • Pixel Art Level
  • Alternate heartbeat server
  • Permission lists
  • Automatically unload worlds
  • Include LICENSE in the .jar files
  • Limit number of backups saved
  • Level type constants instead of strings
  • Trees
  • Run dos2unix
  • Ocean Flooding

This version of OpenCraft contains three super cool new features compared to 0.2:

  • Permissions
  • Multiple worlds
  • Physics

First, the boring one. Permissions.

Much like the original Minecraft server, you had a file called 'ops.txt', which had a list of player names who could do things like kick and ban. MCSharp improved on the idea by introducing the concept of guests and builders. OpenCraft takes it a step further and lets you have permissions as fine-grained or coarse as you want them to be. Permissions are specified in a permissions file using a simple syntax. Here's the example that comes with OpenCraft:

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 this file, we define three roles: Players, Builders, and Ops. We then create three groups, admins, builders, and operators. Afterwards, we assign the roles to the groups and put players in the groups. In OpenCraft security, a role is a collection of permissions, and a group is a collection of users. Using the two you can create simple permission files that have a complex organization of users.

The next cool feature is the multiple world support. Worlds can be generated, loaded, and unloaded on the fly with in-game commands. There are several different generators provided with OpenCraft that can be used to create different styles, such as a set of islands, a rolling landscape, and even pixel art.

The last feature that really, nobody else has is the advanced physics. In OpenCraft, all blocks need to be structurally stable for something to hold up. This brings a new element to the game, since you can't simply build a row of bricks sticking out into space and expect them to float. Different blocks have different strengths, leading to some cool design considerations. It makes a more realistic game.

Normally we'd have a youtube video or something of it, but we're gonna wait for the real 0.3 release. In the meantime, go nuts. The physics are a ton of fun.