# TeeworldsClient ### #on_snapshot(&block) **Parameter: block [Block |[context](../classes/Context.md)|]** TODO: generated documentation **Example:** ```ruby client = TeeworldsClient.new client.on_snapshot do |context| # TODO: generated documentation end client.connect('localhost', 8303, detach: true) ``` ### #on_rcon_line(&block) **Parameter: block [Block |[context](../classes/Context.md)|]** TODO: generated documentation **Example:** ```ruby client = TeeworldsClient.new client.on_rcon_line do |context| # TODO: generated documentation end client.connect('localhost', 8303, detach: true) ``` ### #on_disconnect(&block) **Parameter: block [Block |[context](../classes/Context.md)|]** TODO: generated documentation **Example:** ```ruby client = TeeworldsClient.new client.on_disconnect do |context| # TODO: generated documentation end client.connect('localhost', 8303, detach: true) ``` ### #on_connected(&block) **Parameter: block [Block |[context](../classes/Context.md)|]** TODO: generated documentation **Example:** ```ruby client = TeeworldsClient.new client.on_connected do |context| # TODO: generated documentation end client.connect('localhost', 8303, detach: true) ``` ### #on_client_info(&block) **Parameter: block [Block |[context](../classes/Context.md)|]** TODO: generated documentation **Example:** ```ruby client = TeeworldsClient.new client.on_client_info do |context| # TODO: generated documentation end client.connect('localhost', 8303, detach: true) ``` ### #on_chat(&block) **Parameter: block [Block |[ChatMessage](../classes/ChatMessage.md)|]** Takes a block that will be called when the client receives a chat message. The block takes one parameter of type [ChatMessage](../classes/ChatMessage.md). **Example:** ```ruby client = TeeworldsClient.new client.on_chat do |msg| puts "[chat] #{msg}" end client.connect('localhost', 8303, detach: true) ``` ### #on_map_change(&block) **Parameter: block [Block |[context](../classes/Context.md)|]** Takes a block that will be called when the client receives a map change packet. **Example:** ```ruby client = TeeworldsClient.new client.on_map_change do |context| puts "Got new map!" # skip default behavior # in this case do not send the ready packet context.cancle end client.connect('localhost', 8303, detach: true) ``` ### #on_client_drop(&block) **Parameter: block [Block |[context](../classes/Context.md)|]** Takes a block that will be called when the client receives a client drop packet. Context.data: ```ruby [ player: player_object, chunk: raw_packet_data, client_id: 0, reason: '', silent: false ] ``` **Example:** ```ruby client.on_client_drop do |ctx| unless ctx.data[:silent] reason = ctx.data[:reason] ? " (#{ctx.data[:reason]})" : '' puts "'#{ctx.data[:player].name}' left the game#{reason}" end end ``` ### #connect(ip, port, options) **Parameter: ip [String]** **Parameter: port [Integer]** **Parameter: options [Hash] (default: {detach: false})** Connect to given server. The option ``:detach`` decides wether the connection should run in a background thread or not. By default no thread will be spawned. And the ``connect()`` method blocks your main thread. Meaning no line below that will be run as long as the connection is up. If you decide to provide the option ``detach: true`` it will spawn a thread and run the connection in there. Meaning it will jump to the next line after ``connect()`` is called. So it is your responsibility to keep the program running. If the connection happens in the last line of your program it will just quit. So you have to keep it up using a loop for example. **Example:** ```ruby client = TeeworldsClient.new(verbose: true) # this will spawn a background thread client.connect('localhost', 8303, detach: true) # this line will be run directly after the connection # this line will be running as long as the connection is up client.connect('localhost', 8303, detach: false) # this line will only be run if the connection broke ``` ### #send_chat(str) **Parameter: str [String]** Send a chat message. Takes the chat message as String. **Example:** ```ruby client = TeeworldsClient.new(verbose: true) client.connect('localhost', 8303, detach: true) client.send_chat('hello world!') ```