minestat 2.0.0 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
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: []