mirror of
https://github.com/kolbytn/mindcraft.git
synced 2025-08-27 09:23:03 +02:00
improved profiles
This commit is contained in:
parent
bd5b995e4b
commit
760a178f74
3 changed files with 18 additions and 45 deletions
|
@ -7,15 +7,12 @@
|
||||||
},
|
},
|
||||||
"debug_multi_agent": {
|
"debug_multi_agent": {
|
||||||
"goal": "Just stand at a place and don't do anything",
|
"goal": "Just stand at a place and don't do anything",
|
||||||
"agent_names": [
|
"agent_count": 2,
|
||||||
"andy",
|
|
||||||
"randy"
|
|
||||||
],
|
|
||||||
"initial_inventory": {
|
"initial_inventory": {
|
||||||
"andy": {
|
"0": {
|
||||||
"iron_ingot": 1
|
"iron_ingot": 1
|
||||||
},
|
},
|
||||||
"randy": {
|
"1": {
|
||||||
"iron_ingot": 1
|
"iron_ingot": 1
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -40,15 +37,12 @@
|
||||||
},
|
},
|
||||||
"multiagent_techtree_1_stone_pickaxe": {
|
"multiagent_techtree_1_stone_pickaxe": {
|
||||||
"conversation": "Let's collaborate to build a stone pickaxe",
|
"conversation": "Let's collaborate to build a stone pickaxe",
|
||||||
"agent_names": [
|
"agent_count": 2,
|
||||||
"andy",
|
|
||||||
"randy"
|
|
||||||
],
|
|
||||||
"initial_inventory": {
|
"initial_inventory": {
|
||||||
"andy": {
|
"0": {
|
||||||
"wooden_pickaxe": 1
|
"wooden_pickaxe": 1
|
||||||
},
|
},
|
||||||
"randy": {
|
"1": {
|
||||||
"wooden_axe": 1
|
"wooden_axe": 1
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -376,13 +376,6 @@ export class Agent {
|
||||||
}
|
}
|
||||||
|
|
||||||
startEvents() {
|
startEvents() {
|
||||||
// Custom events
|
|
||||||
// this.bot.on('spawn', () => {
|
|
||||||
|
|
||||||
// //check that inventory has been set
|
|
||||||
// });
|
|
||||||
|
|
||||||
|
|
||||||
this.bot.on('time', () => {
|
this.bot.on('time', () => {
|
||||||
if (this.bot.time.timeOfDay == 0)
|
if (this.bot.time.timeOfDay == 0)
|
||||||
this.bot.emit('sunrise');
|
this.bot.emit('sunrise');
|
||||||
|
|
|
@ -31,7 +31,7 @@ export async function initBotTask(agent) {
|
||||||
await new Promise((resolve) => setTimeout(resolve, 500));
|
await new Promise((resolve) => setTimeout(resolve, 500));
|
||||||
|
|
||||||
if (task.agent_number > 1) {
|
if (task.agent_number > 1) {
|
||||||
var initial_inventory = task.initial_inventory[name];
|
var initial_inventory = task.initial_inventory[agent.count_id.toString()];
|
||||||
console.log("Initial inventory:", initial_inventory);
|
console.log("Initial inventory:", initial_inventory);
|
||||||
} else if (task) {
|
} else if (task) {
|
||||||
console.log("Initial inventory:", task.initial_inventory);
|
console.log("Initial inventory:", task.initial_inventory);
|
||||||
|
@ -56,11 +56,12 @@ export async function initBotTask(agent) {
|
||||||
}
|
}
|
||||||
|
|
||||||
let human_player_name = null;
|
let human_player_name = null;
|
||||||
|
let available_agents = settings.profiles.map((p) => JSON.parse(readFileSync(p, 'utf8')).name);
|
||||||
|
|
||||||
// Finding if there is a human player on the server
|
// Finding if there is a human player on the server
|
||||||
for (const playerName in bot.players) {
|
for (const playerName in bot.players) {
|
||||||
const player = bot.players[playerName];
|
const player = bot.players[playerName];
|
||||||
if (!settings.profiles.map((p) => JSON.parse(readFileSync(p, 'utf8')).name).some((n) => n === name)) {
|
if (!available_agents.some((n) => n === name)) {
|
||||||
console.log('Found human player:', player.username);
|
console.log('Found human player:', player.username);
|
||||||
human_player_name = player.username
|
human_player_name = player.username
|
||||||
break;
|
break;
|
||||||
|
@ -71,28 +72,12 @@ export async function initBotTask(agent) {
|
||||||
|
|
||||||
// teleport near a human player if found by default
|
// teleport near a human player if found by default
|
||||||
|
|
||||||
if ("agent_number" in task) {
|
if (human_player_name) {
|
||||||
var agent_names = task.agent_names;
|
console.log(`Teleporting ${name} to human ${human_player_name}`)
|
||||||
if (human_player_name) {
|
bot.chat(`/tp ${name} ${human_player_name}`) // teleport on top of the human player
|
||||||
console.log(`Teleporting ${name} to human ${human_player_name}`)
|
|
||||||
bot.chat(`/tp ${name} ${human_player_name}`) // teleport on top of the human player
|
|
||||||
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
bot.chat(`/tp ${name} ${agent_names[0]}`) // teleport on top of the first agent
|
|
||||||
}
|
|
||||||
|
|
||||||
await new Promise((resolve) => setTimeout(resolve, 200));
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (task) {
|
|
||||||
if (human_player_name) {
|
|
||||||
console.log(`Teleporting ${name} to human ${human_player_name}`)
|
|
||||||
bot.chat(`/tp ${name} ${human_player_name}`) // teleport on top of the human player
|
|
||||||
|
|
||||||
}
|
|
||||||
await new Promise((resolve) => setTimeout(resolve, 200));
|
|
||||||
}
|
}
|
||||||
|
await new Promise((resolve) => setTimeout(resolve, 200));
|
||||||
|
|
||||||
// now all bots are teleport on top of each other (which kinda looks ugly)
|
// now all bots are teleport on top of each other (which kinda looks ugly)
|
||||||
// Thus, we need to teleport them to random distances to make it look better
|
// Thus, we need to teleport them to random distances to make it look better
|
||||||
|
@ -112,12 +97,13 @@ export async function initBotTask(agent) {
|
||||||
await new Promise((resolve) => setTimeout(resolve, 200));
|
await new Promise((resolve) => setTimeout(resolve, 200));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (task.agent_names) {
|
if (task.agent_count && task.agent_count > 1) {
|
||||||
await new Promise((resolve) => setTimeout(resolve, 10000));
|
await new Promise((resolve) => setTimeout(resolve, 10000));
|
||||||
if (task.agent_names.filter(name => !bot.players[name]).length) {
|
if (available_agents.length < task.agent_count) {
|
||||||
console.log(`Missing players/bots: ${missingPlayers.join(', ')}`);
|
console.log(`Missing ${task.agent_count - available_agents.length} bot(s).`);
|
||||||
agent.cleanKill('Not all required players/bots are present in the world. Exiting.', 4);
|
agent.cleanKill('Not all required players/bots are present in the world. Exiting.', 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (task.goal) {
|
if (task.goal) {
|
||||||
|
@ -125,7 +111,7 @@ export async function initBotTask(agent) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (task.conversation && agent.count_id === 0) {
|
if (task.conversation && agent.count_id === 0) {
|
||||||
let other_name = task.agent_names.filter(n => n !== name)[0];
|
let other_name = available_agents.filter(n => n !== name)[0];
|
||||||
await executeCommand(agent, `!startConversation("${other_name}", "${task.conversation}")`);
|
await executeCommand(agent, `!startConversation("${other_name}", "${task.conversation}")`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue