Merge branch 'mercury' into New-Model-Support-Mercury

This commit is contained in:
Max Robinson 2025-08-23 15:18:27 -05:00 committed by GitHub
commit 2fc3a9522f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
140 changed files with 30280 additions and 26967 deletions

3
.gitignore vendored
View file

@ -26,4 +26,5 @@ tasks/construction_tasks/train_multiagent_construction_tasks.json
tasks/construction_tasks/test/**
tasks/construction_tasks/train/**
server_data*
**/.DS_Store
**/.DS_Store
src/mindcraft-py/__pycache__/

View file

@ -13,7 +13,7 @@ RUN apt-get -y install python3-boto3
RUN apt-get -y install python3-tqdm
RUN apt-get -y install tmux
RUN git clone https://github.com/icwhite/mindcraft.git /mindcraft
RUN git clone https://github.com/kolbytn/mindcraft.git /mindcraft
WORKDIR /mindcraft
COPY ./server_data.zip /mindcraft
RUN unzip server_data.zip
@ -22,9 +22,22 @@ RUN npm install
# Copy the rest of the application code to the working directory
# RUN apt update
# RUN apt install bash ca-certificates wget git -y # install first to avoid openjdk install bug
# RUN apt install openjdk-17-jre-headless -y
RUN apt install -y wget apt-transport-https gnupg lsb-release
# Add Adoptium repository key
RUN wget -O - https://packages.adoptium.net/artifactory/api/gpg/key/public | apt-key add -
# Add Adoptium repository
RUN echo "deb https://packages.adoptium.net/artifactory/deb $(lsb_release -cs) main" > /etc/apt/sources.list.d/adoptium.list
# Update package lists
RUN apt update
RUN apt install bash ca-certificates wget git -y # install first to avoid openjdk install bug
RUN apt install openjdk-17-jre-headless -y
# Install Temurin (Adoptium) Java 21
RUN apt install temurin-21-jdk -y
# Install unzip

View file

@ -10,15 +10,15 @@ Do not connect this bot to public servers with coding enabled. This project allo
## Requirements
- [Minecraft Java Edition](https://www.minecraft.net/en-us/store/minecraft-java-bedrock-edition-pc) (up to v1.21.1, recommend v1.20.4)
- [Node.js Installed](https://nodejs.org/) (at least v14)
- One of these: [OpenAI API Key](https://openai.com/blog/openai-api) | [Gemini API Key](https://aistudio.google.com/app/apikey) | [Anthropic API Key](https://docs.anthropic.com/claude/docs/getting-access-to-claude) | [Replicate API Key](https://replicate.com/) | [Hugging Face API Key](https://huggingface.co/) | [Groq API Key](https://console.groq.com/keys) | [Ollama Installed](https://ollama.com/download). | [Mistral API Key](https://docs.mistral.ai/getting-started/models/models_overview/) | [Qwen API Key [Intl.]](https://www.alibabacloud.com/help/en/model-studio/developer-reference/get-api-key)/[[cn]](https://help.aliyun.com/zh/model-studio/getting-started/first-api-call-to-qwen?) | [Novita AI API Key](https://novita.ai/settings?utm_source=github_mindcraft&utm_medium=github_readme&utm_campaign=link#key-management) | [Mercury API](https://platform.inceptionlabs.ai/docs)
- [Minecraft Java Edition](https://www.minecraft.net/en-us/store/minecraft-java-bedrock-edition-pc) (up to v1.21.1, recommend v1.21.1)
- [Node.js Installed](https://nodejs.org/) (at least v18)
- One of these: [OpenAI API Key](https://openai.com/blog/openai-api) | [Gemini API Key](https://aistudio.google.com/app/apikey) | [Anthropic API Key](https://docs.anthropic.com/claude/docs/getting-access-to-claude) | [Replicate API Key](https://replicate.com/) | [Hugging Face API Key](https://huggingface.co/) | [Groq API Key](https://console.groq.com/keys) | [Ollama Installed](https://ollama.com/download). | [Mistral API Key](https://docs.mistral.ai/getting-started/models/models_overview/) | [Qwen API Key [Intl.]](https://www.alibabacloud.com/help/en/model-studio/developer-reference/get-api-key)/[[cn]](https://help.aliyun.com/zh/model-studio/getting-started/first-api-call-to-qwen?) | [Novita AI API Key](https://novita.ai/settings?utm_source=github_mindcraft&utm_medium=github_readme&utm_campaign=link#key-management) | [Cerebras API Key](https://cloud.cerebras.ai) | [Mercury API](https://platform.inceptionlabs.ai/docs)
## Install and Run
1. Make sure you have the requirements above.
2. Clone or download this repository (big green button)
2. Clone or download this repository (big green button) 'git clone https://github.com/kolbytn/mindcraft.git'
3. Rename `keys.example.json` to `keys.json` and fill in your API keys (you only need one). The desired model is set in `andy.json` or other profiles. For other models refer to the table below.
@ -28,7 +28,7 @@ Do not connect this bot to public servers with coding enabled. This project allo
6. Run `node main.js` from the installed directory
If you encounter issues, check the [FAQ](https://github.com/kolbytn/mindcraft/blob/main/FAQ.md) or find support on [discord](https://discord.gg/mp73p35dzC). We are currently not very responsive to github issues.
If you encounter issues, check the [FAQ](https://github.com/kolbytn/mindcraft/blob/main/FAQ.md) or find support on [discord](https://discord.gg/mp73p35dzC). We are currently not very responsive to github issues. To run tasks please refer to [Minecollab Instructions](minecollab.md#installation)
## Tasks
@ -64,6 +64,7 @@ You can configure the agent's name, model, and prompts in their profile like `an
| `glhf.chat` | `GHLF_API_KEY` | `glhf/hf:meta-llama/Llama-3.1-405B-Instruct` | [docs](https://glhf.chat/user-settings/api) |
| `hyperbolic` | `HYPERBOLIC_API_KEY` | `hyperbolic/deepseek-ai/DeepSeek-V3` | [docs](https://docs.hyperbolic.xyz/docs/getting-started) |
| `vllm` | n/a | `vllm/llama3` | n/a |
| `cerebras` | `CEREBRAS_API_KEY` | `cerebras/llama-3.3-70b` | [docs](https://inference-docs.cerebras.ai/introduction) |
| `mercury(EA)` | `MERCURY_API_KEY` | `mercury-coder-small` | [docs](https://www.inceptionlabs.ai/) |
If you use Ollama, to install the models used by default (generation and embedding), execute the following terminal command:
@ -167,10 +168,13 @@ Some of the node modules that we depend on have bugs in them. To add a patch, ch
## Citation:
```
@misc{mindcraft2023,
Author = {Kolby Nottingham and Max Robinson},
Title = {MINDcraft: LLM Agents for cooperation, competition, and creativity in Minecraft},
Year = {2023},
url={https://github.com/kolbytn/mindcraft}
@article{mindcraft2025,
title = {Collaborating Action by Action: A Multi-agent LLM Framework for Embodied Reasoning},
author = {White*, Isadora and Nottingham*, Kolby and Maniar, Ayush and Robinson, Max and Lillemark, Hansen and Maheshwari, Mehul and Qin, Lianhui and Ammanabrolu, Prithviraj},
journal = {arXiv preprint arXiv:2504.17950},
year = {2025},
url = {https://arxiv.org/abs/2504.17950},
}
```

View file

@ -14,5 +14,6 @@
"HYPERBOLIC_API_KEY": "",
"NOVITA_API_KEY": "",
"OPENROUTER_API_KEY": "",
"CEREBRAS_API_KEY": "",
"MERCURY_API_KEY":""
}

72
main.js
View file

@ -1,9 +1,7 @@
import { AgentProcess } from './src/process/agent_process.js';
import * as Mindcraft from './src/mindcraft/mindcraft.js';
import settings from './settings.js';
import yargs from 'yargs';
import { hideBin } from 'yargs/helpers';
import { createMindServer } from './src/server/mind_server.js';
import { mainProxy } from './src/process/main_proxy.js';
import { readFileSync } from 'fs';
function parseArguments() {
@ -24,35 +22,51 @@ function parseArguments() {
.alias('help', 'h')
.parse();
}
function getProfiles(args) {
return args.profiles || settings.profiles;
const args = parseArguments();
if (args.profiles) {
settings.profiles = args.profiles;
}
async function main() {
if (settings.host_mindserver) {
const mindServer = createMindServer(settings.mindserver_port);
if (args.task_path) {
let tasks = JSON.parse(readFileSync(args.task_path, 'utf8'));
if (args.task_id) {
settings.task = tasks[args.task_id];
settings.task.task_id = args.task_id;
}
mainProxy.connect();
const args = parseArguments();
const profiles = getProfiles(args);
console.log(profiles);
const { load_memory, init_message } = settings;
for (let i=0; i<profiles.length; i++) {
const agent_process = new AgentProcess();
const profile = readFileSync(profiles[i], 'utf8');
const agent_json = JSON.parse(profile);
mainProxy.registerAgent(agent_json.name, agent_process);
agent_process.start(profiles[i], load_memory, init_message, i, args.task_path, args.task_id);
await new Promise(resolve => setTimeout(resolve, 1000));
else {
throw new Error('task_id is required when task_path is provided');
}
}
try {
main();
} catch (error) {
console.error('An error occurred:', error);
process.exit(1);
// these environment variables override certain settings
if (process.env.MINECRAFT_PORT) {
settings.port = process.env.MINECRAFT_PORT;
}
if (process.env.MINDSERVER_PORT) {
settings.mindserver_port = process.env.MINDSERVER_PORT;
}
if (process.env.PROFILES && JSON.parse(process.env.PROFILES).length > 0) {
settings.profiles = JSON.parse(process.env.PROFILES);
}
if (process.env.INSECURE_CODING) {
settings.allow_insecure_coding = true;
}
if (process.env.BLOCKED_ACTIONS) {
settings.blocked_actions = JSON.parse(process.env.BLOCKED_ACTIONS);
}
if (process.env.MAX_MESSAGES) {
settings.max_messages = process.env.MAX_MESSAGES;
}
if (process.env.NUM_EXAMPLES) {
settings.num_examples = process.env.NUM_EXAMPLES;
}
if (process.env.LOG_ALL) {
settings.log_all_prompts = process.env.LOG_ALL;
}
Mindcraft.init(false, settings.mindserver_port);
for (let profile of settings.profiles) {
const profile_json = JSON.parse(readFileSync(profile, 'utf8'));
settings.profile = profile_json;
Mindcraft.createAgent(settings);
}

View file

@ -41,8 +41,16 @@ You can view the crafting task in action [here](https://www.youtube.com/shorts/V
## Installation
You **DO NOT** need Linux to run this, you can run on Windows with the --no-launch-world flag and by installing git bash.
Please follow the installation docs in the README to install mindcraft. You can create a docker image using the Dockerfile.
If you don't own Minecraft you can run a limited version solely for offline games using these instructions:
1. Download the TLauncher https://tlauncher.org/en/
2. Enter a username and select version 1.21.1
3. Click "Multiplayer" and then "Direct Connection"
4. Then enter "localhost:55916" and hit `Join Server`
Download the relevant task files and server data files, you can find the link [here](https://drive.google.com/drive/folders/1XygbitBBTsNO6q_doEiZHmdETpnyRmCS). The tasks files are for specifying the tasks to run and the server data is for allowing the models to launch the task in the correct world automatically. **Unzip the server_data.zip in the base `tasks/` folder**.
Then, set up your conda environment:
@ -55,9 +63,22 @@ pip install -r requirements.txt
Then, you can run the evaluation_script **from the project root** using `python tasks/evaluation_script.py --task_path {your-task-path} --model {model you want to use}`.
### Tmux Installation
**MacOS**:
1. If brew isn't already installed run `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"`
2. `brew install tmux`
**Linux**: `apt-get -y install tmux`
**Windows**: You can not use tmux on Windows, but you can run tasks with the --no-launch-world flag. Run
```
cd /tasks/server_data/
java -jar server.jar
```
If you want to run with vllm be sure to run with `--api vllm --url {your_url_for_vllm} --model {model_name}`, by default vllm will use http://127.0.0.1:8000/v1 as the url for quering the model!
When running with construction tasks, make sure to set the flag `--insecure_coding` so that the agents can be allowed to write freeform javascript code to complete the tasks. However, when using insecure coding it is highly recommended to use a docker container to avoid damage to your computer.
When running with construction tasks, make sure to set the flag `--insecure_coding` so that the agents can be allowed to write freeform javascript code to complete the tasks. However, when using insecure coding it is **highly recommended** to use a docker container to avoid damage to your computer.
When running an experiment that requires more than 2 agents, use the `--num_agents` flag to match the number of agents in your task file. For example, if you are running a task file with 3 agents, use `--num_agents 3`.
@ -81,7 +102,7 @@ python tasks/evaluation_script.py --task_path {path_to_two_agent_construction_ta
When you launch the evaluation script, you will see the minecraft server being launched. If you want to join this world, you can connect to it on the port localhost:55916 the way you would a standard Minecraft world (go to single player -> direct connection -> type in localhost:55916) It may take a few minutes for everything to be properly loaded - as first the agents need to be added to the world and given the correct permissions to use cheats and add inventory. After about 5 minutes everything should be loaded and working. If you wish to kill the experiment run `tmux kill-server`. Sometimes there will be issues copying the files, if this happens you can run the python file twice.
## Installation (without tmux)
## Windows Installation (without tmux)
If you are on a machine that can't run tmux (like a Windows PC without WSL) or you don't care about doing evaluations only running tasks you can run the following script
@ -99,7 +120,7 @@ As you run, the evalaution script will evaluate the performance so far. It will
### Running multiple worlds in parallel
You can use `--num_parallel` to run multiple Minecraft worlds in parallel. This will launch `n` tmux shells, claled `server_i` and shell `i`, where `i` corresponds to ith parallel world. It will also copy worlds into `server_data_i` as well. On an M3 Mac with 34 GB of RAM, we can normally support up to 4 parallel worlds. When running an open source model, it is more likely you will be constrained by the throughput and size of your GPU RAM. On a cluster of 8 H100s you can expect to run 4 experiments in parallel. However, for best performance it is advisable to only use one parallel world.
You can use `--num_parallel` to run multiple Minecraft worlds in parallel. This will launch `n` tmux shells, called `server_i` and shell `i`, where `i` corresponds to ith parallel world. It will also copy worlds into `server_data_i` as well. On an M3 Mac with 34 GB of RAM, we can normally support up to 4 parallel worlds. When running an open source model, it is more likely you will be constrained by the throughput and size of your GPU RAM. On a cluster of 8 H100s you can expect to run 4 experiments in parallel. However, for best performance it is advisable to only use one parallel world.
### Using an S3 Bucket to store files
To use S3 set the --s3 flag and the --bucket_name to use an s3 bucket to log all the files collected. It will also copy the /bots folder in this case with all of the files in there.

View file

@ -2,6 +2,7 @@
"type": "module",
"dependencies": {
"@anthropic-ai/sdk": "^0.17.1",
"@cerebras/cerebras_cloud_sdk": "^1.46.0",
"@google/generative-ai": "^0.2.1",
"@huggingface/inference": "^2.8.1",
"@mistralai/mistralai": "^1.1.0",
@ -11,7 +12,7 @@
"google-translate-api-x": "^10.7.1",
"groq-sdk": "^0.15.0",
"minecraft-data": "^3.78.0",
"mineflayer": "^4.26.0",
"mineflayer": "^4.29.0",
"mineflayer-armor-manager": "^2.0.1",
"mineflayer-auto-eat": "^3.3.6",
"mineflayer-collectblock": "^1.4.1",

View file

@ -1,8 +1,35 @@
diff --git a/node_modules/mineflayer-pathfinder/index.js b/node_modules/mineflayer-pathfinder/index.js
index b38bd30..bf16a63 100644
index b38bd30..fb39b45 100644
--- a/node_modules/mineflayer-pathfinder/index.js
+++ b/node_modules/mineflayer-pathfinder/index.js
@@ -550,6 +550,7 @@ function inject (bot) {
@@ -170,6 +170,16 @@ function inject (bot) {
const curPoint = path[i]
if (curPoint.toBreak.length > 0 || curPoint.toPlace.length > 0) break
const b = bot.blockAt(new Vec3(curPoint.x, curPoint.y, curPoint.z))
+
+ // openned doors have small Collision box
+ // that may stop the bot from moving forward
+ if(i === 0 && b.name.includes('door')) {
+ curPoint.x = Math.floor(curPoint.x) + 0.5
+ curPoint.y = Math.floor(curPoint.y)
+ curPoint.z = Math.floor(curPoint.z) + 0.5
+ continue
+ }
+
if (b && (b.type === waterType || ((b.type === ladderId || b.type === vineId) && i + 1 < path.length && path[i + 1].y < curPoint.y))) {
curPoint.x = Math.floor(curPoint.x) + 0.5
curPoint.y = Math.floor(curPoint.y)
@@ -524,6 +534,9 @@ function inject (bot) {
bot.activateBlock(bot.blockAt(new Vec3(placingBlock.x, placingBlock.y, placingBlock.z))).then(() => {
lockUseBlock.release()
placingBlock = nextPoint.toPlace.shift()
+ if (!placingBlock) {
+ placing = false
+ }
}, err => {
console.error(err)
lockUseBlock.release()
@@ -550,6 +563,7 @@ function inject (bot) {
lockEquipItem.release()
const refBlock = bot.blockAt(new Vec3(placingBlock.x, placingBlock.y, placingBlock.z), false)
if (!lockPlaceBlock.tryAcquire()) return
@ -10,7 +37,7 @@ index b38bd30..bf16a63 100644
if (interactableBlocks.includes(refBlock.name)) {
bot.setControlState('sneak', true)
}
@@ -557,6 +558,7 @@ function inject (bot) {
@@ -557,6 +571,7 @@ function inject (bot) {
.then(function () {
// Dont release Sneak if the block placement was not successful
bot.setControlState('sneak', false)
@ -18,3 +45,152 @@ index b38bd30..bf16a63 100644
if (bot.pathfinder.LOSWhenPlacingBlocks && placingBlock.returnPos) returningPos = placingBlock.returnPos.clone()
})
.catch(_ignoreError => {
diff --git a/node_modules/mineflayer-pathfinder/lib/movements.js b/node_modules/mineflayer-pathfinder/lib/movements.js
index a7e3505..3c4a8f2 100644
--- a/node_modules/mineflayer-pathfinder/lib/movements.js
+++ b/node_modules/mineflayer-pathfinder/lib/movements.js
@@ -62,7 +62,13 @@
this.climbables = new Set()
this.climbables.add(registry.blocksByName.ladder.id)
- // this.climbables.add(registry.blocksByName.vine.id)
+ if (registry.blocksByName.vine) this.climbables.add(registry.blocksByName.vine.id)
+ if (registry.blocksByName.weeping_vines) this.climbables.add(registry.blocksByName.weeping_vines.id)
+ if (registry.blocksByName.weeping_vines_plant) this.climbables.add(registry.blocksByName.weeping_vines_plant.id)
+ if (registry.blocksByName.twisting_vines) this.climbables.add(registry.blocksByName.twisting_vines.id)
+ if (registry.blocksByName.twisting_vines_plant) this.climbables.add(registry.blocksByName.twisting_vines_plant.id)
+ if (registry.blocksByName.cave_vines) this.climbables.add(registry.blocksByName.cave_vines.id)
+ if (registry.blocksByName.cave_vines_plant) this.climbables.add(registry.blocksByName.cave_vines_plant.id)
this.emptyBlocks = new Set()
this.replaceables = new Set()
@@ -92,13 +98,15 @@
}
})
registry.blocksArray.forEach(block => {
- if (this.interactableBlocks.has(block.name) && block.name.toLowerCase().includes('gate') && !block.name.toLowerCase().includes('iron')) {
+ if (this.interactableBlocks.has(block.name)
+ && (block.name.toLowerCase().includes('gate') || block.name.toLowerCase().includes('door') || block.name.toLowerCase().includes('trapdoor'))
+ && !block.name.toLowerCase().includes('iron')) {
// console.info(block)
this.openable.add(block.id)
}
})
- this.canOpenDoors = false // Causes issues. Probably due to none paper servers.
+ this.canOpenDoors = true
this.exclusionAreasStep = []
this.exclusionAreasBreak = []
@@ -230,8 +238,13 @@
}
}
b.climbable = this.climbables.has(b.type)
- b.safe = (b.boundingBox === 'empty' || b.climbable || this.carpets.has(b.type)) && !this.blocksToAvoid.has(b.type)
- b.physical = b.boundingBox === 'block' && !this.fences.has(b.type)
+
+ // Enhanced trapdoor logic - open trapdoors are safe to pass through
+ const isOpenTrapdoor = this.openable.has(b.type) && b.name.includes('trapdoor') && b._properties?.open === true
+ const isClosedTrapdoor = this.openable.has(b.type) && b.name.includes('trapdoor') && b._properties?.open !== true
+
+ b.safe = (b.boundingBox === 'empty' || b.climbable || this.carpets.has(b.type) || isOpenTrapdoor) && !this.blocksToAvoid.has(b.type)
+ b.physical = (b.boundingBox === 'block' && !this.fences.has(b.type)) || isClosedTrapdoor
b.replaceable = this.replaceables.has(b.type) && !b.physical
b.liquid = this.liquids.has(b.type)
b.height = pos.y + dy
@@ -284,6 +297,18 @@
cost += this.exclusionStep(block) // Is excluded so can't move or break
cost += this.getNumEntitiesAt(block.position, 0, 0, 0) * this.entityCost
if (block.safe) return cost
+
+ // process door cost
+ if ((this.canOpenDoors && block.openable)
+ || (block.openable && block._properties?.open === true)) {
+ return cost
+ }
+
+ // Handle trapdoors specifically - they can be opened instead of broken
+ if (this.canOpenDoors && block.openable && block.name.includes('trapdoor') && !block.name.includes('iron')) {
+ return cost + 1 // Small cost for opening trapdoor
+ }
+
if (!this.safeToBreak(block)) return 100 // Can't break, so can't move
toBreak.push(block.position)
@@ -387,8 +412,8 @@
cost += this.safeOrBreak(blockB, toBreak)
if (cost > 100) return
- // Open fence gates
- if (this.canOpenDoors && blockC.openable && blockC.shapes && blockC.shapes.length !== 0) {
+ // Open fence gates and doors
+ if (this.canOpenDoors && blockC.openable && !blockC._properties.open) {
toPlace.push({ x: node.x + dir.x, y: node.y, z: node.z + dir.z, dx: 0, dy: 0, dz: 0, useOne: true }) // Indicate that a block should be used on this block not placed
} else {
cost += this.safeOrBreak(blockC, toBreak)
@@ -552,6 +577,54 @@
if (cost > 100) return
neighbors.push(new Move(node.x, node.y + 1, node.z, node.remainingBlocks - toPlace.length, cost, toBreak, toPlace))
+ }
+
+ getMoveClimbUpThroughTrapdoor (node, neighbors) {
+ const blockCurrent = this.getBlock(node, 0, 0, 0) // Current position (should be climbable)
+ const blockAbove = this.getBlock(node, 0, 1, 0) // Block directly above
+ const blockCeiling = this.getBlock(node, 0, 2, 0) // Trapdoor or ceiling block
+
+ // Only attempt this move if we're on a climbable block (ladder/vine)
+ if (!blockCurrent.climbable) return
+
+ // Check if there's a closed trapdoor above us
+ if (!blockCeiling.openable || blockCeiling._properties?.open === true) return
+
+ let cost = 2 // Base cost for climbing up and opening trapdoor
+ const toBreak = []
+ const toPlace = []
+
+ // Make sure we can break/pass through the block above if needed
+ cost += this.safeOrBreak(blockAbove, toBreak)
+ if (cost > 100) return
+
+ // Add cost for opening the trapdoor
+ toPlace.push({ x: node.x, y: node.y + 2, z: node.z, dx: 0, dy: 0, dz: 0, useOne: true })
+
+ neighbors.push(new Move(node.x, node.y + 2, node.z, node.remainingBlocks - toPlace.length, cost, toBreak, toPlace))
+ }
+
+ // Enhanced ladder/vine climbing that can handle stepping on top and jumping
+ getMoveClimbTop (node, neighbors) {
+ const blockCurrent = this.getBlock(node, 0, 0, 0) // Current position (should be climbable)
+ const blockAbove = this.getBlock(node, 0, 1, 0) // Block directly above
+
+ // Only attempt this move if we're on a climbable block (ladder/vine)
+ if (!blockCurrent.climbable) return
+
+ // Check if we can step on top of the ladder/vine and then jump up
+ if (!blockAbove.safe) return
+
+ let cost = 2 // Cost for climbing to top of ladder and jumping
+ const toBreak = []
+ const toPlace = []
+
+ // Check if there's space to jump up from the top of the ladder
+ const blockJumpTarget = this.getBlock(node, 0, 2, 0)
+ cost += this.safeOrBreak(blockJumpTarget, toBreak)
+ if (cost > 100) return
+
+ neighbors.push(new Move(node.x, node.y + 2, node.z, node.remainingBlocks - toPlace.length, cost, toBreak, toPlace))
}
// Jump up, down or forward over a 1 block gap
@@ -655,6 +728,10 @@
this.getMoveDown(node, neighbors)
this.getMoveUp(node, neighbors)
+
+ // Enhanced climbing moves for ladders, vines, and trapdoors
+ this.getMoveClimbUpThroughTrapdoor(node, neighbors)
+ this.getMoveClimbTop(node, neighbors)
return neighbors
}

View file

@ -0,0 +1,13 @@
diff --git a/node_modules/prismarine-item/index.js b/node_modules/prismarine-item/index.js
index a1397a2..1d75cad 100644
--- a/node_modules/prismarine-item/index.js
+++ b/node_modules/prismarine-item/index.js
@@ -231,7 +231,7 @@ function loader (registryOrVersion) {
const typeOfEnchantLevelValue = registry.supportFeature('typeOfValueForEnchantLevel')
const useStoredEnchantments = registry.supportFeature('booksUseStoredEnchantments') && this.name === 'enchanted_book'
- if (typeOfEnchantLevelValue === 'short' && enchantNbtKey === 'ench') {
+ if (typeOfEnchantLevelValue === 'short' && (enchantNbtKey === 'ench' || enchantNbtKey === 'componentEnchantments')) {
let itemEnch = []
if (useStoredEnchantments && this?.nbt?.value?.StoredEnchantments) {

View file

@ -1,7 +1,7 @@
{
"name": "claude",
"model": "claude-3-5-sonnet-latest",
"model": "claude-4-sonnet-latest",
"embedding": "openai"
}

View file

@ -2,7 +2,7 @@
"name": "claude_thinker",
"model": {
"model": "claude-3-7-sonnet-latest",
"model": "claude-4-sonnet-latest",
"params": {
"thinking": {
"type": "enabled",

View file

@ -0,0 +1,14 @@
{
"modes": {
"self_preservation": true,
"unstuck": true,
"cowardice": false,
"self_defense": true,
"hunting": false,
"item_collecting": true,
"torch_placing": true,
"elbow_room": true,
"idle_staring": true,
"cheat": false
}
}

View file

@ -1,7 +1,7 @@
{
"name": "gemini",
"model": "gemini-2.0-flash",
"model": "gemini-2.5-flash",
"cooldown": 5000
}

View file

@ -1,7 +1,7 @@
{
"name": "Grok",
"model": "grok-beta",
"model": "grok-3-mini-latest",
"embedding": "openai"
}

View file

@ -6,6 +6,6 @@
"item_collecting": true,
"elbow_room": false
},
"conversing": "You are a task-focused Minecraft bot named $NAME. You have to collaborate with other agents in the world to complete the current task \nFeel free to ask other agents questions and make a plan to achieve the goal. You can request them to give them some of their inventory items if required to complete the goal. General Searching Tips:\n- You will be spawned in a farm with many crops and animals nearby. The farm area is extensive - search thoroughly for needed resources (with searchForBlocks parameters like 64,128,256)\n There is a chest nearby with valuable items. Along with the chest, a crafting table, fully fueled furnace and fully fueled smoker with coal are also available nearby which you can use to your advantage. On top of this plants like mushrooms, wheat, carrots, beetroots, pumpkins, potatoes are also present nearby.\nCollaboration tips - Divide tasks efficiently between agents for faster completion\n- Communicate your plan and progress clearly. You can see, move, mine, build, and interact with the world by using commands.\n$SELF_PROMPT Act human-like as if you were a typical Minecraft player, rather than an AI. Be very brief in your responses, don't apologize constantly, don't give instructions or make lists unless asked, and don't refuse requests. Don't pretend to act, use commands immediately when requested. Do NOT say this: 'Sure, I've stopped.', instead say this: 'Sure, I'll stop. !stop'. Do NOT say this: 'On my way! Give me a moment.', instead say this: 'On my way! !goToPlayer(\"playername\", 3)'. Respond only as $NAME, never output '(FROM OTHER BOT)' or pretend to be someone else. If you have nothing to say or do, respond with an just a tab '\t'. Share resources and information with other bots! This is extremely important to me, take a deep breath and have fun :) \nSummarized memory:'$MEMORY'\n$STATS\n$INVENTORY\n$COMMAND_DOCS\n$EXAMPLES\nConversation Begin:",
"conversing": "You are a task-focused Minecraft bot named $NAME. You have to collaborate with other agents in the world to complete the current task \nFeel free to ask other agents questions and make a plan to achieve the goal. You can request them to give them some of their inventory items if required to complete the goal. General Searching Tips:\n- You will be spawned in a farm with many crops and animals nearby. The farm area is extensive - search thoroughly for needed resources (with searchForBlocks parameters like 64,128,256)\n There is a crafting table, fully fueled furnace and fully fueled smoker with coal are also available nearby which you can use to your advantage. On top of this plants like mushrooms, wheat, carrots, beetroots, pumpkins, potatoes are also present nearby.\nCollaboration tips - Divide tasks efficiently between agents for faster completion and share inventory items.\n- Communicate your plan and progress clearly. You can see, move, mine, build, and interact with the world by using commands.\n$SELF_PROMPT Act human-like as if you were a typical Minecraft player, rather than an AI. Be very brief in your responses, don't apologize constantly, don't give instructions or make lists unless asked, and don't refuse requests. Don't pretend to act, use commands immediately when requested. Do NOT say this: 'Sure, I've stopped.', instead say this: 'Sure, I'll stop. !stop'. Do NOT say this: 'On my way! Give me a moment.', instead say this: 'On my way! !goToPlayer(\"playername\", 3)'. Respond only as $NAME, never output '(FROM OTHER BOT)' or pretend to be someone else. If you have nothing to say or do, respond with an just a tab '\t'. Share resources and information with other bots! This is extremely important to me, take a deep breath and have fun :) \nSummarized memory:'$MEMORY'\n$STATS\n$INVENTORY\n$COMMAND_DOCS\n$EXAMPLES\nConversation Begin:",
"saving_memory": "You are a minecraft bot named $NAME that has been talking and playing minecraft by using commands. Update your memory by summarizing the following conversation and your old memory in your next response. Prioritize preserving important facts, things you've learned, useful tips, and long term reminders. Do Not record stats, inventory, or docs! Only save transient information from your chat history. $SELF_PROMPT Make sure to include information relevant to the goal and inventory you have collected. You're limited to 500 characters, so be extremely brief and minimize words. Compress useful information. \nOld Memory: '$MEMORY'\nRecent conversation: \n$TO_SUMMARIZE\nSummarize your old memory and recent conversation into a new memory, and respond only with the unwrapped memory text: "
}

View file

@ -3,3 +3,4 @@ botocore==1.37.11
pandas==2.2.3
prettytable==3.16.0
tqdm==4.62.3
python-socketio[client]

View file

@ -5,12 +5,9 @@ const settings = {
"auth": "offline", // or "microsoft"
// the mindserver manages all agents and hosts the UI
"host_mindserver": true, // if true, the mindserver will be hosted on this machine. otherwise, specify a public IP address
"mindserver_host": "localhost",
"mindserver_port": 8080,
// the base profile is shared by all bots for default prompts/examples/modes
"base_profile": "./profiles/defaults/survival.json", // also see creative.json, god_mode.json
"base_profile": "survival", // survival, assistant, creative, or god_mode
"profiles": [
"./andy.json",
// "./profiles/gpt.json",
@ -26,12 +23,13 @@ const settings = {
// using more than 1 profile requires you to /msg each bot indivually
// individual profiles override values from the base profile
],
"load_memory": false, // load memory from previous session
"init_message": "Respond with hello world and your name", // sends to all on spawn
"only_chat_with": [], // users that the bots listen to and send general messages to. if empty it will chat publicly
"speak": false, // allows all bots to speak through system text-to-speech. works on windows, mac, on linux you need to `apt install espeak`
"language": "en", // translate to/from this language. Supports these language names: https://cloud.google.com/translate/docs/languages
"show_bot_views": false, // show bot's view in browser at localhost:3000, 3001...
"render_bot_view": false, // show bot's view in browser at localhost:3000, 3001...
"allow_insecure_coding": false, // allows newAction command and model can write/run code on your computer. enable at own risk
"allow_vision": false, // allows vision model to interpret screenshots as inputs
@ -45,33 +43,10 @@ const settings = {
"verbose_commands": true, // show full command syntax
"narrate_behavior": true, // chat simple automatic actions ('Picking up item!')
"chat_bot_messages": true, // publicly chat messages to other bots
"block_place_delay": 0, // delay between placing blocks (ms) if using newAction. helps avoid bot being kicked by anti-cheat mechanisms on servers.
"log_all_prompts": false, // log ALL prompts to file
}
// these environment variables override certain settings
if (process.env.MINECRAFT_PORT) {
settings.port = process.env.MINECRAFT_PORT;
}
if (process.env.MINDSERVER_PORT) {
settings.mindserver_port = process.env.MINDSERVER_PORT;
}
if (process.env.PROFILES && JSON.parse(process.env.PROFILES).length > 0) {
settings.profiles = JSON.parse(process.env.PROFILES);
}
if (process.env.INSECURE_CODING) {
settings.allow_insecure_coding = true;
}
if (process.env.BLOCKED_ACTIONS) {
settings.blocked_actions = JSON.parse(process.env.BLOCKED_ACTIONS);
}
if (process.env.MAX_MESSAGES) {
settings.max_messages = process.env.MAX_MESSAGES;
}
if (process.env.NUM_EXAMPLES) {
settings.num_examples = process.env.NUM_EXAMPLES;
}
if (process.env.LOG_ALL) {
settings.log_all_prompts = process.env.LOG_ALL;
}
export default settings;

View file

@ -7,6 +7,8 @@ export class ActionManager {
this.timedout = false;
this.resume_func = null;
this.resume_name = '';
this.last_action_time = 0;
this.recent_action_counter = 0;
}
async resumeAction(actionFn, timeout) {
@ -59,6 +61,25 @@ export class ActionManager {
async _executeAction(actionLabel, actionFn, timeout = 10) {
let TIMEOUT;
try {
if (this.last_action_time > 0) {
let time_diff = Date.now() - this.last_action_time;
if (time_diff < 20) {
this.recent_action_counter++;
}
else {
this.recent_action_counter = 0;
}
if (this.recent_action_counter > 3) {
console.warn('Fast action loop detected, cancelling resume.');
this.cancelResume(); // likely cause of repetition
}
if (this.recent_action_counter > 5) {
console.error('Infinite action loop detected, shutting down.');
this.agent.cleanKill('Infinite action loop detected, shutting down.');
return { success: false, message: 'Infinite action loop detected, shutting down.', interrupted: false, timedout: false };
}
}
this.last_action_time = Date.now();
console.log('executing code...\n');
// await current action to finish (executing=false), with 10 seconds timeout

View file

@ -12,43 +12,28 @@ import { SelfPrompter } from './self_prompter.js';
import convoManager from './conversation.js';
import { handleTranslation, handleEnglishTranslation } from '../utils/translator.js';
import { addBrowserViewer } from './vision/browser_viewer.js';
import settings from '../../settings.js';
import { serverProxy } from './agent_proxy.js';
import { serverProxy } from './mindserver_proxy.js';
import settings from './settings.js';
import { Task } from './tasks/tasks.js';
import { say } from './speak.js';
export class Agent {
async start(profile_fp, load_mem=false, init_message=null, count_id=0, task_path=null, task_id=null) {
async start(load_mem=false, init_message=null, count_id=0) {
this.last_sender = null;
this.count_id = count_id;
if (!profile_fp) {
throw new Error('No profile filepath provided');
}
console.log('Starting agent initialization with profile:', profile_fp);
// Initialize components with more detailed error handling
console.log('Initializing action manager...');
this.actions = new ActionManager(this);
console.log('Initializing prompter...');
this.prompter = new Prompter(this, profile_fp);
this.prompter = new Prompter(this, settings.profile);
this.name = this.prompter.getName();
console.log('Initializing history...');
console.log(`Initializing agent ${this.name}...`);
this.history = new History(this);
console.log('Initializing coder...');
this.coder = new Coder(this);
console.log('Initializing npc controller...');
this.npc = new NPCContoller(this);
console.log('Initializing memory bank...');
this.memory_bank = new MemoryBank();
console.log('Initializing self prompter...');
this.self_prompter = new SelfPrompter(this);
convoManager.initAgent(this);
console.log('Initializing examples...');
await this.prompter.initExamples();
console.log('Initializing task...');
// load mem first before doing task
let save_data = null;
@ -61,19 +46,15 @@ export class Agent {
} else {
taskStart = Date.now();
}
this.task = new Task(this, task_path, task_id, taskStart);
this.task = new Task(this, settings.task, taskStart);
this.blocked_actions = settings.blocked_actions.concat(this.task.blocked_actions || []);
blacklistCommands(this.blocked_actions);
serverProxy.connect(this);
console.log(this.name, 'logging into minecraft...');
this.bot = initBot(this.name);
initModes(this);
this.bot.on('login', () => {
console.log(this.name, 'logged in!');
serverProxy.login();
@ -92,6 +73,8 @@ export class Agent {
try {
clearTimeout(spawnTimeout);
addBrowserViewer(this.bot, count_id);
console.log('Initializing vision intepreter...');
this.vision_interpreter = new VisionInterpreter(this, settings.allow_vision);
// wait for a bit so stats are not undefined
await new Promise((resolve) => setTimeout(resolve, 1000));
@ -103,16 +86,19 @@ export class Agent {
this.startEvents();
if (!load_mem) {
if (task_path !== null) {
if (settings.task) {
this.task.initBotTask();
this.task.setAgentGoal();
}
} else {
// set the goal without initializing the rest of the task
if (settings.task) {
this.task.setAgentGoal();
}
}
await new Promise((resolve) => setTimeout(resolve, 10000));
this.checkAllPlayersPresent();
console.log('Initializing vision intepreter...');
this.vision_interpreter = new VisionInterpreter(this, settings.allow_vision);
} catch (error) {
console.error('Error in spawn event:', error);
@ -132,6 +118,7 @@ export class Agent {
];
const respondFunc = async (username, message) => {
if (message === "") return;
if (username === this.name) return;
if (settings.only_chat_with.length > 0 && !settings.only_chat_with.includes(username)) return;
try {
@ -156,8 +143,12 @@ export class Agent {
this.respondFunc = respondFunc;
this.bot.on('whisper', respondFunc);
if (settings.profiles.length === 1)
this.bot.on('chat', respondFunc);
this.bot.on('chat', (username, message) => {
if (serverProxy.getNumOtherAgents() > 0) return;
// only respond to open chat messages when there are no other agents
respondFunc(username, message);
});
// Set up auto-eat
this.bot.autoEat.options = {
@ -448,7 +439,11 @@ export class Agent {
this.bot.clearControlStates();
this.bot.pathfinder.stop(); // clear any lingering pathfinder
this.bot.modes.unPauseAll();
this.actions.resumeAction();
setTimeout(() => {
if (this.isIdle()) {
this.actions.resumeAction();
}
}, 1000);
});
// Init NPC controller

View file

@ -1,73 +0,0 @@
import { io } from 'socket.io-client';
import convoManager from './conversation.js';
import settings from '../../settings.js';
class AgentServerProxy {
constructor() {
if (AgentServerProxy.instance) {
return AgentServerProxy.instance;
}
this.socket = null;
this.connected = false;
AgentServerProxy.instance = this;
}
connect(agent) {
if (this.connected) return;
this.agent = agent;
this.socket = io(`http://${settings.mindserver_host}:${settings.mindserver_port}`);
this.connected = true;
this.socket.on('connect', () => {
console.log('Connected to MindServer');
});
this.socket.on('disconnect', () => {
console.log('Disconnected from MindServer');
this.connected = false;
});
this.socket.on('chat-message', (agentName, json) => {
convoManager.receiveFromBot(agentName, json);
});
this.socket.on('agents-update', (agents) => {
convoManager.updateAgents(agents);
});
this.socket.on('restart-agent', (agentName) => {
console.log(`Restarting agent: ${agentName}`);
this.agent.cleanKill();
});
this.socket.on('send-message', (agentName, message) => {
try {
this.agent.respondFunc("NO USERNAME", message);
} catch (error) {
console.error('Error: ', JSON.stringify(error, Object.getOwnPropertyNames(error)));
}
});
}
login() {
this.socket.emit('login-agent', this.agent.name);
}
shutdown() {
this.socket.emit('shutdown');
}
getSocket() {
return this.socket;
}
}
// Create and export a singleton instance
export const serverProxy = new AgentServerProxy();
export function sendBotChatToServer(agentName, json) {
serverProxy.getSocket().emit('chat-message', agentName, json);
}

View file

@ -1,6 +1,5 @@
import { writeFile, readFile, mkdirSync } from 'fs';
import settings from '../../settings.js';
import { makeCompartment } from './library/lockdown.js';
import { makeCompartment, lockdown } from './library/lockdown.js';
import * as skills from './library/skills.js';
import * as world from './library/world.js';
import { Vec3 } from 'vec3';
@ -27,6 +26,7 @@ export class Coder {
async generateCode(agent_history) {
this.agent.bot.modes.pause('unstuck');
lockdown();
// this message history is transient and only maintained in this function
let messages = agent_history.getHistory();
messages.push({role: 'system', content: 'Code generation started. Write code in codeblock in your response:'});

View file

@ -1,5 +1,5 @@
import * as skills from '../library/skills.js';
import settings from '../../../settings.js';
import settings from '../settings.js';
import convoManager from '../conversation.js';
@ -46,7 +46,7 @@ export const actionsList = [
result = 'Error generating code: ' + e.toString();
}
};
await agent.actions.runAction('action:newAction', actionFn);
await agent.actions.runAction('action:newAction', actionFn, {timeout: settings.code_timeout_mins});
return result;
}
},

View file

@ -250,9 +250,16 @@ export const queryList = [
}
// Generate crafting plan
let craftingPlan = mc.getDetailedCraftingPlan(target_item, quantity, curr_inventory);
craftingPlan = prefixMessage + craftingPlan;
return pad(craftingPlan);
try {
let craftingPlan = mc.getDetailedCraftingPlan(target_item, quantity, curr_inventory);
craftingPlan = prefixMessage + craftingPlan;
return pad(craftingPlan);
} catch (error) {
console.error("Error generating crafting plan:", error);
return `An error occurred while generating the crafting plan: ${error.message}`;
}
},
},
{

View file

@ -1,10 +1,9 @@
import settings from '../../settings.js';
import { readFileSync } from 'fs';
import settings from './settings.js';
import { containsCommand } from './commands/index.js';
import { sendBotChatToServer } from './agent_proxy.js';
import { sendBotChatToServer } from './mindserver_proxy.js';
let agent;
let agent_names = settings.profiles.map((p) => JSON.parse(readFileSync(p, 'utf8')).name);
let agent_names = [];
let agents_in_game = [];
class Conversation {

View file

@ -1,6 +1,6 @@
import { writeFileSync, readFileSync, mkdirSync, existsSync } from 'fs';
import { NPCData } from './npc/data.js';
import settings from '../../settings.js';
import settings from './settings.js';
export class History {

View file

@ -4,16 +4,22 @@ import 'ses';
// We disable some of the taming to allow for more flexibility
// For configuration, see https://github.com/endojs/endo/blob/master/packages/ses/docs/lockdown.md
lockdown({
// basic devex and quality of life improvements
localeTaming: 'unsafe',
consoleTaming: 'unsafe',
errorTaming: 'unsafe',
stackFiltering: 'verbose',
// allow eval outside of created compartments
// (mineflayer dep "protodef" uses eval)
evalTaming: 'unsafeEval',
});
let lockeddown = false;
export function lockdown() {
if (lockeddown) return;
lockeddown = true;
lockdown({
// basic devex and quality of life improvements
localeTaming: 'unsafe',
consoleTaming: 'unsafe',
errorTaming: 'unsafe',
stackFiltering: 'verbose',
// allow eval outside of created compartments
// (mineflayer dep "protodef" uses eval)
evalTaming: 'unsafeEval',
});
}
export const makeCompartment = (endowments = {}) => {
return new Compartment({

View file

@ -2,7 +2,10 @@ import * as mc from "../../utils/mcdata.js";
import * as world from "./world.js";
import pf from 'mineflayer-pathfinder';
import Vec3 from 'vec3';
import settings from "../../../settings.js";
const blockPlaceDelay = settings.block_place_delay == null ? 0 : settings.block_place_delay;
const useDelay = blockPlaceDelay > 0;
export function log(bot, message) {
bot.output += message + '\n';
@ -225,28 +228,33 @@ export async function smeltItem(bot, itemName, num=1) {
await furnace.putInput(mc.getItemId(itemName), null, num);
// wait for the items to smelt
let total = 0;
let collected_last = true;
let smelted_item = null;
await new Promise(resolve => setTimeout(resolve, 200));
let last_collected = Date.now();
while (total < num) {
await new Promise(resolve => setTimeout(resolve, 10000));
console.log('checking...');
let collected = false;
await new Promise(resolve => setTimeout(resolve, 1000));
if (furnace.outputItem()) {
smelted_item = await furnace.takeOutput();
if (smelted_item) {
total += smelted_item.count;
collected = true;
last_collected = Date.now();
}
}
if (!collected && !collected_last) {
break; // if nothing was collected this time or last time
if (Date.now() - last_collected > 11000) {
break; // if nothing has been collected in 11 seconds, stop
}
collected_last = collected;
if (bot.interrupt_code) {
break;
}
}
// take all remaining in input/fuel slots
if (furnace.inputItem()) {
await furnace.takeInput();
}
if (furnace.fuelItem()) {
await furnace.takeFuel();
}
await bot.closeWindow(furnace);
if (placedFurnace) {
@ -503,7 +511,7 @@ export async function pickupNearbyItems(bot) {
let pickedUp = 0;
while (nearestItem) {
bot.pathfinder.setMovements(new pf.Movements(bot));
await bot.pathfinder.goto(new pf.goals.GoalFollow(nearestItem, 0.8), true);
await goToGoal(bot, new pf.goals.GoalFollow(nearestItem, 0.8));
await new Promise(resolve => setTimeout(resolve, 200));
let prev = nearestItem;
nearestItem = getNearestItem(bot);
@ -533,6 +541,7 @@ export async function breakBlockAt(bot, x, y, z) {
let block = bot.blockAt(Vec3(x, y, z));
if (block.name !== 'air' && block.name !== 'water' && block.name !== 'lava') {
if (bot.modes.isOn('cheat')) {
if (useDelay) { await new Promise(resolve => setTimeout(resolve, blockPlaceDelay)); }
let msg = '/setblock ' + Math.floor(x) + ' ' + Math.floor(y) + ' ' + Math.floor(z) + ' air';
bot.chat(msg);
log(bot, `Used /setblock to break block at ${x}, ${y}, ${z}.`);
@ -545,7 +554,7 @@ export async function breakBlockAt(bot, x, y, z) {
movements.canPlaceOn = false;
movements.allow1by1towers = false;
bot.pathfinder.setMovements(movements);
await bot.pathfinder.goto(new pf.goals.GoalNear(pos.x, pos.y, pos.z, 4));
await goToGoal(bot, new pf.goals.GoalNear(pos.x, pos.y, pos.z, 4));
}
if (bot.game.gameMode !== 'creative') {
await bot.tool.equipForBlock(block);
@ -629,11 +638,14 @@ export async function placeBlock(bot, blockType, x, y, z, placeOn='bottom', dont
if (blockType.includes('stairs')) {
blockType += `[facing=${face}]`;
}
if (useDelay) { await new Promise(resolve => setTimeout(resolve, blockPlaceDelay)); }
let msg = '/setblock ' + Math.floor(x) + ' ' + Math.floor(y) + ' ' + Math.floor(z) + ' ' + blockType;
bot.chat(msg);
if (blockType.includes('door'))
if (useDelay) { await new Promise(resolve => setTimeout(resolve, blockPlaceDelay)); }
bot.chat('/setblock ' + Math.floor(x) + ' ' + Math.floor(y+1) + ' ' + Math.floor(z) + ' ' + blockType + '[half=upper]');
if (blockType.includes('bed'))
if (useDelay) { await new Promise(resolve => setTimeout(resolve, blockPlaceDelay)); }
bot.chat('/setblock ' + Math.floor(x) + ' ' + Math.floor(y) + ' ' + Math.floor(z-1) + ' ' + blockType + '[part=head]');
log(bot, `Used /setblock to place ${blockType} at ${target_dest}.`);
return true;
@ -720,7 +732,7 @@ export async function placeBlock(bot, blockType, x, y, z, placeOn='bottom', dont
let pos = targetBlock.position;
let movements = new pf.Movements(bot);
bot.pathfinder.setMovements(movements);
await bot.pathfinder.goto(new pf.goals.GoalNear(pos.x, pos.y, pos.z, 4));
await goToGoal(bot, new pf.goals.GoalNear(pos.x, pos.y, pos.z, 4));
}
await bot.equip(block, 'hand');
@ -945,6 +957,10 @@ export async function giveToPlayer(bot, itemType, username, num=1) {
* @example
* await skills.giveToPlayer(bot, "oak_log", "player1");
**/
if (bot.username === username) {
log(bot, `You cannot give items to yourself.`);
return false;
}
let player = bot.players[username].entity
if (!player) {
log(bot, `Could not find ${username}.`);
@ -1002,6 +1018,115 @@ export async function giveToPlayer(bot, itemType, username, num=1) {
return false;
}
export async function goToGoal(bot, goal) {
/**
* Navigate to the given goal. Use doors and attempt minimally destructive movements.
* @param {MinecraftBot} bot, reference to the minecraft bot.
* @param {pf.goals.Goal} goal, the goal to navigate to.
**/
const nonDestructiveMovements = new pf.Movements(bot);
const dontBreakBlocks = ['glass', 'glass_pane'];
for (let block of dontBreakBlocks) {
nonDestructiveMovements.blocksCantBreak.add(mc.getBlockId(block));
}
nonDestructiveMovements.digCost = 10;
const destructiveMovements = new pf.Movements(bot);
let final_movements = destructiveMovements;
const pathfind_timeout = 1000;
if (await bot.pathfinder.getPathTo(nonDestructiveMovements, goal, pathfind_timeout).status === 'success') {
final_movements = nonDestructiveMovements;
log(bot, `Found non-destructive path.`);
}
else if (await bot.pathfinder.getPathTo(destructiveMovements, goal, pathfind_timeout).status === 'success') {
log(bot, `Found destructive path.`);
}
else {
log(bot, `Path not found, but attempting to navigate anyway using destructive movements.`);
}
const doorCheckInterval = startDoorInterval(bot);
bot.pathfinder.setMovements(final_movements);
try {
await bot.pathfinder.goto(goal);
clearInterval(doorCheckInterval);
return true;
} catch (err) {
clearInterval(doorCheckInterval);
// we need to catch so we can clean up the door check interval, then rethrow the error
throw err;
}
}
let _doorInterval = null;
function startDoorInterval(bot) {
/**
* Start helper interval that opens nearby doors if the bot is stuck.
* @param {MinecraftBot} bot, reference to the minecraft bot.
* @returns {number} the interval id.
**/
if (_doorInterval) {
clearInterval(_doorInterval);
}
let prev_pos = bot.entity.position.clone();
let prev_check = Date.now();
let stuck_time = 0;
const doorCheckInterval = setInterval(() => {
const now = Date.now();
if (bot.entity.position.distanceTo(prev_pos) >= 0.1) {
stuck_time = 0;
} else {
stuck_time += now - prev_check;
}
if (stuck_time > 1200) {
// shuffle positions so we're not always opening the same door
const positions = [
bot.entity.position.clone(),
bot.entity.position.offset(0, 0, 1),
bot.entity.position.offset(0, 0, -1),
bot.entity.position.offset(1, 0, 0),
bot.entity.position.offset(-1, 0, 0),
]
let elevated_positions = positions.map(position => position.offset(0, 1, 0));
positions.push(...elevated_positions);
positions.push(bot.entity.position.offset(0, 2, 0)); // above head
positions.push(bot.entity.position.offset(0, -1, 0)); // below feet
let currentIndex = positions.length;
while (currentIndex != 0) {
let randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex--;
[positions[currentIndex], positions[randomIndex]] = [
positions[randomIndex], positions[currentIndex]];
}
for (let position of positions) {
let block = bot.blockAt(position);
if (block && block.name &&
!block.name.includes('iron') &&
(block.name.includes('door') ||
block.name.includes('fence_gate') ||
block.name.includes('trapdoor')))
{
bot.activateBlock(block);
break;
}
}
stuck_time = 0;
}
prev_pos = bot.entity.position.clone();
prev_check = now;
}, 200);
_doorInterval = doorCheckInterval;
return doorCheckInterval;
}
export async function goToPosition(bot, x, y, z, min_distance=2) {
/**
@ -1026,10 +1151,7 @@ export async function goToPosition(bot, x, y, z, min_distance=2) {
return true;
}
const movements = new pf.Movements(bot);
bot.pathfinder.setMovements(movements);
const checkProgress = () => {
const checkDigProgress = () => {
if (bot.targetDigBlock) {
const targetBlock = bot.targetDigBlock;
const itemId = bot.heldItem ? bot.heldItem.type : null;
@ -1041,17 +1163,24 @@ export async function goToPosition(bot, x, y, z, min_distance=2) {
}
};
const progressInterval = setInterval(checkProgress, 1000);
const progressInterval = setInterval(checkDigProgress, 1000);
try {
await bot.pathfinder.goto(new pf.goals.GoalNear(x, y, z, min_distance));
log(bot, `You have reached at ${x}, ${y}, ${z}.`);
return true;
await goToGoal(bot, new pf.goals.GoalNear(x, y, z, min_distance));
clearInterval(progressInterval);
const distance = bot.entity.position.distanceTo(new Vec3(x, y, z));
if (distance <= min_distance+1) {
log(bot, `You have reached at ${x}, ${y}, ${z}.`);
return true;
}
else {
log(bot, `Unable to reach ${x}, ${y}, ${z}, you are ${Math.round(distance)} blocks away.`);
return false;
}
} catch (err) {
log(bot, `Pathfinding stopped: ${err.message}.`);
return false;
} finally {
clearInterval(progressInterval);
return false;
}
}
@ -1112,7 +1241,10 @@ export async function goToPlayer(bot, username, distance=3) {
* @example
* await skills.goToPlayer(bot, "player");
**/
if (bot.username === username) {
log(bot, `You are already at ${username}.`);
return true;
}
if (bot.modes.isOn('cheat')) {
bot.chat('/tp @s ' + username);
log(bot, `Teleported to ${username}.`);
@ -1127,9 +1259,10 @@ export async function goToPlayer(bot, username, distance=3) {
return false;
}
const move = new pf.Movements(bot);
bot.pathfinder.setMovements(move);
await bot.pathfinder.goto(new pf.goals.GoalFollow(player, distance), true);
distance = Math.max(distance, 0.5);
const goal = new pf.goals.GoalFollow(player, distance);
await goToGoal(bot, goal, true);
log(bot, `You have reached ${username}.`);
}
@ -1149,24 +1282,54 @@ export async function followPlayer(bot, username, distance=4) {
return false;
const move = new pf.Movements(bot);
move.digCost = 10;
bot.pathfinder.setMovements(move);
let doorCheckInterval = startDoorInterval(bot);
bot.pathfinder.setGoal(new pf.goals.GoalFollow(player, distance), true);
log(bot, `You are now actively following player ${username}.`);
while (!bot.interrupt_code) {
await new Promise(resolve => setTimeout(resolve, 500));
// in cheat mode, if the distance is too far, teleport to the player
if (bot.modes.isOn('cheat') && bot.entity.position.distanceTo(player.position) > 100 && player.isOnGround) {
const distance_from_player = bot.entity.position.distanceTo(player.position);
const teleport_distance = 100;
const ignore_modes_distance = 30;
const nearby_distance = distance + 2;
if (distance_from_player > teleport_distance && bot.modes.isOn('cheat')) {
// teleport with cheat mode
await goToPlayer(bot, username);
}
if (bot.modes.isOn('unstuck')) {
const is_nearby = bot.entity.position.distanceTo(player.position) <= distance + 1;
if (is_nearby)
bot.modes.pause('unstuck');
else
bot.modes.unpause('unstuck');
else if (distance_from_player > ignore_modes_distance) {
// these modes slow down the bot, and we want to catch up
bot.modes.pause('item_collecting');
bot.modes.pause('hunting');
bot.modes.pause('torch_placing');
}
else if (distance_from_player <= ignore_modes_distance) {
bot.modes.unpause('item_collecting');
bot.modes.unpause('hunting');
bot.modes.unpause('torch_placing');
}
if (distance_from_player <= nearby_distance) {
clearInterval(doorCheckInterval);
doorCheckInterval = null;
bot.modes.pause('unstuck');
bot.modes.pause('elbow_room');
}
else {
if (!doorCheckInterval) {
doorCheckInterval = startDoorInterval(bot);
}
bot.modes.unpause('unstuck');
bot.modes.unpause('elbow_room');
}
}
clearInterval(doorCheckInterval);
return true;
}
@ -1189,7 +1352,6 @@ export async function moveAway(bot, distance) {
const move = new pf.Movements(bot);
const path = await bot.pathfinder.getPathTo(move, inverted_goal, 10000);
let last_move = path.path[path.path.length-1];
console.log(last_move);
if (last_move) {
let x = Math.floor(last_move.x);
let y = Math.floor(last_move.y);
@ -1199,7 +1361,7 @@ export async function moveAway(bot, distance) {
}
}
await bot.pathfinder.goto(inverted_goal);
await goToGoal(bot, inverted_goal);
let new_pos = bot.entity.position;
log(bot, `Moved away from nearest entity to ${new_pos}.`);
return true;
@ -1393,7 +1555,7 @@ export async function tillAndSow(bot, x, y, z, seedType=null) {
if (bot.entity.position.distanceTo(block.position) > 4.5) {
let pos = block.position;
bot.pathfinder.setMovements(new pf.Movements(bot));
await bot.pathfinder.goto(new pf.goals.GoalNear(pos.x, pos.y, pos.z, 4));
await goToGoal(bot, new pf.goals.GoalNear(pos.x, pos.y, pos.z, 4));
}
if (block.name !== 'farmland') {
let hoe = bot.inventory.items().find(item => item.name.includes('hoe'));
@ -1439,7 +1601,7 @@ export async function activateNearestBlock(bot, type) {
if (bot.entity.position.distanceTo(block.position) > 4.5) {
let pos = block.position;
bot.pathfinder.setMovements(new pf.Movements(bot));
await bot.pathfinder.goto(new pf.goals.GoalNear(pos.x, pos.y, pos.z, 4));
await goToGoal(bot, new pf.goals.GoalNear(pos.x, pos.y, pos.z, 4));
}
await bot.activateBlock(block);
log(bot, `Activated ${type} at x:${block.position.x.toFixed(1)}, y:${block.position.y.toFixed(1)}, z:${block.position.z.toFixed(1)}.`);

View file

@ -354,6 +354,7 @@ export async function isClearPath(bot, target) {
let movements = new pf.Movements(bot)
movements.canDig = false;
movements.canPlaceOn = false;
movements.canOpenDoors = false;
let goal = new pf.goals.GoalNear(target.position.x, target.position.y, target.position.z, 1);
let path = await bot.pathfinder.getPathTo(movements, goal, 100);
return path.status === 'success';

View file

@ -0,0 +1,115 @@
import { io } from 'socket.io-client';
import convoManager from './conversation.js';
import { setSettings } from './settings.js';
// agents connection to mindserver
// always connect to localhost
class MindServerProxy {
constructor() {
if (MindServerProxy.instance) {
return MindServerProxy.instance;
}
this.socket = null;
this.connected = false;
this.agents = [];
MindServerProxy.instance = this;
}
async connect(name, port) {
if (this.connected) return;
this.name = name;
this.socket = io(`http://localhost:${port}`);
await new Promise((resolve, reject) => {
this.socket.on('connect', resolve);
this.socket.on('connect_error', (err) => {
console.error('Connection failed:', err);
reject(err);
});
});
this.connected = true;
console.log(name, 'connected to MindServer');
this.socket.on('disconnect', () => {
console.log('Disconnected from MindServer');
this.connected = false;
});
this.socket.on('chat-message', (agentName, json) => {
convoManager.receiveFromBot(agentName, json);
});
this.socket.on('agents-update', (agents) => {
this.agents = agents;
convoManager.updateAgents(agents);
if (this.agent?.task) {
console.log(this.agent.name, 'updating available agents');
this.agent.task.updateAvailableAgents(agents);
}
});
this.socket.on('restart-agent', (agentName) => {
console.log(`Restarting agent: ${agentName}`);
this.agent.cleanKill();
});
this.socket.on('send-message', (agentName, message) => {
try {
this.agent.respondFunc("NO USERNAME", message);
} catch (error) {
console.error('Error: ', JSON.stringify(error, Object.getOwnPropertyNames(error)));
}
});
// Request settings and wait for response
await new Promise((resolve, reject) => {
const timeout = setTimeout(() => {
reject(new Error('Settings request timed out after 5 seconds'));
}, 5000);
this.socket.emit('get-settings', name, (response) => {
clearTimeout(timeout);
if (response.error) {
return reject(new Error(response.error));
}
setSettings(response.settings);
resolve();
});
});
}
setAgent(agent) {
this.agent = agent;
}
getAgents() {
return this.agents;
}
getNumOtherAgents() {
return this.agents.length - 1;
}
login() {
this.socket.emit('login-agent', this.agent.name);
}
shutdown() {
this.socket.emit('shutdown');
}
getSocket() {
return this.socket;
}
}
// Create and export a singleton instance
export const serverProxy = new MindServerProxy();
export function sendBotChatToServer(agentName, json) {
serverProxy.getSocket().emit('chat-message', agentName, json);
}

View file

@ -1,7 +1,7 @@
import * as skills from './library/skills.js';
import * as world from './library/world.js';
import * as mc from '../utils/mcdata.js';
import settings from '../../settings.js'
import settings from './settings.js'
import convoManager from './conversation.js';
async function say(agent, message) {
@ -114,6 +114,11 @@ const modes_list = [
});
}
this.last_time = Date.now();
},
unpause: function () {
this.prev_location = null;
this.stuck_time = 0;
this.prev_dig_block = null;
}
},
{
@ -151,7 +156,7 @@ const modes_list = [
{
name: 'hunting',
description: 'Hunt nearby animals when idle.',
interrupts: [],
interrupts: ['action:followPlayer'],
on: true,
active: false,
update: async function (agent) {
@ -342,13 +347,18 @@ class ModeController {
}
unpause(mode_name) {
modes_map[mode_name].paused = false;
const mode = modes_map[mode_name];
//if unpause func is defined and mode is currently paused
if (mode.unpause && mode.paused) {
mode.unpause();
}
mode.paused = false;
}
unPauseAll() {
for (let mode of modes_list) {
if (mode.paused) console.log(`Unpausing mode ${mode.name}`);
mode.paused = false;
this.unpause(mode.name);
}
}

7
src/agent/settings.js Normal file
View file

@ -0,0 +1,7 @@
// extremely lightweight obj that can be imported/modified by any file
let settings = {};
export default settings;
export function setSettings(new_settings) {
Object.keys(settings).forEach(key => delete settings[key]);
Object.assign(settings, new_settings);
}

View file

@ -18,6 +18,7 @@ export class ConstructionTaskValidator {
}
let total_blocks = result.mismatches.length + result.matches.length;
score = (result.matches.length / total_blocks) * 100;
console.log(`Task score: ${score}%`);
return {
"valid": valid,
"score": score

View file

@ -1,390 +1,358 @@
import { getPosition } from "../library/world.js";
export class CookingTaskInitiator {
constructor(data, agent) {
this.agent = agent;
constructor(data, bot) {
this.bot = bot;
this.data = data;
}
async init() {
let bot = this.agent.bot;
let bot = this.bot;
//// Setting up the cooking world using minecraft cheats ////
// Only run the setup if the agent is the first one
if (this.agent.count_id === 0) {
// Clear and prepare the base area
await bot.chat(`/fill ~ ~-1 ~ ~50 ~-3 ~50 grass_block`);
await bot.chat(`/fill ~ ~-1 ~ ~-50 ~-3 ~50 grass_block`);
await bot.chat(`/fill ~ ~-1 ~ ~-50 ~-3 ~-50 grass_block`);
await bot.chat(`/fill ~ ~-1 ~ ~50 ~-3 ~-50 grass_block`);
await bot.chat(`/fill ~ ~ ~ ~50 ~10 ~50 air`);
await bot.chat(`/fill ~ ~ ~ ~-50 ~10 ~50 air`);
await bot.chat(`/fill ~ ~ ~ ~-50 ~10 ~-50 air`);
await bot.chat(`/fill ~ ~ ~ ~50 ~10 ~-50 air`);
// Clear and prepare the base area
await bot.chat(`/fill ~ ~-1 ~ ~50 ~-3 ~50 grass_block`);
await bot.chat(`/fill ~ ~-1 ~ ~-50 ~-3 ~50 grass_block`);
await bot.chat(`/fill ~ ~-1 ~ ~-50 ~-3 ~-50 grass_block`);
await bot.chat(`/fill ~ ~-1 ~ ~50 ~-3 ~-50 grass_block`);
await bot.chat(`/fill ~ ~ ~ ~50 ~10 ~50 air`);
await bot.chat(`/fill ~ ~ ~ ~-50 ~10 ~50 air`);
await bot.chat(`/fill ~ ~ ~ ~-50 ~10 ~-50 air`);
await bot.chat(`/fill ~ ~ ~ ~50 ~10 ~-50 air`);
console.log("Base area cleared and prepared.");
const position = getPosition(bot);
const botX = Math.floor(position.x);
const botZ = Math.floor(position.z);
const position = getPosition(bot);
const botX = Math.floor(position.x);
const botZ = Math.floor(position.z);
// Region management system
const isOverlapping = (newXMin, newXMax, newZMin, newZMax, occupiedRegions) => {
for (const region of occupiedRegions) {
if (newXMin < region.xMax && newXMax > region.xMin &&
newZMin < region.zMax && newZMax > region.zMin) {
return true;
}
// Region management system
const isOverlapping = (newXMin, newXMax, newZMin, newZMax, occupiedRegions) => {
for (const region of occupiedRegions) {
if (newXMin < region.xMax && newXMax > region.xMin &&
newZMin < region.zMax && newZMax > region.zMin) {
return true;
}
return false;
};
}
return false;
};
const findValidPosition = (width, depth, occupiedRegions) => {
const maxXStart = position.x + 25 - width; // Constrain to 50x50 area
const minXStart = position.x - 25;
const maxZStart = position.z + 25 - depth;
const minZStart = position.z - 25;
const findValidPosition = (width, depth, occupiedRegions) => {
const maxXStart = position.x + 25 - width; // Constrain to 50x50 area
const minXStart = position.x - 25;
const maxZStart = position.z + 25 - depth;
const minZStart = position.z - 25;
let attempts = 0;
while (attempts < 10000) {
const xStart = Math.floor(minXStart + Math.random() * (maxXStart - minXStart + 1));
const zStart = Math.floor(minZStart + Math.random() * (maxZStart - minZStart + 1));
const xMin = xStart;
const xMax = xStart + width - 1;
const zMin = zStart;
const zMax = zStart + depth - 1;
let attempts = 0;
while (attempts < 1000) {
const xStart = Math.floor(minXStart + Math.random() * (maxXStart - minXStart + 1));
const zStart = Math.floor(minZStart + Math.random() * (maxZStart - minZStart + 1));
const xMin = xStart;
const xMax = xStart + width - 1;
const zMin = zStart;
const zMax = zStart + depth - 1;
if (!isOverlapping(xMin, xMax, zMin, zMax, occupiedRegions)) {
return { xStart, zStart };
}
attempts++;
if (!isOverlapping(xMin, xMax, zMin, zMax, occupiedRegions)) {
return { xStart, zStart };
}
throw new Error('Failed to find non-overlapping position after 1000 attempts');
};
attempts++;
}
throw new Error('Failed to find non-overlapping position after 1000 attempts');
};
// Define all regions with their sizes
const regionsToPlace = [
{ type: 'wheat', width: 6, depth: 6 },
{ type: 'beetroots', width: 4, depth: 5 },
{ type: 'mushrooms', width: 4, depth: 5 },
{ type: 'potatoes', width: 4, depth: 5 },
{ type: 'carrots', width: 4, depth: 5 },
{ type: 'sugar_cane', width: 3, depth: 3 },
{ type: 'sugar_cane', width: 3, depth: 3 },
{ type: 'pumpkins', width: 10, depth: 1 },
{ type: 'house', width: 11, depth: 11 }
// Define all regions with their sizes
const regionsToPlace = [
{ type: 'wheat', width: 3, depth: 3 },
{ type: 'beetroots', width: 3, depth: 3 },
{ type: 'mushrooms', width: 3, depth: 3 },
{ type: 'potatoes', width: 3, depth: 3 },
{ type: 'carrots', width: 3, depth: 3 },
{ type: 'sugar_cane', width: 3, depth: 3 },
{ type: 'sugar_cane', width: 3, depth: 3 },
{ type: 'pumpkins', width: 5, depth: 1 },
{ type: 'house', width: 11, depth: 11 }
];
// Expand the regions of each type to make sure they don't overlap
for (let i = 0; i < regionsToPlace.length; i++) {
const region = regionsToPlace[i];
const { width, depth } = region;
regionsToPlace[i].width = width + 4;
regionsToPlace[i].depth = depth + 4;
}
const occupiedRegions = [{
xMin : botX - 1,
xMax : botX + 1,
zMin : botZ - 1,
zMax : botZ + 1
}];
const regionPositions = {};
// Calculate positions for all regions
for (const region of regionsToPlace) {
const { xStart, zStart } = findValidPosition(region.width, region.depth, occupiedRegions);
occupiedRegions.push({
xMin: xStart,
xMax: xStart + region.width - 1,
zMin: zStart,
zMax: zStart + region.depth - 1
});
if (region.type === 'sugar_cane') {
if (!regionPositions.sugar_cane) regionPositions.sugar_cane = [];
regionPositions.sugar_cane.push({ xStart, zStart });
} else {
regionPositions[region.type] = { xStart, zStart };
}
}
// Execute all planting
// await plantWheat(regionPositions.wheat.xStart, regionPositions.wheat.zStart);
await this.plantCrops(regionPositions.wheat.xStart, regionPositions.wheat.zStart, 'wheat[age=7]', true);
await this.plantCrops(regionPositions.beetroots.xStart, regionPositions.beetroots.zStart, 'beetroots[age=3]', true);
await this.plantMushrooms(regionPositions.mushrooms.xStart, regionPositions.mushrooms.zStart);
await new Promise(resolve => setTimeout(resolve, 300));
await this.plantCrops(regionPositions.potatoes.xStart, regionPositions.potatoes.zStart, 'potatoes[age=7]', true);
await this.plantCrops(regionPositions.carrots.xStart, regionPositions.carrots.zStart, 'carrots[age=7]', true);
await this.plantCrops(regionPositions.pumpkins.xStart, regionPositions.pumpkins.zStart, 'pumpkin', false);
await this.plantSugarCane(regionPositions.sugar_cane);
await new Promise(resolve => setTimeout(resolve, 300));
console.log("planted crops!");
// await plantPumpkins(regionPositions.pumpkins.xStart, regionPositions.pumpkins.zStart);
// await new Promise(resolve => setTimeout(resolve, 300));
await this.buildHouse(regionPositions.house.xStart, regionPositions.house.zStart);
console.log("House built!");
// Add a chest with cooking items near the bot
// const addChestWithItems = async () => {
// // Find a valid position near the bot (within 10 blocks)
// const findChestPosition = () => {
// const maxAttempts = 100;
// for (let attempt = 0; attempt < maxAttempts; attempt++) {
// const x = botX + Math.floor(Math.random() * 10 - 5); // Within ±5 blocks X
// const z = botZ + Math.floor(Math.random() * 10 - 5); // Within ±5 blocks Z
// const y = position.y;
// // Check if the position is not overlapping with existing structures
// if (!isOverlapping(x, x, z, z, occupiedRegions)) {
// return { x, y, z };
// }
// }
// throw new Error('Failed to find valid chest position');
// };
// const { x, y, z } = findChestPosition();
// // Place the chest
// await bot.chat(`/setblock ${x} ${y} ${z} chest`);
const cookingItems = [
['minecraft:milk_bucket', 1], // Non-stackable
['minecraft:egg', 16], // Stacks to 16
['minecraft:dandelion', 64], // Stacks to 64
['minecraft:sugar', 64],
['minecraft:cocoa_beans', 64],
['minecraft:apple', 64],
['minecraft:milk_bucket', 1],
['minecraft:milk_bucket', 1],
['minecraft:salmon', 64],
['minecraft:cod', 64],
['minecraft:kelp', 64],
['minecraft:dried_kelp', 64],
['minecraft:sweet_berries', 64],
['minecraft:honey_bottle', 1], // Non-stackable
['minecraft:glow_berries', 64],
['minecraft:bowl', 64],
['minecraft:milk_bucket', 1],
['minecraft:milk_bucket', 1],
['minecraft:milk_bucket', 1],
['minecraft:milk_bucket', 1],
['minecraft:cooked_salmon', 64],
['minecraft:cooked_cod', 64],
['minecraft:gold_ingot', 64],
['minecraft:oak_planks', 64],
['minecraft:iron_ingot', 64],
['minecraft:milk_bucket', 1],
['minecraft:milk_bucket', 1],
];
// Expand the regions of each type to make sure they don't overlap
for (let i = 0; i < regionsToPlace.length; i++) {
const region = regionsToPlace[i];
const { width, depth } = region;
regionsToPlace[i].width = width + 4;
regionsToPlace[i].depth = depth + 4;
// // Fill the chest with random cooking items
// for (let slot = 0; slot < cookingItems.length; slot++) { // Chest has 27 slots
// const randomItem = cookingItems[slot];
// await bot.chat(`/item replace block ${x} ${y} ${z} container.${slot} with ${randomItem[0]} ${randomItem[1]}`);
// }
// // Mark the chest area as occupied
// occupiedRegions.push({
// xMin: x,
// xMax: x,
// zMin: z,
// zMax: z
// });
// };
// await addChestWithItems();
await new Promise(resolve => setTimeout(resolve, 300));
const animals = ['chicken', 'cow', 'llama', 'mooshroom', 'pig', 'rabbit', 'sheep'];
// Animal management
await this.killEntities(["item"]);
await this.killEntities(animals);
await this.killEntities(["item"]);
console.log("killed entities!");
await new Promise(resolve => setTimeout(resolve, 300));
// Summon new animals
await this.summonAnimals(animals, 8);
console.log("summoned animals!");
}
async plantCrops (xStart, zStart, crop_and_age, till=true) {
const position = getPosition(this.bot);
for (let i = 0; i < 6; i++) {
for (let j = 0; j < 6; j++) {
const x = xStart + i;
const z = zStart + j;
if (till) {
await this.bot.chat(`/setblock ${x} ${position.y - 1} ${z} farmland`);
}
await this.bot.chat(`/setblock ${x} ${position.y} ${z} ${crop_and_age}`);
}
}
await new Promise(resolve => setTimeout(resolve, 300));
}
const occupiedRegions = [{
xMin : botX - 1,
xMax : botX + 1,
zMin : botZ - 1,
zMax : botZ + 1
}];
const regionPositions = {};
// Calculate positions for all regions
for (const region of regionsToPlace) {
const { xStart, zStart } = findValidPosition(region.width, region.depth, occupiedRegions);
occupiedRegions.push({
xMin: xStart,
xMax: xStart + region.width - 1,
zMin: zStart,
zMax: zStart + region.depth - 1
});
if (region.type === 'sugar_cane') {
if (!regionPositions.sugar_cane) regionPositions.sugar_cane = [];
regionPositions.sugar_cane.push({ xStart, zStart });
} else {
regionPositions[region.type] = { xStart, zStart };
}
async plantSugarCane (patches) {
const position = getPosition(this.bot);
for (const patch of patches) {
const xCenter = patch.xStart + 1;
const zCenter = patch.zStart + 1;
await this.bot.chat(`/setblock ${xCenter} ${position.y - 1} ${zCenter} water`);
const offsets = [[1, 0], [-1, 0], [0, 1], [0, -1]];
for (const [dx, dz] of offsets) {
await this.bot.chat(`/setblock ${xCenter + dx} ${position.y} ${zCenter + dz} sugar_cane[age=15]`);
}
}
};
// Planting functions with dynamic positions
const plantWheat = async (xStart, zStart) => {
for (let i = 0; i < 6; i++) {
for (let j = 0; j < 6; j++) {
const x = xStart + i;
const z = zStart + j;
await bot.chat(`/setblock ${x} ${position.y - 1} ${z} farmland`);
await bot.chat(`/setblock ${x} ${position.y} ${z} wheat[age=7]`);
}
}
};
const plantBeetroots = async (xStart, zStart) => {
for (let i = 0; i < 4; i++) {
for (let j = 0; j < 5; j++) {
const x = xStart + i;
const z = zStart + j;
await bot.chat(`/setblock ${x} ${position.y - 1} ${z} farmland`);
await bot.chat(`/setblock ${x} ${position.y} ${z} beetroots[age=3]`);
}
}
};
const plantMushrooms = async (xStart, zStart) => {
for (let i = 0; i < 4; i++) {
for (let j = 0; j < 5; j++) {
const x = xStart + i;
const z = zStart + j;
await bot.chat(`/setblock ${x} ${position.y - 1} ${z} mycelium`);
const mushroomType = (i + j) % 2 === 0 ? 'red_mushroom' : 'brown_mushroom';
await bot.chat(`/setblock ${x} ${position.y} ${z} ${mushroomType}`);
}
}
};
const plantPotatoes = async (xStart, zStart) => {
for (let i = 0; i < 4; i++) {
for (let j = 0; j < 5; j++) {
const x = xStart + i;
const z = zStart + j;
await bot.chat(`/setblock ${x} ${position.y - 1} ${z} farmland`);
await bot.chat(`/setblock ${x} ${position.y} ${z} potatoes[age=7]`);
}
}
};
const plantCarrots = async (xStart, zStart) => {
for (let i = 0; i < 4; i++) {
for (let j = 0; j < 5; j++) {
const x = xStart + i;
const z = zStart + j;
await bot.chat(`/setblock ${x} ${position.y - 1} ${z} farmland`);
await bot.chat(`/setblock ${x} ${position.y} ${z} carrots[age=7]`);
}
}
};
const plantSugarCane = async (patches) => {
for (const patch of patches) {
const xCenter = patch.xStart + 1;
const zCenter = patch.zStart + 1;
await bot.chat(`/setblock ${xCenter} ${position.y - 1} ${zCenter} water`);
const offsets = [[1, 0], [-1, 0], [0, 1], [0, -1]];
for (const [dx, dz] of offsets) {
await bot.chat(`/setblock ${xCenter + dx} ${position.y} ${zCenter + dz} sugar_cane[age=15]`);
}
}
};
const plantPumpkins = async (xStart, zStart) => {
for (let i = 0; i < 10; i++) {
const x = xStart + i;
const z = zStart;
await bot.chat(`/setblock ${x} ${position.y} ${z} pumpkin`);
}
};
// Execute all planting
await plantWheat(regionPositions.wheat.xStart, regionPositions.wheat.zStart);
await new Promise(resolve => setTimeout(resolve, 300));
await plantBeetroots(regionPositions.beetroots.xStart, regionPositions.beetroots.zStart);
await new Promise(resolve => setTimeout(resolve, 300));
await plantMushrooms(regionPositions.mushrooms.xStart, regionPositions.mushrooms.zStart);
await new Promise(resolve => setTimeout(resolve, 300));
await plantPotatoes(regionPositions.potatoes.xStart, regionPositions.potatoes.zStart);
await new Promise(resolve => setTimeout(resolve, 300));
await plantCarrots(regionPositions.carrots.xStart, regionPositions.carrots.zStart);
await new Promise(resolve => setTimeout(resolve, 300));
await plantSugarCane(regionPositions.sugar_cane);
await new Promise(resolve => setTimeout(resolve, 300));
await plantPumpkins(regionPositions.pumpkins.xStart, regionPositions.pumpkins.zStart);
await new Promise(resolve => setTimeout(resolve, 300));
// House construction
const buildHouse = async (xStart, zStart) => {
const startX = xStart;
const startY = position.y;
const startZ = zStart;
const width = 10;
const depth = 10;
const height = 5;
// Foundation and walls
for (let x = startX; x <= startX + depth; x++) {
for (let y = startY; y <= startY + height; y++) {
for (let z = startZ; z <= startZ + width; z++) {
if (y === startY) {
if (!(x === startX + depth - 1 && z === startZ + Math.floor(width / 2))) {
await bot.chat(`/setblock ${x} ${y} ${z} stone_bricks`);
}
continue;
}
if (x === startX || x === startX + depth ||
z === startZ || z === startZ + width ||
y === startY + height) {
const isWindow = (
(x === startX || x === startX + depth) &&
(z === startZ + 3 || z === startZ + width - 3) &&
(y === startY + 2 || y === startY + 3)
) || (
(z === startZ || z === startZ + width) &&
(x === startX + 3 || x === startX + depth - 3) &&
(y === startY + 2 || y === startY + 3)
);
const isDoor = x === startX + depth &&
z === startZ + Math.floor(width / 2) &&
(y === startY + 1 || y === startY + 2);
if (!isWindow && !isDoor) {
await bot.chat(`/setblock ${x} ${y} ${z} stone_bricks`);
}
}
}
}
}
// Entrance features
const doorZ = startZ + Math.floor(width / 2);
await bot.chat(`/setblock ${startX + depth - 1} ${startY} ${doorZ} stone_brick_stairs[facing=west]`);
await bot.chat(`/setblock ${startX + depth} ${startY} ${doorZ} air`);
// await bot.chat(`/setblock ${startX + depth - 1} ${startY} ${doorZ - 1} stone_bricks`);
// await bot.chat(`/setblock ${startX + depth - 1} ${startY} ${doorZ + 1} stone_bricks`);
// await bot.chat(`/setblock ${startX + depth} ${startY} ${doorZ} oak_door[half=lower,hinge=left,facing=west,powered=false]`);
// await bot.chat(`/setblock ${startX + depth} ${startY + 1} ${doorZ} oak_door[half=upper,hinge=left,facing=west,powered=false]`);
// Roof construction
for (let i = 0; i < 3; i++) {
for (let x = startX + i; x <= startX + depth - i; x++) {
for (let z = startZ + i; z <= startZ + width - i; z++) {
if (x === startX + i || x === startX + depth - i ||
z === startZ + i || z === startZ + width - i) {
await bot.chat(`/setblock ${x} ${startY + height + i} ${z} cobblestone`);
}
}
}
}
// Interior items
await bot.chat(`/setblock ${startX + 4} ${startY + 1} ${startZ + 3} crafting_table`);
await bot.chat(`/setblock ${startX + 4} ${startY + 1} ${startZ + 5} furnace`);
// Add fuel to the furnace
await bot.chat(`/data merge block ${startX + 4} ${startY + 1} ${startZ + 5} {Items:[{Slot:1b,id:"minecraft:coal",Count:64b}]}`)
await bot.chat(`/setblock ${startX + 4} ${startY + 1} ${startZ + 7} smoker`);
// Add fuel to the smoker
await bot.chat(`/data merge block ${startX + 4} ${startY + 1} ${startZ + 7} {Items:[{Slot:1b,id:"minecraft:coal",Count:64b}]}`)
await bot.chat(`/setblock ${startX + depth - 3} ${startY + 1} ${startZ + 2} bed`);
};
await buildHouse(regionPositions.house.xStart, regionPositions.house.zStart);
await new Promise(resolve => setTimeout(resolve, 300));
// Add a chest with cooking items near the bot
const addChestWithItems = async () => {
// Find a valid position near the bot (within 10 blocks)
const findChestPosition = () => {
const maxAttempts = 100;
for (let attempt = 0; attempt < maxAttempts; attempt++) {
const x = botX + Math.floor(Math.random() * 10 - 5); // Within ±5 blocks X
const z = botZ + Math.floor(Math.random() * 10 - 5); // Within ±5 blocks Z
const y = position.y;
// Check if the position is not overlapping with existing structures
if (!isOverlapping(x, x, z, z, occupiedRegions)) {
return { x, y, z };
}
}
throw new Error('Failed to find valid chest position');
};
const { x, y, z } = findChestPosition();
// Place the chest
await bot.chat(`/setblock ${x} ${y} ${z} chest`);
const cookingItems = [
['minecraft:milk_bucket', 1], // Non-stackable
['minecraft:egg', 16], // Stacks to 16
['minecraft:dandelion', 64], // Stacks to 64
['minecraft:sugar', 64],
['minecraft:cocoa_beans', 64],
['minecraft:apple', 64],
['minecraft:milk_bucket', 1],
['minecraft:milk_bucket', 1],
['minecraft:salmon', 64],
['minecraft:cod', 64],
['minecraft:kelp', 64],
['minecraft:dried_kelp', 64],
['minecraft:sweet_berries', 64],
['minecraft:honey_bottle', 1], // Non-stackable
['minecraft:glow_berries', 64],
['minecraft:bowl', 64],
['minecraft:milk_bucket', 1],
['minecraft:milk_bucket', 1],
['minecraft:milk_bucket', 1],
['minecraft:milk_bucket', 1],
['minecraft:cooked_salmon', 64],
['minecraft:cooked_cod', 64],
['minecraft:gold_ingot', 64],
['minecraft:oak_planks', 64],
['minecraft:iron_ingot', 64],
['minecraft:milk_bucket', 1],
['minecraft:milk_bucket', 1],
];
// Fill the chest with random cooking items
for (let slot = 0; slot < cookingItems.length; slot++) { // Chest has 27 slots
const randomItem = cookingItems[slot];
await bot.chat(`/item replace block ${x} ${y} ${z} container.${slot} with ${randomItem[0]} ${randomItem[1]}`);
}
// Mark the chest area as occupied
occupiedRegions.push({
xMin: x,
xMax: x,
zMin: z,
zMax: z
});
};
await addChestWithItems();
await new Promise(resolve => setTimeout(resolve, 300));
// Animal management
await bot.chat('/kill @e[type=item,distance=..200]');
await bot.chat('/kill @e[type=chicken,distance=..200]');
await bot.chat('/kill @e[type=cow,distance=..200]');
await bot.chat('/kill @e[type=llama,distance=..200]');
await bot.chat('/kill @e[type=mooshroom,distance=..200]');
await bot.chat('/kill @e[type=pig,distance=..200]');
await bot.chat('/kill @e[type=rabbit,distance=..200]');
await bot.chat('/kill @e[type=sheep,distance=..200]');
await bot.chat(`/kill @e[type=item,distance=..200]`);
await new Promise(resolve => setTimeout(resolve, 300));
// Summon new animals
const summonAnimals = async () => {
const animals = ['chicken', 'cow', 'llama', 'mooshroom', 'pig', 'rabbit', 'sheep'];
for (const animal of animals) {
for (let i = 0; i < 8; i++) {
const x = position.x - 25 + Math.random() * 50;
const z = position.z - 25 + Math.random() * 50;
await bot.chat(`/summon ${animal} ${Math.floor(x)} ${position.y} ${Math.floor(z)}`);
}
}
};
await summonAnimals();
async plantMushrooms(xStart, zStart) {
const position = getPosition(this.bot);
for (let i = 0; i < 4; i++) {
for (let j = 0; j < 5; j++) {
const x = xStart + i;
const z = zStart + j;
await this.bot.chat(`/setblock ${x} ${position.y - 1} ${z} mycelium`);
const mushroomType = (i + j) % 2 === 0 ? 'red_mushroom' : 'brown_mushroom';
await this.bot.chat(`/setblock ${x} ${position.y} ${z} ${mushroomType}`);
}
}
}
async summonAnimals (animals, amount) {
const position = getPosition(this.bot);
for (const animal of animals) {
for (let i = 0; i < amount; i++) {
const x = position.x - 25 + Math.random() * 50;
const z = position.z - 25 + Math.random() * 50;
await this.bot.chat(`/summon ${animal} ${Math.floor(x)} ${position.y} ${Math.floor(z)}`);
}
}
}
async killEntities(entities) {
for (const entity of entities) {
await this.bot.chat(`/kill @e[type=${entity},distance=..200]`);
}
}
async buildHouse (xStart, zStart) {
const position = getPosition(this.bot);
const startX = xStart;
const startY = position.y;
const startZ = zStart;
const width = 10;
const depth = 10;
const height = 5;
// Foundation and walls
for (let x = startX; x <= startX + depth; x++) {
for (let y = startY; y <= startY + height; y++) {
for (let z = startZ; z <= startZ + width; z++) {
if (y === startY) {
if (!(x === startX + depth - 1 && z === startZ + Math.floor(width / 2))) {
await this.bot.chat(`/setblock ${x} ${y} ${z} stone_bricks`);
}
continue;
}
if (x === startX || x === startX + depth ||
z === startZ || z === startZ + width ||
y === startY + height) {
const isWindow = (
(x === startX || x === startX + depth) &&
(z === startZ + 3 || z === startZ + width - 3) &&
(y === startY + 2 || y === startY + 3)
) || (
(z === startZ || z === startZ + width) &&
(x === startX + 3 || x === startX + depth - 3) &&
(y === startY + 2 || y === startY + 3)
);
const isDoor = x === startX + depth &&
z === startZ + Math.floor(width / 2) &&
(y === startY + 1 || y === startY + 2);
if (!isWindow && !isDoor) {
await this.bot.chat(`/setblock ${x} ${y} ${z} stone_bricks`);
}
}
}
}
}
// Entrance features
const doorZ = startZ + Math.floor(width / 2);
await this.bot.chat(`/setblock ${startX + depth - 1} ${startY} ${doorZ} stone_brick_stairs[facing=west]`);
await this.bot.chat(`/setblock ${startX + depth} ${startY} ${doorZ} air`);
// await bot.chat(`/setblock ${startX + depth - 1} ${startY} ${doorZ - 1} stone_bricks`);
// await bot.chat(`/setblock ${startX + depth - 1} ${startY} ${doorZ + 1} stone_bricks`);
// await bot.chat(`/setblock ${startX + depth} ${startY} ${doorZ} oak_door[half=lower,hinge=left,facing=west,powered=false]`);
// await bot.chat(`/setblock ${startX + depth} ${startY + 1} ${doorZ} oak_door[half=upper,hinge=left,facing=west,powered=false]`);
// Roof construction
for (let i = 0; i < 3; i++) {
for (let x = startX + i; x <= startX + depth - i; x++) {
for (let z = startZ + i; z <= startZ + width - i; z++) {
if (x === startX + i || x === startX + depth - i ||
z === startZ + i || z === startZ + width - i) {
await this.bot.chat(`/setblock ${x} ${startY + height + i} ${z} cobblestone`);
}
}
}
}
// Interior items
await this.bot.chat(`/setblock ${startX + 4} ${startY + 1} ${startZ + 3} crafting_table`);
await this.bot.chat(`/setblock ${startX + 4} ${startY + 1} ${startZ + 5} furnace`);
// Add fuel to the furnace
await this.bot.chat(`/data merge block ${startX + 4} ${startY + 1} ${startZ + 5} {Items:[{Slot:1b,id:"minecraft:coal",Count:64b}]}`)
await this.bot.chat(`/setblock ${startX + 4} ${startY + 1} ${startZ + 7} smoker`);
// Add fuel to the smoker
await this.bot.chat(`/data merge block ${startX + 4} ${startY + 1} ${startZ + 7} {Items:[{Slot:1b,id:"minecraft:coal",Count:64b}]}`)
await this.bot.chat(`/setblock ${startX + depth - 3} ${startY + 1} ${startZ + 2} bed`);
await new Promise(resolve => setTimeout(resolve, 300));
}
}

View file

@ -1,7 +1,6 @@
import { readFileSync , writeFileSync, existsSync} from 'fs';
import { executeCommand } from '../commands/index.js';
import { getPosition } from '../library/world.js';
import settings from '../../../settings.js';
import { ConstructionTaskValidator, Blueprint } from './construction_tasks.js';
import { CookingTaskInitiator } from './cooking_tasks.js';
@ -233,27 +232,26 @@ class CookingCraftingTaskValidator {
}
export class Task {
constructor(agent, task_path, task_id, taskStartTime = null) {
constructor(agent, task_data, taskStartTime = null) {
this.agent = agent;
this.data = null;
if (taskStartTime !== null)
this.taskStartTime = taskStartTime;
else
this.taskStartTime = Date.now();
this.validator = null;
this.reset_function = null;
this.blocked_actions = [];
this.task_id = task_id;
if (task_path && task_id) {
console.log('Starting task', task_id);
if (task_id.endsWith('hells_kitchen')) {
this.task_data = task_data;
if (task_data) {
console.log('Starting task', task_data.task_id);
console.log("Task start time set to", this.taskStartTime);
if (task_data.task_id.endsWith('hells_kitchen')) {
// Reset hells_kitchen progress when a new task starts
hellsKitchenProgressManager.resetTask(task_id);
hellsKitchenProgressManager.resetTask(task_data.task_id);
console.log('Reset Hells Kitchen progress for new task');
}
this.data = this.loadTask(task_path, task_id);
this.data = task_data;
this.task_type = this.data.type;
if (this.task_type === 'construction' && this.data.blueprint) {
this.blueprint = new Blueprint(this.data.blueprint);
@ -264,9 +262,17 @@ export class Task {
this.conversation = this.data.conversation;
}
this.taskTimeout = this.data.timeout || 300;
this.taskStartTime = Date.now();
// Set validator based on task_type
// do goal initialization here
// let agentGoal = this.getAgentGoal();
// if (agentGoal) {
// agentGoal += "You have to collaborate with other agents/bots, namely " + this.available_agents.filter(n => n !== this.name).join(', ') + " to complete the task as soon as possible by dividing the work among yourselves.";
// console.log(`Setting goal for agent ${this.agent.count_id}: ${agentGoal}`);
// await executeCommand(this.agent, `!goal("${agentGoal}")`);
// }
if (this.task_type === 'construction') {
this.validator = new ConstructionTaskValidator(this.data, this.agent);
} else if (this.task_type === 'cooking' || this.task_type === 'techtree') {
@ -292,7 +298,11 @@ export class Task {
}
this.name = this.agent.name;
this.available_agents = settings.profiles.map((p) => JSON.parse(readFileSync(p, 'utf8')).name);
this.available_agents = []
}
updateAvailableAgents(agents) {
this.available_agents = agents
}
// Add this method if you want to manually reset the hells_kitchen progress
@ -312,23 +322,24 @@ export class Task {
if (this.task_type === 'cooking') {
if (this.data.agent_count > 2) {
if (this.name.toLowerCase().startsWith('andy')) {
add_string = '\nIn the end, all the food items should be given to you by other bots. Make sure to talk to all the agents using startConversation command to coordinate the task instead of talking to just one agent. You can even end current conversation with any agent using endConversation command and then talk to a new agent using startConversation command.';
}
else {
add_string = '\nIn the end, all the food items should be given to one single bot whose name starts with andy or Andy. Make sure to talk to all the agents using startConversation command to coordinate the task instead of talking to just one agent. You can even end current conversation with any agent using endConversation command and then talk to a new agent using startConversation command.';
}
if (this.data.agent_count > 2) {
if (this.name.toLowerCase().startsWith('andy')) {
add_string = '\nIn the end, all the food items should be given to you by other bots. Make sure to talk to all the agents using startConversation command to coordinate the task instead of talking to just one agent. You can even end current conversation with any agent using endConversation command and then talk to a new agent using startConversation command.';
}
else {
if (this.data.task_id && this.data.task_id.endsWith('hells_kitchen')) {
add_string = '';
}
else {
add_string = '\nIn the end, all the food items should be given to one single bot.';
}
add_string = '\nIn the end, all the food items should be given to one single bot whose name starts with andy or Andy. Make sure to talk to all the agents using startConversation command to coordinate the task instead of talking to just one agent. You can even end current conversation with any agent using endConversation command and then talk to a new agent using startConversation command.';
}
}
else {
if (this.data.task_id && this.data.task_id.endsWith('hells_kitchen')) {
add_string = '';
}
else {
add_string = '\nIn the end, all the food items should be given to one single bot.';
}
}
}
if (this.task_type === 'techtree') {
@ -351,28 +362,6 @@ export class Task {
return null;
}
loadTask(task_path, task_id) {
try {
const tasksFile = readFileSync(task_path, 'utf8');
const tasks = JSON.parse(tasksFile);
let task = tasks[task_id];
task['task_id'] = task_id;
console.log(task);
console.log(this.agent.count_id);
if (!task) {
throw new Error(`Task ${task_id} not found`);
}
// if ((!task.agent_count || task.agent_count <= 1) && this.agent.count_id > 0) {
// task = null;
// }
return task;
} catch (error) {
console.error('Error loading task:', error);
process.exit(1);
}
}
isDone() {
let res = null;
if (this.validator)
@ -382,6 +371,7 @@ export class Task {
for (let agent of this.available_agents) {
this.agent.bot.chat(`/clear ${agent}`);
}
// this.agent.bot.chat(`/clear @a`);
return {"message": 'Task successful', "score": res.score};
}
let other_names = this.available_agents.filter(n => n !== this.name);
@ -406,6 +396,15 @@ export class Task {
return false;
}
async setAgentGoal() {
let agentGoal = this.getAgentGoal();
if (agentGoal && this.data.agent_count + this.data.human_count > 1) {
agentGoal += "You have to collaborate with other agents/bots, namely " + this.available_agents.filter(n => n !== this.name).join(', ') + " to complete the task as soon as possible by dividing the work among yourselves.";
console.log(`Setting goal for agent ${this.agent.count_id}: ${agentGoal}`);
}
await executeCommand(this.agent, `!goal("${agentGoal}")`);
}
async initBotTask() {
await this.agent.bot.chat(`/clear ${this.name}`);
console.log(`Cleared ${this.name}'s inventory.`);
@ -417,7 +416,7 @@ export class Task {
return;
if (this.task_type === 'cooking') {
this.initiator = new CookingTaskInitiator(this.data, this.agent);
this.initiator = new CookingTaskInitiator(this.data, this.agent.bot);
} else {
this.initiator = null;
}
@ -425,17 +424,43 @@ export class Task {
//wait for a bit so bots are teleported
await new Promise((resolve) => setTimeout(resolve, 3000));
if (this.agent.count_id === 0 && this.data.human_count > 0) {
console.log('Clearing human player inventories');
for (let i = 0; i < this.data.human_count; i++) {
const username = this.data.usernames[i];
await this.agent.bot.chat(`/clear ${username}`);
}
await new Promise((resolve) => setTimeout(resolve, 500));
}
if (this.data.initial_inventory) {
console.log("Setting inventory...");
let initialInventory = {};
// Handle multi-agent inventory assignment
if (this.data.agent_count > 1) {
initialInventory = this.data.initial_inventory[this.agent.count_id.toString()] || {};
console.log("Initial inventory for agent", this.agent.count_id, ":", initialInventory);
} else {
initialInventory = this.data.initial_inventory;
console.log("Initial inventory:", initialInventory);
initialInventory = this.data.initial_inventory[this.agent.count_id.toString()] || {};
console.log("Initial inventory for agent", this.agent.count_id, ":", initialInventory);
console.log("")
if (this.data.human_count > 0 && this.agent.count_id === 0) {
// this.num_humans = num_keys - this.data.num_agents;
if (this.data.human_count !== this.data.usernames.length) {
console.log(`Number of human players ${this.human_count} does not match the number of usernames provided. ${this.data.usernames.length}`);
throw new Error(`Number of human players ${this.human_count} does not match the number of usernames provided. ${this.data.usernames.length}`);
return;
}
const starting_idx = this.data.agent_count;
for (let i = 0; i < this.data.human_count; i++) {
const username = this.data.usernames[i];
const inventory = this.data.initial_inventory[starting_idx + i];
console.log(Object.keys(inventory));
for (let key of Object.keys(inventory)) {
const itemName = key.toLowerCase();
const quantity = inventory[key];
console.log(`Give ${username} ${quantity} ${itemName}`);
await this.agent.bot.chat(`/give ${username} ${itemName} ${quantity}`);
}
}
}
console.log(this.data.initial_inventory);
@ -451,7 +476,7 @@ export class Task {
await new Promise((resolve) => setTimeout(resolve, 500));
}
if (this.initiator) {
if (this.initiator && this.agent.count_id === 0) {
await this.initiator.init();
}
@ -465,7 +490,7 @@ export class Task {
this.agent.killAll();
}
}
await new Promise((resolve) => setTimeout(resolve, 500));
if (this.data.conversation && this.agent.count_id === 0) {
let other_name = this.available_agents.filter(n => n !== this.name)[0];
let waitCount = 0;
@ -474,19 +499,13 @@ export class Task {
await new Promise((resolve) => setTimeout(resolve, 1000));
waitCount++;
}
if (other_name === undefined) {
if (other_name === undefined && this.data.agent_count > 1) {
console.log('No other agents found. Task unsuccessful.');
this.agent.killAll();
}
await executeCommand(this.agent, `!startConversation("${other_name}", "${this.data.conversation}")`);
}
let agentGoal = this.getAgentGoal();
if (agentGoal) {
agentGoal += "You have to collaborate with other agents/bots, namely " + this.available_agents.filter(n => n !== this.name).join(', ') + " to complete the task as soon as possible by dividing the work among yourselves.";
console.log(`Setting goal for agent ${this.agent.count_id}: ${agentGoal}`);
await executeCommand(this.agent, `!goal("${agentGoal}")`);
}
await this.setAgentGoal();
}
async teleportBots() {
@ -508,7 +527,8 @@ export class Task {
}
}
if (human_player_name) {
// go the human if there is one and not required for the task
if (human_player_name && this.data.human_count === 0) {
console.log(`Teleporting ${this.name} to human ${human_player_name}`)
bot.chat(`/tp ${this.name} ${human_player_name}`)
}
@ -554,7 +574,14 @@ export class Task {
const commands = result.commands;
const nearbyPosition = result.nearbyPosition;
console.log("nearby position", nearbyPosition);
bot.chat(`/tp @a ${nearbyPosition.x} ${nearbyPosition.y} ${nearbyPosition.z}`);
const first_coord = this.data.blueprint.levels[0].coordinates;
bot.chat(`/tp @a ${first_coord[0]} ${first_coord[1]} ${first_coord[2]}`);
if (this.agent.agent_id === 0 && this.data.human_count > 0) {
for (let i = 0; i < this.data.human_count; i++) {
const username = this.data.usernames[i];
await bot.chat(`/tp ${username} ${nearbyPosition.x} ${nearbyPosition.y} ${nearbyPosition.z}`);
}
}
for (const command of commands) {
bot.chat(command);
}

View file

@ -1,8 +1,8 @@
import settings from '../../../settings.js';
import settings from '../settings.js';
import prismarineViewer from 'prismarine-viewer';
const mineflayerViewer = prismarineViewer.mineflayer;
export function addBrowserViewer(bot, count_id) {
if (settings.show_bot_views)
if (settings.render_bot_view)
mineflayerViewer(bot, { port: 3000+count_id, firstPerson: true, });
}

View file

@ -0,0 +1,27 @@
import mindcraft
import json
import os
# Initialize Mindcraft, starting the Node.js server
# This will also connect to the MindServer via websockets
mindcraft.init()
# Get the directory of the current script
script_dir = os.path.dirname(os.path.abspath(__file__))
profile_path = os.path.abspath(os.path.join(script_dir, '..', '..', 'andy.json'))
# Load agent settings from a JSON file
try:
with open(profile_path, 'r') as f:
profile_data = json.load(f)
settings = {"profile": profile_data}
mindcraft.create_agent(settings)
settings_copy = settings.copy()
settings_copy['profile']['name'] = 'andy2'
mindcraft.create_agent(settings_copy)
except FileNotFoundError:
print(f"Error: Could not find andy.json at {profile_path}")
mindcraft.wait()

View file

@ -0,0 +1,24 @@
import * as Mindcraft from '../mindcraft/mindcraft.js';
import settings from '../../settings.js';
import yargs from 'yargs';
import { hideBin } from 'yargs/helpers';
function parseArguments() {
return yargs(hideBin(process.argv))
.option('mindserver_port', {
type: 'number',
describe: 'Mindserver port',
default: settings.mindserver_port
})
.help()
.alias('help', 'h')
.parse();
}
const args = parseArguments();
settings.mindserver_port = args.mindserver_port;
Mindcraft.init(settings.mindserver_port);
console.log(`Mindcraft initialized with MindServer at localhost:${settings.mindserver_port}`);

View file

@ -0,0 +1,99 @@
import subprocess
import socketio
import time
import json
import os
import atexit
import threading
import sys
import signal
class Mindcraft:
def __init__(self):
self.sio = socketio.Client()
self.process = None
self.connected = False
self.log_thread = None
def _log_reader(self):
for line in iter(self.process.stdout.readline, ''):
sys.stdout.write(f'[Node.js] {line}')
sys.stdout.flush()
def init(self, port=8080):
if self.process:
return
self.port = port
node_script_path = os.path.abspath(os.path.join(os.path.dirname(__file__), 'init-mindcraft.js'))
self.process = subprocess.Popen([
'node',
node_script_path,
'--mindserver_port', str(self.port)
], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True, bufsize=1)
self.log_thread = threading.Thread(target=self._log_reader)
self.log_thread.daemon = True
self.log_thread.start()
atexit.register(self.shutdown)
time.sleep(2) # Give server time to start before connecting
try:
self.sio.connect(f'http://localhost:{self.port}')
self.connected = True
print("Connected to MindServer. Mindcraft is initialized.")
except socketio.exceptions.ConnectionError as e:
print(f"Failed to connect to MindServer: {e}")
self.shutdown()
raise
def create_agent(self, settings_json):
if not self.connected:
raise Exception("Not connected to MindServer. Call init() first.")
profile_data = settings_json.get('profile', {})
def callback(response):
if response.get('success'):
print(f"Agent '{profile_data.get('name')}' created successfully")
else:
print(f"Error creating agent: {response.get('error', 'Unknown error')}")
self.sio.emit('create-agent', settings_json, callback=callback)
def shutdown(self):
if self.sio.connected:
self.sio.disconnect()
self.connected = False
if self.process:
self.process.terminate()
self.process.wait()
self.process = None
print("Mindcraft shut down.")
def wait(self):
"""Block the main thread until Ctrl+C is pressed so the server stays up,"""
print("Server is running. Press Ctrl+C to exit.")
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
print("\nCtrl+C detected. Exiting...")
self.shutdown()
mindcraft_instance = Mindcraft()
def init(port=8080):
mindcraft_instance.init(port)
def create_agent(settings_json):
mindcraft_instance.create_agent(settings_json)
def shutdown():
mindcraft_instance.shutdown()
def wait():
mindcraft_instance.wait()

View file

@ -0,0 +1,64 @@
import { createMindServer, registerAgent } from './mindserver.js';
import { AgentProcess } from '../process/agent_process.js';
let mindserver;
let connected = false;
let agent_processes = {};
let agent_count = 0;
let host = 'localhost';
let port = 8080;
export async function init(host_public=false, port=8080) {
if (connected) {
console.error('Already initiliazed!');
return;
}
mindserver = createMindServer(host_public, port);
port = port;
connected = true;
}
export async function createAgent(settings) {
if (!settings.profile.name) {
console.error('Agent name is required in profile');
return;
}
settings = JSON.parse(JSON.stringify(settings));
let agent_name = settings.profile.name;
registerAgent(settings);
let load_memory = settings.load_memory || false;
let init_message = settings.init_message || null;
const agentProcess = new AgentProcess(agent_name, port);
agentProcess.start(load_memory, init_message, agent_count);
agent_count++;
agent_processes[settings.profile.name] = agentProcess;
}
export function getAgentProcess(agentName) {
return agent_processes[agentName];
}
export function startAgent(agentName) {
if (agent_processes[agentName]) {
agent_processes[agentName].continue();
}
else {
console.error(`Cannot start agent ${agentName}; not found`);
}
}
export function stopAgent(agentName) {
if (agent_processes[agentName]) {
agent_processes[agentName].stop();
}
}
export function shutdown() {
console.log('Shutting down');
for (let agentName in agent_processes) {
agent_processes[agentName].stop();
}
setTimeout(() => {
process.exit(0);
}, 2000);
}

196
src/mindcraft/mindserver.js Normal file
View file

@ -0,0 +1,196 @@
import { Server } from 'socket.io';
import express from 'express';
import http from 'http';
import path from 'path';
import { fileURLToPath } from 'url';
import * as mindcraft from './mindcraft.js';
import { readFileSync } from 'fs';
const __dirname = path.dirname(fileURLToPath(import.meta.url));
// Mindserver is:
// - central hub for communication between all agent processes
// - api to control from other languages and remote users
// - host for webapp
let io;
let server;
const agent_connections = {};
const settings_spec = JSON.parse(readFileSync(path.join(__dirname, 'public/settings_spec.json'), 'utf8'));
class AgentConnection {
constructor(settings) {
this.socket = null;
this.settings = settings;
this.in_game = false;
}
}
export function registerAgent(settings) {
let agentConnection = new AgentConnection(settings);
agent_connections[settings.profile.name] = agentConnection;
}
export function logoutAgent(agentName) {
if (agent_connections[agentName]) {
agent_connections[agentName].in_game = false;
agentsUpdate();
}
}
// Initialize the server
export function createMindServer(host_public = false, port = 8080) {
const app = express();
server = http.createServer(app);
io = new Server(server);
// Serve static files
const __dirname = path.dirname(fileURLToPath(import.meta.url));
app.use(express.static(path.join(__dirname, 'public')));
// Socket.io connection handling
io.on('connection', (socket) => {
let curAgentName = null;
console.log('Client connected');
agentsUpdate(socket);
socket.on('create-agent', (settings, callback) => {
console.log('API create agent...');
for (let key in settings_spec) {
if (!(key in settings)) {
if (settings_spec[key].required) {
callback({ success: false, error: `Setting ${key} is required` });
return;
}
else {
settings[key] = settings_spec[key].default;
}
}
}
for (let key in settings) {
if (!(key in settings_spec)) {
delete settings[key];
}
}
if (settings.profile?.name) {
if (settings.profile.name in agent_connections) {
callback({ success: false, error: 'Agent already exists' });
return;
}
mindcraft.createAgent(settings);
callback({ success: true });
}
else {
console.error('Agent name is required in profile');
callback({ success: false, error: 'Agent name is required in profile' });
}
});
socket.on('get-settings', (agentName, callback) => {
if (agent_connections[agentName]) {
callback({ settings: agent_connections[agentName].settings });
} else {
callback({ error: `Agent '${agentName}' not found.` });
}
});
socket.on('login-agent', (agentName) => {
if (agent_connections[agentName]) {
agent_connections[agentName].socket = socket;
agent_connections[agentName].in_game = true;
curAgentName = agentName;
agentsUpdate();
}
else {
console.warn(`Unregistered agent ${agentName} tried to login`);
}
});
socket.on('disconnect', () => {
if (agent_connections[curAgentName]) {
console.log(`Agent ${curAgentName} disconnected`);
agent_connections[curAgentName].in_game = false;
agentsUpdate();
}
});
socket.on('chat-message', (agentName, json) => {
if (!agent_connections[agentName]) {
console.warn(`Agent ${agentName} tried to send a message but is not logged in`);
return;
}
console.log(`${curAgentName} sending message to ${agentName}: ${json.message}`);
agent_connections[agentName].socket.emit('chat-message', curAgentName, json);
});
socket.on('restart-agent', (agentName) => {
console.log(`Restarting agent: ${agentName}`);
agent_connections[agentName].socket.emit('restart-agent');
});
socket.on('stop-agent', (agentName) => {
mindcraft.stopAgent(agentName);
});
socket.on('start-agent', (agentName) => {
mindcraft.startAgent(agentName);
});
socket.on('stop-all-agents', () => {
console.log('Killing all agents');
for (let agentName in agent_connections) {
mindcraft.stopAgent(agentName);
}
});
socket.on('shutdown', () => {
console.log('Shutting down');
for (let agentName in agent_connections) {
mindcraft.stopAgent(agentName);
}
// wait 2 seconds
setTimeout(() => {
console.log('Exiting MindServer');
process.exit(0);
}, 2000);
});
socket.on('send-message', (agentName, message) => {
if (!agent_connections[agentName]) {
console.warn(`Agent ${agentName} not in game, cannot send message via MindServer.`);
return
}
try {
console.log(`Sending message to agent ${agentName}: ${message}`);
agent_connections[agentName].socket.emit('send-message', agentName, message)
} catch (error) {
console.error('Error: ', error);
}
});
});
let host = host_public ? '0.0.0.0' : 'localhost';
server.listen(port, host, () => {
console.log(`MindServer running on port ${port}`);
});
return server;
}
function agentsUpdate(socket) {
if (!socket) {
socket = io;
}
let agents = [];
for (let agentName in agent_connections) {
agents.push({name: agentName, in_game: agent_connections[agentName].in_game});
};
socket.emit('agents-update', agents);
}
// Optional: export these if you need access to them from other files
export const getIO = () => io;
export const getServer = () => server;

View file

@ -0,0 +1,286 @@
<!DOCTYPE html>
<html>
<head>
<title>Mindcraft</title>
<script src="/socket.io/socket.io.js"></script>
<style>
body {
font-family: Arial, sans-serif;
margin: 20px;
background: #1a1a1a;
color: #e0e0e0;
}
#agents {
background: #2d2d2d;
padding: 20px;
border-radius: 8px;
box-shadow: 0 2px 4px rgba(0,0,0,0.2);
}
h1 {
color: #ffffff;
}
.agent {
margin: 10px 0;
padding: 10px;
background: #363636;
border-radius: 4px;
display: flex;
justify-content: space-between;
align-items: center;
}
.restart-btn, .start-btn, .stop-btn {
color: white;
border: none;
padding: 5px 10px;
border-radius: 4px;
cursor: pointer;
margin-left: 5px;
}
.restart-btn {
background: #4CAF50;
}
.start-btn {
background: #2196F3;
}
.stop-btn {
background: #f44336;
}
.restart-btn:hover { background: #45a049; }
.start-btn:hover { background: #1976D2; }
.stop-btn:hover { background: #d32f2f; }
.status-icon {
font-size: 12px;
margin-right: 8px;
}
.status-icon.online {
color: #4CAF50;
}
.status-icon.offline {
color: #f44336;
}
#settingsForm {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
gap: 8px;
margin-top: 10px;
}
.setting-wrapper {
display: flex;
align-items: center;
gap: 6px;
background: #3a3a3a;
padding: 6px 8px;
border-radius: 4px;
width: 100%;
box-sizing: border-box;
min-width: 0;
}
.setting-wrapper label {
flex: 0 0 50%;
font-size: 0.9em;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.setting-wrapper input[type="text"],
.setting-wrapper input[type="number"] {
flex: 1 1 0;
background: #262626;
border: 1px solid #555;
color: #e0e0e0;
border-radius: 4px;
padding: 4px 6px;
max-width: 100%;
min-width: 0;
}
.setting-wrapper input[type="checkbox"] {
transform: scale(1.2);
}
.agent-viewer {
width: 200px;
height: 150px;
border: none;
margin-left: 10px;
}
.start-btn:disabled {
opacity: 0.4;
cursor: not-allowed;
}
.agent-view-container {
margin-top: 6px;
display: flex;
justify-content: flex-start;
}
</style>
</head>
<body>
<h1>Mindcraft</h1>
<div id="agents"></div>
<div id="createAgentSection" style="margin-top:20px;background:#2d2d2d;padding:20px;border-radius:8px;">
<h2>Create Agent</h2>
<div id="settingsForm"></div>
<div id="profileStatus" style="margin-top:6px;font-style:italic;color:#cccccc;">Profile: Not uploaded</div>
<div style="margin-top:10px;">
<button id="uploadProfileBtn" class="start-btn">Upload Profile</button>
<input type="file" id="profileFileInput" accept=".json,application/json" style="display:none">
<button id="submitCreateAgentBtn" class="start-btn" disabled>Create Agent</button>
</div>
<div id="createError" style="color:#f44336;margin-top:10px;"></div>
</div>
<script>
const socket = io();
const agentsDiv = document.getElementById('agents');
let settingsSpec = {};
let profileData = null;
const agentSettings = {};
fetch('/settings_spec.json')
.then(r => r.json())
.then(spec => {
settingsSpec = spec;
const form = document.getElementById('settingsForm');
Object.keys(spec).forEach(key => {
if (key === 'profile') return; // profile handled via upload
const cfg = spec[key];
const wrapper = document.createElement('div');
wrapper.className = 'setting-wrapper';
const label = document.createElement('label');
label.textContent = key;
label.title = cfg.description || '';
let input;
switch (cfg.type) {
case 'boolean':
input = document.createElement('input');
input.type = 'checkbox';
input.checked = cfg.default === true;
break;
case 'number':
input = document.createElement('input');
input.type = 'number';
input.value = cfg.default;
break;
default:
input = document.createElement('input');
input.type = 'text';
input.value = typeof cfg.default === 'object' ? JSON.stringify(cfg.default) : cfg.default;
}
input.title = cfg.description || '';
input.id = `setting-${key}`;
wrapper.appendChild(label);
wrapper.appendChild(input);
form.appendChild(wrapper);
});
});
document.getElementById('uploadProfileBtn').addEventListener('click', () => {
document.getElementById('profileFileInput').click();
});
document.getElementById('profileFileInput').addEventListener('change', e => {
const file = e.target.files[0];
if (!file) return;
const reader = new FileReader();
reader.onload = ev => {
try {
profileData = JSON.parse(ev.target.result);
document.getElementById('submitCreateAgentBtn').disabled = false;
document.getElementById('profileStatus').textContent = `Profile: ${profileData.name || 'Uploaded'}`;
document.getElementById('createError').textContent = '';
} catch (err) {
document.getElementById('createError').textContent = 'Invalid profile JSON: ' + err.message;
profileData = null;
document.getElementById('submitCreateAgentBtn').disabled = true;
document.getElementById('profileStatus').textContent = 'Profile: Not uploaded';
}
};
reader.readAsText(file);
e.target.value = '';
});
document.getElementById('submitCreateAgentBtn').addEventListener('click', () => {
if (!profileData) return;
const settings = { profile: profileData };
Object.keys(settingsSpec).forEach(key => {
if (key === 'profile') return;
const input = document.getElementById(`setting-${key}`);
if (!input) return;
const type = settingsSpec[key].type;
let val;
if (type === 'boolean') val = input.checked;
else if (type === 'number') val = Number(input.value);
else if (type === 'array' || type === 'object') {
try { val = JSON.parse(input.value); }
catch { val = input.value; }
} else val = input.value;
settings[key] = val;
});
socket.emit('create-agent', settings, res => {
if (!res.success) {
document.getElementById('createError').textContent = res.error || 'Unknown error';
} else {
// reset on success
profileData = null;
document.getElementById('submitCreateAgentBtn').disabled = true;
document.getElementById('profileStatus').textContent = 'Profile: Not uploaded';
document.getElementById('createError').textContent = '';
}
});
});
function fetchAgentSettings(name) {
return new Promise((resolve) => {
if (agentSettings[name]) { resolve(agentSettings[name]); return; }
socket.emit('get-settings', name, res => {
if (res.settings) {
agentSettings[name] = res.settings;
resolve(res.settings);
} else resolve(null);
});
});
}
async function renderAgents(agents) {
// fetch settings for any new agents
await Promise.all(agents.map(a => fetchAgentSettings(a.name)));
agentsDiv.innerHTML = agents.length ?
agents.map((agent, idx) => {
const cfg = agentSettings[agent.name] || {};
const showViewer = cfg.render_bot_view === true;
const viewerHTML = showViewer ? `<div class="agent-view-container"><iframe class="agent-viewer" src="http://localhost:${3000 + idx}"></iframe></div>` : '';
return `
<div class="agent">
<div style="display:flex;justify-content:space-between;align-items:center;">
<span><span class="status-icon ${agent.in_game ? 'online' : 'offline'}"></span>${agent.name}</span>
<div style="display:flex;align-items:center;">
${agent.in_game ? `
<button class="stop-btn" onclick="stopAgent('${agent.name}')">Stop</button>
<button class="restart-btn" onclick="restartAgent('${agent.name}')">Restart</button>
<input type="text" id="messageInput-${agent.name}" placeholder="Enter message..." style="margin-left:4px;">
<button class="start-btn" onclick="sendMessage('${agent.name}', document.getElementById('messageInput-${agent.name}').value)">Send</button>
` : `
<button class="start-btn" onclick="startAgent('${agent.name}')">Start</button>
`}
</div>
</div>
${viewerHTML}
</div>`;
}).join('') +
`<button class="stop-btn" onclick="killAllAgents()">Stop All</button>
<button class="stop-btn" onclick="shutdown()">Shutdown</button>` :
'<div class="agent">No agents connected</div>';
}
socket.on('agents-update', agents => { renderAgents(agents); });
function restartAgent(n) { socket.emit('restart-agent', n); }
function startAgent(n) { socket.emit('start-agent', n); }
function stopAgent(n) { socket.emit('stop-agent', n); }
function killAllAgents() { socket.emit('stop-all-agents'); }
function shutdown() { socket.emit('shutdown'); }
function sendMessage(n, m) { socket.emit('send-message', n, m); }
</script>
</body>
</html>

View file

@ -0,0 +1,127 @@
{
"profile": {
"type": "object",
"required": true,
"description": "The profile object to use, including name, prompts, and examples"
},
"minecraft_version": {
"type": "string",
"description": "The version of Minecraft to use",
"default": "1.21.1"
},
"host": {
"type": "string",
"description": "The minecraft server host address to connect to",
"default": "127.0.0.1"
},
"port": {
"type": "number",
"description": "The minecraft server port to connect to",
"default": 55916
},
"auth": {
"type": "string",
"description": "The authentication method to use",
"default": "offline"
},
"base_profile": {
"type": "string",
"description": "Allowed values: survival, assistant, creative, god_mode. Each has fine tuned settings for different game modes.",
"default": "survival"
},
"load_memory": {
"type": "boolean",
"description": "Whether to load bot's previous memory",
"default": false
},
"init_message": {
"type": "string",
"description": "The initial message to send to the bot",
"default": "Respond with hello world and your name"
},
"only_chat_with": {
"type": "array",
"description": "List of agents to only chat with. If empty, the bot will chat publicly",
"default": []
},
"speak": {
"type": "boolean",
"description": "Whether to enable text-to-speech reading on the host machine",
"default": false
},
"language": {
"type": "string",
"description": "The language to automatically translate to and from using google translate",
"default": "en"
},
"allow_vision": {
"type": "boolean",
"description": "Whether to allow vision capabilities",
"default": false
},
"blocked_actions": {
"type": "array",
"description": "List of actions that are blocked",
"default": ["!checkBlueprint", "!checkBlueprintLevel", "!getBlueprint", "!getBlueprintLevel"]
},
"relevant_docs_count": {
"type": "number",
"description": "Number of relevant function documents to include in the prompt for LLM code writing",
"default": 5
},
"max_messages": {
"type": "number",
"description": "Maximum number of recent messages to keep in context for LLM",
"default": 15
},
"num_examples": {
"type": "number",
"description": "Number of examples to select to help prompt better LLM responses",
"default": 2
},
"max_commands": {
"type": "number",
"description": "Maximum number of commands allowed in consecutive responses. -1 for no limit",
"default": -1
},
"narrate_behavior": {
"type": "boolean",
"description": "Whether to openly chat automatic behavior like 'Picking up item!'",
"default": true
},
"log_all_prompts": {
"type": "boolean",
"description": "Whether to log all prompts to file. Can be very verbose.",
"default": false
},
"verbose_commands": {
"type": "boolean",
"description": "Whether to show full command syntax in bot responses. If false will use a shortened syntax.",
"default": true
},
"chat_bot_messages": {
"type": "boolean",
"description": "Whether to publicly chat messages to and from other bots",
"default": true
},
"render_bot_view": {
"type": "boolean",
"description": "Whether to render bot view for user observation. Does not give bot vision.",
"default": false
},
"allow_insecure_coding": {
"type": "boolean",
"description": "Whether to allow newAction command that let's LLM write/run code on host computer. Despite sandboxxing, it is potentially insecure.",
"default": false
},
"code_timeout_mins": {
"type": "number",
"description": "Number of minutes to allow code execution. -1 for no timeout",
"default": -1
},
"task": {
"type": "object",
"description": "The task object to give the agent on start. If null, the agent will not have a task.",
"default": null
}
}

89
src/models/_model_map.js Normal file
View file

@ -0,0 +1,89 @@
import { promises as fs } from 'fs';
import path from 'path';
import { fileURLToPath, pathToFileURL } from 'url';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
// Dynamically discover model classes in this directory.
// Each model class must export a static `prefix` string.
const apiMap = await (async () => {
const map = {};
const files = (await fs.readdir(__dirname))
.filter(f => f.endsWith('.js') && f !== '_model_map.js' && f !== 'prompter.js');
for (const file of files) {
try {
const moduleUrl = pathToFileURL(path.join(__dirname, file)).href;
const mod = await import(moduleUrl);
for (const exported of Object.values(mod)) {
if (typeof exported === 'function' && Object.prototype.hasOwnProperty.call(exported, 'prefix')) {
const prefix = exported.prefix;
if (typeof prefix === 'string' && prefix.length > 0) {
map[prefix] = exported;
}
}
}
} catch (e) {
console.warn('Failed to load model module:', file, e?.message || e);
}
}
return map;
})();
export function selectAPI(profile) {
if (typeof profile === 'string' || profile instanceof String) {
profile = {model: profile};
}
// backwards compatibility with local->ollama
if (profile.api?.includes('local') || profile.model?.includes('local')) {
profile.api = 'ollama';
if (profile.model) {
profile.model = profile.model.replace('local', 'ollama');
}
}
if (!profile.api) {
const api = Object.keys(apiMap).find(key => profile.model?.startsWith(key));
if (api) {
profile.api = api;
}
else {
// check for some common models that do not require prefixes
if (profile.model.includes('gpt') || profile.model.includes('o1')|| profile.model.includes('o3'))
profile.api = 'openai';
else if (profile.model.includes('claude'))
profile.api = 'anthropic';
else if (profile.model.includes('gemini'))
profile.api = "google";
else if (profile.model.includes('grok'))
profile.api = 'grok';
else if (profile.model.includes('mistral'))
profile.api = 'mistral';
else if (profile.model.includes('deepseek'))
profile.api = 'deepseek';
else if (profile.model.includes('qwen'))
profile.api = 'qwen';
}
if (!profile.api) {
throw new Error('Unknown model:', profile.model);
}
}
if (!apiMap[profile.api]) {
throw new Error('Unknown api:', profile.api);
}
let model_name = profile.model.replace(profile.api + '/', ''); // remove prefix
profile.model = model_name === "" ? null : model_name; // if model is empty, set to null
return profile;
}
export function createModel(profile) {
if (!!apiMap[profile.model]) {
// if the model value is an api (instead of a specific model name)
// then set model to null so it uses the default model for that api
profile.model = null;
}
if (!apiMap[profile.api]) {
throw new Error('Unknown api:', profile.api);
}
const model = new apiMap[profile.api](profile.model, profile.url, profile.params);
return model;
}

61
src/models/cerebras.js Normal file
View file

@ -0,0 +1,61 @@
import CerebrasSDK from '@cerebras/cerebras_cloud_sdk';
import { strictFormat } from '../utils/text.js';
import { getKey } from '../utils/keys.js';
export class Cerebras {
static prefix = 'cerebras';
constructor(model_name, url, params) {
this.model_name = model_name;
this.url = url;
this.params = params;
// Initialize client with API key
this.client = new CerebrasSDK({ apiKey: getKey('CEREBRAS_API_KEY') });
}
async sendRequest(turns, systemMessage, stop_seq = '***') {
// Format messages array
const messages = strictFormat(turns);
messages.unshift({ role: 'system', content: systemMessage });
const pack = {
model: this.model_name || 'gpt-oss-120b',
messages,
stream: false,
...(this.params || {}),
};
let res;
try {
const completion = await this.client.chat.completions.create(pack);
// OpenAI-compatible shape
res = completion.choices?.[0]?.message?.content || '';
} catch (err) {
console.error('Cerebras API error:', err);
res = 'My brain disconnected, try again.';
}
return res;
}
async sendVisionRequest(messages, systemMessage, imageBuffer) {
const imageMessages = [...messages];
imageMessages.push({
role: "user",
content: [
{ type: "text", text: systemMessage },
{
type: "image_url",
image_url: {
url: `data:image/jpeg;base64,${imageBuffer.toString('base64')}`
}
}
]
});
return this.sendRequest(imageMessages, systemMessage);
}
async embed(text) {
throw new Error('Embeddings are not supported by Cerebras.');
}
}

View file

@ -3,6 +3,7 @@ import { strictFormat } from '../utils/text.js';
import { getKey } from '../utils/keys.js';
export class Claude {
static prefix = 'anthropic';
constructor(model_name, url, params) {
this.model_name = model_name;
this.params = params || {};

View file

@ -3,6 +3,7 @@ import { getKey, hasKey } from '../utils/keys.js';
import { strictFormat } from '../utils/text.js';
export class DeepSeek {
static prefix = 'deepseek';
constructor(model_name, url, params) {
this.model_name = model_name;
this.params = params;

View file

@ -3,6 +3,7 @@ import { toSinglePrompt, strictFormat } from '../utils/text.js';
import { getKey } from '../utils/keys.js';
export class Gemini {
static prefix = 'google';
constructor(model_name, url, params) {
this.model_name = model_name;
this.params = params;
@ -36,7 +37,7 @@ export class Gemini {
async sendRequest(turns, systemMessage) {
let model;
const modelConfig = {
model: this.model_name || "gemini-1.5-flash",
model: this.model_name || "gemini-2.5-flash",
// systemInstruction does not work bc google is trash
};
if (this.url) {
@ -142,15 +143,15 @@ export class Gemini {
}
async embed(text) {
let model;
let model = this.model_name || "text-embedding-004";
if (this.url) {
model = this.genAI.getGenerativeModel(
{ model: "text-embedding-004" },
{ model },
{ baseUrl: this.url }
);
} else {
model = this.genAI.getGenerativeModel(
{ model: "text-embedding-004" }
{ model }
);
}

View file

@ -2,6 +2,7 @@ import OpenAIApi from 'openai';
import { getKey } from '../utils/keys.js';
export class GLHF {
static prefix = 'glhf';
constructor(model_name, url) {
this.model_name = model_name;
const apiKey = getKey('GHLF_API_KEY');

View file

@ -3,6 +3,7 @@ import { getKey, hasKey } from '../utils/keys.js';
import { strictFormat } from '../utils/text.js';
export class GPT {
static prefix = 'openai';
constructor(model_name, url, params) {
this.model_name = model_name;
this.params = params;
@ -22,20 +23,21 @@ export class GPT {
async sendRequest(turns, systemMessage, stop_seq='***') {
let messages = [{'role': 'system', 'content': systemMessage}].concat(turns);
messages = strictFormat(messages);
let model = this.model_name || "gpt-4o-mini";
const pack = {
model: this.model_name || "gpt-3.5-turbo",
model: model,
messages,
stop: stop_seq,
...(this.params || {})
};
if (this.model_name.includes('o1')) {
if (model.includes('o1') || model.includes('o3') || model.includes('5')) {
delete pack.stop;
}
let res = null;
try {
console.log('Awaiting openai api response from model', this.model_name)
console.log('Awaiting openai api response from model', model)
// console.log('Messages:', messages);
let completion = await this.openai.chat.completions.create(pack);
if (completion.choices[0].finish_reason == 'length')
@ -88,6 +90,3 @@ export class GPT {
}
}

View file

@ -3,6 +3,7 @@ import { getKey } from '../utils/keys.js';
// xAI doesn't supply a SDK for their models, but fully supports OpenAI and Anthropic SDKs
export class Grok {
static prefix = 'xai';
constructor(model_name, url, params) {
this.model_name = model_name;
this.url = url;
@ -19,13 +20,12 @@ export class Grok {
this.openai = new OpenAIApi(config);
}
async sendRequest(turns, systemMessage, stop_seq='***') {
async sendRequest(turns, systemMessage) {
let messages = [{'role': 'system', 'content': systemMessage}].concat(turns);
const pack = {
model: this.model_name || "grok-beta",
model: this.model_name || "grok-3-mini-latest",
messages,
stop: [stop_seq],
...(this.params || {})
};
@ -42,7 +42,7 @@ export class Grok {
catch (err) {
if ((err.message == 'Context length exceeded' || err.code == 'context_length_exceeded') && turns.length > 1) {
console.log('Context length exceeded, trying again with shorter context.');
return await this.sendRequest(turns.slice(1), systemMessage, stop_seq);
return await this.sendRequest(turns.slice(1), systemMessage);
} else if (err.message.includes('The model expects a single `text` element per message.')) {
console.log(err);
res = 'Vision is only supported by certain models.';

View file

@ -6,6 +6,7 @@ import { getKey } from '../utils/keys.js';
// Umbrella class for everything under the sun... That GroqCloud provides, that is.
export class GroqCloudAPI {
static prefix = 'groq';
constructor(model_name, url, params) {
@ -49,13 +50,13 @@ export class GroqCloudAPI {
let completion = await this.groq.chat.completions.create({
"messages": messages,
"model": this.model_name || "llama-3.3-70b-versatile",
"model": this.model_name || "qwen/qwen3-32b",
"stream": false,
"stop": stop_seq,
...(this.params || {})
});
res = completion.choices[0].message;
res = completion.choices[0].message.content;
res = res.replace(/<think>[\s\S]*?<\/think>/g, '').trim();
}
@ -63,7 +64,6 @@ export class GroqCloudAPI {
if (err.message.includes("content must be a string")) {
res = "Vision is only supported by certain models.";
} else {
console.log(this.model_name);
res = "My brain disconnected, try again.";
}
console.log(err);

View file

@ -3,6 +3,7 @@ import { getKey } from '../utils/keys.js';
import { HfInference } from "@huggingface/inference";
export class HuggingFace {
static prefix = 'huggingface';
constructor(model_name, url, params) {
// Remove 'huggingface/' prefix if present
this.model_name = model_name.replace('huggingface/', '');

View file

@ -1,6 +1,7 @@
import { getKey } from '../utils/keys.js';
export class Hyperbolic {
static prefix = 'hyperbolic';
constructor(modelName, apiUrl) {
this.modelName = modelName || "deepseek-ai/DeepSeek-V3";
this.apiUrl = apiUrl || "https://api.hyperbolic.xyz/v1/chat/completions";

View file

@ -3,6 +3,7 @@ import { getKey } from '../utils/keys.js';
import { strictFormat } from '../utils/text.js';
export class Mistral {
static prefix = 'mistral';
#client;
constructor(model_name, url, params) {

View file

@ -4,8 +4,9 @@ import { strictFormat } from '../utils/text.js';
// llama, mistral
export class Novita {
static prefix = 'novita';
constructor(model_name, url, params) {
this.model_name = model_name.replace('novita/', '');
this.model_name = model_name;
this.url = url || 'https://api.novita.ai/v3/openai';
this.params = params;
@ -25,7 +26,7 @@ export class Novita {
messages = strictFormat(messages);
const pack = {
model: this.model_name || "meta-llama/llama-3.1-70b-instruct",
model: this.model_name || "meta-llama/llama-4-scout-17b-16e-instruct",
messages,
stop: [stop_seq],
...(this.params || {})

View file

@ -1,6 +1,7 @@
import { strictFormat } from '../utils/text.js';
export class Local {
export class Ollama {
static prefix = 'ollama';
constructor(model_name, url, params) {
this.model_name = model_name;
this.params = params;
@ -10,11 +11,9 @@ export class Local {
}
async sendRequest(turns, systemMessage) {
let model = this.model_name || 'llama3.1'; // Updated to llama3.1, as it is more performant than llama3
let model = this.model_name || 'sweaterdog/andy-4:micro-q8_0';
let messages = strictFormat(turns);
messages.unshift({ role: 'system', content: systemMessage });
// We'll attempt up to 5 times for models with deepseek-r1-esk reasoning if the <think> tags are mismatched.
const maxAttempts = 5;
let attempt = 0;
let finalRes = null;
@ -24,14 +23,14 @@ export class Local {
console.log(`Awaiting local response... (model: ${model}, attempt: ${attempt})`);
let res = null;
try {
res = await this.send(this.chat_endpoint, {
let apiResponse = await this.send(this.chat_endpoint, {
model: model,
messages: messages,
stream: false,
...(this.params || {})
});
if (res) {
res = res['message']['content'];
if (apiResponse) {
res = apiResponse['message']['content'];
} else {
res = 'No response data.';
}
@ -43,36 +42,27 @@ export class Local {
console.log(err);
res = 'My brain disconnected, try again.';
}
}
// If the model name includes "deepseek-r1" or "Andy-3.5-reasoning", then handle the <think> block.
const hasOpenTag = res.includes("<think>");
const hasCloseTag = res.includes("</think>");
// If there's a partial mismatch, retry to get a complete response.
if ((hasOpenTag && !hasCloseTag)) {
console.warn("Partial <think> block detected. Re-generating...");
continue;
}
// If </think> is present but <think> is not, prepend <think>
if (hasCloseTag && !hasOpenTag) {
res = '<think>' + res;
}
// Changed this so if the model reasons, using <think> and </think> but doesn't start the message with <think>, <think> ges prepended to the message so no error occur.
// If both tags appear, remove them (and everything inside).
if (hasOpenTag && hasCloseTag) {
res = res.replace(/<think>[\s\S]*?<\/think>/g, '');
}
const hasOpenTag = res.includes("<think>");
const hasCloseTag = res.includes("</think>");
if ((hasOpenTag && !hasCloseTag)) {
console.warn("Partial <think> block detected. Re-generating...");
if (attempt < maxAttempts) continue;
}
if (hasCloseTag && !hasOpenTag) {
res = '<think>' + res;
}
if (hasOpenTag && hasCloseTag) {
res = res.replace(/<think>[\s\S]*?<\/think>/g, '').trim();
}
finalRes = res;
break; // Exit the loop if we got a valid response.
break;
}
if (finalRes == null) {
console.warn("Could not get a valid <think> block or normal response after max attempts.");
console.warn("Could not get a valid response after max attempts.");
finalRes = 'I thought too hard, sorry, try again.';
}
return finalRes;
@ -104,4 +94,22 @@ export class Local {
}
return data;
}
async sendVisionRequest(messages, systemMessage, imageBuffer) {
const imageMessages = [...messages];
imageMessages.push({
role: "user",
content: [
{ type: "text", text: systemMessage },
{
type: "image_url",
image_url: {
url: `data:image/jpeg;base64,${imageBuffer.toString('base64')}`
}
}
]
});
return this.sendRequest(imageMessages, systemMessage);
}
}

View file

@ -3,6 +3,7 @@ import { getKey, hasKey } from '../utils/keys.js';
import { strictFormat } from '../utils/text.js';
export class OpenRouter {
static prefix = 'openrouter';
constructor(model_name, url) {
this.model_name = model_name;

View file

@ -4,38 +4,30 @@ import { getCommandDocs } from '../agent/commands/index.js';
import { SkillLibrary } from "../agent/library/skill_library.js";
import { stringifyTurns } from '../utils/text.js';
import { getCommand } from '../agent/commands/index.js';
import settings from '../../settings.js';
import { Gemini } from './gemini.js';
import { GPT } from './gpt.js';
import { Claude } from './claude.js';
import { Mistral } from './mistral.js';
import { ReplicateAPI } from './replicate.js';
import { Local } from './local.js';
import { Novita } from './novita.js';
import { GroqCloudAPI } from './groq.js';
import { HuggingFace } from './huggingface.js';
import { Qwen } from "./qwen.js";
import { Grok } from "./grok.js";
import { DeepSeek } from './deepseek.js';
import { Hyperbolic } from './hyperbolic.js';
import { GLHF } from './glhf.js';
import { OpenRouter } from './openrouter.js';
import { Mercury} from "./mercury.js";
import { VLLM } from './vllm.js';
import settings from '../agent/settings.js';
import { promises as fs } from 'fs';
import path from 'path';
import { fileURLToPath } from 'url';
import { selectAPI, createModel } from './_model_map.js';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
export class Prompter {
constructor(agent, fp) {
constructor(agent, profile) {
this.agent = agent;
this.profile = JSON.parse(readFileSync(fp, 'utf8'));
this.profile = profile;
let default_profile = JSON.parse(readFileSync('./profiles/defaults/_default.json', 'utf8'));
let base_fp = settings.base_profile;
let base_fp = '';
if (settings.base_profile.includes('survival')) {
base_fp = './profiles/defaults/survival.json';
} else if (settings.base_profile.includes('assistant')) {
base_fp = './profiles/defaults/assistant.json';
} else if (settings.base_profile.includes('creative')) {
base_fp = './profiles/defaults/creative.json';
} else if (settings.base_profile.includes('god_mode')) {
base_fp = './profiles/defaults/god_mode.json';
}
let base_profile = JSON.parse(readFileSync(base_fp, 'utf8'));
// first use defaults to fill in missing values in the base profile
@ -58,70 +50,46 @@ export class Prompter {
this.last_prompt_time = 0;
this.awaiting_coding = false;
// try to get "max_tokens" parameter, else null
// for backwards compatibility, move max_tokens to params
let max_tokens = null;
if (this.profile.max_tokens)
max_tokens = this.profile.max_tokens;
let chat_model_profile = this._selectAPI(this.profile.model);
this.chat_model = this._createModel(chat_model_profile);
let chat_model_profile = selectAPI(this.profile.model);
this.chat_model = createModel(chat_model_profile);
if (this.profile.code_model) {
let code_model_profile = this._selectAPI(this.profile.code_model);
this.code_model = this._createModel(code_model_profile);
let code_model_profile = selectAPI(this.profile.code_model);
this.code_model = createModel(code_model_profile);
}
else {
this.code_model = this.chat_model;
}
if (this.profile.vision_model) {
let vision_model_profile = this._selectAPI(this.profile.vision_model);
this.vision_model = this._createModel(vision_model_profile);
let vision_model_profile = selectAPI(this.profile.vision_model);
this.vision_model = createModel(vision_model_profile);
}
else {
this.vision_model = this.chat_model;
}
let embedding = this.profile.embedding;
if (embedding === undefined) {
if (chat_model_profile.api !== 'ollama')
embedding = {api: chat_model_profile.api};
else
embedding = {api: 'none'};
}
else if (typeof embedding === 'string' || embedding instanceof String)
embedding = {api: embedding};
console.log('Using embedding settings:', embedding);
try {
if (embedding.api === 'google')
this.embedding_model = new Gemini(embedding.model, embedding.url);
else if (embedding.api === 'openai')
this.embedding_model = new GPT(embedding.model, embedding.url);
else if (embedding.api === 'replicate')
this.embedding_model = new ReplicateAPI(embedding.model, embedding.url);
else if (embedding.api === 'ollama')
this.embedding_model = new Local(embedding.model, embedding.url);
else if (embedding.api === 'qwen')
this.embedding_model = new Qwen(embedding.model, embedding.url);
else if (embedding.api === 'mistral')
this.embedding_model = new Mistral(embedding.model, embedding.url);
else if (embedding.api === 'huggingface')
this.embedding_model = new HuggingFace(embedding.model, embedding.url);
else if (embedding.api === 'novita')
this.embedding_model = new Novita(embedding.model, embedding.url);
else {
this.embedding_model = null;
let embedding_name = embedding ? embedding.api : '[NOT SPECIFIED]'
console.warn('Unsupported embedding: ' + embedding_name + '. Using word-overlap instead, expect reduced performance. Recommend using a supported embedding model. See Readme.');
let embedding_model_profile = null;
if (this.profile.embedding) {
try {
embedding_model_profile = selectAPI(this.profile.embedding);
} catch (e) {
embedding_model_profile = null;
}
}
catch (err) {
console.warn('Warning: Failed to initialize embedding model:', err.message);
console.log('Continuing anyway, using word-overlap instead.');
this.embedding_model = null;
if (embedding_model_profile) {
this.embedding_model = createModel(embedding_model_profile);
}
else {
this.embedding_model = createModel({api: chat_model_profile.api});
}
this.skill_libary = new SkillLibrary(agent, this.embedding_model);
mkdirSync(`./bots/${name}`, { recursive: true });
writeFileSync(`./bots/${name}/last_profile.json`, JSON.stringify(this.profile, null, 4), (err) => {
@ -132,92 +100,6 @@ export class Prompter {
});
}
_selectAPI(profile) {
if (typeof profile === 'string' || profile instanceof String) {
profile = {model: profile};
}
if (!profile.api) {
if (profile.model.includes('openrouter/'))
profile.api = 'openrouter'; // must do first because shares names with other models
else if (profile.model.includes('ollama/'))
profile.api = 'ollama'; // also must do early because shares names with other models
else if (profile.model.includes('gemini'))
profile.api = 'google';
else if (profile.model.includes('vllm/'))
profile.api = 'vllm';
else if (profile.model.includes('gpt') || profile.model.includes('o1')|| profile.model.includes('o3'))
profile.api = 'openai';
else if (profile.model.includes('claude'))
profile.api = 'anthropic';
else if (profile.model.includes('huggingface/'))
profile.api = "huggingface";
else if (profile.model.includes('replicate/'))
profile.api = 'replicate';
else if (profile.model.includes('mistralai/') || profile.model.includes("mistral/"))
model_profile.api = 'mistral';
else if (profile.model.includes("groq/") || profile.model.includes("groqcloud/"))
profile.api = 'groq';
else if (profile.model.includes("glhf/"))
profile.api = 'glhf';
else if (profile.model.includes("hyperbolic/"))
profile.api = 'hyperbolic';
else if (profile.model.includes('novita/'))
profile.api = 'novita';
else if (profile.model.includes('qwen'))
profile.api = 'qwen';
else if (profile.model.includes('grok'))
profile.api = 'xai';
else if (profile.model.includes('deepseek'))
profile.api = 'deepseek';
else if (profile.model.includes('mistral'))
profile.api = 'mistral';
else if (profile.model.includes('mercury'))
profile.api = 'mercury';
else
throw new Error('Unknown model:', profile.model);
}
return profile;
}
_createModel(profile) {
let model = null;
if (profile.api === 'google')
model = new Gemini(profile.model, profile.url, profile.params);
else if (profile.api === 'openai')
model = new GPT(profile.model, profile.url, profile.params);
else if (profile.api === 'anthropic')
model = new Claude(profile.model, profile.url, profile.params);
else if (profile.api === 'replicate')
model = new ReplicateAPI(profile.model.replace('replicate/', ''), profile.url, profile.params);
else if (profile.api === 'ollama')
model = new Local(profile.model.replace('ollama/', ''), profile.url, profile.params);
else if (profile.api === 'mistral')
model = new Mistral(profile.model, profile.url, profile.params);
else if (profile.api === 'groq')
model = new GroqCloudAPI(profile.model.replace('groq/', '').replace('groqcloud/', ''), profile.url, profile.params);
else if (profile.api === 'huggingface')
model = new HuggingFace(profile.model, profile.url, profile.params);
else if (profile.api === 'glhf')
model = new GLHF(profile.model.replace('glhf/', ''), profile.url, profile.params);
else if (profile.api === 'hyperbolic')
model = new Hyperbolic(profile.model.replace('hyperbolic/', ''), profile.url, profile.params);
else if (profile.api === 'novita')
model = new Novita(profile.model.replace('novita/', ''), profile.url, profile.params);
else if (profile.api === 'qwen')
model = new Qwen(profile.model, profile.url, profile.params);
else if (profile.api === 'xai')
model = new Grok(profile.model, profile.url, profile.params);
else if (profile.api === 'deepseek')
model = new DeepSeek(profile.model, profile.url, profile.params);
else if (profile.api === 'openrouter')
model = new OpenRouter(profile.model.replace('openrouter/', ''), profile.url, profile.params);
else if (profile.api === 'vllm')
model = new VLLM(profile.model.replace('vllm/', ''), profile.url, profile.params);
else if (profile.api === 'mercury')
model = new Mercury(profile.model, profile.url, profile.params);
else
throw new Error('Unknown API:', profile.api);
return model;
}
getName() {
return this.profile.name;
}
@ -478,6 +360,4 @@ export class Prompter {
logFile = path.join(logDir, logFile);
await fs.appendFile(logFile, String(logEntry), 'utf-8');
}
}

View file

@ -3,6 +3,7 @@ import { getKey, hasKey } from '../utils/keys.js';
import { strictFormat } from '../utils/text.js';
export class Qwen {
static prefix = 'qwen';
constructor(model_name, url, params) {
this.model_name = model_name;
this.params = params;

View file

@ -4,6 +4,7 @@ import { getKey } from '../utils/keys.js';
// llama, mistral
export class ReplicateAPI {
static prefix = 'replicate';
constructor(model_name, url, params) {
this.model_name = model_name;
this.url = url;

View file

@ -6,6 +6,7 @@ import { getKey, hasKey } from '../utils/keys.js';
import { strictFormat } from '../utils/text.js';
export class VLLM {
static prefix = 'vllm';
constructor(model_name, url) {
this.model_name = model_name;
@ -23,13 +24,14 @@ export class VLLM {
async sendRequest(turns, systemMessage, stop_seq = '***') {
let messages = [{ 'role': 'system', 'content': systemMessage }].concat(turns);
let model = this.model_name || "deepseek-ai/DeepSeek-R1-Distill-Qwen-32B";
if (this.model_name.includes('deepseek') || this.model_name.includes('qwen')) {
if (model.includes('deepseek') || model.includes('qwen')) {
messages = strictFormat(messages);
}
const pack = {
model: this.model_name || "deepseek-ai/DeepSeek-R1-Distill-Qwen-32B",
model: model,
messages,
stop: stop_seq,
};
@ -38,6 +40,7 @@ export class VLLM {
try {
console.log('Awaiting openai api response...')
// console.log('Messages:', messages);
// todo set max_tokens, temperature, top_p, etc. in pack
let completion = await this.vllm.chat.completions.create(pack);
if (completion.choices[0].finish_reason == 'length')
throw new Error('Context length exceeded');

View file

@ -1,23 +1,24 @@
import { spawn } from 'child_process';
import { mainProxy } from './main_proxy.js';
import { logoutAgent } from '../mindcraft/mindserver.js';
export class AgentProcess {
start(profile, load_memory=false, init_message=null, count_id=0, task_path=null, task_id=null) {
this.profile = profile;
constructor(name, port) {
this.name = name;
this.port = port;
}
start(load_memory=false, init_message=null, count_id=0) {
this.count_id = count_id;
this.running = true;
let args = ['src/process/init_agent.js', this.name];
args.push('-p', profile);
args.push('-n', this.name);
args.push('-c', count_id);
if (load_memory)
args.push('-l', load_memory);
if (init_message)
args.push('-m', init_message);
if (task_path)
args.push('-t', task_path);
if (task_id)
args.push('-i', task_id);
args.push('-p', this.port);
const agentProcess = spawn('node', args, {
stdio: 'inherit',
@ -28,7 +29,7 @@ export class AgentProcess {
agentProcess.on('exit', (code, signal) => {
console.log(`Agent process exited with code ${code} and signal ${signal}`);
this.running = false;
mainProxy.logoutAgent(this.name);
logoutAgent(this.name);
if (code > 1) {
console.log(`Ending task`);
@ -38,11 +39,11 @@ export class AgentProcess {
if (code !== 0 && signal !== 'SIGINT') {
// agent must run for at least 10 seconds before restarting
if (Date.now() - last_restart < 10000) {
console.error(`Agent process ${profile} exited too quickly and will not be restarted.`);
console.error(`Agent process exited too quickly and will not be restarted.`);
return;
}
console.log('Restarting agent...');
this.start(profile, true, 'Agent process restarted.', count_id, task_path, task_id);
this.start(true, 'Agent process restarted.', count_id, this.port);
last_restart = Date.now();
}
});
@ -61,7 +62,7 @@ export class AgentProcess {
continue() {
if (!this.running) {
this.start(this.profile, true, 'Agent process restarted.', this.count_id);
this.start(true, 'Agent process restarted.', this.count_id);
}
}
}

View file

@ -1,27 +1,18 @@
import { Agent } from '../agent/agent.js';
import { serverProxy } from '../agent/mindserver_proxy.js';
import yargs from 'yargs';
// Add global unhandled rejection handler
process.on('unhandledRejection', (reason, promise) => {
console.error('Unhandled Rejection at:', {
promise: promise,
reason: reason,
stack: reason?.stack || 'No stack trace'
});
process.exit(1);
});
const args = process.argv.slice(2);
if (args.length < 1) {
console.log('Usage: node init_agent.js <agent_name> [profile] [load_memory] [init_message]');
console.log('Usage: node init_agent.js -n <agent_name> -p <port> -l <load_memory> -m <init_message> -c <count_id>');
process.exit(1);
}
const argv = yargs(args)
.option('profile', {
alias: 'p',
.option('name', {
alias: 'n',
type: 'string',
description: 'profile filepath to use for agent'
description: 'name of agent'
})
.option('load_memory', {
alias: 'l',
@ -33,29 +24,27 @@ const argv = yargs(args)
type: 'string',
description: 'automatically prompt the agent on startup'
})
.option('task_path', {
alias: 't',
type: 'string',
description: 'task filepath to use for agent'
})
.option('task_id', {
alias: 'i',
type: 'string',
description: 'task ID to execute'
})
.option('count_id', {
alias: 'c',
type: 'number',
default: 0,
description: 'identifying count for multi-agent scenarios',
}).argv;
})
.option('port', {
alias: 'p',
type: 'number',
description: 'port of mindserver'
})
.argv;
// Wrap agent start in async IIFE with proper error handling
(async () => {
try {
console.log('Starting agent with profile:', argv.profile);
console.log('Connecting to MindServer');
await serverProxy.connect(argv.name, argv.port);
console.log('Starting agent');
const agent = new Agent();
await agent.start(argv.profile, argv.load_memory, argv.init_message, argv.count_id, argv.task_path, argv.task_id);
serverProxy.setAgent(agent);
await agent.start(argv.load_memory, argv.init_message, argv.count_id);
} catch (error) {
console.error('Failed to start agent process:');
console.error(error.message);

View file

@ -1,64 +0,0 @@
import { io } from 'socket.io-client';
import settings from '../../settings.js';
// Singleton mindserver proxy for the main process
class MainProxy {
constructor() {
if (MainProxy.instance) {
return MainProxy.instance;
}
this.socket = null;
this.connected = false;
this.agent_processes = {};
MainProxy.instance = this;
}
connect() {
if (this.connected) return;
this.socket = io(`http://${settings.mindserver_host}:${settings.mindserver_port}`);
this.connected = true;
this.socket.on('stop-agent', (agentName) => {
if (this.agent_processes[agentName]) {
this.agent_processes[agentName].stop();
}
});
this.socket.on('start-agent', (agentName) => {
if (this.agent_processes[agentName]) {
this.agent_processes[agentName].continue();
}
});
this.socket.on('register-agents-success', () => {
console.log('Agents registered');
});
this.socket.on('shutdown', () => {
console.log('Shutting down');
for (let agentName in this.agent_processes) {
this.agent_processes[agentName].stop();
}
setTimeout(() => {
process.exit(0);
}, 2000);
});
}
addAgent(agent) {
this.agent_processes.push(agent);
}
logoutAgent(agentName) {
this.socket.emit('logout-agent', agentName);
}
registerAgent(name, process) {
this.socket.emit('register-agents', [name]);
this.agent_processes[name] = process;
}
}
export const mainProxy = new MainProxy();

View file

@ -1,163 +0,0 @@
import { Server } from 'socket.io';
import express from 'express';
import http from 'http';
import path from 'path';
import { fileURLToPath } from 'url';
// Module-level variables
let io;
let server;
const registeredAgents = new Set();
const inGameAgents = {};
const agentManagers = {}; // socket for main process that registers/controls agents
// Initialize the server
export function createMindServer(port = 8080) {
const app = express();
server = http.createServer(app);
io = new Server(server);
// Serve static files
const __dirname = path.dirname(fileURLToPath(import.meta.url));
app.use(express.static(path.join(__dirname, 'public')));
// Socket.io connection handling
io.on('connection', (socket) => {
let curAgentName = null;
console.log('Client connected');
agentsUpdate(socket);
socket.on('register-agents', (agentNames) => {
console.log(`Registering agents: ${agentNames}`);
agentNames.forEach(name => registeredAgents.add(name));
for (let name of agentNames) {
agentManagers[name] = socket;
}
socket.emit('register-agents-success');
agentsUpdate();
});
socket.on('login-agent', (agentName) => {
if (curAgentName && curAgentName !== agentName) {
console.warn(`Agent ${agentName} already logged in as ${curAgentName}`);
return;
}
if (registeredAgents.has(agentName)) {
curAgentName = agentName;
inGameAgents[agentName] = socket;
agentsUpdate();
} else {
console.warn(`Agent ${agentName} not registered`);
}
});
socket.on('logout-agent', (agentName) => {
if (inGameAgents[agentName]) {
delete inGameAgents[agentName];
agentsUpdate();
}
});
socket.on('disconnect', () => {
console.log('Client disconnected');
if (inGameAgents[curAgentName]) {
delete inGameAgents[curAgentName];
agentsUpdate();
}
});
socket.on('chat-message', (agentName, json) => {
if (!inGameAgents[agentName]) {
console.warn(`Agent ${agentName} tried to send a message but is not logged in`);
return;
}
console.log(`${curAgentName} sending message to ${agentName}: ${json.message}`);
inGameAgents[agentName].emit('chat-message', curAgentName, json);
});
socket.on('restart-agent', (agentName) => {
console.log(`Restarting agent: ${agentName}`);
inGameAgents[agentName].emit('restart-agent');
});
socket.on('stop-agent', (agentName) => {
let manager = agentManagers[agentName];
if (manager) {
manager.emit('stop-agent', agentName);
}
else {
console.warn(`Stopping unregisterd agent ${agentName}`);
}
});
socket.on('start-agent', (agentName) => {
let manager = agentManagers[agentName];
if (manager) {
manager.emit('start-agent', agentName);
}
else {
console.warn(`Starting unregisterd agent ${agentName}`);
}
});
socket.on('stop-all-agents', () => {
console.log('Killing all agents');
stopAllAgents();
});
socket.on('shutdown', () => {
console.log('Shutting down');
for (let manager of Object.values(agentManagers)) {
manager.emit('shutdown');
}
setTimeout(() => {
process.exit(0);
}, 2000);
});
socket.on('send-message', (agentName, message) => {
if (!inGameAgents[agentName]) {
console.warn(`Agent ${agentName} not logged in, cannot send message via MindServer.`);
return
}
try {
console.log(`Sending message to agent ${agentName}: ${message}`);
inGameAgents[agentName].emit('send-message', agentName, message)
} catch (error) {
console.error('Error: ', error);
}
});
});
server.listen(port, 'localhost', () => {
console.log(`MindServer running on port ${port}`);
});
return server;
}
function agentsUpdate(socket) {
if (!socket) {
socket = io;
}
let agents = [];
registeredAgents.forEach(name => {
agents.push({name, in_game: !!inGameAgents[name]});
});
socket.emit('agents-update', agents);
}
function stopAllAgents() {
for (const agentName in inGameAgents) {
let manager = agentManagers[agentName];
if (manager) {
manager.emit('stop-agent', agentName);
}
}
}
// Optional: export these if you need access to them from other files
export const getIO = () => io;
export const getServer = () => server;
export const getConnectedAgents = () => connectedAgents;

View file

@ -1,120 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>Mindcraft</title>
<script src="/socket.io/socket.io.js"></script>
<style>
body {
font-family: Arial, sans-serif;
margin: 20px;
background: #1a1a1a;
color: #e0e0e0;
}
#agents {
background: #2d2d2d;
padding: 20px;
border-radius: 8px;
box-shadow: 0 2px 4px rgba(0,0,0,0.2);
}
h1 {
color: #ffffff;
}
.agent {
margin: 10px 0;
padding: 10px;
background: #363636;
border-radius: 4px;
display: flex;
justify-content: space-between;
align-items: center;
}
.restart-btn, .start-btn, .stop-btn {
color: white;
border: none;
padding: 5px 10px;
border-radius: 4px;
cursor: pointer;
margin-left: 5px;
}
.restart-btn {
background: #4CAF50;
}
.start-btn {
background: #2196F3;
}
.stop-btn {
background: #f44336;
}
.restart-btn:hover { background: #45a049; }
.start-btn:hover { background: #1976D2; }
.stop-btn:hover { background: #d32f2f; }
.status-icon {
font-size: 12px;
margin-right: 8px;
}
.status-icon.online {
color: #4CAF50;
}
.status-icon.offline {
color: #f44336;
}
</style>
</head>
<body>
<h1>Mindcraft</h1>
<div id="agents"></div>
<script>
const socket = io();
const agentsDiv = document.getElementById('agents');
socket.on('agents-update', (agents) => {
agentsDiv.innerHTML = agents.length ?
agents.map(agent => `
<div class="agent">
<span>
<span class="status-icon ${agent.in_game ? 'online' : 'offline'}"></span>
${agent.name}
</span>
<div>
${agent.in_game ? `
<button class="stop-btn" onclick="stopAgent('${agent.name}')">Stop</button>
<button class="restart-btn" onclick="restartAgent('${agent.name}')">Restart</button>
<input type="text" id="messageInput" placeholder="Enter a message or command..."></input><button class="start-btn" onclick="sendMessage('${agent.name}', document.getElementById('messageInput').value)">Send</button>
` : `
<button class="start-btn" onclick="startAgent('${agent.name}')">Start</button>
`}
</div>
</div>
`).join('') +
`<button class="stop-btn" onclick="killAllAgents()">Stop All</button>
<button class="stop-btn" onclick="shutdown()">Shutdown</button>` :
'<div class="agent">No agents connected</div>';
});
function restartAgent(agentName) {
socket.emit('restart-agent', agentName);
}
function startAgent(agentName) {
socket.emit('start-agent', agentName);
}
function stopAgent(agentName) {
socket.emit('stop-agent', agentName);
}
function killAllAgents() {
socket.emit('stop-all-agents');
}
function shutdown() {
socket.emit('shutdown');
}
function sendMessage(agentName, message) {
socket.emit('send-message', agentName, message)
}
</script>
</body>
</html>

View file

@ -16,7 +16,7 @@ export function getKey(name) {
if (!key) {
throw new Error(`API key "${name}" not found in keys.json or environment variables!`);
}
return keys[name];
return key;
}
export function hasKey(name) {

View file

@ -1,5 +1,5 @@
import minecraftData from 'minecraft-data';
import settings from '../../settings.js';
import settings from '../agent/settings.js';
import { createBot } from 'mineflayer';
import prismarine_items from 'prismarine-item';
import { pathfinder } from 'mineflayer-pathfinder';
@ -8,10 +8,9 @@ import { plugin as collectblock } from 'mineflayer-collectblock';
import { plugin as autoEat } from 'mineflayer-auto-eat';
import plugin from 'mineflayer-armor-manager';
const armorManager = plugin;
const mc_version = settings.minecraft_version;
const mcdata = minecraftData(mc_version);
const Item = prismarine_items(mc_version);
let mc_version = null;
let mcdata = null;
let Item = null;
/**
* @typedef {string} ItemName
@ -54,6 +53,9 @@ export const WOOL_COLORS = [
export function initBot(username) {
mc_version = settings.minecraft_version;
mcdata = minecraftData(mc_version);
Item = prismarine_items(mc_version);
let bot = createBot({
username: username,
@ -355,6 +357,7 @@ export function initializeLoopingItems() {
loopingItems = new Set(['coal',
'wheat',
'bone_meal',
'diamond',
'emerald',
'raw_iron',

View file

@ -1,10 +1,11 @@
import translate from 'google-translate-api-x';
import settings from '../../settings.js';
import settings from '../agent/settings.js';
const preferred_lang = String(settings.language).toLowerCase();
export async function handleTranslation(message) {
if (preferred_lang === 'en' || preferred_lang === 'english')
let preferred_lang = String(settings.language).toLowerCase();
if (!preferred_lang || preferred_lang === 'en' || preferred_lang === 'english')
return message;
try {
const translation = await translate(message, { to: preferred_lang });
@ -16,7 +17,8 @@ export async function handleTranslation(message) {
}
export async function handleEnglishTranslation(message) {
if (preferred_lang === 'en' || preferred_lang === 'english')
let preferred_lang = String(settings.language).toLowerCase();
if (!preferred_lang || preferred_lang === 'en' || preferred_lang === 'english')
return message;
try {
const translation = await translate(message, { to: 'english' });

View file

@ -183,9 +183,6 @@ def extract_success_scores(folders, model_names):
display_table("Average Success Score by Room", avg_room_scores)
display_table("Average Success Score by (Material, Room) Tuples", avg_material_room_scores, tuple_keys=True)
def analyze_construction_log(log_file):
# ... existing code ...
pass
def main():
parser = argparse.ArgumentParser(description='Analyze construction task logs.')

View file

@ -0,0 +1,76 @@
import json
import matplotlib.pyplot as plt
import numpy as np
def display_3d_blocks(data):
"""Displays a 3D array of blocks with different types in a single figure with subplots for each level,
including block coordinates. Dynamically adjusts the height of the figure.
Args:
data: A dictionary containing the block data, structured like the JSON example.
"""
block_types = {
"air": "#FFFFFF", # White
"oak_planks": "#8B4513", # Saddle Brown
"stone_bricks": "#808080", # Gray
"oak_door": "#A0522D", # Sienna
"oak_stairs": "#D2691E", # Chocolate
"quartz_block": "#FFFFF0", # Ivory
"glass_pane": "#00CED1", # Dark Turquoise
"torch": "#FF8C00" # Dark Orange
}
# Extract data from the JSON
levels = data["levels"]
num_levels = len(levels)
# Create a figure and subplots grid
fig, axes = plt.subplots(num_levels, 1, figsize=(10, 5 * num_levels)) # One column, dynamic height
axes[0].legend(handles=[plt.Rectangle((0, 0), 1, 1, color=color) for color in block_types.values()],
labels=block_types.keys(), loc='upper right')
starting_coords = levels[0]["coordinates"]
# Iterate over each level and corresponding subplot
for i, level in enumerate(levels):
ax = axes[i]
ax.set_title(f"Level {level['level']}")
placement = level["placement"]
# Convert placement data to NumPy array
block_array = np.array([
[block_types.get(block, 'gray') for block in row] for row in placement
])
# Iterate over each block in the level
for x in range(block_array.shape[1]):
for y in range(block_array.shape[0]):
block_type = block_array[y, x]
# Plot the block as a rectangle
rect = plt.Rectangle((x, y), 1, 1, color=block_type)
ax.add_patch(rect)
# Add coordinate text to the center of the block
real_x = x + starting_coords[0]
real_y = level['level'] + starting_coords[1]
real_z = y + starting_coords[2]
ax.text(x + 0.5, y + 0.5, f"({real_x},{real_y},{real_z})", ha='center', va='center', fontsize=8)
# Set axis limits and labels
ax.set_xlim([0, block_array.shape[1]])
ax.set_ylim([0, block_array.shape[0]])
ax.set_xlabel("X")
ax.set_ylabel("Y")
plt.tight_layout() # Adjust spacing between subplots
# plt.show()
plt.savefig("construction_tasks/church_three_agents.pdf", bbox_inches='tight')
# Example usage:
with open("construction_tasks/custom/church_three_agents.json", "r") as f:
data = json.load(f)
data = data["church_three_agents"]["blueprint"]
display_3d_blocks(data)

Binary file not shown.

File diff suppressed because it is too large Load diff

View file

@ -4,6 +4,7 @@
"goal": "Make a structure with the blueprint below",
"conversation": "Let's share materials and make a structure with the blueprint",
"agent_count": 3,
"timeout": 1000,
"blueprint": {
"materials": {
"oak_planks": 153,

File diff suppressed because it is too large Load diff

View file

@ -4,6 +4,7 @@
"goal": "Make a structure with the blueprint below",
"conversation": "Let's share materials and make a structure with the blueprint",
"agent_count": 2,
"timeout": 1000,
"blueprint": {
"materials": {
"polished_granite": 1,

View file

@ -23,7 +23,7 @@ bot.on('spawn', async () => {
const xOffset = 30;
const zOffset = 20;
const taskFilePath = '/Users/isadorawhite/izzy_mindcraft/mindcraft/tasks/construction_tasks/custom/flower_three_agents.json';
const taskFilePath = '';
const task_name = "flower_three_agents";

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,614 @@
import random
import json
from typing import Dict, List, Any, Tuple, Set
from collections import Counter, defaultdict
import itertools
# Define your COOKING_ITEMS dictionary here
# This is where you should put your complete COOKING_ITEMS dictionary
COOKING_ITEMS = {
# Cooked Meats
"cooked_mutton": {
"recipe": [
"Step 1: Kill a sheep and pick up 1 mutton that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to furnace and use it to cook the mutton."
],
"description": "Cooked mutton meat",
"complexity": "easy",
"required_chest_items": {
"coal": 8,
}
},
"cooked_beef": {
"recipe": [
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to furnace and use it to cook the beef."
],
"description": "Cooked beef meat",
"complexity": "easy",
"required_chest_items": {
"coal": 8,
}
},
"cooked_porkchop": {
"recipe": [
"Step 1: Kill a pig and pick up 1 porkchop that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to furnace and use it to cook the porkchop."
],
"description": "Cooked porkchop",
"complexity": "easy",
"required_chest_items": {
"coal": 8,
}
},
"cooked_chicken": {
"recipe": [
"Step 1: Kill a chicken and pick up 1 raw chicken that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to furnace and use it to cook the raw chicken."
],
"description": "Cooked chicken meat",
"complexity": "easy",
"required_chest_items": {
"coal": 8,
}
},
"cooked_rabbit": {
"recipe": [
"Step 1: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to furnace and use it to cook the raw rabbit."
],
"description": "Cooked rabbit meat",
"complexity": "easy",
"required_chest_items": {
"coal": 8,
}
},
# Soups and Stews
"beetroot_soup": {
"recipe": [
"Step 1: Go to the farm and collect 6 beetroot.",
"Step 2: From your inventory or other agents get a bowl.",
"Step 3: Go to the crafting table and combine the 6 beetroot and 1 bowl to make beetroot soup."
],
"description": "A hearty beetroot soup",
"complexity": "medium",
"required_chest_items": {
"bowl": 1,
}
},
"mushroom_stew": {
"recipe": [
"Step 1: Go to the farm and collect 1 red mushroom and 1 brown mushroom.",
"Step 2: From your inventory or other agents get a bowl.",
"Step 3: Go to the crafting table and combine both the mushrooms and bowl to make mushroom stew."
],
"description": "A warm mushroom stew",
"complexity": "medium",
"required_chest_items": {
"bowl": 1,
}
},
"rabbit_stew": {
"recipe": [
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to the furnace and bake the potato.",
"Step 5: From your inventory or other agents get a bowl",
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
"Step 7: Go to the furnace and cook the raw rabbit.",
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
],
"description": "A hearty rabbit stew",
"complexity": "hard",
"required_chest_items": {
"bowl": 1,
}
},
"suspicious_stew": {
"recipe": [
"Step 1: Go to the farm and collect 1 red mushroom, 1 brown mushroom.",
"Step 2: From your inventory or other agents get a bowl and 1 dandelion",
"Step 3: Go to the crafting table and combine the mushrooms, dandelion, and bowl to make suspicious stew."
],
"description": "A mysterious stew with special effects",
"complexity": "medium",
"required_chest_items": {
"bowl": 1,
"dandelion": 1,
}
},
# Baked Goods
"baked_potato": {
"recipe": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
],
"description": "A simple baked potato",
"complexity": "easy",
"required_chest_items": {
"coal": 8,
}
},
"bread": {
"recipe": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
],
"description": "Fresh bread",
"complexity": "medium",
},
"cake": {
"recipe": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
],
"description": "A delicious cake",
"complexity": "hard",
"required_chest_items": {
"milk_bucket": 3,
"egg": 1,
}
},
"cookie": {
"recipe": [
"Step 1: Go to the farm and collect 2 wheat.",
"Step 2: Get 1 cocoa bean from your inventory or other agents.",
"Step 3: Go to the crafting table and combine the wheat and cocoa bean to craft a cookie."
],
"description": "Sweet cookies",
"complexity": "medium",
"required_chest_items": {
"cocoa_beans": 1,
}
},
"pumpkin_pie": {
"recipe": [
"Step 1: Go to the farm and collect 1 pumpkin and 1 sugar cane.",
"Step 2: Get 1 egg from your inventory or other bots",
"Step 3: Go to the crafting table and craft the sugar cane into sugar.",
"Step 4: Go to the crafting table and combine the pumpkin, egg, and sugar to make a pumpkin pie."
],
"description": "Delicious pumpkin pie",
"complexity": "hard",
"required_chest_items": {
"egg": 1,
}
},
# Sweet Foods
"golden_apple": {
"recipe": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"description": "A magical golden apple",
"complexity": "hard",
"required_chest_items": {
"gold_ingots": 8,
"apple": 1
}
},
# Special Foods
"golden_carrot": {
"recipe": [
"Step 1: Go to the farm and collect 1 carrot.",
"Step 2: Go to the chest and collect gold ingots and convert them to gold nuggets.",
"Step 3: Go to the crafting table and surround the carrot with gold nuggets to create a golden carrot."
],
"description": "A magical golden carrot",
"complexity": "hard",
"required_chest_items": ["gold_ingots"]
},
}
chest_items = {
"milk_bucket": 3,
"egg": 16,
"dandelion": 64,
"cocao_beans": 64,
"apple": 64,
"gold_ingots": 8,
"salmon": 64,
"cod": 64,
"kelp": 64,
"dried_kelp": 64,
"sweet_berries": 64,
"honey_bottle": 1,
"glow_berries": 64,
"bowl": 1,
"cooked_salmon": 1,
"cooked_cod": 1,
"oak_planks": 64,
"iron_ingot": 64,
}
chest_items = [
['minecraft:milk_bucket', 1],
['minecraft:egg', 16],
['minecraft:dandelion', 64],
['minecraft:sugar', 64],
['minecraft:cocoa_beans', 64],
['minecraft:apple', 64],
['minecraft:milk_bucket', 1],
['minecraft:milk_bucket', 1],
['minecraft:salmon', 64],
['minecraft:cod', 64],
['minecraft:kelp', 64],
['minecraft:dried_kelp', 64],
['minecraft:sweet_berries', 64],
['minecraft:honey_bottle', 1],
['minecraft:glow_berries', 64],
['minecraft:bowl', 64],
['minecraft:milk_bucket', 1],
['minecraft:milk_bucket', 1],
['minecraft:milk_bucket', 1],
['minecraft:milk_bucket', 1],
['minecraft:cooked_salmon', 64],
['minecraft:cooked_cod', 64],
['minecraft:gold_ingot', 64],
['minecraft:oak_planks', 64],
['minecraft:iron_ingot', 64],
['minecraft:milk_bucket', 1],
['minecraft:milk_bucket', 1],
]
def generate_task_id(task: Dict[str, Any]) -> str:
"""
Generate a standardized task ID based on target items and blocked access.
Format: multiagent_cooking_{quantities}_{blocked_info}
Examples:
- multiagent_cooking_1_cooked_rabbit
- multiagent_cooking_1_cooked_rabbit_blocked_access_0
- multiagent_cooking_1_cake_1_cookie_blocked_access_0_1
Args:
task: Task dictionary with target and blocked_access_to_recipe information
Returns:
Standardized task ID string
"""
# Generate the quantities part (e.g., "1_cake_1_cookie")
quantities = []
for item, count in sorted(task["target"].items()):
quantities.append(f"{count}_{item}")
quantities_str = "_".join(quantities)
# Generate the blocked access part if any (e.g., "blocked_access_0_1")
blocked_str = ""
if task["blocked_access_to_recipe"]:
# Sort to ensure consistent ordering
sorted_blocked = sorted(task["blocked_access_to_recipe"])
blocked_str = f"_blocked_access_{'_'.join(sorted_blocked)}"
# Combine everything
return f"multiagent_cooking_{quantities_str}{blocked_str}"
def generate_hells_kitchen_task_id(task: Dict[str, Any]) -> str:
"""
Generate a standardized task ID for Hell's Kitchen tasks.
Format: multiagent_cooking_{quantities}_hells_kitchen
Examples:
- multiagent_cooking_cooked_mutton_cooked_beef_hells_kitchen
Args:
task: Task dictionary with target information
Returns:
Standardized task ID string
"""
# Generate the quantities part (e.g., "cooked_mutton_cooked_beef")
quantities = "_".join(task["target"])
# Combine everything with hells_kitchen suffix
return f"multiagent_cooking_{quantities}_hells_kitchen"
def generate_hells_kitchen_task(selected_items) -> Dict[str, Any]:
"""Generate a single Hell's Kitchen task where agents have recipes for each other's items."""
# Select two different items
# selected_items = random.sample(list(COOKING_ITEMS.keys()), 2)
# Assign one item to each agent
agent0_target = selected_items[0]
agent1_target = selected_items[1]
# Combined target for the overall task as a list
combined_target = [agent0_target, agent1_target]
# Get recipes for both items
recipes = {}
for item in selected_items:
recipes[item] = COOKING_ITEMS[item]["recipe"]
# Create different goal strings for each agent
goals = {}
# Agent 0 has the recipe for Agent 1's target item
recipe_for_agent1 = "\n".join(recipes[selected_items[1]])
goals["0"] = (
f"You need to make {selected_items[0]}, but you don't have the recipe for it, your partner has it!\n\n"
f"Your partner needs to make {selected_items[1]}. You have their recipe:\n"
f"Recipe for {selected_items[1]}:\n{recipe_for_agent1}\n\n"
f"You must communicate effectively to exchange recipe information and complete both dishes."
f" Note: You can only guide your partner with recipe steps. You cannot help with ingredient collection or cooking."
)
# Agent 1 has the recipe for Agent 0's target item
recipe_for_agent0 = "\n".join(recipes[selected_items[0]])
goals["1"] = (
f"You need to make {selected_items[1]}, but you don't have the recipe for it, your partner has it!\n\n"
f"Your partner needs to make {selected_items[0]}. You have their recipe:\n"
f"Recipe for {selected_items[0]}:\n{recipe_for_agent0}\n\n"
f"You must communicate effectively to exchange recipe information and complete both dishes."
f" Note: You can only guide your partner with recipe steps. You cannot help with ingredient collection or cooking."
)
# Create a Hell's Kitchen themed conversation starter
conversation = (
f"We need to make {selected_items[0]} and {selected_items[1]} together. You are supposed to make {selected_items[1]} and I am supposed to make {selected_items[0]}, "
f"but I only have YOUR recipe and you only have access to MY recipe! Let's exchange information and get cooking!"
)
task_data = {
"conversation": conversation,
"agent_count": 2,
"target": combined_target,
"type": "cooking",
"timeout": 300,
"recipes": recipes,
"blocked_access_to_recipe": [], # No blocked access - it's just switched
"goal": goals,
"task_type": "cooking" # Mark as Hell's Kitchen task
}
# Generate a Hell's Kitchen task ID
task_id = generate_hells_kitchen_task_id(task_data)
return {task_id: task_data}
def calculate_hells_kitchen_task_difficulty_metrics(task: Dict) -> Dict[str, Any]:
"""Calculate detailed difficulty metrics for a Hell's Kitchen task."""
# Get all recipes
recipes = task["recipes"]
# Calculate recipe step metrics
total_steps = sum(len(steps) for steps in recipes.values())
max_steps_per_recipe = max(len(steps) for steps in recipes.values()) if recipes else 0
# Get number of target items
num_unique_items = len(task["target"])
# Calculate overall difficulty score
difficulty_score = 0
# Add score based on total steps
if total_steps <= 4:
step_difficulty = 1 # Easy
elif total_steps <= 8:
step_difficulty = 2 # Medium
else:
step_difficulty = 3 # Hard
difficulty_score += step_difficulty
# Add score based on number of items
item_difficulty = num_unique_items
difficulty_score += item_difficulty
# Hell's Kitchen tasks are inherently more difficult due to communication requirements
# Add a communication difficulty factor
difficulty_score += 1
# Determine final difficulty category
if difficulty_score <= 3:
difficulty_category = "easy"
elif difficulty_score <= 5:
difficulty_category = "medium"
else:
difficulty_category = "hard"
# Compile all metrics into a dictionary
difficulty_metrics = {
"total_recipe_steps": total_steps,
"max_steps_per_recipe": max_steps_per_recipe,
"unique_target_items": num_unique_items,
"overall_difficulty_score": difficulty_score,
"difficulty_category": difficulty_category
}
return difficulty_metrics
def generate_maximum_hells_kitchen_tasks(
num_train_tasks: int,
num_test_tasks: int
) -> Tuple[Dict[str, Dict], Dict[str, Dict]]:
"""
Generate as many Hell's Kitchen tasks as specified, without balancing difficulty.
Args:
num_train_tasks: Exact number of training tasks to generate
num_test_tasks: Exact number of test tasks to generate
Returns:
Tuple of (train_tasks, test_tasks)
"""
# Get all available cooking items
all_items = list(COOKING_ITEMS.keys())
# Fixed test items as specified in your original code
hk_test_items = {"cooked_beef", "baked_potato", "cake", "golden_apple", "rabbit_stew", "bread"}
hk_train_items = set(all_items) - hk_test_items
hk_test_lst = list(hk_test_items)
train_possible_combinations = itertools.combinations(hk_train_items, 2)
# test_possible_combinations = [["bread", "golden_apple"], ["golden_apple", "rabbit_stew"], ["bread", "cake"],
# ["baked_potato", "golden_apple"], ["baked_potato", "cake"], ["cooked_beef", "golden_apple"]]
test_possible_combinations = itertools.combinations(hk_test_lst, 2)
# Set fixed seed for consistent results
random.seed(42)
# Generate tasks for training set
train_tasks = {}
for combination in train_possible_combinations:
task = generate_hells_kitchen_task(combination)
task_id, task_data = list(task.items())[0]
# Check if task uses valid items for train set
task_items = set(task_data["target"])
if task_items.issubset(hk_train_items):
# Still calculate metrics for information but don't filter by them
task_data["difficulty_metrics"] = calculate_hells_kitchen_task_difficulty_metrics(task_data)
task_data["difficulty"] = task_data["difficulty_metrics"]["difficulty_category"]
train_tasks[task_id] = task_data
# Generate tasks for test set
test_tasks = {}
for combination in test_possible_combinations:
task = generate_hells_kitchen_task(combination)
task_id, task_data = list(task.items())[0]
# Check if task uses valid items for test set
task_items = set(task_data["target"])
if task_items.issubset(hk_test_items):
# Still calculate metrics for information but don't filter by them
task_data["difficulty_metrics"] = calculate_hells_kitchen_task_difficulty_metrics(task_data)
task_data["difficulty"] = task_data["difficulty_metrics"]["difficulty_category"]
test_tasks[task_id] = task_data
return train_tasks, test_tasks
def analyze_task_split(train_tasks, test_tasks):
"""Analyze and print statistics about the train/test split with detailed difficulty metrics."""
# Count total tasks
train_count = len(train_tasks)
test_count = len(test_tasks)
# Count difficulty distribution by category
train_difficulty = Counter(task["difficulty"] for task in train_tasks.values())
test_difficulty = Counter(task["difficulty"] for task in test_tasks.values())
# Analyze quantitative difficulty metrics
train_metrics = {
"total_recipe_steps": [],
"unique_target_items": [],
"overall_difficulty_score": []
}
test_metrics = {
"total_recipe_steps": [],
"unique_target_items": [],
"overall_difficulty_score": []
}
# Collect metrics from tasks
for task in train_tasks.values():
for metric in train_metrics:
if metric in task["difficulty_metrics"]:
train_metrics[metric].append(task["difficulty_metrics"][metric])
for task in test_tasks.values():
for metric in test_metrics:
if metric in task["difficulty_metrics"]:
test_metrics[metric].append(task["difficulty_metrics"][metric])
# Calculate statistics for each metric
train_stats = {}
test_stats = {}
for metric in train_metrics:
values = train_metrics[metric]
if values:
train_stats[metric] = {
"min": min(values),
"max": max(values),
"mean": sum(values) / len(values),
"median": sorted(values)[len(values)//2]
}
for metric in test_metrics:
values = test_metrics[metric]
if values:
test_stats[metric] = {
"min": min(values),
"max": max(values),
"mean": sum(values) / len(values),
"median": sorted(values)[len(values)//2]
}
# Get items in each set
train_items = set()
test_items = set()
for task in train_tasks.values():
train_items.update(task["target"])
for task in test_tasks.values():
test_items.update(task["target"])
# Check for item overlap
item_overlap = train_items.intersection(test_items)
# Compile the results
result = {
"train_count": train_count,
"test_count": test_count,
"train_difficulty_categories": dict(train_difficulty),
"test_difficulty_categories": dict(test_difficulty),
"train_difficulty_metrics": train_stats,
"test_difficulty_metrics": test_stats,
"train_items": list(train_items),
"test_items": list(test_items),
"item_overlap": list(item_overlap),
"is_valid_items_split": len(item_overlap) == 0
}
return result
# Example usage
if __name__ == "__main__":
hk_train_tasks, hk_test_tasks = generate_maximum_hells_kitchen_tasks(
num_train_tasks=90,
num_test_tasks=30
)
# Save Hell's Kitchen tasks to separate files
with open("hells_kitchen_train_tasks.json", "w") as f:
json.dump(hk_train_tasks, f, indent=2)
with open("mindcraft/tasks/cooking_tasks/require_collab_test_2_items/2_agent_hells_kitchen_full.json", "w") as f:
json.dump(hk_test_tasks, f, indent=2)
# Print counts
print(f"Generated {len(hk_train_tasks)} training tasks")
print(f"Generated {len(hk_test_tasks)} test tasks")
# You can still analyze the distribution if interested
hk_analysis = analyze_task_split(hk_train_tasks, hk_test_tasks)
print("\nHell's Kitchen Tasks Analysis:")
print(json.dumps(hk_analysis, indent=2))

View file

@ -0,0 +1,38 @@
{
"multiagent_cooking_bread_golden_apple": {
"type": "cooking",
"recipes": {
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
],
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
]
},
"agent_count": 1,
"human_count": 1,
"target": {
"bread": 1,
"golden_apple": 1
},
"initial_inventory": {
"0": {
"gold_ingot": 4,
"apple": 1
},
"1": {
"gold_ingot": 4
}
},
"goal": {
"0": "Collaborate with other agents around you to make bread, golden_apple, The recipes are as follows:\nRecipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']\nRecipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']\n",
"1": "Collaborate with other agents around you to make bread, golden_apple, The recipes are as follows:\nRecipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']\nRecipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']\n"
},
"conversation": "Let's collaborate to make bread, golden_apple, ",
"usernames": [
"izzycw"
]
}
}

View file

@ -0,0 +1,461 @@
import random
import json
from typing import Dict, List, Any, Tuple, Set
from collections import Counter, defaultdict
import os
import numpy as np
import itertools
# Define your COOKING_ITEMS dictionary here
# This is where you should put your complete COOKING_ITEMS dictionary
COOKING_ITEMS = {
# Cooked Meats
"cooked_mutton": {
"recipe": [
"Step 1: Kill a sheep and pick up 1 mutton that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to furnace and use it to cook the mutton."
],
"description": "Cooked mutton meat",
"complexity": "easy",
"required_chest_items": {
"coal": 1,
}
},
"cooked_beef": {
"recipe": [
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to furnace and use it to cook the beef."
],
"description": "Cooked beef meat",
"complexity": "easy",
"required_chest_items": {
"coal": 1,
}
},
"cooked_porkchop": {
"recipe": [
"Step 1: Kill a pig and pick up 1 porkchop that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to furnace and use it to cook the porkchop."
],
"description": "Cooked porkchop",
"complexity": "easy",
"required_chest_items": {
"coal": 1,
}
},
"cooked_chicken": {
"recipe": [
"Step 1: Kill a chicken and pick up 1 raw chicken that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to furnace and use it to cook the raw chicken."
],
"description": "Cooked chicken meat",
"complexity": "easy",
"required_chest_items": {
"coal": 1,
}
},
"cooked_rabbit": {
"recipe": [
"Step 1: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to furnace and use it to cook the raw rabbit."
],
"description": "Cooked rabbit meat",
"complexity": "easy",
"required_chest_items": {
"coal": 1,
}
},
# Soups and Stews
"beetroot_soup": {
"recipe": [
"Step 1: Go to the farm and collect 6 beetroot.",
"Step 2: From your inventory or other agents get a bowl.",
"Step 3: Go to the crafting table and combine the 6 beetroot and 1 bowl to make beetroot soup."
],
"description": "A hearty beetroot soup",
"complexity": "medium",
"required_chest_items": {
"bowl": 1,
}
},
"mushroom_stew": {
"recipe": [
"Step 1: Go to the farm and collect 1 red mushroom and 1 brown mushroom.",
"Step 2: From your inventory or other agents get a bowl.",
"Step 3: Go to the crafting table and combine both the mushrooms and bowl to make mushroom stew."
],
"description": "A warm mushroom stew",
"complexity": "medium",
"required_chest_items": {
"bowl": 1,
}
},
"rabbit_stew": {
"recipe": [
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to the furnace and bake the potato.",
"Step 5: From your inventory or other agents get a bowl",
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
"Step 7: Go to the furnace and cook the raw rabbit.",
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
],
"description": "A hearty rabbit stew",
"complexity": "hard",
"required_chest_items": {
"bowl": 1,
}
},
"suspicious_stew": {
"recipe": [
"Step 1: Go to the farm and collect 1 red mushroom, 1 brown mushroom.",
"Step 2: From your inventory or other agents get a bowl and 1 dandelion",
"Step 3: Go to the crafting table and combine the mushrooms, dandelion, and bowl to make suspicious stew."
],
"description": "A mysterious stew with special effects",
"complexity": "medium",
"required_chest_items": {
"bowl": 1,
"dandelion": 1,
}
},
# Baked Goods
"baked_potato": {
"recipe": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
],
"description": "A simple baked potato",
"complexity": "easy",
"required_chest_items": {
"coal": 1,
}
},
"bread": {
"recipe": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
],
"description": "Fresh bread",
"complexity": "medium"
},
"cake": {
"recipe": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
],
"description": "A delicious cake",
"complexity": "hard",
"required_chest_items": {
"milk_bucket": 3,
"egg": 1,
}
},
"cookie": {
"recipe": [
"Step 1: Go to the farm and collect 2 wheat.",
"Step 2: Get 1 cocoa bean from your inventory or other agents.",
"Step 3: Go to the crafting table and combine the wheat and cocoa bean to craft a cookie."
],
"description": "Sweet cookies",
"complexity": "medium",
"required_chest_items": {
"cocoa_beans": 1,
}
},
"pumpkin_pie": {
"recipe": [
"Step 1: Go to the farm and collect 1 pumpkin and 1 sugar cane.",
"Step 2: Get 1 egg from your inventory or other bots",
"Step 3: Go to the crafting table and craft the sugar cane into sugar.",
"Step 4: Go to the crafting table and combine the pumpkin, egg, and sugar to make a pumpkin pie."
],
"description": "Delicious pumpkin pie",
"complexity": "hard",
"required_chest_items": {
"egg": 1,
}
},
# Sweet Foods
"golden_apple": {
"recipe": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"description": "A magical golden apple",
"complexity": "hard",
"required_chest_items": {
"gold_ingot": 8,
"apple": 1
}
},
# Special Foods
"golden_carrot": {
"recipe": [
"Step 1: Go to the farm and collect 1 carrot.",
"Step 2: Go to the chest and collect gold ingots and convert them to gold nuggets.",
"Step 3: Go to the crafting table and surround the carrot with gold nuggets to create a golden carrot."
],
"description": "A magical golden carrot",
"complexity": "hard",
"required_chest_items": {
"gold_ingot": 8,
}
},
}
chest_items = {
"milk_bucket": 3,
"egg": 16,
"dandelion": 64,
"cocoa_beans": 64,
"apple": 64,
"gold_ingot": 8,
"salmon": 64,
"cod": 64,
"kelp": 64,
"dried_kelp": 64,
"sweet_berries": 64,
"honey_bottle": 1,
"glow_berries": 64,
"bowl": 1,
"cooked_salmon": 1,
"cooked_cod": 1,
"oak_planks": 64,
"iron_ingot": 64,
}
def make_initial_inventory(items, num_agents):
"""
Evenly split inventory between the agents for a given set of items and number of agents
"""
inventory = {}
for item in items:
if item in COOKING_ITEMS:
cooking_info = COOKING_ITEMS[item]
for chest_item, quantity in cooking_info.get("required_chest_items", {}).items():
inventory[chest_item] = inventory.get(chest_item, 0) + quantity
else:
print(f"item {item} not found in COOKING_ITEMS.")
initial_inventory = {}
for i in range(num_agents):
initial_inventory[i] = {}
items_lst = list(inventory.keys())
for i in range(len(items_lst)):
item_counts = count_items_in_inventory(initial_inventory)
agent_num = np.argmin(item_counts)
if inventory[items_lst[i]] == 1:
initial_inventory[agent_num][items_lst[i]] = 1
elif inventory[items_lst[i]] > 1:
div = inventory[items_lst[i]] // num_agents
rem = inventory[items_lst[i]] % num_agents
for j in range(num_agents):
initial_inventory[j][items_lst[i]] = div
j = 0
while j < rem:
initial_inventory[j][items_lst[i]] += 1
j += 1
return initial_inventory
def count_items_in_inventory(inventory):
item_counts = []
for key in inventory.keys():
agent_inventory = inventory[key]
total_items = 0
for item in agent_inventory.keys():
total_items += agent_inventory[item]
item_counts.append(total_items)
return item_counts
def make_all_possible_tasks(items: List[str], num_items:int, num_agents: int, output_file) -> List[Dict[str, Any]]:
combinations = itertools.combinations(items, num_items)
already_completed = [["bread", "golden_apple"], ["golden_apple", "rabbit_stew"], ["bread", "cake"], ["baked_potato", "golden_apple"], ["baked_potato", "cake"], ["cooked_beef", "golden_apple"]]
remaining_combinations = set(combinations) - set(tuple(sorted(comb)) for comb in already_completed)
tasks = {}
for combination in remaining_combinations:
task = {}
task["type"] = "cooking"
task["recipes"] = {}
task["agent_count"] = num_agents
task["target"] = {}
for item in combination:
task["target"][item] = 1
for item in combination:
if item in COOKING_ITEMS:
task["recipes"][item] = COOKING_ITEMS[item]["recipe"]
else:
print(f"item {item} not found in COOKING_ITEMS.")
initial_inventory = make_initial_inventory(combination, num_agents)
task["initial_inventory"] = initial_inventory
task["goal"] = {}
goal_str = f"Collaborate with other agents around you to make "
conversation_str = f"Let's collaborate to make "
for item in combination:
goal_str += item + ", "
conversation_str += item + ", "
recipe_goal_str = goal_str + "The recipes are as follows:\n"
for item in combination:
recipe_goal_str += f"Recipe for {item}:\n{COOKING_ITEMS[item]['recipe']}\n"
for i in range(num_agents):
task["goal"][i] = recipe_goal_str
task["conversation"] = conversation_str
partial_plan_task = task.copy()
partial_plan_task["goal"] = {}
for i in range(num_agents):
partial_plan_task["goal"][i] = goal_str
partial_plan_task["goal"][0] = recipe_goal_str
task_id = "multiagent_cooking"
for item in combination:
task_id += "_" + item
# tasks[task_id] = task
tasks[task_id + "_partial_plan"] = partial_plan_task
with open(output_file, 'w') as f:
json.dump(tasks, f, indent=4)
def reconfigure_tasks(task_path, new_task_path, num_agents=None, hells_kitchen=False):
with open(task_path, 'r') as f:
tasks = json.load(f)
task_ids = tasks.keys()
new_tasks = {}
for task_id in task_ids:
task = tasks[task_id]
if task["type"] == "cooking":
items = task["recipes"].keys()
new_recipes = {}
inventory = {}
for item in items:
if item in COOKING_ITEMS:
cooking_info = COOKING_ITEMS[item]
new_recipes[item] = cooking_info["recipe"]
for chest_item, quantity in cooking_info.get("required_chest_items", {}).items():
inventory[chest_item] = inventory.get(chest_item, 0) + quantity
else:
print(f"item {item} not found in COOKING_ITEMS.")
task["recipes"] = new_recipes
# assign inventory to the agents
if num_agents is None:
num_agents = task.get("agent_count", 0) + task.get("human_count", 0)
else:
task["agent_count"] = num_agents
initial_inventory = {}
for i in range(num_agents):
initial_inventory[i] = {}
items_lst = list(inventory.keys())
for i in range(len(items_lst)):
item_counts = count_items_in_inventory(initial_inventory)
agent_num = np.argmin(item_counts)
if inventory[items_lst[i]] == 1:
initial_inventory[agent_num][items_lst[i]] = 1
elif inventory[items_lst[i]] > 1:
div = inventory[items_lst[i]] // num_agents
rem = inventory[items_lst[i]] % num_agents
for j in range(num_agents):
initial_inventory[j][items_lst[i]] = div
j = 0
while j < rem:
initial_inventory[j][items_lst[i]] += 1
j += 1
# initial_inventory[agent_num][items_lst[i]] = inventory[items_lst[i]]
item_counts = count_items_in_inventory(initial_inventory)
required_collab = True
for i in range(len(item_counts)):
if item_counts[i] == 0:
# don't add the task if collaboration isn't required
required_collab = False
if not required_collab:
print(f"task {task_id} doesn't require collaboration.")
continue
task["initial_inventory"] = initial_inventory
print(inventory)
print(initial_inventory)
if not hells_kitchen:
goals = task.get("goal", {})
new_goals = {}
blocked_access = task.get("blocked_access_to_recipe", [])
print(blocked_access)
for key, goal in goals.items():
initial_goal = goal.split("\n")[0]
if str(key) not in blocked_access:
for item, recipe in new_recipes.items():
initial_goal += f"Recipe for {item}:\n{recipe}"
new_goals[key] = initial_goal
task["goal"] = new_goals
new_tasks[task_id] = task
# check each of the recipes and replace with the new recipe
os.makedirs(os.path.dirname(new_task_path), exist_ok=True)
with open(new_task_path, 'w') as f:
json.dump(new_tasks, f, indent=4)
def block_recipe_in_tasks(task_path, new_task_path, num_agents=None):
with open(task_path, 'r') as f:
tasks = json.load(f)
task_ids = tasks.keys()
for task_id in task_ids:
task = tasks[task_id]
task["blocked_access_to_recipe"] = ["0"]
items = task["recipes"].keys()
goal_str = "Collaborate with other agents around you to make " + ", ".join(items) + "."
task["goal"]["0"] = goal_str
with open(new_task_path, 'w') as f:
json.dump(tasks, f, indent=4)
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/test_tasks/3_agent_cooking_test_tasks.json", "mindcraft/tasks/cooking_tasks/require_collab_test_3_items/2_agent.json", 2)
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/test_tasks/3_agent_cooking_test_tasks.json", "mindcraft/tasks/cooking_tasks/require_collab_test_3_items/3_agent.json", 3)
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/test_tasks/3_agent_cooking_test_tasks.json", "mindcraft/tasks/cooking_tasks/require_collab_test_3_items/4_agent.json", 4)
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/test_tasks/3_agent_cooking_test_tasks.json", "mindcraft/tasks/cooking_tasks/require_collab_test_3_items/5_agent.json", 5)
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/test_tasks/2_agent_cooking_test_tasks.json", "mindcraft/tasks/cooking_tasks/require_collab_test_2_items/2_agent.json", 2)
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/test_tasks/2_agent_cooking_test_tasks.json", "mindcraft/tasks/cooking_tasks/require_collab_test_2_items/3_agent.json", 3)
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/test_tasks/2_agent_cooking_test_tasks.json", "mindcraft/tasks/cooking_tasks/require_collab_test_2_items/4_agent.json", 4)
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/test_tasks/2_agent_cooking_test_tasks.json", "mindcraft/tasks/cooking_tasks/require_collab_test_2_items/5_agent.json", 5)
#
test_items = ["bread", "golden_apple", "rabbit_stew", "cake", "baked_potato", "cooked_beef"]
# block_recipe_in_tasks("mindcraft/tasks/cooking_tasks/require_collab_test_2_items/2_agent.json", "mindcraft/tasks/cooking_tasks/require_collab_test_2_items/2_agent_block_recipe.json", 2)
# make_all_possible_tasks(test_items, 2, 2, "mindcraft/tasks/cooking_tasks/require_collab_test_2_items/2_agent_blocked_action_remaining.json")
reconfigure_tasks("mindcraft/tasks/cooking_tasks/require_collab_test_2_items/2_agent_hells_kitchen_full.json", "mindcraft/tasks/cooking_tasks/require_collab_test_2_items/2_agent_hells_kitchen_full_inventory.json", 2)
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/test_tasks/test_tasks.json", "mindcraft/tasks/cooking_tasks/require_collab_test_2_items/2_agent_block_recipe.json", 2)
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/test_tasks/hells_kitchen_test_tasks.json", "mindcraft/tasks/cooking_tasks/require_collab_test_2_items/2_agent_hells_kitchen.json", 2, True)
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/train_tasks/train_tasks.json", "mindcraft/tasks/cooking_tasks/require_collab_train_2_items/2_agent_block_recipe.json", 2, False)
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/train_tasks/hells_kitchen_train_tasks.json", "mindcraft/tasks/cooking_tasks/require_collab_train_2_items/2_agent_hells_kitchen.json", 2, True)
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/train_tasks/2_agent_cooking_train_tasks.json", "mindcraft/tasks/cooking_tasks/require_collab_train_2_items/3_agent.json", 3)
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/train_tasks/2_agent_cooking_train_tasks.json", "mindcraft/tasks/cooking_tasks/require_collab_train_2_items/4_agent.json", 4)
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/train_tasks/2_agent_cooking_train_tasks.json", "mindcraft/tasks/cooking_tasks/require_collab_train_2_items/5_agent.json", 5)
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/equal_load_test_tasks/3_agent.json", "mindcraft/tasks/cooking_tasks/require_collab_test/3_agent.json")
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/equal_load_test_tasks/4_agent.json", "mindcraft/tasks/cooking_tasks/require_collab_test/4_agent.json")
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/equal_load_test_tasks/5_agent.json", "mindcraft/tasks/cooking_tasks/require_collab_test/5_agent.json")
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/train_tasks/2_agent_cooking_train_tasks.json", "mindcraft/tasks/cooking_tasks/require_collab_train/2_agent.json")
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/train_tasks/train_tasks.json", "mindcraft/tasks/cooking_tasks/require_collab_train/2_agent_blocked_access.json")
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/train_tasks/train_tasks_3_agents.json", "mindcraft/tasks/cooking_tasks/require_collab_train/3_agent.json")
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/train_tasks/train_tasks_4_agents.json", "mindcraft/tasks/cooking_tasks/require_collab_train/4_agent.json")
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/train_tasks/train_tasks_5_agents.json", "mindcraft/tasks/cooking_tasks/require_collab_train/5_agent.json")

View file

@ -0,0 +1,206 @@
{
"multiagent_cooking_2_1_bread_1_golden_apple": {
"conversation": "Let's work together to make golden_apple, bread.",
"agent_count": 1,
"target": {
"golden_apple": 1,
"bread": 1
},
"type": "cooking",
"timeout": 500,
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "Collaborate with agents around you to make 1 golden_apple, 1 bread. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']",
"1": "Collaborate with agents around you to make 1 golden_apple, 1 bread. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']"
},
"initial_inventory": {
"0": {
"gold_ingot": 5
}
}
},
"multiagent_cooking_2_1_golden_apple_1_rabbit_stew": {
"conversation": "Let's work together to make golden_apple, rabbit_stew.",
"agent_count": 1,
"target": {
"golden_apple": 1,
"rabbit_stew": 1
},
"type": "cooking",
"timeout": 500,
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"rabbit_stew": [
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to the furnace and bake the potato.",
"Step 5: From your inventory or other agents get a bowl",
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
"Step 7: Go to the furnace and cook the raw rabbit.",
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "Collaborate with agents around you to make 1 golden_apple, 1 rabbit_stew. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']",
"1": "Collaborate with agents around you to make 1 golden_apple, 1 rabbit_stew. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']"
},
"initial_inventory": {
"0": {
"gold_ingot": 5,
"bowl": 1
}
}
},
"multiagent_cooking_2_1_bread_1_cake": {
"conversation": "Let's work together to make cake, bread.",
"agent_count": 1,
"target": {
"cake": 1,
"bread": 1
},
"type": "cooking",
"timeout": 500,
"recipes": {
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
],
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "Collaborate with agents around you to make 1 cake, 1 bread. Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']",
"1": "Collaborate with agents around you to make 1 cake, 1 bread. Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']"
},
"initial_inventory": {
"0": {
"milk_bucket": 2
}
}
},
"multiagent_cooking_2_1_baked_potato_1_golden_apple": {
"conversation": "Let's work together to make baked_potato, golden_apple.",
"agent_count": 1,
"target": {
"baked_potato": 1,
"golden_apple": 1
},
"type": "cooking",
"timeout": 500,
"recipes": {
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
],
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "Collaborate with agents around you to make 1 baked_potato, 1 golden_apple. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']",
"1": "Collaborate with agents around you to make 1 baked_potato, 1 golden_apple. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']"
},
"initial_inventory": {
"0": {
"coal": 5,
"gold_ingot": 5,
"apple": 1
}
}
},
"multiagent_cooking_2_1_baked_potato_1_cake": {
"conversation": "Let's work together to make baked_potato, cake.",
"agent_count": 2,
"target": {
"baked_potato": 1,
"cake": 1
},
"type": "cooking",
"timeout": 500,
"recipes": {
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
],
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "Collaborate with agents around you to make 1 baked_potato, 1 cake. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']",
"1": "Collaborate with agents around you to make 1 baked_potato, 1 cake. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']"
},
"initial_inventory": {
"0": {
"coal": 5,
"milk_bucket": 2,
"egg": 1
}
}
},
"multiagent_cooking_2_1_cooked_beef_1_golden_apple": {
"conversation": "Let's work together to make golden_apple, cooked_beef.",
"agent_count": 2,
"target": {
"golden_apple": 1,
"cooked_beef": 1
},
"type": "cooking",
"timeout": 500,
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"cooked_beef": [
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to furnace and use it to cook the beef."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "Collaborate with agents around you to make 1 golden_apple, 1 cooked_beef. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']",
"1": "Collaborate with agents around you to make 1 golden_apple, 1 cooked_beef. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']"
},
"initial_inventory": {
"0": {
"gold_ingot": 5,
"coal": 5
}
}
}
}

View file

@ -0,0 +1,231 @@
{
"multiagent_cooking_2_1_bread_1_golden_apple": {
"conversation": "Let's work together to make golden_apple, bread.",
"agent_count": 2,
"target": {
"golden_apple": 1,
"bread": 1
},
"type": "cooking",
"timeout": 500,
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "Collaborate with agents around you to make 1 golden_apple, 1 bread. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']",
"1": "Collaborate with agents around you to make 1 golden_apple, 1 bread. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']"
},
"initial_inventory": {
"0": {
"gold_ingot": 5
},
"1": {
"gold_ingot": 5,
"apple": 1
}
}
},
"multiagent_cooking_2_1_golden_apple_1_rabbit_stew": {
"conversation": "Let's work together to make golden_apple, rabbit_stew.",
"agent_count": 2,
"target": {
"golden_apple": 1,
"rabbit_stew": 1
},
"type": "cooking",
"timeout": 500,
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"rabbit_stew": [
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to the furnace and bake the potato.",
"Step 5: From your inventory or other agents get a bowl",
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
"Step 7: Go to the furnace and cook the raw rabbit.",
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "Collaborate with agents around you to make 1 golden_apple, 1 rabbit_stew. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']",
"1": "Collaborate with agents around you to make 1 golden_apple, 1 rabbit_stew. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']"
},
"initial_inventory": {
"0": {
"gold_ingot": 5,
"bowl": 1
},
"1": {
"gold_ingot": 5,
"apple": 1
}
}
},
"multiagent_cooking_2_1_bread_1_cake": {
"conversation": "Let's work together to make cake, bread.",
"agent_count": 2,
"target": {
"cake": 1,
"bread": 1
},
"type": "cooking",
"timeout": 500,
"recipes": {
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
],
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "Collaborate with agents around you to make 1 cake, 1 bread. Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']",
"1": "Collaborate with agents around you to make 1 cake, 1 bread. Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']"
},
"initial_inventory": {
"0": {
"milk_bucket": 2
},
"1": {
"milk_bucket": 2,
"egg": 1
}
}
},
"multiagent_cooking_2_1_baked_potato_1_golden_apple": {
"conversation": "Let's work together to make baked_potato, golden_apple.",
"agent_count": 2,
"target": {
"baked_potato": 1,
"golden_apple": 1
},
"type": "cooking",
"timeout": 500,
"recipes": {
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
],
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "Collaborate with agents around you to make 1 baked_potato, 1 golden_apple. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']",
"1": "Collaborate with agents around you to make 1 baked_potato, 1 golden_apple. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']"
},
"initial_inventory": {
"0": {
"coal": 5,
"gold_ingot": 5,
"apple": 1
},
"1": {
"coal": 5,
"gold_ingot": 5
}
}
},
"multiagent_cooking_2_1_baked_potato_1_cake": {
"conversation": "Let's work together to make baked_potato, cake.",
"agent_count": 2,
"target": {
"baked_potato": 1,
"cake": 1
},
"type": "cooking",
"timeout": 500,
"recipes": {
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
],
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "Collaborate with agents around you to make 1 baked_potato, 1 cake. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']",
"1": "Collaborate with agents around you to make 1 baked_potato, 1 cake. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']"
},
"initial_inventory": {
"0": {
"coal": 5,
"milk_bucket": 2,
"egg": 1
},
"1": {
"coal": 5,
"milk_bucket": 2
}
}
},
"multiagent_cooking_2_1_cooked_beef_1_golden_apple": {
"conversation": "Let's work together to make golden_apple, cooked_beef.",
"agent_count": 2,
"target": {
"golden_apple": 1,
"cooked_beef": 1
},
"type": "cooking",
"timeout": 500,
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"cooked_beef": [
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to furnace and use it to cook the beef."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "Collaborate with agents around you to make 1 golden_apple, 1 cooked_beef. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']",
"1": "Collaborate with agents around you to make 1 golden_apple, 1 cooked_beef. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']"
},
"initial_inventory": {
"0": {
"gold_ingot": 5,
"coal": 5
},
"1": {
"gold_ingot": 5,
"apple": 1,
"coal": 5
}
}
}
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,243 @@
{
"multiagent_cooking_2_1_bread_1_golden_apple": {
"conversation": "Let's work together to make golden_apple, bread.",
"agent_count": 2,
"target": {
"golden_apple": 1,
"bread": 1
},
"type": "cooking",
"timeout": 500,
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
]
},
"blocked_access_to_recipe": [
"0"
],
"goal": {
"0": "Collaborate with other agents around you to make golden_apple, bread.",
"1": "Collaborate with agents around you to make 1 golden_apple, 1 bread. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']"
},
"initial_inventory": {
"0": {
"gold_ingot": 5
},
"1": {
"gold_ingot": 5,
"apple": 1
}
}
},
"multiagent_cooking_2_1_golden_apple_1_rabbit_stew": {
"conversation": "Let's work together to make golden_apple, rabbit_stew.",
"agent_count": 2,
"target": {
"golden_apple": 1,
"rabbit_stew": 1
},
"type": "cooking",
"timeout": 500,
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"rabbit_stew": [
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to the furnace and bake the potato.",
"Step 5: From your inventory or other agents get a bowl",
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
"Step 7: Go to the furnace and cook the raw rabbit.",
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
]
},
"blocked_access_to_recipe": [
"0"
],
"goal": {
"0": "Collaborate with other agents around you to make golden_apple, rabbit_stew.",
"1": "Collaborate with agents around you to make 1 golden_apple, 1 rabbit_stew. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']"
},
"initial_inventory": {
"0": {
"gold_ingot": 5,
"bowl": 1
},
"1": {
"gold_ingot": 5,
"apple": 1
}
}
},
"multiagent_cooking_2_1_bread_1_cake": {
"conversation": "Let's work together to make cake, bread.",
"agent_count": 2,
"target": {
"cake": 1,
"bread": 1
},
"type": "cooking",
"timeout": 500,
"recipes": {
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
],
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
]
},
"blocked_access_to_recipe": [
"0"
],
"goal": {
"0": "Collaborate with other agents around you to make cake, bread.",
"1": "Collaborate with agents around you to make 1 cake, 1 bread. Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']"
},
"initial_inventory": {
"0": {
"milk_bucket": 2
},
"1": {
"milk_bucket": 2,
"egg": 1
}
}
},
"multiagent_cooking_2_1_baked_potato_1_golden_apple": {
"conversation": "Let's work together to make baked_potato, golden_apple.",
"agent_count": 2,
"target": {
"baked_potato": 1,
"golden_apple": 1
},
"type": "cooking",
"timeout": 500,
"recipes": {
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
],
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
]
},
"blocked_access_to_recipe": [
"0"
],
"goal": {
"0": "Collaborate with other agents around you to make baked_potato, golden_apple.",
"1": "Collaborate with agents around you to make 1 baked_potato, 1 golden_apple. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']"
},
"initial_inventory": {
"0": {
"coal": 5,
"gold_ingot": 5,
"apple": 1
},
"1": {
"coal": 5,
"gold_ingot": 5
}
}
},
"multiagent_cooking_2_1_baked_potato_1_cake": {
"conversation": "Let's work together to make baked_potato, cake.",
"agent_count": 2,
"target": {
"baked_potato": 1,
"cake": 1
},
"type": "cooking",
"timeout": 500,
"recipes": {
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
],
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
]
},
"blocked_access_to_recipe": [
"0"
],
"goal": {
"0": "Collaborate with other agents around you to make baked_potato, cake.",
"1": "Collaborate with agents around you to make 1 baked_potato, 1 cake. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']"
},
"initial_inventory": {
"0": {
"coal": 5,
"milk_bucket": 2,
"egg": 1
},
"1": {
"coal": 5,
"milk_bucket": 2
}
}
},
"multiagent_cooking_2_1_cooked_beef_1_golden_apple": {
"conversation": "Let's work together to make golden_apple, cooked_beef.",
"agent_count": 2,
"target": {
"golden_apple": 1,
"cooked_beef": 1
},
"type": "cooking",
"timeout": 500,
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"cooked_beef": [
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to furnace and use it to cook the beef."
]
},
"blocked_access_to_recipe": [
"0"
],
"goal": {
"0": "Collaborate with other agents around you to make golden_apple, cooked_beef.",
"1": "Collaborate with agents around you to make 1 golden_apple, 1 cooked_beef. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']"
},
"initial_inventory": {
"0": {
"gold_ingot": 5,
"coal": 5
},
"1": {
"gold_ingot": 5,
"apple": 1,
"coal": 5
}
}
}
}

View file

@ -0,0 +1,544 @@
{
"multiagent_cooking_bread_golden_apple_partial_plan": {
"type": "cooking",
"recipes": {
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
],
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
]
},
"agent_count": 2,
"target": {
"bread": 1,
"golden_apple": 1
},
"initial_inventory": {
"0": {
"gold_ingot": 4,
"apple": 1
},
"1": {
"gold_ingot": 4
}
},
"goal": {
"0": "Collaborate with other agents around you to make bread, golden_apple, ",
"1": "Collaborate with other agents around you to make bread, golden_apple, "
},
"conversation": "Let's collaborate to make bread, golden_apple, "
},
"multiagent_cooking_bread_rabbit_stew_partial_plan": {
"type": "cooking",
"recipes": {
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
],
"rabbit_stew": [
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to the furnace and bake the potato.",
"Step 5: From your inventory or other agents get a bowl",
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
"Step 7: Go to the furnace and cook the raw rabbit.",
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
]
},
"agent_count": 2,
"target": {
"bread": 1,
"rabbit_stew": 1
},
"initial_inventory": {
"0": {
"bowl": 1
},
"1": {}
},
"goal": {
"0": "Collaborate with other agents around you to make bread, rabbit_stew, ",
"1": "Collaborate with other agents around you to make bread, rabbit_stew, "
},
"conversation": "Let's collaborate to make bread, rabbit_stew, "
},
"multiagent_cooking_bread_cake_partial_plan": {
"type": "cooking",
"recipes": {
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
],
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
]
},
"agent_count": 2,
"target": {
"bread": 1,
"cake": 1
},
"initial_inventory": {
"0": {
"milk_bucket": 2
},
"1": {
"milk_bucket": 1,
"egg": 1
}
},
"goal": {
"0": "Collaborate with other agents around you to make bread, cake, ",
"1": "Collaborate with other agents around you to make bread, cake, "
},
"conversation": "Let's collaborate to make bread, cake, "
},
"multiagent_cooking_bread_baked_potato_partial_plan": {
"type": "cooking",
"recipes": {
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
],
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
]
},
"agent_count": 2,
"target": {
"bread": 1,
"baked_potato": 1
},
"initial_inventory": {
"0": {
"coal": 1
},
"1": {}
},
"goal": {
"0": "Collaborate with other agents around you to make bread, baked_potato, ",
"1": "Collaborate with other agents around you to make bread, baked_potato, "
},
"conversation": "Let's collaborate to make bread, baked_potato, "
},
"multiagent_cooking_bread_cooked_beef_partial_plan": {
"type": "cooking",
"recipes": {
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
],
"cooked_beef": [
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to furnace and use it to cook the beef."
]
},
"agent_count": 2,
"target": {
"bread": 1,
"cooked_beef": 1
},
"initial_inventory": {
"0": {
"coal": 1
},
"1": {}
},
"goal": {
"0": "Collaborate with other agents around you to make bread, cooked_beef, ",
"1": "Collaborate with other agents around you to make bread, cooked_beef, "
},
"conversation": "Let's collaborate to make bread, cooked_beef, "
},
"multiagent_cooking_golden_apple_rabbit_stew_partial_plan": {
"type": "cooking",
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"rabbit_stew": [
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to the furnace and bake the potato.",
"Step 5: From your inventory or other agents get a bowl",
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
"Step 7: Go to the furnace and cook the raw rabbit.",
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
]
},
"agent_count": 2,
"target": {
"golden_apple": 1,
"rabbit_stew": 1
},
"initial_inventory": {
"0": {
"gold_ingot": 4,
"apple": 1
},
"1": {
"gold_ingot": 4,
"bowl": 1
}
},
"goal": {
"0": "Collaborate with other agents around you to make golden_apple, rabbit_stew, ",
"1": "Collaborate with other agents around you to make golden_apple, rabbit_stew, "
},
"conversation": "Let's collaborate to make golden_apple, rabbit_stew, "
},
"multiagent_cooking_golden_apple_cake_partial_plan": {
"type": "cooking",
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
]
},
"agent_count": 2,
"target": {
"golden_apple": 1,
"cake": 1
},
"initial_inventory": {
"0": {
"gold_ingot": 4,
"apple": 1,
"milk_bucket": 2
},
"1": {
"gold_ingot": 4,
"milk_bucket": 1,
"egg": 1
}
},
"goal": {
"0": "Collaborate with other agents around you to make golden_apple, cake, ",
"1": "Collaborate with other agents around you to make golden_apple, cake, "
},
"conversation": "Let's collaborate to make golden_apple, cake, "
},
"multiagent_cooking_golden_apple_baked_potato_partial_plan": {
"type": "cooking",
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
]
},
"agent_count": 2,
"target": {
"golden_apple": 1,
"baked_potato": 1
},
"initial_inventory": {
"0": {
"gold_ingot": 4,
"apple": 1
},
"1": {
"gold_ingot": 4,
"coal": 1
}
},
"goal": {
"0": "Collaborate with other agents around you to make golden_apple, baked_potato, ",
"1": "Collaborate with other agents around you to make golden_apple, baked_potato, "
},
"conversation": "Let's collaborate to make golden_apple, baked_potato, "
},
"multiagent_cooking_golden_apple_cooked_beef_partial_plan": {
"type": "cooking",
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"cooked_beef": [
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to furnace and use it to cook the beef."
]
},
"agent_count": 2,
"target": {
"golden_apple": 1,
"cooked_beef": 1
},
"initial_inventory": {
"0": {
"gold_ingot": 4,
"apple": 1
},
"1": {
"gold_ingot": 4,
"coal": 1
}
},
"goal": {
"0": "Collaborate with other agents around you to make golden_apple, cooked_beef, ",
"1": "Collaborate with other agents around you to make golden_apple, cooked_beef, "
},
"conversation": "Let's collaborate to make golden_apple, cooked_beef, "
},
"multiagent_cooking_rabbit_stew_cake_partial_plan": {
"type": "cooking",
"recipes": {
"rabbit_stew": [
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to the furnace and bake the potato.",
"Step 5: From your inventory or other agents get a bowl",
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
"Step 7: Go to the furnace and cook the raw rabbit.",
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
],
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
]
},
"agent_count": 2,
"target": {
"rabbit_stew": 1,
"cake": 1
},
"initial_inventory": {
"0": {
"bowl": 1,
"milk_bucket": 2
},
"1": {
"milk_bucket": 1,
"egg": 1
}
},
"goal": {
"0": "Collaborate with other agents around you to make rabbit_stew, cake, ",
"1": "Collaborate with other agents around you to make rabbit_stew, cake, "
},
"conversation": "Let's collaborate to make rabbit_stew, cake, "
},
"multiagent_cooking_rabbit_stew_baked_potato_partial_plan": {
"type": "cooking",
"recipes": {
"rabbit_stew": [
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to the furnace and bake the potato.",
"Step 5: From your inventory or other agents get a bowl",
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
"Step 7: Go to the furnace and cook the raw rabbit.",
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
],
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
]
},
"agent_count": 2,
"target": {
"rabbit_stew": 1,
"baked_potato": 1
},
"initial_inventory": {
"0": {
"bowl": 1
},
"1": {
"coal": 1
}
},
"goal": {
"0": "Collaborate with other agents around you to make rabbit_stew, baked_potato, ",
"1": "Collaborate with other agents around you to make rabbit_stew, baked_potato, "
},
"conversation": "Let's collaborate to make rabbit_stew, baked_potato, "
},
"multiagent_cooking_rabbit_stew_cooked_beef_partial_plan": {
"type": "cooking",
"recipes": {
"rabbit_stew": [
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to the furnace and bake the potato.",
"Step 5: From your inventory or other agents get a bowl",
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
"Step 7: Go to the furnace and cook the raw rabbit.",
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
],
"cooked_beef": [
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to furnace and use it to cook the beef."
]
},
"agent_count": 2,
"target": {
"rabbit_stew": 1,
"cooked_beef": 1
},
"initial_inventory": {
"0": {
"bowl": 1
},
"1": {
"coal": 1
}
},
"goal": {
"0": "Collaborate with other agents around you to make rabbit_stew, cooked_beef, ",
"1": "Collaborate with other agents around you to make rabbit_stew, cooked_beef, "
},
"conversation": "Let's collaborate to make rabbit_stew, cooked_beef, "
},
"multiagent_cooking_cake_baked_potato_partial_plan": {
"type": "cooking",
"recipes": {
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
],
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
]
},
"agent_count": 2,
"target": {
"cake": 1,
"baked_potato": 1
},
"initial_inventory": {
"0": {
"milk_bucket": 2,
"coal": 1
},
"1": {
"milk_bucket": 1,
"egg": 1
}
},
"goal": {
"0": "Collaborate with other agents around you to make cake, baked_potato, ",
"1": "Collaborate with other agents around you to make cake, baked_potato, "
},
"conversation": "Let's collaborate to make cake, baked_potato, "
},
"multiagent_cooking_cake_cooked_beef_partial_plan": {
"type": "cooking",
"recipes": {
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
],
"cooked_beef": [
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to furnace and use it to cook the beef."
]
},
"agent_count": 2,
"target": {
"cake": 1,
"cooked_beef": 1
},
"initial_inventory": {
"0": {
"milk_bucket": 2,
"coal": 1
},
"1": {
"milk_bucket": 1,
"egg": 1
}
},
"goal": {
"0": "Collaborate with other agents around you to make cake, cooked_beef, ",
"1": "Collaborate with other agents around you to make cake, cooked_beef, "
},
"conversation": "Let's collaborate to make cake, cooked_beef, "
},
"multiagent_cooking_baked_potato_cooked_beef_partial_plan": {
"type": "cooking",
"recipes": {
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
],
"cooked_beef": [
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to furnace and use it to cook the beef."
]
},
"agent_count": 2,
"target": {
"baked_potato": 1,
"cooked_beef": 1
},
"initial_inventory": {
"0": {
"coal": 1
},
"1": {
"coal": 1
}
},
"goal": {
"0": "Collaborate with other agents around you to make baked_potato, cooked_beef, ",
"1": "Collaborate with other agents around you to make baked_potato, cooked_beef, "
},
"conversation": "Let's collaborate to make baked_potato, cooked_beef, "
}
}

View file

@ -0,0 +1,290 @@
{
"multiagent_cooking_2_1_bread_1_golden_apple": {
"conversation": "Let's work together to make golden_apple, bread.",
"agent_count": 2,
"target": {
"golden_apple": 1,
"bread": 1
},
"type": "cooking",
"timeout": 1500,
"recipes": {
"golden_apple": [
"Step 1: Go to the chest and collect 1 apple and 8 gold ingots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
]
},
"blocked_access_to_recipe": [
"0"
],
"goal": {
"0": "Collaborate with other agents around you to make golden_apple, bread.",
"1": "Collaborate with agents around you to make 1 golden_apple, 1 bread. \n\nRecipe for golden_apple:\nStep 1: Go to the chest and collect 1 apple and 8 gold ingots.\nStep 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.\n\nRecipe for bread:\nStep 1: Go to the farm and collect 3 wheat.\nStep 2: Go to the crafting table and use the wheat to craft bread."
}
},
"multiagent_cooking_2_1_golden_apple_1_rabbit_stew": {
"conversation": "Let's work together to make golden_apple, rabbit_stew.",
"agent_count": 2,
"target": {
"golden_apple": 1,
"rabbit_stew": 1
},
"type": "cooking",
"timeout": 11500,
"recipes": {
"golden_apple": [
"Step 1: Go to the chest and collect 1 apple and 8 gold ingots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"rabbit_stew": [
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
"Step 2: Go to the furnace and bake the potato.",
"Step 3: Go to the chest and grab a bowl",
"Step 5: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
"Step 6: Go to the furnace and cook the raw rabbit.",
"Step 7: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
]
},
"blocked_access_to_recipe": [
"0"
],
"goal": {
"0": "Collaborate with other agents around you to make golden_apple, rabbit_stew.",
"1": "Collaborate with agents around you to make 1 golden_apple, 1 rabbit_stew. \n\nRecipe for golden_apple:\nStep 1: Go to the chest and collect 1 apple and 8 gold ingots.\nStep 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.\n\nRecipe for rabbit_stew:\nStep 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\nStep 2: Go to the furnace and bake the potato.\nStep 3: Go to the chest and grab a bowl\nStep 5: Kill a rabbit and pick up 1 raw rabbit that is dropped.\nStep 6: Go to the furnace and cook the raw rabbit.\nStep 7: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
}
},
"multiagent_cooking_2_1_bread_1_cake": {
"conversation": "Let's work together to make cake, bread.",
"agent_count": 2,
"target": {
"cake": 1,
"bread": 1
},
"type": "cooking",
"timeout": 1500,
"recipes": {
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: Go to the chest and grab 3 milk buckets.",
"Step 3: Go to the chest and grab an egg.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
],
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
]
},
"blocked_access_to_recipe": [
"0"
],
"goal": {
"0": "Collaborate with other agents around you to make cake, bread.",
"1": "Collaborate with agents around you to make 1 cake, 1 bread. \n\nRecipe for cake:\nStep 1: Go to the farm and collect 3 wheat, 2 sugar cane.\nStep 2: Go to the chest and grab 3 milk buckets.\nStep 3: Go to the chest and grab an egg.\nStep 4: Go to the crafting table and craft the sugarcane into sugar.\nStep 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.\n\nRecipe for bread:\nStep 1: Go to the farm and collect 3 wheat.\nStep 2: Go to the crafting table and use the wheat to craft bread."
}
},
"multiagent_cooking_2_1_baked_potato_1_golden_apple": {
"conversation": "Let's work together to make baked_potato, golden_apple.",
"agent_count": 2,
"target": {
"baked_potato": 1,
"golden_apple": 1
},
"type": "cooking",
"timeout": 1500,
"recipes": {
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Go to the furnace and bake the potato."
],
"golden_apple": [
"Step 1: Go to the chest and collect 1 apple and 8 gold ingots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
]
},
"blocked_access_to_recipe": [
"0"
],
"goal": {
"0": "Collaborate with other agents around you to make baked_potato, golden_apple.",
"1": "Collaborate with agents around you to make 1 baked_potato, 1 golden_apple. \n\nRecipe for baked_potato:\nStep 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\nStep 2: Go to the furnace and bake the potato.\n\nRecipe for golden_apple:\nStep 1: Go to the chest and collect 1 apple and 8 gold ingots.\nStep 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
}
},
"multiagent_cooking_2_1_baked_potato_1_rabbit_stew": {
"conversation": "Let's work together to make baked_potato, rabbit_stew.",
"agent_count": 2,
"target": {
"baked_potato": 1,
"rabbit_stew": 1
},
"type": "cooking",
"timeout": 1500,
"recipes": {
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Go to the furnace and bake the potato."
],
"rabbit_stew": [
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
"Step 2: Go to the furnace and bake the potato.",
"Step 3: Go to the chest and grab a bowl",
"Step 5: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
"Step 6: Go to the furnace and cook the raw rabbit.",
"Step 7: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
]
},
"blocked_access_to_recipe": [
"0"
],
"goal": {
"0": "Collaborate with other agents around you to make baked_potato, rabbit_stew.",
"1": "Collaborate with agents around you to make 1 baked_potato, 1 rabbit_stew. \n\nRecipe for baked_potato:\nStep 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\nStep 2: Go to the furnace and bake the potato.\n\nRecipe for rabbit_stew:\nStep 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\nStep 2: Go to the furnace and bake the potato.\nStep 3: Go to the chest and grab a bowl\nStep 5: Kill a rabbit and pick up 1 raw rabbit that is dropped.\nStep 6: Go to the furnace and cook the raw rabbit.\nStep 7: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
}
},
"multiagent_cooking_2_1_bread_1_rabbit_stew": {
"conversation": "Let's work together to make rabbit_stew, bread.",
"agent_count": 2,
"target": {
"rabbit_stew": 1,
"bread": 1
},
"type": "cooking",
"timeout": 1500,
"recipes": {
"rabbit_stew": [
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
"Step 2: Go to the furnace and bake the potato.",
"Step 3: Go to the chest and grab a bowl",
"Step 5: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
"Step 6: Go to the furnace and cook the raw rabbit.",
"Step 7: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
],
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
]
},
"blocked_access_to_recipe": [
"0"
],
"goal": {
"0": "Collaborate with other agents around you to make rabbit_stew, bread.",
"1": "Collaborate with agents around you to make 1 rabbit_stew, 1 bread. \n\nRecipe for rabbit_stew:\nStep 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\nStep 2: Go to the furnace and bake the potato.\nStep 3: Go to the chest and grab a bowl\nStep 5: Kill a rabbit and pick up 1 raw rabbit that is dropped.\nStep 6: Go to the furnace and cook the raw rabbit.\nStep 7: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.\n\nRecipe for bread:\nStep 1: Go to the farm and collect 3 wheat.\nStep 2: Go to the crafting table and use the wheat to craft bread."
}
},
"multiagent_cooking_2_1_baked_potato_1_bread": {
"conversation": "Let's work together to make bread, baked_potato.",
"agent_count": 2,
"target": {
"bread": 1,
"baked_potato": 1
},
"type": "cooking",
"timeout": 1500,
"recipes": {
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
],
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Go to the furnace and bake the potato."
]
},
"blocked_access_to_recipe": [
"0"
],
"goal": {
"0": "Collaborate with other agents around you to make bread, baked_potato.",
"1": "Collaborate with agents around you to make 1 bread, 1 baked_potato. \n\nRecipe for bread:\nStep 1: Go to the farm and collect 3 wheat.\nStep 2: Go to the crafting table and use the wheat to craft bread.\n\nRecipe for baked_potato:\nStep 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\nStep 2: Go to the furnace and bake the potato."
}
},
"multiagent_cooking_2_1_baked_potato_1_cake": {
"conversation": "Let's work together to make baked_potato, cake.",
"agent_count": 2,
"target": {
"baked_potato": 1,
"cake": 1
},
"type": "cooking",
"timeout": 1500,
"recipes": {
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Go to the furnace and bake the potato."
],
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: Go to the chest and grab 3 milk buckets.",
"Step 3: Go to the chest and grab an egg.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
]
},
"blocked_access_to_recipe": [
"0"
],
"goal": {
"0": "Collaborate with other agents around you to make baked_potato, cake.",
"1": "Collaborate with agents around you to make 1 baked_potato, 1 cake. \n\nRecipe for baked_potato:\nStep 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\nStep 2: Go to the furnace and bake the potato.\n\nRecipe for cake:\nStep 1: Go to the farm and collect 3 wheat, 2 sugar cane.\nStep 2: Go to the chest and grab 3 milk buckets.\nStep 3: Go to the chest and grab an egg.\nStep 4: Go to the crafting table and craft the sugarcane into sugar.\nStep 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
}
},
"multiagent_cooking_2_1_cooked_beef_1_golden_apple": {
"conversation": "Let's work together to make golden_apple, cooked_beef.",
"agent_count": 2,
"target": {
"golden_apple": 1,
"cooked_beef": 1
},
"type": "cooking",
"timeout": 1500,
"recipes": {
"golden_apple": [
"Step 1: Go to the chest and collect 1 apple and 8 gold ingots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"cooked_beef": [
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
"Step 2: Go to furnace and use it to cook the beef."
]
},
"blocked_access_to_recipe": [
"0"
],
"goal": {
"0": "Collaborate with other agents around you to make golden_apple, cooked_beef.",
"1": "Collaborate with agents around you to make 1 golden_apple, 1 cooked_beef. \n\nRecipe for golden_apple:\nStep 1: Go to the chest and collect 1 apple and 8 gold ingots.\nStep 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.\n\nRecipe for cooked_beef:\nStep 1: Kill a cow and pick up 1 beef that is dropped.\nStep 2: Go to furnace and use it to cook the beef."
}
},
"multiagent_cooking_2_1_bread_1_cooked_beef": {
"conversation": "Let's work together to make bread, cooked_beef.",
"agent_count": 2,
"target": {
"bread": 1,
"cooked_beef": 1
},
"type": "cooking",
"timeout": 1500,
"recipes": {
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
],
"cooked_beef": [
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
"Step 2: Go to furnace and use it to cook the beef."
]
},
"blocked_access_to_recipe": [
"0"
],
"goal": {
"0": "Collaborate with other agents around you to make bread, cooked_beef.",
"1": "Collaborate with agents around you to make 1 bread, 1 cooked_beef. \n\nRecipe for bread:\nStep 1: Go to the farm and collect 3 wheat.\nStep 2: Go to the crafting table and use the wheat to craft bread.\n\nRecipe for cooked_beef:\nStep 1: Kill a cow and pick up 1 beef that is dropped.\nStep 2: Go to furnace and use it to cook the beef."
}
}
}

View file

@ -0,0 +1,438 @@
{
"multiagent_cooking_rabbit_stew_cake_partial_plan": {
"type": "cooking",
"recipes": {
"rabbit_stew": [
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to the furnace and bake the potato.",
"Step 5: From your inventory or other agents get a bowl",
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
"Step 7: Go to the furnace and cook the raw rabbit.",
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
],
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
]
},
"agent_count": 2,
"target": {
"rabbit_stew": 1,
"cake": 1
},
"initial_inventory": {
"0": {
"bowl": 1,
"milk_bucket": 2
},
"1": {
"milk_bucket": 1,
"egg": 1
}
},
"goal": {
"0": "Collaborate with other agents around you to make rabbit_stew, cake, The recipes are as follows:\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\n",
"1": "Collaborate with other agents around you to make rabbit_stew, cake, "
},
"conversation": "Let's collaborate to make rabbit_stew, cake, "
},
"multiagent_cooking_cake_baked_potato_partial_plan": {
"type": "cooking",
"recipes": {
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
],
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
]
},
"agent_count": 2,
"target": {
"cake": 1,
"baked_potato": 1
},
"initial_inventory": {
"0": {
"milk_bucket": 2,
"coal": 1
},
"1": {
"milk_bucket": 1,
"egg": 1
}
},
"goal": {
"0": "Collaborate with other agents around you to make cake, baked_potato, The recipes are as follows:\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\n",
"1": "Collaborate with other agents around you to make cake, baked_potato, "
},
"conversation": "Let's collaborate to make cake, baked_potato, "
},
"multiagent_cooking_golden_apple_cooked_beef_partial_plan": {
"type": "cooking",
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"cooked_beef": [
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to furnace and use it to cook the beef."
]
},
"agent_count": 2,
"target": {
"golden_apple": 1,
"cooked_beef": 1
},
"initial_inventory": {
"0": {
"gold_ingot": 4,
"apple": 1
},
"1": {
"gold_ingot": 4,
"coal": 1
}
},
"goal": {
"0": "Collaborate with other agents around you to make golden_apple, cooked_beef, The recipes are as follows:\nRecipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n",
"1": "Collaborate with other agents around you to make golden_apple, cooked_beef, "
},
"conversation": "Let's collaborate to make golden_apple, cooked_beef, "
},
"multiagent_cooking_cake_cooked_beef_partial_plan": {
"type": "cooking",
"recipes": {
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
],
"cooked_beef": [
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to furnace and use it to cook the beef."
]
},
"agent_count": 2,
"target": {
"cake": 1,
"cooked_beef": 1
},
"initial_inventory": {
"0": {
"milk_bucket": 2,
"coal": 1
},
"1": {
"milk_bucket": 1,
"egg": 1
}
},
"goal": {
"0": "Collaborate with other agents around you to make cake, cooked_beef, The recipes are as follows:\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n",
"1": "Collaborate with other agents around you to make cake, cooked_beef, "
},
"conversation": "Let's collaborate to make cake, cooked_beef, "
},
"multiagent_cooking_bread_baked_potato_partial_plan": {
"type": "cooking",
"recipes": {
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
],
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
]
},
"agent_count": 2,
"target": {
"bread": 1,
"baked_potato": 1
},
"initial_inventory": {
"0": {
"coal": 1
},
"1": {}
},
"goal": {
"0": "Collaborate with other agents around you to make bread, baked_potato, The recipes are as follows:\nRecipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\n",
"1": "Collaborate with other agents around you to make bread, baked_potato, "
},
"conversation": "Let's collaborate to make bread, baked_potato, "
},
"multiagent_cooking_rabbit_stew_baked_potato_partial_plan": {
"type": "cooking",
"recipes": {
"rabbit_stew": [
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to the furnace and bake the potato.",
"Step 5: From your inventory or other agents get a bowl",
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
"Step 7: Go to the furnace and cook the raw rabbit.",
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
],
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
]
},
"agent_count": 2,
"target": {
"rabbit_stew": 1,
"baked_potato": 1
},
"initial_inventory": {
"0": {
"bowl": 1
},
"1": {
"coal": 1
}
},
"goal": {
"0": "Collaborate with other agents around you to make rabbit_stew, baked_potato, The recipes are as follows:\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\n",
"1": "Collaborate with other agents around you to make rabbit_stew, baked_potato, "
},
"conversation": "Let's collaborate to make rabbit_stew, baked_potato, "
},
"multiagent_cooking_golden_apple_cake_partial_plan": {
"type": "cooking",
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
]
},
"agent_count": 2,
"target": {
"golden_apple": 1,
"cake": 1
},
"initial_inventory": {
"0": {
"gold_ingot": 4,
"apple": 1,
"milk_bucket": 2
},
"1": {
"gold_ingot": 4,
"milk_bucket": 1,
"egg": 1
}
},
"goal": {
"0": "Collaborate with other agents around you to make golden_apple, cake, The recipes are as follows:\nRecipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\n",
"1": "Collaborate with other agents around you to make golden_apple, cake, "
},
"conversation": "Let's collaborate to make golden_apple, cake, "
},
"multiagent_cooking_rabbit_stew_cooked_beef_partial_plan": {
"type": "cooking",
"recipes": {
"rabbit_stew": [
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to the furnace and bake the potato.",
"Step 5: From your inventory or other agents get a bowl",
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
"Step 7: Go to the furnace and cook the raw rabbit.",
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
],
"cooked_beef": [
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to furnace and use it to cook the beef."
]
},
"agent_count": 2,
"target": {
"rabbit_stew": 1,
"cooked_beef": 1
},
"initial_inventory": {
"0": {
"bowl": 1
},
"1": {
"coal": 1
}
},
"goal": {
"0": "Collaborate with other agents around you to make rabbit_stew, cooked_beef, The recipes are as follows:\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n",
"1": "Collaborate with other agents around you to make rabbit_stew, cooked_beef, "
},
"conversation": "Let's collaborate to make rabbit_stew, cooked_beef, "
},
"multiagent_cooking_bread_cooked_beef_partial_plan": {
"type": "cooking",
"recipes": {
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
],
"cooked_beef": [
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to furnace and use it to cook the beef."
]
},
"agent_count": 2,
"target": {
"bread": 1,
"cooked_beef": 1
},
"initial_inventory": {
"0": {
"coal": 1
},
"1": {}
},
"goal": {
"0": "Collaborate with other agents around you to make bread, cooked_beef, The recipes are as follows:\nRecipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n",
"1": "Collaborate with other agents around you to make bread, cooked_beef, "
},
"conversation": "Let's collaborate to make bread, cooked_beef, "
},
"multiagent_cooking_baked_potato_cooked_beef_partial_plan": {
"type": "cooking",
"recipes": {
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
],
"cooked_beef": [
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to furnace and use it to cook the beef."
]
},
"agent_count": 2,
"target": {
"baked_potato": 1,
"cooked_beef": 1
},
"initial_inventory": {
"0": {
"coal": 1
},
"1": {
"coal": 1
}
},
"goal": {
"0": "Collaborate with other agents around you to make baked_potato, cooked_beef, The recipes are as follows:\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n",
"1": "Collaborate with other agents around you to make baked_potato, cooked_beef, "
},
"conversation": "Let's collaborate to make baked_potato, cooked_beef, "
},
"multiagent_cooking_golden_apple_baked_potato_partial_plan": {
"type": "cooking",
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
]
},
"agent_count": 2,
"target": {
"golden_apple": 1,
"baked_potato": 1
},
"initial_inventory": {
"0": {
"gold_ingot": 4,
"apple": 1
},
"1": {
"gold_ingot": 4,
"coal": 1
}
},
"goal": {
"0": "Collaborate with other agents around you to make golden_apple, baked_potato, The recipes are as follows:\nRecipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\n",
"1": "Collaborate with other agents around you to make golden_apple, baked_potato, "
},
"conversation": "Let's collaborate to make golden_apple, baked_potato, "
},
"multiagent_cooking_bread_rabbit_stew_partial_plan": {
"type": "cooking",
"recipes": {
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
],
"rabbit_stew": [
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to the furnace and bake the potato.",
"Step 5: From your inventory or other agents get a bowl",
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
"Step 7: Go to the furnace and cook the raw rabbit.",
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
]
},
"agent_count": 2,
"target": {
"bread": 1,
"rabbit_stew": 1
},
"initial_inventory": {
"0": {
"bowl": 1
},
"1": {}
},
"goal": {
"0": "Collaborate with other agents around you to make bread, rabbit_stew, The recipes are as follows:\nRecipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\n",
"1": "Collaborate with other agents around you to make bread, rabbit_stew, "
},
"conversation": "Let's collaborate to make bread, rabbit_stew, "
}
}

View file

@ -0,0 +1,544 @@
{
"multiagent_cooking_bread_golden_apple": {
"type": "cooking",
"recipes": {
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
],
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
]
},
"agent_count": 2,
"target": {
"bread": 1,
"golden_apple": 1
},
"initial_inventory": {
"0": {
"gold_ingot": 4,
"apple": 1
},
"1": {
"gold_ingot": 4
}
},
"goal": {
"0": "Collaborate with other agents around you to make bread, golden_apple, The recipes are as follows:\nRecipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']\nRecipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']\n",
"1": "Collaborate with other agents around you to make bread, golden_apple, The recipes are as follows:\nRecipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']\nRecipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']\n"
},
"conversation": "Let's collaborate to make bread, golden_apple, "
},
"multiagent_cooking_bread_rabbit_stew": {
"type": "cooking",
"recipes": {
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
],
"rabbit_stew": [
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to the furnace and bake the potato.",
"Step 5: From your inventory or other agents get a bowl",
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
"Step 7: Go to the furnace and cook the raw rabbit.",
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
]
},
"agent_count": 2,
"target": {
"bread": 1,
"rabbit_stew": 1
},
"initial_inventory": {
"0": {
"bowl": 1
},
"1": {}
},
"goal": {
"0": "Collaborate with other agents around you to make bread, rabbit_stew, The recipes are as follows:\nRecipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\n",
"1": "Collaborate with other agents around you to make bread, rabbit_stew, The recipes are as follows:\nRecipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\n"
},
"conversation": "Let's collaborate to make bread, rabbit_stew, "
},
"multiagent_cooking_bread_cake": {
"type": "cooking",
"recipes": {
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
],
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
]
},
"agent_count": 2,
"target": {
"bread": 1,
"cake": 1
},
"initial_inventory": {
"0": {
"milk_bucket": 2
},
"1": {
"milk_bucket": 1,
"egg": 1
}
},
"goal": {
"0": "Collaborate with other agents around you to make bread, cake, The recipes are as follows:\nRecipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\n",
"1": "Collaborate with other agents around you to make bread, cake, The recipes are as follows:\nRecipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\n"
},
"conversation": "Let's collaborate to make bread, cake, "
},
"multiagent_cooking_bread_baked_potato": {
"type": "cooking",
"recipes": {
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
],
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
]
},
"agent_count": 2,
"target": {
"bread": 1,
"baked_potato": 1
},
"initial_inventory": {
"0": {
"coal": 1
},
"1": {}
},
"goal": {
"0": "Collaborate with other agents around you to make bread, baked_potato, The recipes are as follows:\nRecipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\n",
"1": "Collaborate with other agents around you to make bread, baked_potato, The recipes are as follows:\nRecipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\n"
},
"conversation": "Let's collaborate to make bread, baked_potato, "
},
"multiagent_cooking_bread_cooked_beef": {
"type": "cooking",
"recipes": {
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
],
"cooked_beef": [
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to furnace and use it to cook the beef."
]
},
"agent_count": 2,
"target": {
"bread": 1,
"cooked_beef": 1
},
"initial_inventory": {
"0": {
"coal": 1
},
"1": {}
},
"goal": {
"0": "Collaborate with other agents around you to make bread, cooked_beef, The recipes are as follows:\nRecipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n",
"1": "Collaborate with other agents around you to make bread, cooked_beef, The recipes are as follows:\nRecipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n"
},
"conversation": "Let's collaborate to make bread, cooked_beef, "
},
"multiagent_cooking_golden_apple_rabbit_stew": {
"type": "cooking",
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"rabbit_stew": [
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to the furnace and bake the potato.",
"Step 5: From your inventory or other agents get a bowl",
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
"Step 7: Go to the furnace and cook the raw rabbit.",
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
]
},
"agent_count": 2,
"target": {
"golden_apple": 1,
"rabbit_stew": 1
},
"initial_inventory": {
"0": {
"gold_ingot": 4,
"apple": 1
},
"1": {
"gold_ingot": 4,
"bowl": 1
}
},
"goal": {
"0": "Collaborate with other agents around you to make golden_apple, rabbit_stew, The recipes are as follows:\nRecipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\n",
"1": "Collaborate with other agents around you to make golden_apple, rabbit_stew, The recipes are as follows:\nRecipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\n"
},
"conversation": "Let's collaborate to make golden_apple, rabbit_stew, "
},
"multiagent_cooking_golden_apple_cake": {
"type": "cooking",
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
]
},
"agent_count": 2,
"target": {
"golden_apple": 1,
"cake": 1
},
"initial_inventory": {
"0": {
"gold_ingot": 4,
"apple": 1,
"milk_bucket": 2
},
"1": {
"gold_ingot": 4,
"milk_bucket": 1,
"egg": 1
}
},
"goal": {
"0": "Collaborate with other agents around you to make golden_apple, cake, The recipes are as follows:\nRecipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\n",
"1": "Collaborate with other agents around you to make golden_apple, cake, The recipes are as follows:\nRecipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\n"
},
"conversation": "Let's collaborate to make golden_apple, cake, "
},
"multiagent_cooking_golden_apple_baked_potato": {
"type": "cooking",
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
]
},
"agent_count": 2,
"target": {
"golden_apple": 1,
"baked_potato": 1
},
"initial_inventory": {
"0": {
"gold_ingot": 4,
"apple": 1
},
"1": {
"gold_ingot": 4,
"coal": 1
}
},
"goal": {
"0": "Collaborate with other agents around you to make golden_apple, baked_potato, The recipes are as follows:\nRecipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\n",
"1": "Collaborate with other agents around you to make golden_apple, baked_potato, The recipes are as follows:\nRecipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\n"
},
"conversation": "Let's collaborate to make golden_apple, baked_potato, "
},
"multiagent_cooking_golden_apple_cooked_beef": {
"type": "cooking",
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"cooked_beef": [
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to furnace and use it to cook the beef."
]
},
"agent_count": 2,
"target": {
"golden_apple": 1,
"cooked_beef": 1
},
"initial_inventory": {
"0": {
"gold_ingot": 4,
"apple": 1
},
"1": {
"gold_ingot": 4,
"coal": 1
}
},
"goal": {
"0": "Collaborate with other agents around you to make golden_apple, cooked_beef, The recipes are as follows:\nRecipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n",
"1": "Collaborate with other agents around you to make golden_apple, cooked_beef, The recipes are as follows:\nRecipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n"
},
"conversation": "Let's collaborate to make golden_apple, cooked_beef, "
},
"multiagent_cooking_rabbit_stew_cake": {
"type": "cooking",
"recipes": {
"rabbit_stew": [
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to the furnace and bake the potato.",
"Step 5: From your inventory or other agents get a bowl",
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
"Step 7: Go to the furnace and cook the raw rabbit.",
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
],
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
]
},
"agent_count": 2,
"target": {
"rabbit_stew": 1,
"cake": 1
},
"initial_inventory": {
"0": {
"bowl": 1,
"milk_bucket": 2
},
"1": {
"milk_bucket": 1,
"egg": 1
}
},
"goal": {
"0": "Collaborate with other agents around you to make rabbit_stew, cake, The recipes are as follows:\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\n",
"1": "Collaborate with other agents around you to make rabbit_stew, cake, The recipes are as follows:\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\n"
},
"conversation": "Let's collaborate to make rabbit_stew, cake, "
},
"multiagent_cooking_rabbit_stew_baked_potato": {
"type": "cooking",
"recipes": {
"rabbit_stew": [
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to the furnace and bake the potato.",
"Step 5: From your inventory or other agents get a bowl",
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
"Step 7: Go to the furnace and cook the raw rabbit.",
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
],
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
]
},
"agent_count": 2,
"target": {
"rabbit_stew": 1,
"baked_potato": 1
},
"initial_inventory": {
"0": {
"bowl": 1
},
"1": {
"coal": 1
}
},
"goal": {
"0": "Collaborate with other agents around you to make rabbit_stew, baked_potato, The recipes are as follows:\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\n",
"1": "Collaborate with other agents around you to make rabbit_stew, baked_potato, The recipes are as follows:\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\n"
},
"conversation": "Let's collaborate to make rabbit_stew, baked_potato, "
},
"multiagent_cooking_rabbit_stew_cooked_beef": {
"type": "cooking",
"recipes": {
"rabbit_stew": [
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to the furnace and bake the potato.",
"Step 5: From your inventory or other agents get a bowl",
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
"Step 7: Go to the furnace and cook the raw rabbit.",
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
],
"cooked_beef": [
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to furnace and use it to cook the beef."
]
},
"agent_count": 2,
"target": {
"rabbit_stew": 1,
"cooked_beef": 1
},
"initial_inventory": {
"0": {
"bowl": 1
},
"1": {
"coal": 1
}
},
"goal": {
"0": "Collaborate with other agents around you to make rabbit_stew, cooked_beef, The recipes are as follows:\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n",
"1": "Collaborate with other agents around you to make rabbit_stew, cooked_beef, The recipes are as follows:\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n"
},
"conversation": "Let's collaborate to make rabbit_stew, cooked_beef, "
},
"multiagent_cooking_cake_baked_potato": {
"type": "cooking",
"recipes": {
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
],
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
]
},
"agent_count": 2,
"target": {
"cake": 1,
"baked_potato": 1
},
"initial_inventory": {
"0": {
"milk_bucket": 2,
"coal": 1
},
"1": {
"milk_bucket": 1,
"egg": 1
}
},
"goal": {
"0": "Collaborate with other agents around you to make cake, baked_potato, The recipes are as follows:\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\n",
"1": "Collaborate with other agents around you to make cake, baked_potato, The recipes are as follows:\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\n"
},
"conversation": "Let's collaborate to make cake, baked_potato, "
},
"multiagent_cooking_cake_cooked_beef": {
"type": "cooking",
"recipes": {
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
],
"cooked_beef": [
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to furnace and use it to cook the beef."
]
},
"agent_count": 2,
"target": {
"cake": 1,
"cooked_beef": 1
},
"initial_inventory": {
"0": {
"milk_bucket": 2,
"coal": 1
},
"1": {
"milk_bucket": 1,
"egg": 1
}
},
"goal": {
"0": "Collaborate with other agents around you to make cake, cooked_beef, The recipes are as follows:\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n",
"1": "Collaborate with other agents around you to make cake, cooked_beef, The recipes are as follows:\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n"
},
"conversation": "Let's collaborate to make cake, cooked_beef, "
},
"multiagent_cooking_baked_potato_cooked_beef": {
"type": "cooking",
"recipes": {
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
],
"cooked_beef": [
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to furnace and use it to cook the beef."
]
},
"agent_count": 2,
"target": {
"baked_potato": 1,
"cooked_beef": 1
},
"initial_inventory": {
"0": {
"coal": 1
},
"1": {
"coal": 1
}
},
"goal": {
"0": "Collaborate with other agents around you to make baked_potato, cooked_beef, The recipes are as follows:\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n",
"1": "Collaborate with other agents around you to make baked_potato, cooked_beef, The recipes are as follows:\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n"
},
"conversation": "Let's collaborate to make baked_potato, cooked_beef, "
}
}

View file

@ -0,0 +1,438 @@
{
"multiagent_cooking_golden_apple_baked_potato": {
"type": "cooking",
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
]
},
"agent_count": 2,
"target": {
"golden_apple": 1,
"baked_potato": 1
},
"initial_inventory": {
"0": {
"gold_ingot": 4,
"apple": 1
},
"1": {
"gold_ingot": 4,
"coal": 1
}
},
"goal": {
"0": "Collaborate with other agents around you to make golden_apple, baked_potato, The recipes are as follows:\nRecipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\n",
"1": "Collaborate with other agents around you to make golden_apple, baked_potato, The recipes are as follows:\nRecipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\n"
},
"conversation": "Let's collaborate to make golden_apple, baked_potato, "
},
"multiagent_cooking_rabbit_stew_baked_potato": {
"type": "cooking",
"recipes": {
"rabbit_stew": [
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to the furnace and bake the potato.",
"Step 5: From your inventory or other agents get a bowl",
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
"Step 7: Go to the furnace and cook the raw rabbit.",
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
],
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
]
},
"agent_count": 2,
"target": {
"rabbit_stew": 1,
"baked_potato": 1
},
"initial_inventory": {
"0": {
"bowl": 1
},
"1": {
"coal": 1
}
},
"goal": {
"0": "Collaborate with other agents around you to make rabbit_stew, baked_potato, The recipes are as follows:\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\n",
"1": "Collaborate with other agents around you to make rabbit_stew, baked_potato, The recipes are as follows:\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\n"
},
"conversation": "Let's collaborate to make rabbit_stew, baked_potato, "
},
"multiagent_cooking_bread_rabbit_stew": {
"type": "cooking",
"recipes": {
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
],
"rabbit_stew": [
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to the furnace and bake the potato.",
"Step 5: From your inventory or other agents get a bowl",
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
"Step 7: Go to the furnace and cook the raw rabbit.",
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
]
},
"agent_count": 2,
"target": {
"bread": 1,
"rabbit_stew": 1
},
"initial_inventory": {
"0": {
"bowl": 1
},
"1": {}
},
"goal": {
"0": "Collaborate with other agents around you to make bread, rabbit_stew, The recipes are as follows:\nRecipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\n",
"1": "Collaborate with other agents around you to make bread, rabbit_stew, The recipes are as follows:\nRecipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\n"
},
"conversation": "Let's collaborate to make bread, rabbit_stew, "
},
"multiagent_cooking_bread_baked_potato": {
"type": "cooking",
"recipes": {
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
],
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
]
},
"agent_count": 2,
"target": {
"bread": 1,
"baked_potato": 1
},
"initial_inventory": {
"0": {
"coal": 1
},
"1": {}
},
"goal": {
"0": "Collaborate with other agents around you to make bread, baked_potato, The recipes are as follows:\nRecipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\n",
"1": "Collaborate with other agents around you to make bread, baked_potato, The recipes are as follows:\nRecipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\n"
},
"conversation": "Let's collaborate to make bread, baked_potato, "
},
"multiagent_cooking_baked_potato_cooked_beef": {
"type": "cooking",
"recipes": {
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
],
"cooked_beef": [
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to furnace and use it to cook the beef."
]
},
"agent_count": 2,
"target": {
"baked_potato": 1,
"cooked_beef": 1
},
"initial_inventory": {
"0": {
"coal": 1
},
"1": {
"coal": 1
}
},
"goal": {
"0": "Collaborate with other agents around you to make baked_potato, cooked_beef, The recipes are as follows:\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n",
"1": "Collaborate with other agents around you to make baked_potato, cooked_beef, The recipes are as follows:\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n"
},
"conversation": "Let's collaborate to make baked_potato, cooked_beef, "
},
"multiagent_cooking_cake_cooked_beef": {
"type": "cooking",
"recipes": {
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
],
"cooked_beef": [
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to furnace and use it to cook the beef."
]
},
"agent_count": 2,
"target": {
"cake": 1,
"cooked_beef": 1
},
"initial_inventory": {
"0": {
"milk_bucket": 2,
"coal": 1
},
"1": {
"milk_bucket": 1,
"egg": 1
}
},
"goal": {
"0": "Collaborate with other agents around you to make cake, cooked_beef, The recipes are as follows:\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n",
"1": "Collaborate with other agents around you to make cake, cooked_beef, The recipes are as follows:\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n"
},
"conversation": "Let's collaborate to make cake, cooked_beef, "
},
"multiagent_cooking_rabbit_stew_cake": {
"type": "cooking",
"recipes": {
"rabbit_stew": [
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to the furnace and bake the potato.",
"Step 5: From your inventory or other agents get a bowl",
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
"Step 7: Go to the furnace and cook the raw rabbit.",
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
],
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
]
},
"agent_count": 2,
"target": {
"rabbit_stew": 1,
"cake": 1
},
"initial_inventory": {
"0": {
"bowl": 1,
"milk_bucket": 2
},
"1": {
"milk_bucket": 1,
"egg": 1
}
},
"goal": {
"0": "Collaborate with other agents around you to make rabbit_stew, cake, The recipes are as follows:\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\n",
"1": "Collaborate with other agents around you to make rabbit_stew, cake, The recipes are as follows:\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\n"
},
"conversation": "Let's collaborate to make rabbit_stew, cake, "
},
"multiagent_cooking_golden_apple_cooked_beef": {
"type": "cooking",
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"cooked_beef": [
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to furnace and use it to cook the beef."
]
},
"agent_count": 2,
"target": {
"golden_apple": 1,
"cooked_beef": 1
},
"initial_inventory": {
"0": {
"gold_ingot": 4,
"apple": 1
},
"1": {
"gold_ingot": 4,
"coal": 1
}
},
"goal": {
"0": "Collaborate with other agents around you to make golden_apple, cooked_beef, The recipes are as follows:\nRecipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n",
"1": "Collaborate with other agents around you to make golden_apple, cooked_beef, The recipes are as follows:\nRecipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n"
},
"conversation": "Let's collaborate to make golden_apple, cooked_beef, "
},
"multiagent_cooking_rabbit_stew_cooked_beef": {
"type": "cooking",
"recipes": {
"rabbit_stew": [
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to the furnace and bake the potato.",
"Step 5: From your inventory or other agents get a bowl",
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
"Step 7: Go to the furnace and cook the raw rabbit.",
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
],
"cooked_beef": [
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to furnace and use it to cook the beef."
]
},
"agent_count": 2,
"target": {
"rabbit_stew": 1,
"cooked_beef": 1
},
"initial_inventory": {
"0": {
"bowl": 1
},
"1": {
"coal": 1
}
},
"goal": {
"0": "Collaborate with other agents around you to make rabbit_stew, cooked_beef, The recipes are as follows:\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n",
"1": "Collaborate with other agents around you to make rabbit_stew, cooked_beef, The recipes are as follows:\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n"
},
"conversation": "Let's collaborate to make rabbit_stew, cooked_beef, "
},
"multiagent_cooking_golden_apple_cake": {
"type": "cooking",
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
]
},
"agent_count": 2,
"target": {
"golden_apple": 1,
"cake": 1
},
"initial_inventory": {
"0": {
"gold_ingot": 4,
"apple": 1,
"milk_bucket": 2
},
"1": {
"gold_ingot": 4,
"milk_bucket": 1,
"egg": 1
}
},
"goal": {
"0": "Collaborate with other agents around you to make golden_apple, cake, The recipes are as follows:\nRecipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\n",
"1": "Collaborate with other agents around you to make golden_apple, cake, The recipes are as follows:\nRecipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\n"
},
"conversation": "Let's collaborate to make golden_apple, cake, "
},
"multiagent_cooking_bread_cooked_beef": {
"type": "cooking",
"recipes": {
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
],
"cooked_beef": [
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to furnace and use it to cook the beef."
]
},
"agent_count": 2,
"target": {
"bread": 1,
"cooked_beef": 1
},
"initial_inventory": {
"0": {
"coal": 1
},
"1": {}
},
"goal": {
"0": "Collaborate with other agents around you to make bread, cooked_beef, The recipes are as follows:\nRecipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n",
"1": "Collaborate with other agents around you to make bread, cooked_beef, The recipes are as follows:\nRecipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n"
},
"conversation": "Let's collaborate to make bread, cooked_beef, "
},
"multiagent_cooking_cake_baked_potato": {
"type": "cooking",
"recipes": {
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
],
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
]
},
"agent_count": 2,
"target": {
"cake": 1,
"baked_potato": 1
},
"initial_inventory": {
"0": {
"milk_bucket": 2,
"coal": 1
},
"1": {
"milk_bucket": 1,
"egg": 1
}
},
"goal": {
"0": "Collaborate with other agents around you to make cake, baked_potato, The recipes are as follows:\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\n",
"1": "Collaborate with other agents around you to make cake, baked_potato, The recipes are as follows:\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\n"
},
"conversation": "Let's collaborate to make cake, baked_potato, "
}
}

View file

@ -0,0 +1,286 @@
{
"multiagent_cooking_bread_golden_apple_hells_kitchen": {
"conversation": "We need to make bread and golden_apple together. You are supposed to make golden_apple and I am supposed to make bread, but I only have YOUR recipe and you only have access to MY recipe! Let's exchange information and get cooking!",
"agent_count": 2,
"target": [
"bread",
"golden_apple"
],
"type": "cooking",
"timeout": 300,
"recipes": {
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
],
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "You need to make bread, but you don't have the recipe for it, your partner has it!\n\nYour partner needs to make golden_apple. You have their recipe:\nRecipe for golden_apple:\nStep 1: Get 1 apple and 8 gold ingots from your inventory or other bots.\nStep 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.\n\nYou must communicate effectively to exchange recipe information and complete both dishes. Note: You can only guide your partner with recipe steps. You cannot help with ingredient collection or cooking.",
"1": "You need to make golden_apple, but you don't have the recipe for it, your partner has it!\n\nYour partner needs to make bread. You have their recipe:\nRecipe for bread:\nStep 1: Go to the farm and collect 3 wheat.\nStep 2: Go to the crafting table and use the wheat to craft bread.\n\nYou must communicate effectively to exchange recipe information and complete both dishes. Note: You can only guide your partner with recipe steps. You cannot help with ingredient collection or cooking."
},
"task_type": "cooking",
"difficulty_metrics": {
"total_recipe_steps": 4,
"max_steps_per_recipe": 2,
"unique_target_items": 2,
"overall_difficulty_score": 4,
"difficulty_category": "medium"
},
"difficulty": "medium",
"initial_inventory": {
"0": {
"gold_ingot": 5
},
"1": {
"gold_ingot": 5,
"apple": 1
}
}
},
"multiagent_cooking_golden_apple_rabbit_stew_hells_kitchen": {
"conversation": "We need to make golden_apple and rabbit_stew together. You are supposed to make rabbit_stew and I am supposed to make golden_apple, but I only have YOUR recipe and you only have access to MY recipe! Let's exchange information and get cooking!",
"agent_count": 2,
"target": [
"golden_apple",
"rabbit_stew"
],
"type": "cooking",
"timeout": 300,
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"rabbit_stew": [
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to the furnace and bake the potato.",
"Step 5: From your inventory or other agents get a bowl",
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
"Step 7: Go to the furnace and cook the raw rabbit.",
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "You need to make golden_apple, but you don't have the recipe for it, your partner has it!\n\nYour partner needs to make rabbit_stew. You have their recipe:\nRecipe for rabbit_stew:\nStep 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\nStep 2: Get coal from your inventory or other agents.\nStep 3: Put coal in the furnace\nStep 4: Go to the furnace and bake the potato.\nStep 5: From your inventory or other agents get a bowl\nStep 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.\nStep 7: Go to the furnace and cook the raw rabbit.\nStep 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.\n\nYou must communicate effectively to exchange recipe information and complete both dishes. Note: You can only guide your partner with recipe steps. You cannot help with ingredient collection or cooking.",
"1": "You need to make rabbit_stew, but you don't have the recipe for it, your partner has it!\n\nYour partner needs to make golden_apple. You have their recipe:\nRecipe for golden_apple:\nStep 1: Get 1 apple and 8 gold ingots from your inventory or other bots.\nStep 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.\n\nYou must communicate effectively to exchange recipe information and complete both dishes. Note: You can only guide your partner with recipe steps. You cannot help with ingredient collection or cooking."
},
"task_type": "cooking",
"difficulty_metrics": {
"total_recipe_steps": 10,
"max_steps_per_recipe": 8,
"unique_target_items": 2,
"overall_difficulty_score": 6,
"difficulty_category": "hard"
},
"difficulty": "hard",
"initial_inventory": {
"0": {
"gold_ingot": 5,
"bowl": 1
},
"1": {
"gold_ingot": 5,
"apple": 1
}
}
},
"multiagent_cooking_bread_cake_hells_kitchen": {
"conversation": "We need to make bread and cake together. You are supposed to make cake and I am supposed to make bread, but I only have YOUR recipe and you only have access to MY recipe! Let's exchange information and get cooking!",
"agent_count": 2,
"target": [
"bread",
"cake"
],
"type": "cooking",
"timeout": 300,
"recipes": {
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
],
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "You need to make bread, but you don't have the recipe for it, your partner has it!\n\nYour partner needs to make cake. You have their recipe:\nRecipe for cake:\nStep 1: Go to the farm and collect 3 wheat, 2 sugar cane.\nStep 2: From your inventory or other agents get 3 milk buckets (already filled with milk).\nStep 3: Get an egg from your inventory or other agents.\nStep 4: Go to the crafting table and craft the sugarcane into sugar.\nStep 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.\n\nYou must communicate effectively to exchange recipe information and complete both dishes. Note: You can only guide your partner with recipe steps. You cannot help with ingredient collection or cooking.",
"1": "You need to make cake, but you don't have the recipe for it, your partner has it!\n\nYour partner needs to make bread. You have their recipe:\nRecipe for bread:\nStep 1: Go to the farm and collect 3 wheat.\nStep 2: Go to the crafting table and use the wheat to craft bread.\n\nYou must communicate effectively to exchange recipe information and complete both dishes. Note: You can only guide your partner with recipe steps. You cannot help with ingredient collection or cooking."
},
"task_type": "cooking",
"difficulty_metrics": {
"total_recipe_steps": 7,
"max_steps_per_recipe": 5,
"unique_target_items": 2,
"overall_difficulty_score": 5,
"difficulty_category": "medium"
},
"difficulty": "medium",
"initial_inventory": {
"0": {
"milk_bucket": 2
},
"1": {
"milk_bucket": 2,
"egg": 1
}
}
},
"multiagent_cooking_baked_potato_golden_apple_hells_kitchen": {
"conversation": "We need to make baked_potato and golden_apple together. You are supposed to make golden_apple and I am supposed to make baked_potato, but I only have YOUR recipe and you only have access to MY recipe! Let's exchange information and get cooking!",
"agent_count": 2,
"target": [
"baked_potato",
"golden_apple"
],
"type": "cooking",
"timeout": 300,
"recipes": {
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
],
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "You need to make baked_potato, but you don't have the recipe for it, your partner has it!\n\nYour partner needs to make golden_apple. You have their recipe:\nRecipe for golden_apple:\nStep 1: Get 1 apple and 8 gold ingots from your inventory or other bots.\nStep 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.\n\nYou must communicate effectively to exchange recipe information and complete both dishes. Note: You can only guide your partner with recipe steps. You cannot help with ingredient collection or cooking.",
"1": "You need to make golden_apple, but you don't have the recipe for it, your partner has it!\n\nYour partner needs to make baked_potato. You have their recipe:\nRecipe for baked_potato:\nStep 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\nStep 2: Get coal from your inventory or other agents.\nStep 3: Put coal in the furnace\nStep 2: Go to the furnace and bake the potato.\n\nYou must communicate effectively to exchange recipe information and complete both dishes. Note: You can only guide your partner with recipe steps. You cannot help with ingredient collection or cooking."
},
"task_type": "cooking",
"difficulty_metrics": {
"total_recipe_steps": 6,
"max_steps_per_recipe": 4,
"unique_target_items": 2,
"overall_difficulty_score": 5,
"difficulty_category": "medium"
},
"difficulty": "medium",
"initial_inventory": {
"0": {
"coal": 1,
"gold_ingot": 5,
"apple": 1
},
"1": {
"coal": 1,
"gold_ingot": 5
}
}
},
"multiagent_cooking_baked_potato_cake_hells_kitchen": {
"conversation": "We need to make baked_potato and cake together. You are supposed to make cake and I am supposed to make baked_potato, but I only have YOUR recipe and you only have access to MY recipe! Let's exchange information and get cooking!",
"agent_count": 2,
"target": [
"baked_potato",
"cake"
],
"type": "cooking",
"timeout": 300,
"recipes": {
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
],
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "You need to make baked_potato, but you don't have the recipe for it, your partner has it!\n\nYour partner needs to make cake. You have their recipe:\nRecipe for cake:\nStep 1: Go to the farm and collect 3 wheat, 2 sugar cane.\nStep 2: From your inventory or other agents get 3 milk buckets (already filled with milk).\nStep 3: Get an egg from your inventory or other agents.\nStep 4: Go to the crafting table and craft the sugarcane into sugar.\nStep 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.\n\nYou must communicate effectively to exchange recipe information and complete both dishes. Note: You can only guide your partner with recipe steps. You cannot help with ingredient collection or cooking.",
"1": "You need to make cake, but you don't have the recipe for it, your partner has it!\n\nYour partner needs to make baked_potato. You have their recipe:\nRecipe for baked_potato:\nStep 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\nStep 2: Get coal from your inventory or other agents.\nStep 3: Put coal in the furnace\nStep 2: Go to the furnace and bake the potato.\n\nYou must communicate effectively to exchange recipe information and complete both dishes. Note: You can only guide your partner with recipe steps. You cannot help with ingredient collection or cooking."
},
"task_type": "cooking",
"difficulty_metrics": {
"total_recipe_steps": 9,
"max_steps_per_recipe": 5,
"unique_target_items": 2,
"overall_difficulty_score": 6,
"difficulty_category": "hard"
},
"difficulty": "hard",
"initial_inventory": {
"0": {
"coal": 5,
"milk_bucket": 2,
"egg": 1
},
"1": {
"coal": 5,
"milk_bucket": 2
}
}
},
"multiagent_cooking_cooked_beef_golden_apple_hells_kitchen": {
"conversation": "We need to make cooked_beef and golden_apple together. You are supposed to make golden_apple and I am supposed to make cooked_beef, but I only have YOUR recipe and you only have access to MY recipe! Let's exchange information and get cooking!",
"agent_count": 2,
"target": [
"cooked_beef",
"golden_apple"
],
"type": "cooking",
"timeout": 300,
"recipes": {
"cooked_beef": [
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to furnace and use it to cook the beef."
],
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "You need to make cooked_beef, but you don't have the recipe for it, your partner has it!\n\nYour partner needs to make golden_apple. You have their recipe:\nRecipe for golden_apple:\nStep 1: Get 1 apple and 8 gold ingots from your inventory or other bots.\nStep 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.\n\nYou must communicate effectively to exchange recipe information and complete both dishes. Note: You can only guide your partner with recipe steps. You cannot help with ingredient collection or cooking.",
"1": "You need to make golden_apple, but you don't have the recipe for it, your partner has it!\n\nYour partner needs to make cooked_beef. You have their recipe:\nRecipe for cooked_beef:\nStep 1: Kill a cow and pick up 1 beef that is dropped.\nStep 2: Get coal from your inventory or other agents.\nStep 3: Put coal in the furnace\nStep 4: Go to furnace and use it to cook the beef.\n\nYou must communicate effectively to exchange recipe information and complete both dishes. Note: You can only guide your partner with recipe steps. You cannot help with ingredient collection or cooking."
},
"task_type": "cooking",
"difficulty_metrics": {
"total_recipe_steps": 6,
"max_steps_per_recipe": 4,
"unique_target_items": 2,
"overall_difficulty_score": 5,
"difficulty_category": "medium"
},
"difficulty": "medium",
"initial_inventory": {
"0": {
"gold_ingot": 5,
"coal": 5
},
"1": {
"gold_ingot": 5,
"apple": 1,
"coal": 5
}
}
}
}

View file

@ -0,0 +1,579 @@
{
"multiagent_cooking_golden_apple_bread_hells_kitchen": {
"conversation": "We need to make golden_apple and bread together. You are supposed to make bread and I am supposed to make golden_apple, but I only have YOUR recipe and you only have access to MY recipe! Let's exchange information and get cooking!",
"agent_count": 2,
"target": [
"golden_apple",
"bread"
],
"type": "cooking",
"timeout": 300,
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "You need to make golden_apple, but you don't have the recipe for it, your partner has it!Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']",
"1": "You need to make bread, but you don't have the recipe for it, your partner has it!Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']"
},
"task_type": "cooking",
"difficulty_metrics": {
"total_recipe_steps": 4,
"max_steps_per_recipe": 2,
"unique_target_items": 2,
"overall_difficulty_score": 4,
"difficulty_category": "medium"
},
"difficulty": "medium",
"initial_inventory": {
"0": {
"gold_ingot": 4,
"apple": 1
},
"1": {
"gold_ingot": 4
}
}
},
"multiagent_cooking_golden_apple_cake_hells_kitchen": {
"conversation": "We need to make golden_apple and cake together. You are supposed to make cake and I am supposed to make golden_apple, but I only have YOUR recipe and you only have access to MY recipe! Let's exchange information and get cooking!",
"agent_count": 2,
"target": [
"golden_apple",
"cake"
],
"type": "cooking",
"timeout": 300,
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "You need to make golden_apple, but you don't have the recipe for it, your partner has it!Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']",
"1": "You need to make cake, but you don't have the recipe for it, your partner has it!Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']"
},
"task_type": "cooking",
"difficulty_metrics": {
"total_recipe_steps": 7,
"max_steps_per_recipe": 5,
"unique_target_items": 2,
"overall_difficulty_score": 5,
"difficulty_category": "medium"
},
"difficulty": "medium",
"initial_inventory": {
"0": {
"gold_ingot": 4,
"apple": 1,
"milk_bucket": 2
},
"1": {
"gold_ingot": 4,
"milk_bucket": 1,
"egg": 1
}
}
},
"multiagent_cooking_golden_apple_rabbit_stew_hells_kitchen": {
"conversation": "We need to make golden_apple and rabbit_stew together. You are supposed to make rabbit_stew and I am supposed to make golden_apple, but I only have YOUR recipe and you only have access to MY recipe! Let's exchange information and get cooking!",
"agent_count": 2,
"target": [
"golden_apple",
"rabbit_stew"
],
"type": "cooking",
"timeout": 300,
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"rabbit_stew": [
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to the furnace and bake the potato.",
"Step 5: From your inventory or other agents get a bowl",
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
"Step 7: Go to the furnace and cook the raw rabbit.",
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "You need to make golden_apple, but you don't have the recipe for it, your partner has it!Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']",
"1": "You need to make rabbit_stew, but you don't have the recipe for it, your partner has it!Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']"
},
"task_type": "cooking",
"difficulty_metrics": {
"total_recipe_steps": 10,
"max_steps_per_recipe": 8,
"unique_target_items": 2,
"overall_difficulty_score": 6,
"difficulty_category": "hard"
},
"difficulty": "hard",
"initial_inventory": {
"0": {
"gold_ingot": 4,
"apple": 1
},
"1": {
"gold_ingot": 4,
"bowl": 1
}
}
},
"multiagent_cooking_golden_apple_baked_potato_hells_kitchen": {
"conversation": "We need to make golden_apple and baked_potato together. You are supposed to make baked_potato and I am supposed to make golden_apple, but I only have YOUR recipe and you only have access to MY recipe! Let's exchange information and get cooking!",
"agent_count": 2,
"target": [
"golden_apple",
"baked_potato"
],
"type": "cooking",
"timeout": 300,
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "You need to make golden_apple, but you don't have the recipe for it, your partner has it!Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']",
"1": "You need to make baked_potato, but you don't have the recipe for it, your partner has it!Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']"
},
"task_type": "cooking",
"difficulty_metrics": {
"total_recipe_steps": 6,
"max_steps_per_recipe": 4,
"unique_target_items": 2,
"overall_difficulty_score": 5,
"difficulty_category": "medium"
},
"difficulty": "medium",
"initial_inventory": {
"0": {
"gold_ingot": 4,
"apple": 1
},
"1": {
"gold_ingot": 4,
"coal": 1
}
}
},
"multiagent_cooking_golden_apple_cooked_beef_hells_kitchen": {
"conversation": "We need to make golden_apple and cooked_beef together. You are supposed to make cooked_beef and I am supposed to make golden_apple, but I only have YOUR recipe and you only have access to MY recipe! Let's exchange information and get cooking!",
"agent_count": 2,
"target": [
"golden_apple",
"cooked_beef"
],
"type": "cooking",
"timeout": 300,
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"cooked_beef": [
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to furnace and use it to cook the beef."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "You need to make golden_apple, but you don't have the recipe for it, your partner has it!Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']",
"1": "You need to make cooked_beef, but you don't have the recipe for it, your partner has it!Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']"
},
"task_type": "cooking",
"difficulty_metrics": {
"total_recipe_steps": 6,
"max_steps_per_recipe": 4,
"unique_target_items": 2,
"overall_difficulty_score": 5,
"difficulty_category": "medium"
},
"difficulty": "medium",
"initial_inventory": {
"0": {
"gold_ingot": 4,
"apple": 1
},
"1": {
"gold_ingot": 4,
"coal": 1
}
}
},
"multiagent_cooking_bread_cake_hells_kitchen": {
"conversation": "We need to make bread and cake together. You are supposed to make cake and I am supposed to make bread, but I only have YOUR recipe and you only have access to MY recipe! Let's exchange information and get cooking!",
"agent_count": 2,
"target": [
"bread",
"cake"
],
"type": "cooking",
"timeout": 300,
"recipes": {
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
],
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "You need to make bread, but you don't have the recipe for it, your partner has it!Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']",
"1": "You need to make cake, but you don't have the recipe for it, your partner has it!Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']"
},
"task_type": "cooking",
"difficulty_metrics": {
"total_recipe_steps": 7,
"max_steps_per_recipe": 5,
"unique_target_items": 2,
"overall_difficulty_score": 5,
"difficulty_category": "medium"
},
"difficulty": "medium",
"initial_inventory": {
"0": {
"milk_bucket": 2
},
"1": {
"milk_bucket": 1,
"egg": 1
}
}
},
"multiagent_cooking_cake_rabbit_stew_hells_kitchen": {
"conversation": "We need to make cake and rabbit_stew together. You are supposed to make rabbit_stew and I am supposed to make cake, but I only have YOUR recipe and you only have access to MY recipe! Let's exchange information and get cooking!",
"agent_count": 2,
"target": [
"cake",
"rabbit_stew"
],
"type": "cooking",
"timeout": 300,
"recipes": {
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
],
"rabbit_stew": [
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to the furnace and bake the potato.",
"Step 5: From your inventory or other agents get a bowl",
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
"Step 7: Go to the furnace and cook the raw rabbit.",
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "You need to make cake, but you don't have the recipe for it, your partner has it!Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']",
"1": "You need to make rabbit_stew, but you don't have the recipe for it, your partner has it!Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']"
},
"task_type": "cooking",
"difficulty_metrics": {
"total_recipe_steps": 13,
"max_steps_per_recipe": 8,
"unique_target_items": 2,
"overall_difficulty_score": 6,
"difficulty_category": "hard"
},
"difficulty": "hard",
"initial_inventory": {
"0": {
"milk_bucket": 2,
"bowl": 1
},
"1": {
"milk_bucket": 1,
"egg": 1
}
}
},
"multiagent_cooking_cake_baked_potato_hells_kitchen": {
"conversation": "We need to make cake and baked_potato together. You are supposed to make baked_potato and I am supposed to make cake, but I only have YOUR recipe and you only have access to MY recipe! Let's exchange information and get cooking!",
"agent_count": 2,
"target": [
"cake",
"baked_potato"
],
"type": "cooking",
"timeout": 300,
"recipes": {
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
],
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "You need to make cake, but you don't have the recipe for it, your partner has it!Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']",
"1": "You need to make baked_potato, but you don't have the recipe for it, your partner has it!Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']"
},
"task_type": "cooking",
"difficulty_metrics": {
"total_recipe_steps": 9,
"max_steps_per_recipe": 5,
"unique_target_items": 2,
"overall_difficulty_score": 6,
"difficulty_category": "hard"
},
"difficulty": "hard",
"initial_inventory": {
"0": {
"milk_bucket": 2,
"coal": 1
},
"1": {
"milk_bucket": 1,
"egg": 1
}
}
},
"multiagent_cooking_cake_cooked_beef_hells_kitchen": {
"conversation": "We need to make cake and cooked_beef together. You are supposed to make cooked_beef and I am supposed to make cake, but I only have YOUR recipe and you only have access to MY recipe! Let's exchange information and get cooking!",
"agent_count": 2,
"target": [
"cake",
"cooked_beef"
],
"type": "cooking",
"timeout": 300,
"recipes": {
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
],
"cooked_beef": [
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to furnace and use it to cook the beef."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "You need to make cake, but you don't have the recipe for it, your partner has it!Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']",
"1": "You need to make cooked_beef, but you don't have the recipe for it, your partner has it!Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']"
},
"task_type": "cooking",
"difficulty_metrics": {
"total_recipe_steps": 9,
"max_steps_per_recipe": 5,
"unique_target_items": 2,
"overall_difficulty_score": 6,
"difficulty_category": "hard"
},
"difficulty": "hard",
"initial_inventory": {
"0": {
"milk_bucket": 2,
"coal": 1
},
"1": {
"milk_bucket": 1,
"egg": 1
}
}
},
"multiagent_cooking_rabbit_stew_baked_potato_hells_kitchen": {
"conversation": "We need to make rabbit_stew and baked_potato together. You are supposed to make baked_potato and I am supposed to make rabbit_stew, but I only have YOUR recipe and you only have access to MY recipe! Let's exchange information and get cooking!",
"agent_count": 2,
"target": [
"rabbit_stew",
"baked_potato"
],
"type": "cooking",
"timeout": 300,
"recipes": {
"rabbit_stew": [
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to the furnace and bake the potato.",
"Step 5: From your inventory or other agents get a bowl",
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
"Step 7: Go to the furnace and cook the raw rabbit.",
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
],
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "You need to make rabbit_stew, but you don't have the recipe for it, your partner has it!Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']",
"1": "You need to make baked_potato, but you don't have the recipe for it, your partner has it!Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']"
},
"task_type": "cooking",
"difficulty_metrics": {
"total_recipe_steps": 12,
"max_steps_per_recipe": 8,
"unique_target_items": 2,
"overall_difficulty_score": 6,
"difficulty_category": "hard"
},
"difficulty": "hard",
"initial_inventory": {
"0": {
"bowl": 1
},
"1": {
"coal": 1
}
}
},
"multiagent_cooking_rabbit_stew_cooked_beef_hells_kitchen": {
"conversation": "We need to make rabbit_stew and cooked_beef together. You are supposed to make cooked_beef and I am supposed to make rabbit_stew, but I only have YOUR recipe and you only have access to MY recipe! Let's exchange information and get cooking!",
"agent_count": 2,
"target": [
"rabbit_stew",
"cooked_beef"
],
"type": "cooking",
"timeout": 300,
"recipes": {
"rabbit_stew": [
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to the furnace and bake the potato.",
"Step 5: From your inventory or other agents get a bowl",
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
"Step 7: Go to the furnace and cook the raw rabbit.",
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
],
"cooked_beef": [
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to furnace and use it to cook the beef."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "You need to make rabbit_stew, but you don't have the recipe for it, your partner has it!Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']",
"1": "You need to make cooked_beef, but you don't have the recipe for it, your partner has it!Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']"
},
"task_type": "cooking",
"difficulty_metrics": {
"total_recipe_steps": 12,
"max_steps_per_recipe": 8,
"unique_target_items": 2,
"overall_difficulty_score": 6,
"difficulty_category": "hard"
},
"difficulty": "hard",
"initial_inventory": {
"0": {
"bowl": 1
},
"1": {
"coal": 1
}
}
},
"multiagent_cooking_baked_potato_cooked_beef_hells_kitchen": {
"conversation": "We need to make baked_potato and cooked_beef together. You are supposed to make cooked_beef and I am supposed to make baked_potato, but I only have YOUR recipe and you only have access to MY recipe! Let's exchange information and get cooking!",
"agent_count": 2,
"target": [
"baked_potato",
"cooked_beef"
],
"type": "cooking",
"timeout": 300,
"recipes": {
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
],
"cooked_beef": [
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to furnace and use it to cook the beef."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "You need to make baked_potato, but you don't have the recipe for it, your partner has it!Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']",
"1": "You need to make cooked_beef, but you don't have the recipe for it, your partner has it!Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']"
},
"task_type": "cooking",
"difficulty_metrics": {
"total_recipe_steps": 8,
"max_steps_per_recipe": 4,
"unique_target_items": 2,
"overall_difficulty_score": 5,
"difficulty_category": "medium"
},
"difficulty": "medium",
"initial_inventory": {
"0": {
"coal": 1
},
"1": {
"coal": 1
}
}
}
}

View file

@ -0,0 +1,231 @@
{
"multiagent_cooking_2_1_bread_1_golden_apple": {
"conversation": "Let's work together to make golden_apple, bread.",
"agent_count": 2,
"target": {
"golden_apple": 1,
"bread": 1
},
"type": "cooking",
"timeout": 1500,
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "Collaborate with agents around you to make 1 golden_apple, 1 bread. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']",
"1": "Collaborate with agents around you to make 1 golden_apple, 1 bread. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']"
},
"initial_inventory": {
"0": {
"gold_ingot": 5
},
"1": {
"gold_ingot": 5,
"apple": 1
}
}
},
"multiagent_cooking_2_1_golden_apple_1_rabbit_stew": {
"conversation": "Let's work together to make golden_apple, rabbit_stew.",
"agent_count": 2,
"target": {
"golden_apple": 1,
"rabbit_stew": 1
},
"type": "cooking",
"timeout": 1500,
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"rabbit_stew": [
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to the furnace and bake the potato.",
"Step 5: From your inventory or other agents get a bowl",
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
"Step 7: Go to the furnace and cook the raw rabbit.",
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "Collaborate with agents around you to make 1 golden_apple, 1 rabbit_stew. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']",
"1": "Collaborate with agents around you to make 1 golden_apple, 1 rabbit_stew. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']"
},
"initial_inventory": {
"0": {
"gold_ingot": 5,
"bowl": 1
},
"1": {
"gold_ingot": 5,
"apple": 1
}
}
},
"multiagent_cooking_2_1_bread_1_cake": {
"conversation": "Let's work together to make cake, bread.",
"agent_count": 2,
"target": {
"cake": 1,
"bread": 1
},
"type": "cooking",
"timeout": 1500,
"recipes": {
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
],
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "Collaborate with agents around you to make 1 cake, 1 bread. Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']",
"1": "Collaborate with agents around you to make 1 cake, 1 bread. Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']"
},
"initial_inventory": {
"0": {
"milk_bucket": 2
},
"1": {
"milk_bucket": 2,
"egg": 1
}
}
},
"multiagent_cooking_2_1_baked_potato_1_golden_apple": {
"conversation": "Let's work together to make baked_potato, golden_apple.",
"agent_count": 2,
"target": {
"baked_potato": 1,
"golden_apple": 1
},
"type": "cooking",
"timeout": 1500,
"recipes": {
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
],
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "Collaborate with agents around you to make 1 baked_potato, 1 golden_apple. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']",
"1": "Collaborate with agents around you to make 1 baked_potato, 1 golden_apple. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']"
},
"initial_inventory": {
"0": {
"coal": 5,
"gold_ingot": 5,
"apple": 1
},
"1": {
"coal": 5,
"gold_ingot": 5
}
}
},
"multiagent_cooking_2_1_baked_potato_1_cake": {
"conversation": "Let's work together to make baked_potato, cake.",
"agent_count": 2,
"target": {
"baked_potato": 1,
"cake": 1
},
"type": "cooking",
"timeout": 1500,
"recipes": {
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
],
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "Collaborate with agents around you to make 1 baked_potato, 1 cake. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']",
"1": "Collaborate with agents around you to make 1 baked_potato, 1 cake. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']"
},
"initial_inventory": {
"0": {
"coal": 5,
"milk_bucket": 2,
"egg": 1
},
"1": {
"coal": 5,
"milk_bucket": 2
}
}
},
"multiagent_cooking_2_1_cooked_beef_1_golden_apple": {
"conversation": "Let's work together to make golden_apple, cooked_beef.",
"agent_count": 2,
"target": {
"golden_apple": 1,
"cooked_beef": 1
},
"type": "cooking",
"timeout": 1500,
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"cooked_beef": [
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to furnace and use it to cook the beef."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "Collaborate with agents around you to make 1 golden_apple, 1 cooked_beef. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']",
"1": "Collaborate with agents around you to make 1 golden_apple, 1 cooked_beef. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']"
},
"initial_inventory": {
"0": {
"gold_ingot": 5,
"coal": 5
},
"1": {
"gold_ingot": 5,
"apple": 1,
"coal": 5
}
}
}
}

View file

@ -0,0 +1,234 @@
{
"multiagent_cooking_2_1_bread_1_golden_apple": {
"conversation": "Let's work together to make golden_apple, bread.",
"agent_count": 3,
"target": {
"golden_apple": 1,
"bread": 1
},
"type": "cooking",
"timeout": 500,
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
]
},
"blocked_access_to_recipe": [],
"goal": "Collaborate with agents around you to make 1 golden_apple, 1 bread. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']",
"initial_inventory": {
"0": {
"gold_ingot": 3
},
"1": {
"gold_ingot": 3,
"apple": 1
},
"2": {
"gold_ingot": 3
}
}
},
"multiagent_cooking_2_1_golden_apple_1_rabbit_stew": {
"conversation": "Let's work together to make golden_apple, rabbit_stew.",
"agent_count": 3,
"target": {
"golden_apple": 1,
"rabbit_stew": 1
},
"type": "cooking",
"timeout": 500,
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"rabbit_stew": [
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to the furnace and bake the potato.",
"Step 5: From your inventory or other agents get a bowl",
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
"Step 7: Go to the furnace and cook the raw rabbit.",
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
]
},
"blocked_access_to_recipe": [],
"goal": "Collaborate with agents around you to make 1 golden_apple, 1 rabbit_stew. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']",
"initial_inventory": {
"0": {
"gold_ingot": 3
},
"1": {
"gold_ingot": 3,
"apple": 1
},
"2": {
"gold_ingot": 3,
"bowl": 1
}
}
},
"multiagent_cooking_2_1_bread_1_cake": {
"conversation": "Let's work together to make cake, bread.",
"agent_count": 3,
"target": {
"cake": 1,
"bread": 1
},
"type": "cooking",
"timeout": 500,
"recipes": {
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
],
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
]
},
"blocked_access_to_recipe": [],
"goal": "Collaborate with agents around you to make 1 cake, 1 bread. Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']",
"initial_inventory": {
"0": {
"milk_bucket": 2
},
"1": {
"milk_bucket": 2,
"egg": 1
},
"2": {
"milk_bucket": 2
}
}
},
"multiagent_cooking_2_1_baked_potato_1_golden_apple": {
"conversation": "Let's work together to make baked_potato, golden_apple.",
"agent_count": 3,
"target": {
"baked_potato": 1,
"golden_apple": 1
},
"type": "cooking",
"timeout": 500,
"recipes": {
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
],
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
]
},
"blocked_access_to_recipe": [],
"goal": "Collaborate with agents around you to make 1 baked_potato, 1 golden_apple. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']",
"initial_inventory": {
"0": {
"coal": 3,
"gold_ingot": 3
},
"1": {
"coal": 3,
"gold_ingot": 3
},
"2": {
"coal": 3,
"gold_ingot": 3,
"apple": 1
}
}
},
"multiagent_cooking_2_1_baked_potato_1_cake": {
"conversation": "Let's work together to make baked_potato, cake.",
"agent_count": 3,
"target": {
"baked_potato": 1,
"cake": 1
},
"type": "cooking",
"timeout": 500,
"recipes": {
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
],
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
]
},
"blocked_access_to_recipe": [],
"goal": "Collaborate with agents around you to make 1 baked_potato, 1 cake. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']",
"initial_inventory": {
"0": {
"coal": 3,
"milk_bucket": 2
},
"1": {
"coal": 3,
"milk_bucket": 2
},
"2": {
"coal": 3,
"milk_bucket": 2,
"egg": 1
}
}
},
"multiagent_cooking_2_1_cooked_beef_1_golden_apple": {
"conversation": "Let's work together to make golden_apple, cooked_beef.",
"agent_count": 3,
"target": {
"golden_apple": 1,
"cooked_beef": 1
},
"type": "cooking",
"timeout": 500,
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"cooked_beef": [
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to furnace and use it to cook the beef."
]
},
"blocked_access_to_recipe": [],
"goal": "Collaborate with agents around you to make 1 golden_apple, 1 cooked_beef. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']",
"initial_inventory": {
"0": {
"gold_ingot": 3,
"coal": 3
},
"1": {
"gold_ingot": 3,
"apple": 1,
"coal": 3
},
"2": {
"gold_ingot": 3,
"coal": 3
}
}
}
}

View file

@ -0,0 +1,252 @@
{
"multiagent_cooking_2_1_bread_1_golden_apple": {
"conversation": "Let's work together to make golden_apple, bread.",
"agent_count": 3,
"target": {
"golden_apple": 1,
"bread": 1
},
"type": "cooking",
"timeout": 1500,
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "Collaborate with agents around you to make 1 golden_apple, 1 bread. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']",
"1": "Collaborate with agents around you to make 1 golden_apple, 1 bread. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']"
},
"initial_inventory": {
"0": {
"gold_ingot": 3
},
"1": {
"gold_ingot": 3,
"apple": 1
},
"2": {
"gold_ingot": 3
}
}
},
"multiagent_cooking_2_1_golden_apple_1_rabbit_stew": {
"conversation": "Let's work together to make golden_apple, rabbit_stew.",
"agent_count": 3,
"target": {
"golden_apple": 1,
"rabbit_stew": 1
},
"type": "cooking",
"timeout": 1500,
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"rabbit_stew": [
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to the furnace and bake the potato.",
"Step 5: From your inventory or other agents get a bowl",
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
"Step 7: Go to the furnace and cook the raw rabbit.",
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "Collaborate with agents around you to make 1 golden_apple, 1 rabbit_stew. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']",
"1": "Collaborate with agents around you to make 1 golden_apple, 1 rabbit_stew. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']"
},
"initial_inventory": {
"0": {
"gold_ingot": 3
},
"1": {
"gold_ingot": 3,
"apple": 1
},
"2": {
"gold_ingot": 3,
"bowl": 1
}
}
},
"multiagent_cooking_2_1_bread_1_cake": {
"conversation": "Let's work together to make cake, bread.",
"agent_count": 3,
"target": {
"cake": 1,
"bread": 1
},
"type": "cooking",
"timeout": 1500,
"recipes": {
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
],
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "Collaborate with agents around you to make 1 cake, 1 bread. Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']",
"1": "Collaborate with agents around you to make 1 cake, 1 bread. Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']"
},
"initial_inventory": {
"0": {
"milk_bucket": 2
},
"1": {
"milk_bucket": 2,
"egg": 1
},
"2": {
"milk_bucket": 2
}
}
},
"multiagent_cooking_2_1_baked_potato_1_golden_apple": {
"conversation": "Let's work together to make baked_potato, golden_apple.",
"agent_count": 3,
"target": {
"baked_potato": 1,
"golden_apple": 1
},
"type": "cooking",
"timeout": 1500,
"recipes": {
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
],
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "Collaborate with agents around you to make 1 baked_potato, 1 golden_apple. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']",
"1": "Collaborate with agents around you to make 1 baked_potato, 1 golden_apple. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']"
},
"initial_inventory": {
"0": {
"coal": 3,
"gold_ingot": 3
},
"1": {
"coal": 3,
"gold_ingot": 3
},
"2": {
"coal": 3,
"gold_ingot": 3,
"apple": 1
}
}
},
"multiagent_cooking_2_1_baked_potato_1_cake": {
"conversation": "Let's work together to make baked_potato, cake.",
"agent_count": 3,
"target": {
"baked_potato": 1,
"cake": 1
},
"type": "cooking",
"timeout": 1500,
"recipes": {
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
],
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "Collaborate with agents around you to make 1 baked_potato, 1 cake. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']",
"1": "Collaborate with agents around you to make 1 baked_potato, 1 cake. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']"
},
"initial_inventory": {
"0": {
"coal": 3,
"milk_bucket": 2
},
"1": {
"coal": 3,
"milk_bucket": 2
},
"2": {
"coal": 3,
"milk_bucket": 2,
"egg": 1
}
}
},
"multiagent_cooking_2_1_cooked_beef_1_golden_apple": {
"conversation": "Let's work together to make golden_apple, cooked_beef.",
"agent_count": 3,
"target": {
"golden_apple": 1,
"cooked_beef": 1
},
"type": "cooking",
"timeout": 1500,
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"cooked_beef": [
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to furnace and use it to cook the beef."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "Collaborate with agents around you to make 1 golden_apple, 1 cooked_beef. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']",
"1": "Collaborate with agents around you to make 1 golden_apple, 1 cooked_beef. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']"
},
"initial_inventory": {
"0": {
"gold_ingot": 3,
"coal": 3
},
"1": {
"gold_ingot": 3,
"apple": 1,
"coal": 3
},
"2": {
"gold_ingot": 3,
"coal": 3
}
}
}
}

View file

@ -0,0 +1,254 @@
{
"multiagent_cooking_2_1_bread_1_golden_apple": {
"conversation": "Let's work together to make golden_apple, bread.",
"agent_count": 4,
"target": {
"golden_apple": 1,
"bread": 1
},
"type": "cooking",
"timeout": 500,
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
]
},
"blocked_access_to_recipe": [],
"goal": "Collaborate with agents around you to make 1 golden_apple, 1 bread. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']",
"initial_inventory": {
"0": {
"gold_ingot": 2
},
"1": {
"gold_ingot": 2,
"apple": 1
},
"2": {
"gold_ingot": 2
},
"3": {
"gold_ingot": 2
}
}
},
"multiagent_cooking_2_1_golden_apple_1_rabbit_stew": {
"conversation": "Let's work together to make golden_apple, rabbit_stew.",
"agent_count": 4,
"target": {
"golden_apple": 1,
"rabbit_stew": 1
},
"type": "cooking",
"timeout": 500,
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"rabbit_stew": [
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to the furnace and bake the potato.",
"Step 5: From your inventory or other agents get a bowl",
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
"Step 7: Go to the furnace and cook the raw rabbit.",
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
]
},
"blocked_access_to_recipe": [],
"goal": "Collaborate with agents around you to make 1 golden_apple, 1 rabbit_stew. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']",
"initial_inventory": {
"0": {
"gold_ingot": 2
},
"1": {
"gold_ingot": 2,
"apple": 1
},
"2": {
"gold_ingot": 2,
"bowl": 1
},
"3": {
"gold_ingot": 2
}
}
},
"multiagent_cooking_2_1_bread_1_cake": {
"conversation": "Let's work together to make cake, bread.",
"agent_count": 4,
"target": {
"cake": 1,
"bread": 1
},
"type": "cooking",
"timeout": 500,
"recipes": {
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
],
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
]
},
"blocked_access_to_recipe": [],
"goal": "Collaborate with agents around you to make 1 cake, 1 bread. Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']",
"initial_inventory": {
"0": {
"milk_bucket": 1
},
"1": {
"milk_bucket": 1
},
"2": {
"milk_bucket": 1
},
"3": {
"egg": 1
}
}
},
"multiagent_cooking_2_1_baked_potato_1_golden_apple": {
"conversation": "Let's work together to make baked_potato, golden_apple.",
"agent_count": 4,
"target": {
"baked_potato": 1,
"golden_apple": 1
},
"type": "cooking",
"timeout": 500,
"recipes": {
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
],
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
]
},
"blocked_access_to_recipe": [],
"goal": "Collaborate with agents around you to make 1 baked_potato, 1 golden_apple. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']",
"initial_inventory": {
"0": {
"coal": 3,
"gold_ingot": 2
},
"1": {
"coal": 3,
"gold_ingot": 2
},
"2": {
"coal": 3,
"gold_ingot": 2,
"apple": 1
},
"3": {
"coal": 3,
"gold_ingot": 2
}
}
},
"multiagent_cooking_2_1_baked_potato_1_cake": {
"conversation": "Let's work together to make baked_potato, cake.",
"agent_count": 4,
"target": {
"baked_potato": 1,
"cake": 1
},
"type": "cooking",
"timeout": 500,
"recipes": {
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
],
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
]
},
"blocked_access_to_recipe": [],
"goal": "Collaborate with agents around you to make 1 baked_potato, 1 cake. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']",
"initial_inventory": {
"0": {
"coal": 3,
"milk_bucket": 1
},
"1": {
"coal": 3,
"milk_bucket": 1
},
"2": {
"coal": 3,
"milk_bucket": 1
},
"3": {
"coal": 3,
"egg": 1
}
}
},
"multiagent_cooking_2_1_cooked_beef_1_golden_apple": {
"conversation": "Let's work together to make golden_apple, cooked_beef.",
"agent_count": 4,
"target": {
"golden_apple": 1,
"cooked_beef": 1
},
"type": "cooking",
"timeout": 500,
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"cooked_beef": [
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to furnace and use it to cook the beef."
]
},
"blocked_access_to_recipe": [],
"goal": "Collaborate with agents around you to make 1 golden_apple, 1 cooked_beef. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']",
"initial_inventory": {
"0": {
"gold_ingot": 2,
"coal": 3
},
"1": {
"gold_ingot": 2,
"apple": 1,
"coal": 3
},
"2": {
"gold_ingot": 2,
"coal": 3
},
"3": {
"gold_ingot": 2,
"coal": 3
}
}
}
}

View file

@ -0,0 +1,272 @@
{
"multiagent_cooking_2_1_bread_1_golden_apple": {
"conversation": "Let's work together to make golden_apple, bread.",
"agent_count": 4,
"target": {
"golden_apple": 1,
"bread": 1
},
"type": "cooking",
"timeout": 1500,
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "Collaborate with agents around you to make 1 golden_apple, 1 bread. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']",
"1": "Collaborate with agents around you to make 1 golden_apple, 1 bread. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']"
},
"initial_inventory": {
"0": {
"gold_ingot": 2
},
"1": {
"gold_ingot": 2,
"apple": 1
},
"2": {
"gold_ingot": 2
},
"3": {
"gold_ingot": 2
}
}
},
"multiagent_cooking_2_1_golden_apple_1_rabbit_stew": {
"conversation": "Let's work together to make golden_apple, rabbit_stew.",
"agent_count": 4,
"target": {
"golden_apple": 1,
"rabbit_stew": 1
},
"type": "cooking",
"timeout": 1500,
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"rabbit_stew": [
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to the furnace and bake the potato.",
"Step 5: From your inventory or other agents get a bowl",
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
"Step 7: Go to the furnace and cook the raw rabbit.",
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "Collaborate with agents around you to make 1 golden_apple, 1 rabbit_stew. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']",
"1": "Collaborate with agents around you to make 1 golden_apple, 1 rabbit_stew. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']"
},
"initial_inventory": {
"0": {
"gold_ingot": 2
},
"1": {
"gold_ingot": 2,
"apple": 1
},
"2": {
"gold_ingot": 2,
"bowl": 1
},
"3": {
"gold_ingot": 2
}
}
},
"multiagent_cooking_2_1_bread_1_cake": {
"conversation": "Let's work together to make cake, bread.",
"agent_count": 4,
"target": {
"cake": 1,
"bread": 1
},
"type": "cooking",
"timeout": 1500,
"recipes": {
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
],
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "Collaborate with agents around you to make 1 cake, 1 bread. Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']",
"1": "Collaborate with agents around you to make 1 cake, 1 bread. Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']"
},
"initial_inventory": {
"0": {
"milk_bucket": 1
},
"1": {
"milk_bucket": 1
},
"2": {
"milk_bucket": 1
},
"3": {
"egg": 1
}
}
},
"multiagent_cooking_2_1_baked_potato_1_golden_apple": {
"conversation": "Let's work together to make baked_potato, golden_apple.",
"agent_count": 4,
"target": {
"baked_potato": 1,
"golden_apple": 1
},
"type": "cooking",
"timeout": 1500,
"recipes": {
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
],
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "Collaborate with agents around you to make 1 baked_potato, 1 golden_apple. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']",
"1": "Collaborate with agents around you to make 1 baked_potato, 1 golden_apple. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']"
},
"initial_inventory": {
"0": {
"coal": 3,
"gold_ingot": 2
},
"1": {
"coal": 3,
"gold_ingot": 2
},
"2": {
"coal": 3,
"gold_ingot": 2,
"apple": 1
},
"3": {
"coal": 3,
"gold_ingot": 2
}
}
},
"multiagent_cooking_2_1_baked_potato_1_cake": {
"conversation": "Let's work together to make baked_potato, cake.",
"agent_count": 4,
"target": {
"baked_potato": 1,
"cake": 1
},
"type": "cooking",
"timeout": 1500,
"recipes": {
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
],
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "Collaborate with agents around you to make 1 baked_potato, 1 cake. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']",
"1": "Collaborate with agents around you to make 1 baked_potato, 1 cake. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']"
},
"initial_inventory": {
"0": {
"coal": 3,
"milk_bucket": 1
},
"1": {
"coal": 3,
"milk_bucket": 1
},
"2": {
"coal": 3,
"milk_bucket": 1
},
"3": {
"coal": 3,
"egg": 1
}
}
},
"multiagent_cooking_2_1_cooked_beef_1_golden_apple": {
"conversation": "Let's work together to make golden_apple, cooked_beef.",
"agent_count": 4,
"target": {
"golden_apple": 1,
"cooked_beef": 1
},
"type": "cooking",
"timeout": 1500,
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"cooked_beef": [
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to furnace and use it to cook the beef."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "Collaborate with agents around you to make 1 golden_apple, 1 cooked_beef. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']",
"1": "Collaborate with agents around you to make 1 golden_apple, 1 cooked_beef. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']"
},
"initial_inventory": {
"0": {
"gold_ingot": 2,
"coal": 3
},
"1": {
"gold_ingot": 2,
"apple": 1,
"coal": 3
},
"2": {
"gold_ingot": 2,
"coal": 3
},
"3": {
"gold_ingot": 2,
"coal": 3
}
}
}
}

View file

@ -0,0 +1,185 @@
{
"multiagent_cooking_2_1_bread_1_cake": {
"conversation": "Let's work together to make cake, bread.",
"agent_count": 4,
"target": {
"cake": 1,
"bread": 1
},
"type": "cooking",
"timeout": 500,
"recipes": {
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
],
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "Collaborate with agents around you to make 1 cake, 1 bread. Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']",
"1": "Collaborate with agents around you to make 1 cake, 1 bread. Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']"
},
"initial_inventory": {
"0": {
"milk_bucket": 1
},
"1": {
"milk_bucket": 1
},
"2": {
"milk_bucket": 1
},
"3": {
"egg": 1
}
}
},
"multiagent_cooking_2_1_baked_potato_1_golden_apple": {
"conversation": "Let's work together to make baked_potato, golden_apple.",
"agent_count": 4,
"target": {
"baked_potato": 1,
"golden_apple": 1
},
"type": "cooking",
"timeout": 500,
"recipes": {
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
],
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "Collaborate with agents around you to make 1 baked_potato, 1 golden_apple. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']",
"1": "Collaborate with agents around you to make 1 baked_potato, 1 golden_apple. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']"
},
"initial_inventory": {
"0": {
"coal": 3,
"gold_ingot": 2
},
"1": {
"coal": 3,
"gold_ingot": 2
},
"2": {
"coal": 3,
"gold_ingot": 2,
"apple": 1
},
"3": {
"coal": 3,
"gold_ingot": 2
}
}
},
"multiagent_cooking_2_1_baked_potato_1_cake": {
"conversation": "Let's work together to make baked_potato, cake.",
"agent_count": 4,
"target": {
"baked_potato": 1,
"cake": 1
},
"type": "cooking",
"timeout": 500,
"recipes": {
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
],
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "Collaborate with agents around you to make 1 baked_potato, 1 cake. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']",
"1": "Collaborate with agents around you to make 1 baked_potato, 1 cake. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']"
},
"initial_inventory": {
"0": {
"coal": 3,
"milk_bucket": 1
},
"1": {
"coal": 3,
"milk_bucket": 1
},
"2": {
"coal": 3,
"milk_bucket": 1
},
"3": {
"coal": 3,
"egg": 1
}
}
},
"multiagent_cooking_2_1_cooked_beef_1_golden_apple": {
"conversation": "Let's work together to make golden_apple, cooked_beef.",
"agent_count": 4,
"target": {
"golden_apple": 1,
"cooked_beef": 1
},
"type": "cooking",
"timeout": 500,
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"cooked_beef": [
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to furnace and use it to cook the beef."
]
},
"blocked_access_to_recipe": [],
"goal": {
"0": "Collaborate with agents around you to make 1 golden_apple, 1 cooked_beef. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']",
"1": "Collaborate with agents around you to make 1 golden_apple, 1 cooked_beef. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']"
},
"initial_inventory": {
"0": {
"gold_ingot": 2,
"coal": 3
},
"1": {
"gold_ingot": 2,
"apple": 1,
"coal": 3
},
"2": {
"gold_ingot": 2,
"coal": 3
},
"3": {
"gold_ingot": 2,
"coal": 3
}
}
}
}

View file

@ -0,0 +1,273 @@
{
"multiagent_cooking_2_1_bread_1_golden_apple": {
"conversation": "Let's work together to make golden_apple, bread.",
"agent_count": 5,
"target": {
"golden_apple": 1,
"bread": 1
},
"type": "cooking",
"timeout": 500,
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
]
},
"blocked_access_to_recipe": [],
"goal": "Collaborate with agents around you to make 1 golden_apple, 1 bread. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']",
"initial_inventory": {
"0": {
"gold_ingot": 2
},
"1": {
"gold_ingot": 2
},
"2": {
"gold_ingot": 2
},
"3": {
"gold_ingot": 2
},
"4": {
"apple": 1
}
}
},
"multiagent_cooking_2_1_golden_apple_1_rabbit_stew": {
"conversation": "Let's work together to make golden_apple, rabbit_stew.",
"agent_count": 5,
"target": {
"golden_apple": 1,
"rabbit_stew": 1
},
"type": "cooking",
"timeout": 500,
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"rabbit_stew": [
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to the furnace and bake the potato.",
"Step 5: From your inventory or other agents get a bowl",
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
"Step 7: Go to the furnace and cook the raw rabbit.",
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
]
},
"blocked_access_to_recipe": [],
"goal": "Collaborate with agents around you to make 1 golden_apple, 1 rabbit_stew. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']",
"initial_inventory": {
"0": {
"gold_ingot": 2
},
"1": {
"gold_ingot": 2,
"apple": 1
},
"2": {
"gold_ingot": 2,
"bowl": 1
},
"3": {
"gold_ingot": 2
},
"4": {
"apple": 1
}
}
},
"multiagent_cooking_2_1_bread_1_cake": {
"conversation": "Let's work together to make cake, bread.",
"agent_count": 5,
"target": {
"cake": 1,
"bread": 1
},
"type": "cooking",
"timeout": 500,
"recipes": {
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
],
"bread": [
"Step 1: Go to the farm and collect 3 wheat.",
"Step 2: Go to the crafting table and use the wheat to craft bread."
]
},
"blocked_access_to_recipe": [],
"goal": "Collaborate with agents around you to make 1 cake, 1 bread. Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']",
"initial_inventory": {
"0": {
"milk_bucket": 1
},
"1": {
"milk_bucket": 1,
"egg": 1
},
"2": {
"milk_bucket": 1
},
"3": {
"egg": 1
},
"4": {
"egg": 1
}
}
},
"multiagent_cooking_2_1_baked_potato_1_golden_apple": {
"conversation": "Let's work together to make baked_potato, golden_apple.",
"agent_count": 5,
"target": {
"baked_potato": 1,
"golden_apple": 1
},
"type": "cooking",
"timeout": 500,
"recipes": {
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
],
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
]
},
"blocked_access_to_recipe": [],
"goal": "Collaborate with agents around you to make 1 baked_potato, 1 golden_apple. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']",
"initial_inventory": {
"0": {
"coal": 2,
"gold_ingot": 2
},
"1": {
"coal": 2,
"gold_ingot": 2
},
"2": {
"coal": 2,
"gold_ingot": 2
},
"3": {
"coal": 2,
"gold_ingot": 2
},
"4": {
"coal": 2,
"apple": 1
}
}
},
"multiagent_cooking_2_1_baked_potato_1_cake": {
"conversation": "Let's work together to make baked_potato, cake.",
"agent_count": 5,
"target": {
"baked_potato": 1,
"cake": 1
},
"type": "cooking",
"timeout": 500,
"recipes": {
"baked_potato": [
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 2: Go to the furnace and bake the potato."
],
"cake": [
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
"Step 3: Get an egg from your inventory or other agents.",
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
]
},
"blocked_access_to_recipe": [],
"goal": "Collaborate with agents around you to make 1 baked_potato, 1 cake. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']",
"initial_inventory": {
"0": {
"coal": 2,
"milk_bucket": 1
},
"1": {
"coal": 2,
"milk_bucket": 1
},
"2": {
"coal": 2,
"milk_bucket": 1
},
"3": {
"coal": 2,
"egg": 1
},
"4": {
"coal": 2,
"egg": 1
}
}
},
"multiagent_cooking_2_1_cooked_beef_1_golden_apple": {
"conversation": "Let's work together to make golden_apple, cooked_beef.",
"agent_count": 5,
"target": {
"golden_apple": 1,
"cooked_beef": 1
},
"type": "cooking",
"timeout": 500,
"recipes": {
"golden_apple": [
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
],
"cooked_beef": [
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
"Step 2: Get coal from your inventory or other agents.",
"Step 3: Put coal in the furnace",
"Step 4: Go to furnace and use it to cook the beef."
]
},
"blocked_access_to_recipe": [],
"goal": "Collaborate with agents around you to make 1 golden_apple, 1 cooked_beef. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']",
"initial_inventory": {
"0": {
"gold_ingot": 2,
"coal": 2
},
"1": {
"gold_ingot": 2,
"coal": 2
},
"2": {
"gold_ingot": 2,
"coal": 2
},
"3": {
"gold_ingot": 2,
"coal": 2
},
"4": {
"apple": 1,
"coal": 2
}
}
}
}

Some files were not shown because too many files have changed in this diff Show more