Pull chat manager file over from Elektordi/pyCraft
This commit is contained in:
		@@ -1,2 +1,3 @@
 | 
			
		||||
from .data import DataManager
 | 
			
		||||
from .chunks import ChunksManager
 | 
			
		||||
from .chat import ChatManager
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										36
									
								
								custom/managers/chat.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								custom/managers/chat.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,36 @@
 | 
			
		||||
import json
 | 
			
		||||
 | 
			
		||||
from minecraft.networking.packets import clientbound, serverbound
 | 
			
		||||
 | 
			
		||||
class ChatManager:
 | 
			
		||||
 | 
			
		||||
    def __init__(self):
 | 
			
		||||
        return
 | 
			
		||||
 | 
			
		||||
    def translate_chat(self, data):
 | 
			
		||||
        if isinstance(data, str):
 | 
			
		||||
            return data
 | 
			
		||||
        elif 'extra' in data:
 | 
			
		||||
            return "".join([self.translate_chat(x) for x in data['extra']])
 | 
			
		||||
        elif 'text' in data:
 | 
			
		||||
            return data['text']
 | 
			
		||||
        else:
 | 
			
		||||
            return "?"
 | 
			
		||||
 | 
			
		||||
    def print_chat(self, chat_packet):
 | 
			
		||||
        # TODO: Replace with handler
 | 
			
		||||
        try:
 | 
			
		||||
            print("[%s] %s"%(chat_packet.field_string('position'), self.translate_chat(json.loads(chat_packet.json_data))))
 | 
			
		||||
        except Exception as ex:
 | 
			
		||||
            print("Exception %r on message (%s): %s" % (ex, chat_packet.field_string('position'), chat_packet.json_data))
 | 
			
		||||
    
 | 
			
		||||
    def register(self, connection):
 | 
			
		||||
        connection.register_packet_listener(self.print_chat, clientbound.play.ChatMessagePacket)
 | 
			
		||||
    
 | 
			
		||||
    def send(self, connection, text):
 | 
			
		||||
        if not text:
 | 
			
		||||
            # Prevents connection bug when sending empty chat message
 | 
			
		||||
            return
 | 
			
		||||
        packet = serverbound.play.ChatPacket()
 | 
			
		||||
        packet.message = text
 | 
			
		||||
        connection.write_packet(packet)
 | 
			
		||||
							
								
								
									
										12
									
								
								main.py
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								main.py
									
									
									
									
									
								
							@@ -5,7 +5,7 @@ USERNAME = ''
 | 
			
		||||
PASSWORD = ''
 | 
			
		||||
SERVER = ''
 | 
			
		||||
 | 
			
		||||
from custom.managers import DataManager, ChunksManager
 | 
			
		||||
from custom.managers import DataManager, ChunksManager, ChatManager
 | 
			
		||||
 | 
			
		||||
from minecraft import authentication
 | 
			
		||||
from minecraft.exceptions import YggdrasilError
 | 
			
		||||
@@ -35,16 +35,12 @@ def main():
 | 
			
		||||
    connection.register_packet_listener(
 | 
			
		||||
        handle_join_game, clientbound.play.JoinGamePacket)
 | 
			
		||||
 | 
			
		||||
    def print_chat(chat_packet):
 | 
			
		||||
        print("Message (%s): %s" % (
 | 
			
		||||
            chat_packet.field_string('position'), chat_packet.json_data))
 | 
			
		||||
 | 
			
		||||
    connection.register_packet_listener(
 | 
			
		||||
        print_chat, clientbound.play.ChatMessagePacket)
 | 
			
		||||
 | 
			
		||||
    chunks = ChunksManager(mcdata)
 | 
			
		||||
    chunks.register(connection)
 | 
			
		||||
 | 
			
		||||
    chat = ChatManager()
 | 
			
		||||
    chat.register(connection)
 | 
			
		||||
 | 
			
		||||
    connection.connect()
 | 
			
		||||
 | 
			
		||||
    print('connected')
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user