A Minecraft bot so human-like, players can't tell the difference.
"Not a noisy machine. A creature that hesitates, breathes, forgets, gets distracted, and occasionally does things for no reason."
- πΆ Human-like Movement β Bezier-curve turning with ease-in-out, micro-stutters, sub-optimal pathing, sprint toggling, variable walk speed
- π¬ Natural Chat β Delayed responses, adjacent-key typos + corrections, ignores messages, LLM-powered, mood-dependent talkativeness
- ποΈ Perception β Looks at entities, flinches at damage, double-takes, nervous scanning, idle camera drift, stare at players
- π§ Behavior AI β Utility-scored behavior with randomness + internal mood/energy/boredom system
- π― Imperfect Skills β Mines wrong blocks, eats at wrong hunger, fumbles inventory, places wrong blocks sometimes
- π Mood System β Neutral, curious, tired, bored, social, focused, startled, nervous β affects all behavior
- β±οΈ APM Throttle β Capped at human action-per-minute rates (default: 80)
- π΄ AFK Simulation β Randomly goes AFK, has session durations, logs off naturally
- π¨ Custom Skin β Inject custom skin URL via login packet properties
- π€ LLM Chat β Optional Ollama/OpenAI integration for dynamic conversation
- π GitHub Actions β Auto-test workflow runs the bot for 5-19 minutes on a real server
# Clone
git clone https://github.com/arpitrajjj/Mishri.git
cd Mishri
# Install
npm install
# Configure (edit server details + skin)
nano config/default.json
# Run
npm startEdit config/default.json:
{
"server": {
"host": "your-server.com",
"port": 25565,
"version": "1.21.11"
},
"bot": {
"username": "Mishri",
"auth": "offline"
},
"skin": {
"enabled": true,
"url": "https://textures.minecraft.net/texture/YOUR_TEXTURE_ID",
"model": "classic"
},
"humanness": {
"reactionDelayMin": 200,
"typoChance": 0.15,
"maxAPM": 80,
"doubleTakeChance": 0.02,
"nervousLookAroundChance": 0.03
}
}Get your skin texture URL from Minecraft Skin Viewer or extract it from a premium account. Set skin.enabled to true and paste the URL.
{
"llm": {
"enabled": true,
"provider": "ollama",
"model": "llama3",
"baseUrl": "http://localhost:11434"
}
}The bot includes a ready-to-use GitHub Actions workflow that:
- Spins up a Paper 1.21.11 Minecraft server in Docker
- Installs Mishri's dependencies
- Runs humanness tests
- Connects Mishri to the server for 5-19 minutes
- Observes behavior and logs results
gh workflow run "Mishri Bot Test Run" -f duration=15βββββββββββββββββββββββββββββββββββββββββββ
β MishriBot (Core) β
β + SkinManager (π¨) β
ββββββββββββ¬βββββββββββ¬ββββββββββββββββββββ€
β Movement β Perceptionβ Social β
β Manager β Manager β Manager β
ββββββββββββ΄βββββββββββ΄ββββββββββββββββββββ€
β Behavior Orchestrator β
β (Utility AI + Mood + Energy) β
βββββββββββββββββββββββββββββββββββββββββββ€
β Skill Manager β
β (Mining Β· Eating Β· Building) β
βββββββββββββββββββββββββββββββββββββββββββ€
β π Humanness Layer β
β (Jitter Β· Delays Β· Mood Β· Typo Β· β
β Boredom Β· Fatigue Β· Fidget Β· β
β DoubleTake Β· Nervous Β· AFK) β
βββββββββββββββββββββββββββββββββββββββββββ€
β Mineflayer + Plugins β
βββββββββββββββββββββββββββββββββββββββββββ
Mishri isn't stateless β it has internal moods and drives that make behavior feel organic:
| State | Effect |
|---|---|
| Mood | neutral β curious β tired β bored β social β focused β startled β nervous |
| Energy | 0-1, depletes over time, affects speed and willingness to act |
| Curiosity | 0-1, drives exploration vs staying put |
| Social Energy | Introvert drain β depletes with chat, recovers in solitude |
| Boredom | Accumulates when idle, makes bot more likely to wander or fidget |
| Fatigue | Gradual slowdown over long sessions (everything gets slower) |
- No perfect pathing β sub-optimal routes with noise offsets
- No instant responses β 2.5-10s chat delay
- No perfect APM β capped at human range (80 default)
- No 24/7 uptime β AFK + session simulation
- No identical patterns β everything randomized
- No chat patterns β typos, corrections, varied wording, ignore chance
- No perfect aim β gaussian noise + fatigue jitter
- No superhuman awareness β limited FOV + distance
- No instant inventory β delays for item switching
- No robotic turning β Bezier curves with ease-in-out + overshoot
- No constant activity β mood-dependent pacing, boredom, tiredness
- No emotionless behavior β startle, nervous scanning, double-takes
Mishri/
βββ .github/workflows/
β βββ test-bot.yml # GitHub Actions test workflow
βββ config/
β βββ default.json # All configuration
βββ src/
β βββ core/
β β βββ MishriBot.js # Main bot class
β β βββ SkinManager.js # Custom skin injection
β βββ movement/
β β βββ MovementManager.js
β βββ perception/
β β βββ PerceptionManager.js
β βββ social/
β β βββ SocialManager.js
β βββ behavior/
β β βββ BehaviorOrchestrator.js
β βββ humanness/
β β βββ HumannessLayer.js # β€οΈ The heart of deception
β βββ skills/
β β βββ SkillManager.js
β βββ index.js
βββ tests/
β βββ humanness.test.js
βββ package.json
βββ README.md
ISC