minerl.herobraine
Handlers
In addition to the default environments MineRL provides, you can use a variety of custom handlers to build your own. See the Custom Environment Tutorial to understand how to use these handlers. The following is documentation on all handlers which MineRL currently supports.
Agent Handlers
Agent Handlers allow you to modify various properties of the agent (e.g. items in inventory, starting health, what gives the agent reward).
Agent Start Handlers
Agent start handlers define agent start conditions such as inventory items and health.
When used to create a Gym environment, they should be passed to create_agent_start
- class minerl.herobraine.hero.handlers.agent.start.AgentStartBreakSpeedMultiplier(multiplier=1.0)
Bases:
HandlerSets the break speed multiplier (how fast the agent can break blocks)
See here for more information: https://minecraft.fandom.com/el/wiki/Breaking
Example usage:
AgentStartBreakSpeedMultiplier(2.0)
- to_string() str
The unique identifier for the agent handler. This is used for constructing action/observation spaces and unioning different env specifications.
- xml_template() str
Generates an XML representation of the handler.
This XML representation is templated via Jinja2 and has access to all of the member variables of the class.
Note: This is not an abstract method so that handlers without corresponding XML’s can be combined in handler groups with group based XML implementations.
- class minerl.herobraine.hero.handlers.agent.start.AgentStartNear(anchor_name='MineRLAgent0', min_distance=2, max_distance=10, max_vert_distance=3)
Bases:
HandlerStarts agent near another agent
Example usage:
AgentStartNear("MineRLAgent0", min_distance=2, max_distance=10, max_vert_distance=3)
- to_string() str
The unique identifier for the agent handler. This is used for constructing action/observation spaces and unioning different env specifications.
- xml_template() str
Generates an XML representation of the handler.
This XML representation is templated via Jinja2 and has access to all of the member variables of the class.
Note: This is not an abstract method so that handlers without corresponding XML’s can be combined in handler groups with group based XML implementations.
- class minerl.herobraine.hero.handlers.agent.start.AgentStartPlacement(x, y, z, yaw, pitch=0.0)
Bases:
HandlerSets for the agent start location
Example usage:
AgentStartPlacement(x=5, y=70, z=4, yaw=0, pitch=0)
- to_string() str
The unique identifier for the agent handler. This is used for constructing action/observation spaces and unioning different env specifications.
- xml_template() str
Generates an XML representation of the handler.
This XML representation is templated via Jinja2 and has access to all of the member variables of the class.
Note: This is not an abstract method so that handlers without corresponding XML’s can be combined in handler groups with group based XML implementations.
- class minerl.herobraine.hero.handlers.agent.start.InventoryAgentStart(inventory: Dict[int, Dict[str, Union[str, int]]])
Bases:
HandlerSets the start inventory of the agent by slot id.
Example usage:
InventoryAgentStart({ 0: {'type':'dirt', 'quantity':10}, # metadata specifies the type of planks (e.g. oak, spruce) 1: {'type':'planks', 'metadata': 1, 'quantity':5}, 5: {'type':'log', 'quantity':1}, 6: {'type':'log', 'quantity':2}, 32: {'type':'iron_ore', 'quantity':4 })
- to_string() str
The unique identifier for the agent handler. This is used for constructing action/observation spaces and unioning different env specifications.
- xml_template() str
Generates an XML representation of the handler.
This XML representation is templated via Jinja2 and has access to all of the member variables of the class.
Note: This is not an abstract method so that handlers without corresponding XML’s can be combined in handler groups with group based XML implementations.
- class minerl.herobraine.hero.handlers.agent.start.RandomInventoryAgentStart(inventory: Dict[str, Union[str, int]], use_hotbar: bool = False)
Bases:
InventoryAgentStartSets the agent start inventory by randomly distributing items throughout its inventory slots. Note: This has no effect on inventory observation handlers.
Example usage:
RandomInventoryAgentStart( {'dirt': 10, 'planks': 5} )
- xml_template() str
Generates an XML representation of the handler.
This XML representation is templated via Jinja2 and has access to all of the member variables of the class.
Note: This is not an abstract method so that handlers without corresponding XML’s can be combined in handler groups with group based XML implementations.
- class minerl.herobraine.hero.handlers.agent.start.RandomizedStartDecorator
Bases:
Handler- to_string() str
The unique identifier for the agent handler. This is used for constructing action/observation spaces and unioning different env specifications.
- xml_template() str
Generates an XML representation of the handler.
This XML representation is templated via Jinja2 and has access to all of the member variables of the class.
Note: This is not an abstract method so that handlers without corresponding XML’s can be combined in handler groups with group based XML implementations.
- class minerl.herobraine.hero.handlers.agent.start.SimpleInventoryAgentStart(inventory: List[Dict[str, Union[str, int]]])
Bases:
InventoryAgentStartSets the start inventory of the agent sequentially.
Example usage:
SimpleInventoryAgentStart([ {'type':'dirt', 'quantity':10}, {'type':'planks', 'quantity':5}, {'type':'log', 'quantity':1}, {'type':'iron_ore', 'quantity':4} ])
- class minerl.herobraine.hero.handlers.agent.start.StartingFoodAgentStart(food: int = 20, food_saturation: Optional[float] = None)
Bases:
HandlerSets the starting food and/or food saturation of the agent.
Example usage:
StartingFoodAgentStart(food=2.5, food_saturation=1)
:param
food: The amount of food the agent starts out with :paramfood_saturation: Determines how fast the hunger level depletes, defaults to 5- to_string() str
The unique identifier for the agent handler. This is used for constructing action/observation spaces and unioning different env specifications.
- xml_template() str
Generates an XML representation of the handler.
This XML representation is templated via Jinja2 and has access to all of the member variables of the class.
Note: This is not an abstract method so that handlers without corresponding XML’s can be combined in handler groups with group based XML implementations.
- class minerl.herobraine.hero.handlers.agent.start.StartingHealthAgentStart(max_health: float = 20, health: Optional[float] = None)
Bases:
HandlerSets the starting health of the agent
Example usage:
StartingHealthAgentStart(max_health=20, health=2.5)
max_healthsets the maximum amount of health the agent can havehealthsets amount of health the agent starts with (max_health if not specified)- to_string() str
The unique identifier for the agent handler. This is used for constructing action/observation spaces and unioning different env specifications.
- xml_template() str
Generates an XML representation of the handler.
This XML representation is templated via Jinja2 and has access to all of the member variables of the class.
Note: This is not an abstract method so that handlers without corresponding XML’s can be combined in handler groups with group based XML implementations.
Agent Quit Handlers
These handlers cause the episode to terminate based on certain agent conditions.
When used to create a Gym environment, they should be passed to create_agent_handlers
- class minerl.herobraine.hero.handlers.agent.quit.AgentQuitFromCraftingItem(items: List[Dict[str, Union[str, int]]])
Bases:
HandlerTerminates episode when agent crafts one of the items in
itemsExample usage:
AgentQuitFromCraftingItem([ dict(type="iron_axe", amount=1), dict(type="diamond_block", amount=5) ])
- to_string() str
The unique identifier for the agent handler. This is used for constructing action/observation spaces and unioning different env specifications.
- xml_template() str
Generates an XML representation of the handler.
This XML representation is templated via Jinja2 and has access to all of the member variables of the class.
Note: This is not an abstract method so that handlers without corresponding XML’s can be combined in handler groups with group based XML implementations.
- class minerl.herobraine.hero.handlers.agent.quit.AgentQuitFromPossessingItem(items: List[Dict[str, Union[str, int]]])
Bases:
HandlerTerminates episode when agent obtains one of the items in
itemsExample usage:
AgentQuitFromPossessingItem([ dict(type="golden_apple", amount=3), dict(type="diamond", amount=1) ])
- to_string() str
The unique identifier for the agent handler. This is used for constructing action/observation spaces and unioning different env specifications.
- xml_template() str
Generates an XML representation of the handler.
This XML representation is templated via Jinja2 and has access to all of the member variables of the class.
Note: This is not an abstract method so that handlers without corresponding XML’s can be combined in handler groups with group based XML implementations.
- class minerl.herobraine.hero.handlers.agent.quit.AgentQuitFromTouchingBlockType(blocks: List[str])
Bases:
HandlerTerminates episode when agent touches one of the blocks in
blocksExample usage:
AgentQuitFromTouchingBlockType([ "gold_block", "oak_log" ])
- to_string() str
The unique identifier for the agent handler. This is used for constructing action/observation spaces and unioning different env specifications.
- xml_template() str
Generates an XML representation of the handler.
This XML representation is templated via Jinja2 and has access to all of the member variables of the class.
Note: This is not an abstract method so that handlers without corresponding XML’s can be combined in handler groups with group based XML implementations.
Reward Handlers
These handlers modify what things the agent gets rewarded for.
When used to create a Gym environment, they should be passed to create_rewardables
- class minerl.herobraine.hero.handlers.agent.reward.ConstantReward(constant)
Bases:
RewardHandlerA constant reward handler
- from_hero(obs_dict)
By default hero will include the reward in the observation. This is just a pass through for convenience. :param obs_dict: :return: The reward
- from_universal(x)
Converts a universal representation of the handler (e.g. universal action/observation)
- class minerl.herobraine.hero.handlers.agent.reward.RewardForCollectingItems(item_rewards: List[Dict[str, Union[str, int]]])
Bases:
_RewardForPosessingItemBaseThe standard malmo reward for collecting item.
Example usage:
RewardForCollectingItems([ dict(type="log", amount=1, reward=1.0), ])
- from_universal(x)
Converts a universal representation of the handler (e.g. universal action/observation)
- class minerl.herobraine.hero.handlers.agent.reward.RewardForCollectingItemsOnce(item_rewards: List[Dict[str, Union[str, int]]])
Bases:
_RewardForPosessingItemBaseThe standard malmo reward for collecting item once.
Example usage:
RewardForCollectingItemsOnce([ dict(type="log", amount=1, reward=1), ])
- from_universal(x)
Converts a universal representation of the handler (e.g. universal action/observation)
- class minerl.herobraine.hero.handlers.agent.reward.RewardForDistanceTraveledToCompassTarget(reward_per_block: int, density: str = 'PER_TICK')
Bases:
RewardHandlerCreates a reward which is awarded when the player reaches a certain distance from a target.
Example usage:
RewardForDistanceTraveledToCompassTarget(2)
- from_universal(obs)
Converts a universal representation of the handler (e.g. universal action/observation)
- reset()
- to_string() str
The unique identifier for the agent handler. This is used for constructing action/observation spaces and unioning different env specifications.
- xml_template() str
Generates an XML representation of the handler.
This XML representation is templated via Jinja2 and has access to all of the member variables of the class.
Note: This is not an abstract method so that handlers without corresponding XML’s can be combined in handler groups with group based XML implementations.
- class minerl.herobraine.hero.handlers.agent.reward.RewardForMissionEnd(reward: int, description: str = 'out_of_time')
Bases:
RewardHandlerCreates a reward which is awarded when a mission ends.
Example usage:
# awards a reward of 5 when mission ends RewardForMissionEnd(reward=5.0, description="mission termination")
- from_universal(obs)
Converts a universal representation of the handler (e.g. universal action/observation)
- to_string() str
The unique identifier for the agent handler. This is used for constructing action/observation spaces and unioning different env specifications.
- xml_template() str
Generates an XML representation of the handler.
This XML representation is templated via Jinja2 and has access to all of the member variables of the class.
Note: This is not an abstract method so that handlers without corresponding XML’s can be combined in handler groups with group based XML implementations.
- class minerl.herobraine.hero.handlers.agent.reward.RewardForTouchingBlockType(blocks: List[Dict[str, Union[str, int, float]]])
Bases:
RewardHandlerCreates a reward which is awarded when the player touches a block.
Example usage:
RewardForTouchingBlockType([ {'type':'diamond_block', 'behaviour':'onceOnly', 'reward':'10'}, ])
- from_universal(obs)
Converts a universal representation of the handler (e.g. universal action/observation)
- reset()
- to_string() str
The unique identifier for the agent handler. This is used for constructing action/observation spaces and unioning different env specifications.
- xml_template() str
Generates an XML representation of the handler.
This XML representation is templated via Jinja2 and has access to all of the member variables of the class.
Note: This is not an abstract method so that handlers without corresponding XML’s can be combined in handler groups with group based XML implementations.
- class minerl.herobraine.hero.handlers.agent.reward.RewardHandler
Bases:
TranslationHandlerSpecifies a reward handler for a task. These need to be attached to tasks with reinforcement learning objectives. All rewards need inherit from this reward handler #Todo: Figure out how this interplays with Hero, as rewards are summed.
- from_hero(obs_dict)
By default hero will include the reward in the observation. This is just a pass through for convenience. :param obs_dict: :return: The reward
Action Handlers
Action handlers define what actions agents are allowed to take.
When used to create a gym, you should override create_actionables and pass the action handlers to this function. See the Custom Environment Tutorial for more.
Camera
- class minerl.herobraine.hero.handlers.agent.actions.camera.CameraAction
Bases:
ActionUses <delta_pitch, delta_yaw> vector in degrees to rotate the camera. pitch range [-180, 180], yaw range [-180, 180]
- from_universal(x)
Converts a universal representation of the handler (e.g. universal action/observation)
- to_string()
The unique identifier for the agent handler. This is used for constructing action/observation spaces and unioning different env specifications.
- xml_template() str
Generates an XML representation of the handler.
This XML representation is templated via Jinja2 and has access to all of the member variables of the class.
Note: This is not an abstract method so that handlers without corresponding XML’s can be combined in handler groups with group based XML implementations.
Craft
- class minerl.herobraine.hero.handlers.agent.actions.craft.CraftAction(items: list, _other=typing.Union[str, NoneType], _default=typing.Union[str, NoneType])
Bases:
ItemListActionAn action handler for crafting items
Note when used alongside Craft Item Nearby, block lists must be disjoint or from_universal will fire multiple times
- from_universal(obs)
Converts a universal representation of the handler (e.g. universal action/observation)
- to_string()
The unique identifier for the agent handler. This is used for constructing action/observation spaces and unioning different env specifications.
- xml_template() str
Generates an XML representation of the handler.
This XML representation is templated via Jinja2 and has access to all of the member variables of the class.
Note: This is not an abstract method so that handlers without corresponding XML’s can be combined in handler groups with group based XML implementations.
- class minerl.herobraine.hero.handlers.agent.actions.craft.CraftNearbyAction(items: list, _other=typing.Union[str, NoneType], _default=typing.Union[str, NoneType])
Bases:
CraftActionAn action handler for crafting items when agent is in view of a crafting table
Note when used along side Craft Item, item lists must be disjoint or from_universal will fire multiple times
- to_string()
The unique identifier for the agent handler. This is used for constructing action/observation spaces and unioning different env specifications.
- xml_template() str
Generates an XML representation of the handler.
This XML representation is templated via Jinja2 and has access to all of the member variables of the class.
Note: This is not an abstract method so that handlers without corresponding XML’s can be combined in handler groups with group based XML implementations.
Equip
- class minerl.herobraine.hero.handlers.agent.actions.equip.EquipAction(items: list, _default='none', _other='other')
Bases:
ItemWithMetadataListActionAn action handler for observing a list of equipped items
- from_universal(obs) str
Converts a universal representation of the handler (e.g. universal action/observation)
- logger = <Logger minerl.herobraine.hero.handlers.agent.actions.equip.EquipAction (WARNING)>
- reset()
- xml_template() str
Generates an XML representation of the handler.
This XML representation is templated via Jinja2 and has access to all of the member variables of the class.
Note: This is not an abstract method so that handlers without corresponding XML’s can be combined in handler groups with group based XML implementations.
Keyboard
- class minerl.herobraine.hero.handlers.agent.actions.keyboard.KeybasedCommandAction(command, *keys)
Bases:
ActionA command action which is generated from human keypresses in anvil. Examples of such actions are movement actions, etc.
This is not to be confused with keyboard actions, whereby both anvil and malmo simulate and act on direct key codes.
Combinations of KeybasedCommandActions yield actions like:
{ “move” : 1, “jump”: 1 }where move and jump are the commands, which correspond to keys like ‘W’, ‘SPACE’, etc.
This is as opposed to keyboard actions (see the following class definition in keyboard.py) which yield actions like:
{ "keyboard" : { "W" : 1, "A": 1, "S": 0, "E": 1, ... } }More information can be found in the unification document (internal).
- from_universal(x)
Converts a universal representation of the handler (e.g. universal action/observation)
- to_string()
The unique identifier for the agent handler. This is used for constructing action/observation spaces and unioning different env specifications.
- xml_template() str
Notice how all of the instances of keybased command actions, of which there will be typically many in an environment spec, correspond to exactly the same XML stub.
This is discussed at length in the unification proposal and is a chief example of where manifest consolidation is needed.
Place
- class minerl.herobraine.hero.handlers.agent.actions.place.PlaceBlock(blocks: list, _other=typing.Union[str, NoneType], _default=typing.Union[str, NoneType])
Bases:
ItemListActionAn action handler for placing a specific block
- from_universal(obs)
Converts a universal representation of the handler (e.g. universal action/observation)
- to_string()
The unique identifier for the agent handler. This is used for constructing action/observation spaces and unioning different env specifications.
- xml_template() str
Generates an XML representation of the handler.
This XML representation is templated via Jinja2 and has access to all of the member variables of the class.
Note: This is not an abstract method so that handlers without corresponding XML’s can be combined in handler groups with group based XML implementations.
Smelt
- class minerl.herobraine.hero.handlers.agent.actions.smelt.SmeltItemNearby(items: list, _other=typing.Union[str, NoneType], _default=typing.Union[str, NoneType])
Bases:
CraftActionAn action handler for crafting items when agent is in view of a crafting table
Note when used along side Craft Item, block lists must be disjoint or from_universal will fire multiple times
- from_universal(obs)
Converts a universal representation of the handler (e.g. universal action/observation)
- to_string()
The unique identifier for the agent handler. This is used for constructing action/observation spaces and unioning different env specifications.
- xml_template() str
Generates an XML representation of the handler.
This XML representation is templated via Jinja2 and has access to all of the member variables of the class.
Note: This is not an abstract method so that handlers without corresponding XML’s can be combined in handler groups with group based XML implementations.
Chat
- class minerl.herobraine.hero.handlers.agent.actions.chat.ChatAction
Bases:
ActionHandler which lets agents send Minecraft chat messages
Note: this may currently be limited to the first agent sending messages (check Malmo for this)
This can be used to execute MINECRAFT COMMANDS !!!
Example usage:
ChatAction()
To summon a creeper, use this action dictionary:
{"chat": "/summon creeper"}
- from_universal(x)
Converts a universal representation of the handler (e.g. universal action/observation)
- to_string()
The unique identifier for the agent handler. This is used for constructing action/observation spaces and unioning different env specifications.
- xml_template() str
Generates an XML representation of the handler.
This XML representation is templated via Jinja2 and has access to all of the member variables of the class.
Note: This is not an abstract method so that handlers without corresponding XML’s can be combined in handler groups with group based XML implementations.
Observation Handlers
Observation handlers define what observation data agents receive (e.g. POV image, lifestats)
When used to create a gym, you should override create_observables and pass the observation handlers to this function. See the Custom Environment Tutorial for more.
Compass
- class minerl.herobraine.hero.handlers.agent.observations.compass.CompassObservation(angle=True, distance=False)
Bases:
TranslationHandlerGroupDefines compass observations.
- Parameters
angle (bool, optional) – Whether or not to include angle observation. Defaults to True.
distance (bool, optional) – Whether or not ot include distance observation. Defaults to False.
Example usage:
# A compass observation object which gives angle and distance information CompassObservation(True, True)
- to_string() str
The unique identifier for the agent handler. This is used for constructing action/observation spaces and unioning different env specifications.
- xml_template() str
Generates an XML representation of the handler.
This XML representation is templated via Jinja2 and has access to all of the member variables of the class.
Note: This is not an abstract method so that handlers without corresponding XML’s can be combined in handler groups with group based XML implementations.
Damage Source
- class minerl.herobraine.hero.handlers.agent.observations.damage_source.ObservationFromDamageSource
Bases:
TranslationHandlerGroupIncludes the most recent damage event including the amount, type, location, and other properties.
- to_string() str
The unique identifier for the agent handler. This is used for constructing action/observation spaces and unioning different env specifications.
- xml_template() str
Generates an XML representation of the handler.
This XML representation is templated via Jinja2 and has access to all of the member variables of the class.
Note: This is not an abstract method so that handlers without corresponding XML’s can be combined in handler groups with group based XML implementations.
Equipped Item
- class minerl.herobraine.hero.handlers.agent.observations.equipped_item.EquippedItemObservation(items: Sequence[str], mainhand: bool = True, offhand: bool = False, armor: bool = False, _default: str = 'none', _other: str = 'other')
Bases:
TranslationHandlerGroupEnables the observation of equipped items in the main, offhand, and armor slots of the agent.
- to_string() str
The unique identifier for the agent handler. This is used for constructing action/observation spaces and unioning different env specifications.
- xml_template() str
Generates an XML representation of the handler.
This XML representation is templated via Jinja2 and has access to all of the member variables of the class.
Note: This is not an abstract method so that handlers without corresponding XML’s can be combined in handler groups with group based XML implementations.
Inventory
- class minerl.herobraine.hero.handlers.agent.observations.inventory.FlatInventoryObservation(item_list: Sequence[str], _other='other')
Bases:
TranslationHandlerHandles GUI Container Observations for selected items
- add_to_mission_spec(mission_spec)
- from_hero(obs)
Converts the Hero observation into a one-hot of the inventory items for a given inventory container. Ignores variant / color :param obs: :return:
- from_universal(obs)
Converts a universal representation of the handler (e.g. universal action/observation)
- logger = <Logger minerl.herobraine.hero.handlers.agent.observations.inventory.FlatInventoryObservation (WARNING)>
- to_string()
The unique identifier for the agent handler. This is used for constructing action/observation spaces and unioning different env specifications.
- xml_template() str
Generates an XML representation of the handler.
This XML representation is templated via Jinja2 and has access to all of the member variables of the class.
Note: This is not an abstract method so that handlers without corresponding XML’s can be combined in handler groups with group based XML implementations.
Lifestats
- class minerl.herobraine.hero.handlers.agent.observations.lifestats.ObservationFromLifeStats
Bases:
TranslationHandlerGroupGroups all of the lifestats observations together to correspond to one XML element.
- to_string() str
The unique identifier for the agent handler. This is used for constructing action/observation spaces and unioning different env specifications.
- xml_template() str
Generates an XML representation of the handler.
This XML representation is templated via Jinja2 and has access to all of the member variables of the class.
Note: This is not an abstract method so that handlers without corresponding XML’s can be combined in handler groups with group based XML implementations.
Location Stats
- class minerl.herobraine.hero.handlers.agent.observations.location_stats.ObservationFromCurrentLocation
Bases:
TranslationHandlerGroupIncludes the current biome, how likely rain and snow are there, as well as the current light level, how bright the sky is, and if the player can see the sky.
Also includes x, y, z, roll, and pitch
- to_string() str
The unique identifier for the agent handler. This is used for constructing action/observation spaces and unioning different env specifications.
- xml_template() str
Generates an XML representation of the handler.
This XML representation is templated via Jinja2 and has access to all of the member variables of the class.
Note: This is not an abstract method so that handlers without corresponding XML’s can be combined in handler groups with group based XML implementations.
Base Stats
- class minerl.herobraine.hero.handlers.agent.observations.mc_base_stats.ObserveFromFullStats(stat_key)
Bases:
TranslationHandlerGroupIncludes the use_item statistics for every item in MC that can be used
- to_string() str
The unique identifier for the agent handler. This is used for constructing action/observation spaces and unioning different env specifications.
- xml_template() str
Generates an XML representation of the handler.
This XML representation is templated via Jinja2 and has access to all of the member variables of the class.
Note: This is not an abstract method so that handlers without corresponding XML’s can be combined in handler groups with group based XML implementations.
POV
- class minerl.herobraine.hero.handlers.agent.observations.pov.POVObservation(video_resolution: Tuple[int, int], include_depth: bool = False)
Bases:
KeymapTranslationHandlerHandles POV observations.
- from_hero(obs)
Converts a “hero” representation of an instance of this handler to a member of the space.
- to_string()
The unique identifier for the agent handler. This is used for constructing action/observation spaces and unioning different env specifications.
- xml_template() str
Generates an XML representation of the handler.
This XML representation is templated via Jinja2 and has access to all of the member variables of the class.
Note: This is not an abstract method so that handlers without corresponding XML’s can be combined in handler groups with group based XML implementations.
Server Handlers
Server Start Handlers
Server start handlers allow you to set the initial state of the World (e.g. weather, time)
When used to create a Gym environment, they should be passed to create_server_initial_conditions
- class minerl.herobraine.hero.handlers.server.start.SpawningInitialCondition(allow_spawning: bool)
Bases:
Handler- to_string() str
The unique identifier for the agent handler. This is used for constructing action/observation spaces and unioning different env specifications.
- xml_template() str
Generates an XML representation of the handler.
This XML representation is templated via Jinja2 and has access to all of the member variables of the class.
Note: This is not an abstract method so that handlers without corresponding XML’s can be combined in handler groups with group based XML implementations.
- class minerl.herobraine.hero.handlers.server.start.TimeInitialCondition(allow_passage_of_time: bool, start_time: Optional[int] = None)
Bases:
HandlerSets the initial world time as well as whether time can pass.
Example usage:
# Sets time to morning and stops passing of time TimeInitialCondition(False, 23000)
- to_string() str
The unique identifier for the agent handler. This is used for constructing action/observation spaces and unioning different env specifications.
- xml_template() str
Generates an XML representation of the handler.
This XML representation is templated via Jinja2 and has access to all of the member variables of the class.
Note: This is not an abstract method so that handlers without corresponding XML’s can be combined in handler groups with group based XML implementations.
- class minerl.herobraine.hero.handlers.server.start.WeatherInitialCondition(weather: str)
Bases:
HandlerSets the initial weather condition in the world.
Example usage:
# Sets weather to thunder WeatherInitialCondition("thunder")
- to_string() str
The unique identifier for the agent handler. This is used for constructing action/observation spaces and unioning different env specifications.
- xml_template() str
Generates an XML representation of the handler.
This XML representation is templated via Jinja2 and has access to all of the member variables of the class.
Note: This is not an abstract method so that handlers without corresponding XML’s can be combined in handler groups with group based XML implementations.
Server Quit Handlers
These handlers allow episode termination based on server conditions (e.g. time passed)
When used to create a Gym environment, they should be passed to create_server_quit_producers
- class minerl.herobraine.hero.handlers.server.quit.ServerQuitFromTimeUp(time_limit_ms: int, description='out_of_time')
Bases:
HandlerForces the server to quit after a certain time_limit_ms also specifies a description parameter for the xml.
Example usage
ServerQuitFromTimeUp(50000)
- to_string() str
The unique identifier for the agent handler. This is used for constructing action/observation spaces and unioning different env specifications.
- xml_template() str
Generates an XML representation of the handler.
This XML representation is templated via Jinja2 and has access to all of the member variables of the class.
Note: This is not an abstract method so that handlers without corresponding XML’s can be combined in handler groups with group based XML implementations.
- class minerl.herobraine.hero.handlers.server.quit.ServerQuitWhenAnyAgentFinishes
Bases:
HandlerForces the server to quit if any of the agents involved quits. Has no parameters.
Example usage:
ServerQuitWhenAnyAgentFinishes()
- to_string() str
The unique identifier for the agent handler. This is used for constructing action/observation spaces and unioning different env specifications.
- xml_template() str
Generates an XML representation of the handler.
This XML representation is templated via Jinja2 and has access to all of the member variables of the class.
Note: This is not an abstract method so that handlers without corresponding XML’s can be combined in handler groups with group based XML implementations.
World Handlers
World handlers provide a number of ways to generate and modify the Minecraft world (e.g. specifying the type of world to be created, like Superflat, or drawing shapes and blocks in the world).
When used to create a Gym environment, they should be passed to create_server_world_generators
- class minerl.herobraine.hero.handlers.server.world.BiomeGenerator(biome: Union[int, str], force_reset: bool = True)
Bases:
Handler- to_string() str
The unique identifier for the agent handler. This is used for constructing action/observation spaces and unioning different env specifications.
- xml_template() str
Generates an XML representation of the handler.
This XML representation is templated via Jinja2 and has access to all of the member variables of the class.
Note: This is not an abstract method so that handlers without corresponding XML’s can be combined in handler groups with group based XML implementations.
- class minerl.herobraine.hero.handlers.server.world.DefaultWorldGenerator(force_reset=True, generator_options: str = '{}')
Bases:
HandlerGenerates a world using minecraft procedural generation (this is the default world type in minecraft).
- Parameters
force_reset (bool, optional) – If the world should be reset every episode.. Defaults to True.
generator_options – A JSON object specifying parameters to the procedural generator.
Example usage:
# Generates a default world that does not reset every episode (e.g. if blocks get broken in one episode # they will not be replaced in the next) DefaultWorldGenerator(False, "")
- to_string() str
The unique identifier for the agent handler. This is used for constructing action/observation spaces and unioning different env specifications.
- xml_template() str
Generates an XML representation of the handler.
This XML representation is templated via Jinja2 and has access to all of the member variables of the class.
Note: This is not an abstract method so that handlers without corresponding XML’s can be combined in handler groups with group based XML implementations.
- class minerl.herobraine.hero.handlers.server.world.DrawingDecorator(to_draw: str)
Bases:
HandlerDraws shapes (e.g. spheres, cuboids) in the world.
Example usage:
# draws an empty square of gold blocks DrawingDecorator(' <DrawCuboid x1="3" y1="4" z1="3" x2="3" y2="6" z2="-3" type="gold_block"/> <DrawCuboid x1="3" y1="4" z1="3" x2="-3" y2="6" z2="3" type="gold_block"/> <DrawCuboid x1="-3" y1="4" z1="-3" x2="3" y2="6" z2="-3" type="gold_block"/> <DrawCuboid x1="-3" y1="4" z1="-3" x2="-3" y2="6" z2="3" type="gold_block"/> ')
See Project Malmo for more
- to_string() str
The unique identifier for the agent handler. This is used for constructing action/observation spaces and unioning different env specifications.
- xml_template() str
Generates an XML representation of the handler.
This XML representation is templated via Jinja2 and has access to all of the member variables of the class.
Note: This is not an abstract method so that handlers without corresponding XML’s can be combined in handler groups with group based XML implementations.
- class minerl.herobraine.hero.handlers.server.world.FileWorldGenerator(filename: str, destroy_after_use: bool = True)
Bases:
HandlerGenerates a world from a file.
- to_string() str
The unique identifier for the agent handler. This is used for constructing action/observation spaces and unioning different env specifications.
- xml_template() str
Generates an XML representation of the handler.
This XML representation is templated via Jinja2 and has access to all of the member variables of the class.
Note: This is not an abstract method so that handlers without corresponding XML’s can be combined in handler groups with group based XML implementations.
- class minerl.herobraine.hero.handlers.server.world.FlatWorldGenerator(force_reset: bool = True, generatorString: str = '')
Bases:
HandlerGenerates a world that is a flat landscape.
Example usage:
- to_string() str
The unique identifier for the agent handler. This is used for constructing action/observation spaces and unioning different env specifications.
- xml_template() str
Generates an XML representation of the handler.
This XML representation is templated via Jinja2 and has access to all of the member variables of the class.
Note: This is not an abstract method so that handlers without corresponding XML’s can be combined in handler groups with group based XML implementations.
- class minerl.herobraine.hero.handlers.server.world.VillageSpawnDecorator
Bases:
Handler- to_string() str
The unique identifier for the agent handler. This is used for constructing action/observation spaces and unioning different env specifications.
- xml_template() str
Generates an XML representation of the handler.
This XML representation is templated via Jinja2 and has access to all of the member variables of the class.
Note: This is not an abstract method so that handlers without corresponding XML’s can be combined in handler groups with group based XML implementations.