chunkymonkey

module
v0.0.0-...-566b5d1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 12, 2011 License: MIT

README

  ___
C(o o)O     C H U N K Y   M O N K E Y
  (.)   \
 w====m==|       minecraft server
        /

Chunky Monkey is a Minecraft Beta multiplayer server. It is licensed under the MIT open source license, please see the LICENSE file for more information.

Website: http://github.com/huin/chunkymonkey Mailing list: https://groups.google.com/group/chunkymonkey-minecraft Contact: John Beisley

Status

Chunky Monkey is currently in early development and does not yet run anything that could be considered a full game experience.

Worlds generated by Alpha or Beta Notchian clients or servers can be loaded by the server.

Minecraft Beta clients may:

  • Connect and walk around the existing generated parts of a world.
  • Blocks may be dug, items picked up, and blocks placed.
  • Craft using the 2x2 or 3x3 crafting grids and the furnace.

Currently missing features include:

  • Block physics.
  • Complete item physics (there is a minimal implementation in place).
  • Mobs.
  • Many block interactions.
  • World persistency.
  • Decent world generation.

Contributing

Chunky Monkey is looking for assistance in furthering its development.

Key skills:

  • Use of Git and Github.
  • Moderate skill in the Go programming language.
  • Ability to write clear, maintainable code.
  • Unit testing knowledge.
  • Understanding of goroutine concurrency primitives.

Highly desireable skills:

  • Embedding a scripting environment (perhaps Lua?) into Go.
  • Low-latency reliable network communication.
  • Server scalabilty and reliability architecture.
  • Service monitoring.
  • World generation (including noise generation).

If you're interested in working on the project - it's best to contact Huin via Github, or on the Freenode IRC network in the #mcdevs channel.

Requirements

The Go toolchain must be installed. Note that chunkymonkey is developed against the current stable release of the Go toolchain, so might not compile against the weekly releases (gofix might be able to fix such cases).

Building & Testing

Godag is used to build chunkymonkey. Install it, and run:

$ make

If you are developing, you are encouraged to run the unit tests with:

$ make test

The unit tests require GoMock to be installed.

Running

Serve up a single player world:

$ bin/chunkymonkey ~/.minecraft/saves/World1
2010/10/03 16:32:13 Listening on  :25565

Record/replay

For debugging it is often useful to record a player's actions and replay them one or more times later. This makes it possible to simulate multiplayer games without having real people logging in.

To record a session, run the intercept proxy:

$ bin/intercept -record player.log localhost:25567 localhost:25565

Which will accept client connections on localhost port 25567 and relay the connection to the server at localhost port 25565. This has the side effect of display packets that pass through to stderr.

Connect your Minecraft client to localhost:25567, and a record of the clients actions will be stored to player.log-1, player.log-2 etc. (one file per client connection).

To replay a session:

$ bin/replay localhost:25565 player.log-1

Directories

Path Synopsis
src
chunkymonkey/nbtutil
Utility functions for reading/writing values to NBT files.
Utility functions for reading/writing values to NBT files.
chunkymonkey/window
The window package handles windows for inventories.
The window package handles windows for inventories.
chunkymonkey/worldstore
Responsible for reading the overall world persistent state.
Responsible for reading the overall world persistent state.
cmd/datatests
Utility to perform basic checks on supplied data files for blocks, items and recipes.
Utility to perform basic checks on supplied data files for blocks, items and recipes.
nbt
nbt provides the ability to read/write NBT data structures from Readers and Writers.
nbt provides the ability to read/write NBT data structures from Readers and Writers.
perlin
Perlin noise generation code.
Perlin noise generation code.
testencoding
The testencoding package is used in testing serialization and deserialization.
The testencoding package is used in testing serialization and deserialization.
testmatcher
gomock.Matcher implementations for use in unit tests that use mocks.
gomock.Matcher implementations for use in unit tests that use mocks.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL