Compare commits
3 Commits
514b324156
...
db8d8d7b85
Author | SHA1 | Date | |
---|---|---|---|
db8d8d7b85 | |||
76d5609c26 | |||
ca40d3eba2 |
61
bot.py
61
bot.py
|
@ -2,28 +2,41 @@ if __name__ == '__main__':
|
||||||
print('Run main.py instead.')
|
print('Run main.py instead.')
|
||||||
exit(1)
|
exit(1)
|
||||||
|
|
||||||
|
import os
|
||||||
import time
|
import time
|
||||||
|
import importlib
|
||||||
|
|
||||||
USERNAME = ''
|
USERNAME = os.environ['USERNAME']
|
||||||
PASSWORD = ''
|
PASSWORD = os.environ['PASSWORD']
|
||||||
SERVER = ''
|
SERVER = os.environ['SERVER']
|
||||||
|
|
||||||
|
import monkey_patch # must be before any possible pyCraft imports
|
||||||
|
|
||||||
from custom.managers import DataManager, ChunksManager, ChatManager
|
from custom.managers import DataManager, ChunksManager, ChatManager
|
||||||
|
|
||||||
import monkey_patch
|
|
||||||
|
|
||||||
from minecraft import authentication
|
from minecraft import authentication
|
||||||
from minecraft.exceptions import YggdrasilError
|
from minecraft.exceptions import YggdrasilError
|
||||||
from minecraft.networking.connection import Connection
|
from minecraft.networking.connection import Connection
|
||||||
from minecraft.networking.packets import Packet, clientbound, serverbound
|
from minecraft.networking.packets import Packet, clientbound, serverbound
|
||||||
|
|
||||||
|
from custom.networking.packets.clientbound.play.block_change_packet import BlockChangePacket
|
||||||
|
|
||||||
|
import packet_handlers
|
||||||
|
importlib.reload(packet_handlers)
|
||||||
|
|
||||||
|
TICK = 0.05
|
||||||
|
last_tick = time.time()
|
||||||
|
|
||||||
|
def tick():
|
||||||
|
return
|
||||||
|
|
||||||
def bot(global_state):
|
def bot(global_state):
|
||||||
g = global_state
|
g = global_state
|
||||||
|
|
||||||
if 'mcdata' not in g:
|
if 'mcdata' not in g:
|
||||||
g.mcdata = DataManager('./mcdata')
|
g.mcdata = DataManager('./mcdata')
|
||||||
|
|
||||||
if 'connection' not in g:
|
if not g.connection:
|
||||||
auth_token = authentication.AuthenticationToken()
|
auth_token = authentication.AuthenticationToken()
|
||||||
try:
|
try:
|
||||||
auth_token.authenticate(USERNAME, PASSWORD)
|
auth_token.authenticate(USERNAME, PASSWORD)
|
||||||
|
@ -48,4 +61,38 @@ def bot(global_state):
|
||||||
|
|
||||||
g.connection.connect()
|
g.connection.connect()
|
||||||
|
|
||||||
time.sleep(1)
|
def packet_wrapper(handler):
|
||||||
|
def wrapper(packet):
|
||||||
|
print('called')
|
||||||
|
handler(packet, g)
|
||||||
|
return wrapper
|
||||||
|
|
||||||
|
h = packet_wrapper(packet_handlers.handle_block_change)
|
||||||
|
g.connection.register_packet_listener(h, BlockChangePacket)
|
||||||
|
|
||||||
|
try:
|
||||||
|
#while not player_info.pos:
|
||||||
|
# time.sleep(TICK)
|
||||||
|
#print('Player loaded.')
|
||||||
|
|
||||||
|
#x, y, z = pint(player_info.pos)
|
||||||
|
#while (floor(x/16), floor(y/16), floor(z/16)) not in player_info.chunks.chunks:
|
||||||
|
# time.sleep(TICK)
|
||||||
|
#print('Chunks loaded.')
|
||||||
|
|
||||||
|
while g.running:
|
||||||
|
tick()
|
||||||
|
|
||||||
|
global last_tick
|
||||||
|
sleep_time = TICK + last_tick - time.time()
|
||||||
|
if sleep_time < 0: sleep_time = 0
|
||||||
|
time.sleep(sleep_time)
|
||||||
|
last_tick = time.time()
|
||||||
|
finally:
|
||||||
|
print('Removing listeners...')
|
||||||
|
g.connection.packet_listeners = []
|
||||||
|
g.connection.early_packet_listeners = []
|
||||||
|
g.connection.outgoing_packet_listeners = []
|
||||||
|
g.connection.early_outgoing_packet_listeners = []
|
||||||
|
|
||||||
|
print('Bot module loaded.')
|
||||||
|
|
|
@ -28,8 +28,8 @@ class ChunkDataPacket(Packet):
|
||||||
self.data = file_object.read(size)
|
self.data = file_object.read(size)
|
||||||
size_entities = VarInt.read(file_object)
|
size_entities = VarInt.read(file_object)
|
||||||
self.entities = []
|
self.entities = []
|
||||||
#for i in range(size_entities):
|
for i in range(size_entities):
|
||||||
# self.entities.append(Nbt.read(file_object))
|
self.entities.append(Nbt.read(file_object))
|
||||||
|
|
||||||
self.decode_chunk_data()
|
self.decode_chunk_data()
|
||||||
|
|
||||||
|
|
8
main.py
8
main.py
|
@ -12,6 +12,7 @@ from watchdog.events import PatternMatchingEventHandler
|
||||||
import bot
|
import bot
|
||||||
global_state = Bunch()
|
global_state = Bunch()
|
||||||
g = global_state
|
g = global_state
|
||||||
|
g.connection = False
|
||||||
|
|
||||||
@app.route('/')
|
@app.route('/')
|
||||||
def hello_world():
|
def hello_world():
|
||||||
|
@ -24,10 +25,10 @@ reload_timeout = time.time()
|
||||||
def main():
|
def main():
|
||||||
def reload_bot(event):
|
def reload_bot(event):
|
||||||
global reload_timeout
|
global reload_timeout
|
||||||
if time.time() - reload_timeout > 5.0:
|
if time.time() - reload_timeout > 2.0:
|
||||||
reload_timeout = time.time()
|
reload_timeout = time.time()
|
||||||
print('Reloading...')
|
print('Reloading...')
|
||||||
importlib.reload(bot)
|
g.running = False
|
||||||
|
|
||||||
event_handler = PatternMatchingEventHandler(patterns=['*.py'], ignore_patterns=['./main.py'])
|
event_handler = PatternMatchingEventHandler(patterns=['*.py'], ignore_patterns=['./main.py'])
|
||||||
event_handler.on_any_event = reload_bot
|
event_handler.on_any_event = reload_bot
|
||||||
|
@ -38,7 +39,9 @@ def main():
|
||||||
|
|
||||||
try:
|
try:
|
||||||
while True:
|
while True:
|
||||||
|
g.running = True
|
||||||
bot.bot(global_state)
|
bot.bot(global_state)
|
||||||
|
importlib.reload(bot)
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
observer.stop()
|
observer.stop()
|
||||||
observer.join()
|
observer.join()
|
||||||
|
@ -46,4 +49,5 @@ def main():
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
threading.Thread(target=app.run).start()
|
threading.Thread(target=app.run).start()
|
||||||
|
time.sleep(1)
|
||||||
main()
|
main()
|
||||||
|
|
|
@ -3,7 +3,7 @@ from custom.networking.packets.clientbound.play import chunk_data, block_change_
|
||||||
|
|
||||||
def get_packets(old_get_packets):
|
def get_packets(old_get_packets):
|
||||||
def wrapper(func, context):
|
def wrapper(func, context):
|
||||||
print('Monkey-patched.')
|
print('Monkey-patch worked.')
|
||||||
packets = func(context)
|
packets = func(context)
|
||||||
|
|
||||||
# add any custom packets here
|
# add any custom packets here
|
||||||
|
|
3
packet_handlers.py
Normal file
3
packet_handlers.py
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
def handle_block_change(p, g):
|
||||||
|
print('block change:')
|
||||||
|
print(p)
|
Loading…
Reference in New Issue
Block a user