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
Returns a new instance of 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 |