Add burner account credentials to use by default

This commit is contained in:
Tanner Collin 2021-05-01 23:22:43 +00:00
parent a87cc85eab
commit 0d23dbaf9f
2 changed files with 49 additions and 12 deletions

View File

@ -1,6 +1,7 @@
# Mosfet Minecraft Bot
A general-purpose Minecraft 1.16 bot written in Python.
A general-purpose Minecraft 1.16 bot written in Python that uses an actual
Minecraft account to play.
Mosfet is able to farm wood by cutting trees, farm crops, gather sand, farm
netherwart, and trade with villagers to get emeralds. He can eat, sleep, and
@ -28,15 +29,32 @@ $ cd minecraft-bot/
## Running
If you want to use the built-in burner account (Minecraft name `mattstack`):
```
$ USERNAME=you@domain.com PASSWORD=supersecret SERVER=example.com ./run_linux.sh
$ SERVER=minecraft.example.com ./run_linux.sh
```
Use `PORT` to specify a custom port to connect to:
```
$ SERVER=localhost PORT=12345 ./run_linux.sh
```
If you have your own alt account:
```
$ USERNAME=you@domain.com PASSWORD=supersecret SERVER=minecraft.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.
example, if the bot's name is `mattstack`, then you would issue commands like
`kfarm wood` or `kpos`. This lets you run multiple bots on the same server.
In the following examples, we'll assume the bot's name is `mosfet1`, so commands
would be ran like `1farm wood` or `1pos`.
The exception are the below public commands, they can optionally be prefixed with `!`
and all bots will run the command.

View File

@ -9,11 +9,6 @@ import importlib
from math import floor, ceil
from copy import copy
USERNAME = os.getenv('USERNAME')
PASSWORD = os.getenv('PASSWORD')
SERVER = os.getenv('SERVER')
PORT = int(os.environ.get('PORT', 25565))
from . import monkey_patch # must be before any possible pyCraft imports
from minecraft import authentication
@ -245,14 +240,25 @@ def init(global_state):
g.maximum_supply_slots = 33
def bot(global_state):
USERNAME = os.getenv('USERNAME')
PASSWORD = os.getenv('PASSWORD')
SERVER = os.getenv('SERVER')
PORT = int(os.environ.get('PORT', 25565))
g = global_state
if not g.mcdata:
g.mcdata = DataManager('./minecraft_data')
if not SERVER:
print('You must specify a server to connect to.')
sys.exit()
print()
print('You must specify a server to connect to. For example:')
print('SERVER=minecraft.example.com ./run_linux.sh')
print('SERVER=localhost PORT=12345 ./run_linux.sh')
print()
print('If you want to use your own account:')
print('USERNAME=you@domain.com PASSWORD=supersecret SERVER=minecraft.example.com ./run_linux.sh')
os._exit(0)
elif not g.connection:
if USERNAME and PASSWORD:
auth_token = authentication.AuthenticationToken()
@ -260,12 +266,25 @@ def bot(global_state):
auth_token.authenticate(USERNAME, PASSWORD)
except YggdrasilError as e:
print(e)
sys.exit()
os._exit(0)
print("Logged in as %s..." % auth_token.username)
g.connection = Connection(SERVER, PORT, auth_token=auth_token)
elif USERNAME:
print('No password provided, attempting to connect in offline mode...')
g.connection = Connection(SERVER, PORT, username=USERNAME)
else:
print('No username or password provided, using burner minecraft account...')
USERNAME = 'moc.liamg@monortem'[::-1]
PASSWORD = '!8891anteR'[::-1]
auth_token = authentication.AuthenticationToken()
try:
auth_token.authenticate(USERNAME, PASSWORD)
except YggdrasilError as e:
print(e)
os._exit(0)
print("Logged in as %s..." % auth_token.username)
g.connection = Connection(SERVER, PORT, auth_token=auth_token)
g.chunks = ChunksManager(g.mcdata)