if __name__ == '__main__': print('Run main.py instead.') exit(1) import os import time import importlib USERNAME = os.environ['USERNAME'] PASSWORD = os.environ['PASSWORD'] SERVER = os.environ['SERVER'] import monkey_patch # must be before any possible pyCraft imports from custom.managers import DataManager, ChunksManager, ChatManager from minecraft import authentication 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 from panda3d.core import LPoint3f import packet_handlers importlib.reload(packet_handlers) 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 not g.connection: auth_token = authentication.AuthenticationToken() try: auth_token.authenticate(USERNAME, PASSWORD) except YggdrasilError as e: print(e) sys.exit() print("Logged in as %s..." % auth_token.username) g.connection = Connection(SERVER, 25565, auth_token=auth_token) g.chunks = ChunksManager(g.mcdata) g.chunks.register(g.connection) g.chat = ChatManager() g.chat.register(g.connection) g.connection.connect() def packet_wrapper(handler): def wrapper(packet): print('called') handler(packet, g) return wrapper h = packet_wrapper(packet_handlers.handle_join_game) g.connection.register_packet_listener(h, clientbound.play.JoinGamePacket) h = packet_wrapper(packet_handlers.handle_block_change) g.connection.register_packet_listener(h, BlockChangePacket) h = packet_wrapper(packet_handlers.handle_position_and_look) g.connection.register_packet_listener(h, clientbound.play.PlayerPositionAndLookPacket) 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.')