Giter Club home page Giter Club logo

mccbot's Introduction

MCCBot - Minecraft Client Bot

A Java Minecraft client implementation.

Goal

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.

Current status

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.

Cleaning algorithm

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)

Issues

  • 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).

Current status summary

MCCBot definitely needs some work on the physics engine (or maybe integration of an existing voxel engine) and on protocol encryption.

License

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.

Credits

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!

mccbot's People

Contributors

cmorgner avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.