A Java Minecraft client implementation.
The goal of this project is to develop a fully-functional simulation environment for Minecraft bots. This includes further development of the Engine
interface to support full interaction with the surrounding world, enhancement of the physics engine to send correct position updates to the server, etc.
Feel free to fork this project, play around with it, extend it, develop your own Bot engine etc, and send back pull requests, questions, comments, etc.
This client was initially intended to provide a simulation environment for the test of cleaning algorithms for vacuum cleaning robots. After this initial goal was met, I wanted to transform the client into a programming environment for Minecraft bot and AI programming.
The CleanerBot class in this project contains a simple sweeping algorithm that completely covers the floor of a confined space, visiting each position at least a given number of times. Developing this algorithm was the driving force behind this project in the first place.
Since the world simulation in Minecraft is almost completely done by the client - while the server only enforces constraints and kicks misbehaving clients - the effort to develop this client into a fully functional (and well-behaving) Minecraft client vastly exceeds the amount of time I can spare for such a project.
With MCCBot in its current state, you can
- connect to a vanilla Minecraft 1.6 server in offline mode
- receive position updates, server and player information
- receive voxel data ("chunks") and block changes
- receive updates on the positions of entities (mobs, players, etc.)
- send and receive chat messages (may need some work for the JSON objects)
- move in a superflat world
- extract information about the surroundings of the player (with a very basic voxel datastructure)
- The physics engine that powers the world needs some additional work
- The protocol implementation is complete, i.e. all PDUs are correctly parsed, but the world does not interpret all the packets (some of them don't even make sense for a bot implementation)
- The client protocol implementation does not support encryption yet, i.e. the bot can only be run on an offline server (with
online-mode=false
).
MCCBot definitely needs some work on the physics engine (or maybe integration of an existing voxel engine) and on protocol encryption.
MCCBot is published under the GNU Affero General Public License, which means that you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
The Minecraft client/server protocol implementation is entirely based on the great work done by the folks at MinecraftCoalition. Thanks for the detailed specs and documentation!