diff --git a/docs/README.md b/docs/README.md
index f57e20b..32ed5a9 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -84,3 +84,29 @@ Version v0.0.6
[#send_input(input = {})](classes/TeeworldsClient.md#send_input)
[#on_tick(&block)](classes/TeeworldsClient.md#on_tick)
+
+### [TeeworldsServer](classes/TeeworldsServer.md)
+
+[#on_tick(&block)](classes/TeeworldsServer.md#on_tick)
+
+[#on_client_drop(&block)](classes/TeeworldsServer.md#on_client_drop)
+
+[#on_input(&block)](classes/TeeworldsServer.md#on_input)
+
+[#on_enter_game(&block)](classes/TeeworldsServer.md#on_enter_game)
+
+[#on_start_info(&block)](classes/TeeworldsServer.md#on_start_info)
+
+[#on_ready(&block)](classes/TeeworldsServer.md#on_ready)
+
+[#on_info(&block)](classes/TeeworldsServer.md#on_info)
+
+[#on_emote(&block)](classes/TeeworldsServer.md#on_emote)
+
+[#on_shutdown(&block)](classes/TeeworldsServer.md#on_shutdown)
+
+[#on_rcon_cmd(&block)](classes/TeeworldsServer.md#on_rcon_cmd)
+
+[#on_rcon_auth(&block)](classes/TeeworldsServer.md#on_rcon_auth)
+
+[#on_chat(&block)](classes/TeeworldsServer.md#on_chat)
diff --git a/docs/classes/TeeworldsServer.md b/docs/classes/TeeworldsServer.md
new file mode 100644
index 0000000..c2e5494
--- /dev/null
+++ b/docs/classes/TeeworldsServer.md
@@ -0,0 +1,207 @@
+# TeeworldsServer
+
+### #on_tick(&block)
+
+**Parameter: block [Block |[context](../classes/Context.md)|]**
+
+context.message is nil because there is no message payload.
+
+**Example:**
+```ruby
+server = TeeworldsServer.new
+
+server.on_tick do |context|
+ # TODO: generated documentation
+end
+
+server.run('127.0.0.1', 8377)
+```
+
+### #on_client_drop(&block)
+
+**Parameter: block [Block |[context](../classes/Context.md)|]**
+
+context.message is a [SvClientDrop](../classes/messages/SvClientDrop.md)
+
+**Example:**
+```ruby
+server = TeeworldsServer.new
+
+server.on_client_drop do |context|
+ # TODO: generated documentation
+end
+
+server.run('127.0.0.1', 8377)
+```
+
+### #on_input(&block)
+
+**Parameter: block [Block |[context](../classes/Context.md)|]**
+
+TODO: generated documentation
+
+**Example:**
+```ruby
+server = TeeworldsServer.new
+
+server.on_input do |context|
+ # TODO: generated documentation
+end
+
+server.run('127.0.0.1', 8377)
+```
+
+### #on_enter_game(&block)
+
+**Parameter: block [Block |[context](../classes/Context.md)|]**
+
+TODO: generated documentation
+
+**Example:**
+```ruby
+server = TeeworldsServer.new
+
+server.on_enter_game do |context|
+ # TODO: generated documentation
+end
+
+server.run('127.0.0.1', 8377)
+```
+
+### #on_start_info(&block)
+
+**Parameter: block [Block |[context](../classes/Context.md)|]**
+
+TODO: generated documentation
+
+**Example:**
+```ruby
+server = TeeworldsServer.new
+
+server.on_start_info do |context|
+ # TODO: generated documentation
+end
+
+server.run('127.0.0.1', 8377)
+```
+
+### #on_ready(&block)
+
+**Parameter: block [Block |[context](../classes/Context.md)|]**
+
+TODO: generated documentation
+
+**Example:**
+```ruby
+server = TeeworldsServer.new
+
+server.on_ready do |context|
+ # TODO: generated documentation
+end
+
+server.run('127.0.0.1', 8377)
+```
+
+### #on_info(&block)
+
+**Parameter: block [Block |[context](../classes/Context.md)|]**
+
+TODO: generated documentation
+
+**Example:**
+```ruby
+server = TeeworldsServer.new
+
+server.on_info do |context|
+ # TODO: generated documentation
+end
+
+server.run('127.0.0.1', 8377)
+```
+
+### #on_emote(&block)
+
+**Parameter: block [Block |[context](../classes/Context.md)|]**
+
+TODO: generated documentation
+
+**Example:**
+```ruby
+server = TeeworldsServer.new
+
+server.on_emote do |context|
+ # TODO: generated documentation
+end
+
+server.run('127.0.0.1', 8377)
+```
+
+### #on_shutdown(&block)
+
+**Parameter: block [Block |[context](../classes/Context.md)|]**
+
+TODO: generated documentation
+
+**Example:**
+```ruby
+server = TeeworldsServer.new
+
+server.on_shutdown do |context|
+ # TODO: generated documentation
+end
+
+server.run('127.0.0.1', 8377)
+```
+
+### #on_rcon_cmd(&block)
+
+**Parameter: block [Block |[context](../classes/Context.md)|]**
+
+TODO: generated documentation
+
+**Example:**
+```ruby
+server = TeeworldsServer.new
+
+server.on_rcon_cmd do |context|
+ # TODO: generated documentation
+end
+
+server.run('127.0.0.1', 8377)
+```
+
+### #on_rcon_auth(&block)
+
+**Parameter: block [Block |[context](../classes/Context.md)|]**
+
+TODO: generated documentation
+
+**Example:**
+```ruby
+server = TeeworldsServer.new
+
+server.on_rcon_auth do |context|
+ # TODO: generated documentation
+end
+
+server.run('127.0.0.1', 8377)
+```
+
+### #on_chat(&block)
+
+**Parameter: block [Block |[context](../classes/Context.md)|]**
+
+context.message is nil because there is no message payload.
+
+**Example:**
+```ruby
+server = TeeworldsServer.new
+
+server.on_chat do |context|
+ # TODO: generated documentation
+end
+
+server.run('127.0.0.1', 8377)
+```
+
+
diff --git a/lib/game_server.rb b/lib/game_server.rb
index 631eb36..7144733 100644
--- a/lib/game_server.rb
+++ b/lib/game_server.rb
@@ -43,7 +43,7 @@ class GameServer
def on_emoticon(chunk, _packet)
msg = ClEmoticon.new(chunk.data[1..])
- return if call_hook(:emote, Context.new(msg, chunk:, packet:)).nil?
+ call_hook(:emote, Context.new(msg, chunk:, packet:)).nil?
end
def on_info(chunk, packet)
@@ -145,7 +145,7 @@ class GameServer
return if call_hook(:input, Context.new(msg, chunk:, packet:)).nil?
dir = msg.direction
- puts "#{packet.client.player.id} tried to move #{dir}" unless dir.zero?
+ puts "#{packet.client.player.id} tried to move #{dir}" unless dir.zero?
end
def on_client_drop(client, reason = nil)
diff --git a/lib/messages/cl_input.rb b/lib/messages/cl_input.rb
index 6ecc7fc..0f9a996 100644
--- a/lib/messages/cl_input.rb
+++ b/lib/messages/cl_input.rb
@@ -7,7 +7,8 @@ require_relative '../packer'
#
# Client -> Server
class ClInput
- attr_accessor :ack_game_tick, :prediction_tick, :size, :direction, :target_x, :target_y, :jump, :fire, :hook, :player_flags, :wanted_weapon, :next_weapon, :prev_weapon, :ping
+ attr_accessor :ack_game_tick, :prediction_tick, :size, :direction, :target_x, :target_y, :jump, :fire, :hook,
+ :player_flags, :wanted_weapon, :next_weapon, :prev_weapon, :ping
def initialize(hash_or_raw)
if hash_or_raw.instance_of?(Hash)
diff --git a/scripts/hooks.sh b/scripts/hooks.sh
index 66b7664..ce3cdfe 100755
--- a/scripts/hooks.sh
+++ b/scripts/hooks.sh
@@ -220,7 +220,13 @@ function check_file() {
fi
}
-if check_file TeeworldsClient lib/teeworlds_client.rb # || check_file TeeworldsServer lib/teeworlds_server.rb
+echo "[*] client"
+if check_file TeeworldsClient lib/teeworlds_client.rb
+then
+ exit 1
+fi
+echo "[*] server"
+if check_file TeeworldsServer lib/teeworlds_server.rb
then
exit 1
fi