Data Structures =============== World data is shared between all the bots you create in a single process. This helps keep memory usage down by not storing duplicate copies of chunk and entity information for each bot in the same world. Worlds ------ ``World`` objects have several pieces of data. Please read the Transactions section to learn why the data is structured the way it is. ``(:time world)`` is a ref containing the current world time. ``(:entities world)`` is a ref containing a map of entity IDs to ``Entity`` refs. ``(:chunks world)`` is a ref containing a map of chunk coordinates ([x y z] vectors) to ``Chunk`` refs. Locations --------- ``Location`` objects represent the locations of entities in the world. They have the following pieces of data: * ``(:x location)`` * ``(:y location)`` * ``(:z location)`` * ``(:yaw location)`` * ``(:pitch location)`` * ``(:stance location)`` * ``(:onground location)`` Entities -------- ``Entity`` objects represent a single entity in the world. One of these is your bot's player. ``(:eid entity)`` is the ID of the entity. ``(:loc entity)`` is a ``Location`` object representing the location of the entity in the world. ``(:despawned entity)`` is a boolean that indicates whether the entity has despawned. You should never need to read this, but please read the Transactions section for the reason why it's included. ``(:velocity entity)`` is the y velocity of the entity. Only exists for bots, and you should never need to touch it. Chunks ------ A chunk has four arrays representing the data for blocks in the chunk. You shouldn't need to access chunk data directly -- there are helper functions in ``clojurecraft.chunks`` that will look up block objects for you. Blocks ------ Bots ---- ``Bot`` objects are your gateway to observing and interacting with the world. ``(:world bot)`` is a ``World`` object representing the bot's world. ``(:player bot)`` is a ref containing the ``Entity`` representing the bot. This is just a shortcut so you don't have to pull it out of the ``:entities`` map in the bot's world all the time.