mirror of
https://github.com/kolbytn/mindcraft.git
synced 2025-09-01 11:53:03 +02:00
server task fixes
This commit is contained in:
parent
9fb58d2d40
commit
bd5b995e4b
2 changed files with 20 additions and 20 deletions
|
@ -12,7 +12,7 @@ import convoManager from './conversation.js';
|
||||||
import { handleTranslation, handleEnglishTranslation } from '../utils/translator.js';
|
import { handleTranslation, handleEnglishTranslation } from '../utils/translator.js';
|
||||||
import { addViewer } from './viewer.js';
|
import { addViewer } from './viewer.js';
|
||||||
import settings from '../../settings.js';
|
import settings from '../../settings.js';
|
||||||
import { serverProxy } from './server_proxy.js';
|
import { serverProxy } from './agent_proxy.js';
|
||||||
import { loadTask, initBotTask, TechTreeHarvestValidator } from '../utils/tasks.js';
|
import { loadTask, initBotTask, TechTreeHarvestValidator } from '../utils/tasks.js';
|
||||||
|
|
||||||
export class Agent {
|
export class Agent {
|
||||||
|
@ -106,7 +106,7 @@ export class Agent {
|
||||||
this.startEvents();
|
this.startEvents();
|
||||||
|
|
||||||
if (this.task)
|
if (this.task)
|
||||||
await initBotTask(this);
|
initBotTask(this);
|
||||||
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Error in spawn event:', error);
|
console.error('Error in spawn event:', error);
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { readFileSync } from 'fs';
|
import { readFileSync } from 'fs';
|
||||||
import { isOtherAgent } from '../agent/conversation.js';
|
|
||||||
import { executeCommand } from '../agent/commands/index.js';
|
import { executeCommand } from '../agent/commands/index.js';
|
||||||
import { getPosition } from '../agent/library/world.js'
|
import { getPosition } from '../agent/library/world.js'
|
||||||
|
import settings from '../../settings.js';
|
||||||
|
|
||||||
export function loadTask(task_path, task_id) {
|
export function loadTask(task_path, task_id) {
|
||||||
try {
|
try {
|
||||||
|
@ -22,15 +22,16 @@ export function loadTask(task_path, task_id) {
|
||||||
export async function initBotTask(agent) {
|
export async function initBotTask(agent) {
|
||||||
let bot = agent.bot;
|
let bot = agent.bot;
|
||||||
let task = agent.task;
|
let task = agent.task;
|
||||||
|
let name = bot.username;
|
||||||
|
|
||||||
bot.chat(`/clear ${bot.username}`);
|
bot.chat(`/clear ${name}`);
|
||||||
console.log(`Cleared ${bot.username}'s inventory.`);
|
console.log(`Cleared ${name}'s inventory.`);
|
||||||
|
|
||||||
//wait for a bit so inventory is cleared
|
//wait for a bit so inventory is cleared
|
||||||
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[bot.username];
|
var initial_inventory = task.initial_inventory[name];
|
||||||
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);
|
||||||
|
@ -42,7 +43,7 @@ export async function initBotTask(agent) {
|
||||||
console.log("Inventory to set:", initial_inventory);
|
console.log("Inventory to set:", initial_inventory);
|
||||||
for (let key of Object.keys(initial_inventory)) {
|
for (let key of Object.keys(initial_inventory)) {
|
||||||
console.log('Giving item:', key);
|
console.log('Giving item:', key);
|
||||||
bot.chat(`/give ${bot.username} ${key} ${initial_inventory[key]}`);
|
bot.chat(`/give ${name} ${key} ${initial_inventory[key]}`);
|
||||||
};
|
};
|
||||||
//wait for a bit so inventory is set
|
//wait for a bit so inventory is set
|
||||||
await new Promise((resolve) => setTimeout(resolve, 500));
|
await new Promise((resolve) => setTimeout(resolve, 500));
|
||||||
|
@ -59,7 +60,7 @@ export async function initBotTask(agent) {
|
||||||
// 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 (!isOtherAgent(player.username)) {
|
if (!settings.profiles.map((p) => JSON.parse(readFileSync(p, 'utf8')).name).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;
|
||||||
|
@ -73,12 +74,12 @@ export async function initBotTask(agent) {
|
||||||
if ("agent_number" in task) {
|
if ("agent_number" in task) {
|
||||||
var agent_names = task.agent_names;
|
var agent_names = task.agent_names;
|
||||||
if (human_player_name) {
|
if (human_player_name) {
|
||||||
console.log(`Teleporting ${bot.username} to human ${human_player_name}`)
|
console.log(`Teleporting ${name} to human ${human_player_name}`)
|
||||||
bot.chat(`/tp ${bot.username} ${human_player_name}`) // teleport on top of the human player
|
bot.chat(`/tp ${name} ${human_player_name}`) // teleport on top of the human player
|
||||||
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
bot.chat(`/tp ${bot.username} ${agent_names[0]}`) // teleport on top of the first agent
|
bot.chat(`/tp ${name} ${agent_names[0]}`) // teleport on top of the first agent
|
||||||
}
|
}
|
||||||
|
|
||||||
await new Promise((resolve) => setTimeout(resolve, 200));
|
await new Promise((resolve) => setTimeout(resolve, 200));
|
||||||
|
@ -86,8 +87,8 @@ export async function initBotTask(agent) {
|
||||||
|
|
||||||
else if (task) {
|
else if (task) {
|
||||||
if (human_player_name) {
|
if (human_player_name) {
|
||||||
console.log(`Teleporting ${bot.username} to human ${human_player_name}`)
|
console.log(`Teleporting ${name} to human ${human_player_name}`)
|
||||||
bot.chat(`/tp ${bot.username} ${human_player_name}`) // teleport on top of the human player
|
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));
|
||||||
|
@ -107,14 +108,10 @@ export async function initBotTask(agent) {
|
||||||
const pos = getPosition(bot);
|
const pos = getPosition(bot);
|
||||||
const xOffset = getRandomOffset(5);
|
const xOffset = getRandomOffset(5);
|
||||||
const zOffset = getRandomOffset(5);
|
const zOffset = getRandomOffset(5);
|
||||||
bot.chat(`/tp ${bot.username} ${Math.floor(pos.x + xOffset)} ${pos.y + 3} ${Math.floor(pos.z + zOffset)}`);
|
bot.chat(`/tp ${name} ${Math.floor(pos.x + xOffset)} ${pos.y + 3} ${Math.floor(pos.z + zOffset)}`);
|
||||||
await new Promise((resolve) => setTimeout(resolve, 200));
|
await new Promise((resolve) => setTimeout(resolve, 200));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (task.goal) {
|
|
||||||
await executeCommand(agent, `!goal("${task.goal}")`);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (task.agent_names) {
|
if (task.agent_names) {
|
||||||
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 (task.agent_names.filter(name => !bot.players[name]).length) {
|
||||||
|
@ -123,8 +120,12 @@ export async function initBotTask(agent) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (task.goal) {
|
||||||
|
await executeCommand(agent, `!goal("${task.goal}")`);
|
||||||
|
}
|
||||||
|
|
||||||
if (task.conversation && agent.count_id === 0) {
|
if (task.conversation && agent.count_id === 0) {
|
||||||
let other_name = task.agent_names.filter(name => name !== bot.username)[0];
|
let other_name = task.agent_names.filter(n => n !== name)[0];
|
||||||
await executeCommand(agent, `!startConversation("${other_name}", "${task.conversation}")`);
|
await executeCommand(agent, `!startConversation("${other_name}", "${task.conversation}")`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -138,7 +139,6 @@ export class TechTreeHarvestValidator {
|
||||||
|
|
||||||
validate() {
|
validate() {
|
||||||
try{
|
try{
|
||||||
console.log("validate");
|
|
||||||
let valid = false;
|
let valid = false;
|
||||||
let total_targets = 0;
|
let total_targets = 0;
|
||||||
this.bot.inventory.slots.forEach((slot) => {
|
this.bot.inventory.slots.forEach((slot) => {
|
||||||
|
|
Loading…
Add table
Reference in a new issue