Class: Glowstone::Server
- Inherits:
-
Object
- Object
- Glowstone::Server
- Defined in:
- lib/glowstone/server.rb
Instance Attribute Summary collapse
-
#gamemode ⇒ Object
readonly
Returns the value of attribute gamemode.
-
#host ⇒ Object
readonly
Returns the value of attribute host.
-
#map_name ⇒ Object
readonly
Returns the value of attribute map_name.
-
#max_players ⇒ Object
readonly
Returns the value of attribute max_players.
-
#motd ⇒ Object
readonly
Returns the value of attribute motd.
-
#name ⇒ Object
Returns the value of attribute name.
-
#num_players ⇒ Object
readonly
Returns the value of attribute num_players.
-
#players ⇒ Object
readonly
Returns the value of attribute players.
-
#plugins ⇒ Object
readonly
Returns the value of attribute plugins.
-
#port ⇒ Object
readonly
Returns the value of attribute port.
-
#timeout ⇒ Object
Returns the value of attribute timeout.
-
#version ⇒ Object
readonly
Returns the value of attribute version.
Instance Method Summary collapse
-
#initialize(host = "localhost", options = {}) ⇒ Server
constructor
A new instance of Server.
- #refresh ⇒ Object
- #to_hash ⇒ Object
Constructor Details
#initialize(host = "localhost", options = {}) ⇒ Server
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/glowstone/server.rb', line 12 def initialize(host="localhost", ={}) # backwards compatibility for old style invocation if .is_a?(Numeric) = {:port => .to_i} end # set server name @name = [:name] ? [:name].to_s : host # if the host is a srv record, get its info begin resource = Resolv::DNS.new.getresource("_minecraft._tcp.#{host}", Resolv::DNS::Resource::IN::SRV) @host = resource.target.to_s @port = resource.port.to_i rescue @host = host @port = [:port] ? [:port].to_i : DEFAULT_PORT end # set request timeout @timeout = [:timeout] ? [:timeout].to_i : DEFAULT_SOCKET_TIMEOUT # create a reusable UDP socket @socket = UDPSocket.new @socket.connect(@host, @port) refresh end |
Instance Attribute Details
#gamemode ⇒ Object (readonly)
Returns the value of attribute gamemode.
10 11 12 |
# File 'lib/glowstone/server.rb', line 10 def gamemode @gamemode end |
#host ⇒ Object (readonly)
Returns the value of attribute host.
8 9 10 |
# File 'lib/glowstone/server.rb', line 8 def host @host end |
#map_name ⇒ Object (readonly)
Returns the value of attribute map_name.
10 11 12 |
# File 'lib/glowstone/server.rb', line 10 def map_name @map_name end |
#max_players ⇒ Object (readonly)
Returns the value of attribute max_players.
10 11 12 |
# File 'lib/glowstone/server.rb', line 10 def max_players @max_players end |
#motd ⇒ Object (readonly)
Returns the value of attribute motd.
10 11 12 |
# File 'lib/glowstone/server.rb', line 10 def motd @motd end |
#name ⇒ Object
Returns the value of attribute name.
9 10 11 |
# File 'lib/glowstone/server.rb', line 9 def name @name end |
#num_players ⇒ Object (readonly)
Returns the value of attribute num_players.
10 11 12 |
# File 'lib/glowstone/server.rb', line 10 def num_players @num_players end |
#players ⇒ Object (readonly)
Returns the value of attribute players.
10 11 12 |
# File 'lib/glowstone/server.rb', line 10 def players @players end |
#plugins ⇒ Object (readonly)
Returns the value of attribute plugins.
10 11 12 |
# File 'lib/glowstone/server.rb', line 10 def plugins @plugins end |
#port ⇒ Object (readonly)
Returns the value of attribute port.
8 9 10 |
# File 'lib/glowstone/server.rb', line 8 def port @port end |
#timeout ⇒ Object
Returns the value of attribute timeout.
9 10 11 |
# File 'lib/glowstone/server.rb', line 9 def timeout @timeout end |
#version ⇒ Object (readonly)
Returns the value of attribute version.
10 11 12 |
# File 'lib/glowstone/server.rb', line 10 def version @version end |
Instance Method Details
#refresh ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/glowstone/server.rb', line 41 def refresh response = perform_request(MAGIC_BYTES + REQUEST_BYTE[:query] + CLIENT_ID + get_session_id + CLIENT_ID) status = StatusPacket.read response # there's some kind of weird bug with BinData wherein its native # datatypes don't play well with rails, so i'm converting them all here @motd = status.motd.to_s @gamemode = status.gametype.to_s @version = status.version.to_s @plugins = (status.plugins.empty?) ? nil : status.plugins.to_s.gsub!(/^(craft)?bukkit[^:]*:\s*/i, "").split(/;\s*/) @map_name = status.map_name.to_s @num_players = status.num_players.to_i @max_players = status.max_players.to_i player_array = status.players.to_ary player_array.each_with_index do |player, index| player_array[index] = player.to_s end @players = player_array self end |
#to_hash ⇒ Object
65 66 67 68 69 70 71 72 73 |
# File 'lib/glowstone/server.rb', line 65 def to_hash vars_to_skip = ["@timeout", "@socket"] hash = Hash.new instance_variables.each do |var| hash[var.to_s.delete("@").to_sym] = instance_variable_get(var) unless vars_to_skip.include?(var.to_s) end hash end |