diff --git a/bot.py b/bot.py index 2a34515..60fa8bd 100644 --- a/bot.py +++ b/bot.py @@ -18,13 +18,21 @@ from minecraft.exceptions import YggdrasilError from minecraft.networking.connection import Connection from minecraft.networking.packets import Packet, clientbound, serverbound +from custom.networking.packets.clientbound.play.block_change_packet import BlockChangePacket + +TICK = 0.05 +last_tick = time.time() + +def tick(): + return + def bot(global_state): g = global_state if 'mcdata' not in g: g.mcdata = DataManager('./mcdata') - if 'connection' not in g: + if not g.connection: auth_token = authentication.AuthenticationToken() try: auth_token.authenticate(USERNAME, PASSWORD) @@ -49,4 +57,37 @@ def bot(global_state): g.connection.connect() - time.sleep(1) + + def x(p): + print('sup block change:') + print(p) + + g.connection.register_packet_listener( + x, 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.') diff --git a/main.py b/main.py index 9662ca1..d497813 100644 --- a/main.py +++ b/main.py @@ -12,6 +12,7 @@ from watchdog.events import PatternMatchingEventHandler import bot global_state = Bunch() g = global_state +g.connection = False @app.route('/') def hello_world(): @@ -24,10 +25,10 @@ reload_timeout = time.time() def main(): def reload_bot(event): global reload_timeout - if time.time() - reload_timeout > 5.0: + if time.time() - reload_timeout > 2.0: reload_timeout = time.time() print('Reloading...') - importlib.reload(bot) + g.running = False event_handler = PatternMatchingEventHandler(patterns=['*.py'], ignore_patterns=['./main.py']) event_handler.on_any_event = reload_bot @@ -38,7 +39,9 @@ def main(): try: while True: + g.running = True bot.bot(global_state) + importlib.reload(bot) except KeyboardInterrupt: observer.stop() observer.join()