minestat 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/minestat.rb +25 -5
  3. metadata +6 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9c241df5d1adebf63bf3fa8ff85a4066cf788b64ac160afddf99906f6d0ea1a3
4
- data.tar.gz: c257c9b9640bb4bf961bdc80dfbebbcad829cfe5a56f90951bc724859ab389c7
3
+ metadata.gz: 2bb7df47ea2b1dbc9593527397307a00e553ca5f67e7569d9c3d92bf26c971ef
4
+ data.tar.gz: 6dd403da69ee5878a58e7b1c973b937f57f04f607d86774fb87febd46514db54
5
5
  SHA512:
6
- metadata.gz: afb6c96adcac8c9bcea0bb88e1466ef9354d116345707c1f9fa901322996d412c8244a59c5facd724909d7f16375f5c3dcc098f40aef484ca8a9d18dff4936c4
7
- data.tar.gz: c08c4a7f1099ed57094bedf7c4f3eed374eff7fa824be55a1962b3fa3831f6f2f088284ee0b58acc09c7285b33fea8892ed8abfbe5b757264876497c3ff637d0
6
+ metadata.gz: 54c7a4cfd1fb9c07e83529f513dcb800dbd2464044389a18c08f22c8bb7435f963fdfc5acacdd174774f9b65a3dec22391f76f1e856499ca48a64f4f5e03cd9e
7
+ data.tar.gz: ce1ae19de3e86ded84a5205ec38c50218181add5eaf5965e8578102299c7cd51e316a37bd58437abb2aa6f154d6b067644a0a6485fb9c823972572d3ded02a69
data/lib/minestat.rb CHANGED
@@ -21,7 +21,7 @@ require 'socket'
21
21
  require 'timeout'
22
22
 
23
23
  class MineStat
24
- VERSION = "2.0.0" # MineStat version
24
+ VERSION = "2.1.0" # MineStat version
25
25
  NUM_FIELDS = 6 # number of values expected from server
26
26
  NUM_FIELDS_BETA = 3 # number of values expected from a 1.8b/1.3 server
27
27
  MAX_VARINT_SIZE = 5 # maximum number of bytes a varint can be
@@ -49,6 +49,7 @@ class MineStat
49
49
  @online # online or offline?
50
50
  @version # server version
51
51
  @motd # message of the day
52
+ @stripped_motd # message of the day without formatting
52
53
  @current_players # current number of players online
53
54
  @max_players # maximum player capacity
54
55
  @protocol # protocol level
@@ -81,17 +82,33 @@ class MineStat
81
82
  retval = beta_request()
82
83
  end
83
84
  # SLP 1.6
84
- unless retval == Retval::SUCCESS || retval == Retval::CONNFAIL
85
+ unless retval == Retval::CONNFAIL
85
86
  retval = extended_legacy_request()
86
87
  end
87
88
  # SLP 1.7
88
- unless retval == Retval::SUCCESS || retval == Retval::CONNFAIL
89
+ unless retval == Retval::CONNFAIL
89
90
  retval = json_request()
90
91
  end
91
92
  end
92
93
  @online = false unless retval == Retval::SUCCESS
93
94
  end
94
95
 
96
+ # Strips message of the day formatting characters
97
+ def strip_motd(is_json = false)
98
+ unless is_json
99
+ @stripped_motd = @motd.gsub(/§./, "")
100
+ else
101
+ @stripped_motd = @motd['text']
102
+ json_data = @motd['extra']
103
+ unless json_data.nil? || json_data.empty?
104
+ json_data.each do |nested_hash|
105
+ @stripped_motd += nested_hash['text']
106
+ end
107
+ end
108
+ @stripped_motd = @stripped_motd.gsub(/§./, "")
109
+ end
110
+ end
111
+
95
112
  # Connects to remote server
96
113
  def connect()
97
114
  begin
@@ -133,6 +150,7 @@ class MineStat
133
150
  if server_info != nil && server_info.length >= NUM_FIELDS_BETA
134
151
  @version = ">=1.8b/1.3" # since server does not return version, set it
135
152
  @motd = server_info[0]
153
+ strip_motd
136
154
  @current_players = server_info[1].to_i
137
155
  @max_players = server_info[2].to_i
138
156
  @online = true
@@ -145,6 +163,7 @@ class MineStat
145
163
  @protocol = server_info[1].to_i # contains the protocol version (51 for 1.9 or 78 for 1.6.4 for example)
146
164
  @version = server_info[2]
147
165
  @motd = server_info[3]
166
+ strip_motd
148
167
  @current_players = server_info[4].to_i
149
168
  @max_players = server_info[5].to_i
150
169
  @online = true
@@ -309,7 +328,8 @@ class MineStat
309
328
  @json_data = json_data
310
329
  @protocol = json_data['version']['protocol'].to_i
311
330
  @version = json_data['version']['name']
312
- @motd = json_data['description']['text']
331
+ @motd = json_data['description']
332
+ strip_motd(true)
313
333
  @current_players = json_data['players']['online'].to_i
314
334
  @max_players = json_data['players']['max'].to_i
315
335
  if !@version.empty? && !@motd.empty? && !@current_players.nil? && !@max_players.nil?
@@ -361,5 +381,5 @@ class MineStat
361
381
  return vint
362
382
  end
363
383
 
364
- attr_reader :address, :port, :online, :version, :motd, :current_players, :max_players, :protocol, :json_data, :latency, :request_type
384
+ attr_reader :address, :port, :online, :version, :motd, :stripped_motd, :current_players, :max_players, :protocol, :json_data, :latency, :request_type
365
385
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minestat
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lloyd Dilley
8
8
  - Stepan Melnikov
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-03-03 00:00:00.000000000 Z
12
+ date: 2021-09-08 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: MineStat polls Minecraft server data such as version, motd, current players,
15
15
  and max players.
@@ -24,7 +24,7 @@ homepage: https://github.com/FragLand/minestat
24
24
  licenses:
25
25
  - GPL-3.0
26
26
  metadata: {}
27
- post_install_message:
27
+ post_install_message:
28
28
  rdoc_options: []
29
29
  require_paths:
30
30
  - lib
@@ -39,9 +39,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  requirements: []
42
- rubyforge_project:
42
+ rubyforge_project:
43
43
  rubygems_version: 2.7.6.2
44
- signing_key:
44
+ signing_key:
45
45
  specification_version: 4
46
46
  summary: Minecraft server status checker
47
47
  test_files: []