Files
moeka-project/services/minecraft
Neko Ayaka 372125fb89 chore(deps): bump dependencies
Notice: after bumping up to three 0.180.0 with @types/three 0.180.0,
  Argument of type 'Group<Object3DEventMap>' is not assignable to parameter of type 'Object3D<Object3DEventMap>'.
    Type 'Group<Object3DEventMap>' is missing the following properties from type 'Object3D<Object3DEventMap>': setPointerCapture, releasePointerCapture, hasPointerCapture

Currently, AFAIK, clearly, three, and @types/three doesn't have the setPointerCapture, releasePointerCapture, hasPointerCapture method / getters
The only place I found on GitHub, points out that https://github.com/pmndrs/xr/blob/456aa380206e93888cd3a5741a1534e672ae3106/packages/pointer-events/src/pointer.ts#L69-L100 declares

```js
declare module 'three' {
  interface Object3D {
    setPointerCapture(pointerId: number): void
    releasePointerCapture(pointerId: number): void
    hasPointerCapture(pointerId: number): boolean

    intersectChildren?: boolean
    interactableDescendants?: Array<Object3D>
    /**
     * @deprecated
     */
    ancestorsHaveListeners?: boolean
    ancestorsHavePointerListeners?: boolean
    ancestorsHaveWheelListeners?: boolean
  }
}
```

And in @tresjs/core v5, it uses the @pmndrs/pointer-events internally.
Somehow the Object3D from @types/three and the one augmented by @pmndrs/pointer-events are not compatible.

`new Object3D() as unknown as Object3D` works as workaround here but there should be no need to do such a thing since these two Object3D should be the same.
With no updates from `typescript`, I assume there is no breaking change or regression from `typescript` side.
2025-09-26 17:07:07 +08:00
..
2025-09-10 21:18:48 +08:00
2025-09-26 17:07:07 +08:00

⛏️ Minecraft agent player for アイリ (AIRI)

Note

This project is part of the Project アイリ (AIRI), we aim to build a LLM-driven VTuber like Neuro-sama (subscribe if you didn't!) if you are interested in, please do give it a try on live demo.

An intelligent Minecraft bot powered by LLM. AIRI can understand natural language commands, interact with the world, and assist players in various tasks.

🎥 Preview

demo

Features

  • 🗣️ Natural language understanding
  • 🏃‍♂️ Advanced pathfinding and navigation
  • 🛠️ Block breaking and placing
  • 🎯 Combat and PvP capabilities
  • 🔄 Auto-reconnect on disconnection
  • 📦 Inventory management
  • 🤝 Player following and interaction
  • 🌍 World exploration and mapping

🚀 Getting Started

📋 Prerequisites

  • 📦 Node.js 23+
  • 🔧 pnpm
  • 🎮 A Minecraft server (1.20+)

🔨 Installation

  1. Clone the repository:
git clone https://github.com/moeru-ai/airi.git
cd services/minecraft
  1. Install dependencies:
pnpm install
  1. Create a .env.local file with your configuration:
OPENAI_API_KEY=your_openai_api_key
OPENAI_API_BASEURL=your_openai_api_baseurl

BOT_USERNAME=your_bot_username
BOT_HOSTNAME=localhost
BOT_PORT=25565
BOT_PASSWORD=optional_password
BOT_VERSION=1.20
  1. Start the bot:
pnpm dev

🎮 Usage

Once the bot is connected, you can interact with it using chat commands in Minecraft. All commands start with #.

Basic Commands

  • #help - Show available commands
  • #follow - Make the bot follow you
  • #stop - Stop the current action
  • #come - Make the bot come to your location

Natural Language Commands

You can also give the bot natural language commands, and it will try to understand and execute them. For example:

  • "Build a house"
  • "Find some diamonds"
  • "Help me fight these zombies"
  • "Collect wood from nearby trees"

🛠️ Development

Project Structure

src/
├── agents/     # AI agent implementations
├── composables/# Reusable composable functions
├── libs/       # Core library code
├── mineflayer/ # Mineflayer plugin implementations
├── prompts/    # AI prompt templates
├── skills/     # Bot skills and actions
└── utils/      # Utility functions

Commands

  • pnpm dev - Start the bot in development mode
  • pnpm lint - Run ESLint
  • pnpm typecheck - Run TypeScript type checking
  • pnpm test - Run tests

🙏 Acknowledgements

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.