mosfet/README.md

172 lines
4.2 KiB
Markdown

# Mosfet Minecraft Bot
A general-purpose Minecraft 1.16 bot written in Python.
Mosfet is able to farm wood by cutting trees, gather sand, gather netherwart,
and trade with villagers to get emeralds. He can eat, sleep, and flee from
threats.
## Requirements
- Python >= 3.8
- pip
- virtualenv
- git
- wget
- unzip
## Linux Setup
Assuming Debian / Ubuntu based distro:
```
$ sudo apt update
$ sudo apt install build-essential python3 python3-dev python3-pip python3-virtualenv virtualenv git wget unzip
$ git clone https://git.tannercollin.com/tanner/minecraft-bot.git
$ cd minecraft-bot/
```
## Running
```
$ USERNAME=you@domain.com PASSWORD=supersecret SERVER=example.com ./run_linux.sh
```
## Commands
The command prefix character is the last character of the bot's name. For
example, if the bot's name is `mosfet1`, then you would issue commands like
`1farm wood` or `1pos`. This lets you run multiple bots on the same server.
The exception are the below public commands, they can optionally be prefixed with `!`
and all bots will run the command.
Commands can be issued in public chat or private message like `/msg mosfet1
1farm wood`. The bot will reply the same way the command was issued.
Use `echo` to make Mosfet run Minecraft commands. For example, `1echo /sethome
home` will cause him to issue the `/sethome` command.
### Public Commands
These can be ran by anyone, all bots will reply.
`!help` - prints this whole help message to console
`!help [command]` - replies in-game explaining command
`!ping` - replies with "pong"
`!echo [data]` - replies with "data"
`!pos` - replies with position and dimension
`!afk` - goes AFK with /afk
`!unafk` - goes not AFK with /afk
`!error` - raises an error
`!inv` - prints current inventory
`!time` - replies with Minecraft world time
`!count [id]` - counts the number of items with that id
`!loaded` - replies with the current loaded area
`!players` - prints the current players
`!players clear` - clears the current player list
`!objects` - prints the current items on ground
`!objects clear` - clears the current object list
`!mobs` - prints the current mobs
`!mobs clear` - clears the current mob list
`!monsters` - prints the current monsters
`!villagers` - prints the current villagers
`!threats` - prints the dangerous monsters within 20 blocks
`!threats [num]` - prints the dangerous monsters within num blocks
`"zzz" or !zzz` - bot does /afk to let others sleep
`!tree` - replies with the closest tree
`!block x y z` - replies what block is at (x, y, z)
### Bot-specific Commands
These will only run for the bot they are addressed to.
`1respawn` - respawns the bot if it's dead
`1gather wood` - gathers wood from the world
`1gather sand` - gathers sand from the world
`1farm wood` - farms wood from a certain area
`1farm sand` - farms sand from a certain area
`1farm wart` - farms netherwart from a certain area
`1farm crop` - farms mature crops from a certain area
`1loiter` - stands still but eats, sleeps, and flees
`1trade` - sells items to villagers to get emeralds
`1stop` - stops the current job and resets bot
`1drop` - drops the current stack its holding
`1select [id]` - moves item with id into main hand
`1dump [id]` - drops all items matching id
`1drain` - drops all items in inventory
`1fill [x] [y] [z] [x] [y] [z]` - fills the cuboid with the block at the first coordinate
`1here` - bot comes to your location
`1goto [x] [y] [z]` - sends the bot to coordinate (x, y, z)
`1close` - closes the current Minecraft window
`1click [slot] [button] [mode]` - clicks the current window
`1use` - use the item it's currently holding
`1interact [entity id]` - interacts with that entity
### Authorized Commands
These dangerous commands can only be ran by the bot owner.
`1print [expression]` - replies with Python eval(expression)
`1exit` - exits the program
## License
This program is free and open-source software licensed under the MIT License.
Please see the `LICENSE` file for details.
That means you have the right to study, change, and distribute the software and
source code to anyone and for any purpose. You deserve these rights. Please take
advantage of them because I like pull requests and would love to see this code
put to use.
## Acknowledgements
Thanks to Isaia and the devs behind pyCraft.