fishbans 1.0.1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 20aabf428819fc6d0e2f63b183101ee57c026271
4
- data.tar.gz: 7256f0174fddaf8481d99b61330ffa2ad7d0e34d
3
+ metadata.gz: 2fdccbe25f25cc750106b8bddd7f5a160918df97
4
+ data.tar.gz: eb98194d6ad4d4a1a9528f1a00ba10696ec0e308
5
5
  SHA512:
6
- metadata.gz: 717cfcadbc596bd3a9cca44295ea184f58dda3f7b45afe1ba4ae77910de91f375df57bb1645dc6afda08f3a4363e9d347ad723ecffad5dc8b7b4346de75cf626
7
- data.tar.gz: d224e2e877e3fd75750a4f8fe3f1625e2ec66b37ac9ece33d66cfa9589b86418805b1cd6ee34d7498717a1cc2bf3a2c2a4a4f9438971147677e465bbb0c1e722
6
+ metadata.gz: 7035bb24577060be3cc5b81db32a140b54caab32378247751d0e94a6ba542bd55d30d41ddf56460a8f2c3f624b6b0abc7f50cbb68cd15c5f9c8217df6ff58fe8
7
+ data.tar.gz: adb94c0aa95e11935a201ea570a3ac57271ea81c828684f48cc06cf65dadbb16bc8eb45e4cb8f6c0da3779f31bc543d11d8e4804db9e8c3c0bd7cb318371088d
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
  ## Version 1
3
+ ### Version 1.1.0
4
+ * New PlayerSkins module, including methods for getting player faces, fronts, and skins.
5
+ * New BlockEngine module, including methods for getting 3D block images, 2D monster face images, and 3D full monster images.
6
+
3
7
  ### Version 1.0.1
4
8
  * Fix NoMethodError with get
5
9
 
@@ -0,0 +1,42 @@
1
+ require 'chunky_png'
2
+ require_relative 'fishbans'
3
+
4
+ module Fishbans
5
+ module BlockEngine
6
+ # Gets a block image by its ID and Metadata. Unfortunately it uses the old
7
+ # block IDs rather than the new ones, so you have to memorize those
8
+ # pesky integers.
9
+ # @param id [Fixnum] The (outdated) block ID number.
10
+ # @param metadata [Fixnum] The metadata, if any, for the block.
11
+ # @param size [Fixnum] The size of the image to get.
12
+ # @return [ChunkyPNG::Image] The ChunkyPNG instance of that block image.
13
+ def get_block(id, metadata = nil, size = 42)
14
+ url = "http://blocks.fishbans.com/#{id}"
15
+ url += "-#{metadata}" unless metadata.nil?
16
+ url += "/#{size}" if size != 42
17
+ response = get(url, false)
18
+ ChunkyPNG::Image.from_blob(response.body)
19
+ end
20
+
21
+ # Gets the monster image by its ID.
22
+ # @param id [Any] The string ID. It will automatically prefix it with "m" if
23
+ # that is omitted. It doesn't matter what type it is: String or Fixnum,
24
+ # because it will automatically convert it to a String.
25
+ # @param three [Boolean] Whether to get a three-dimensional monster image.
26
+ # The three-dimensional image is of the full monster, while the
27
+ # two-dimensional image is just its head.
28
+ # @param size [Fixnum] The size of the image (width) to get. For 3D images
29
+ # this will not be perfect just by nature of the API.
30
+ # @return [ChunkyPNG::Image] The ChunkyPNG instance of that monster image.
31
+ def get_monster(id, three = false, size = 42)
32
+ id = id.to_s unless id.is_a?(String)
33
+ url = 'http://blocks.fishbans.com'
34
+ url += "/#{id}" if id =~ /^m/
35
+ url += "/m#{id}" if id !~ /^m/
36
+ url += '-3d' if three
37
+ url += "/#{size}" if size != 42
38
+ response = get(url, false)
39
+ ChunkyPNG::Image.from_blob(response.body)
40
+ end
41
+ end
42
+ end
@@ -1,7 +1,12 @@
1
1
  require 'httpclient'
2
2
  require 'json'
3
+ require_relative 'block_engine'
4
+ require_relative 'player_skins'
3
5
 
4
6
  module Fishbans
7
+ include BlockEngine
8
+ include PlayerSkins
9
+
5
10
  extend self
6
11
  @client = HTTPClient.new
7
12
  @services = [
@@ -109,13 +114,16 @@ module Fishbans
109
114
  end
110
115
 
111
116
  private
117
+
112
118
  # Performs a basic GET request.
113
119
  # @param url [String] The URL to get.
120
+ # @param do_json [Boolean] Whether to parse the JSON.
114
121
  # @return [JSON/String] The parsed JSON of the response, or the error string.
115
- def get(url)
122
+ def get(url, do_json = true)
116
123
  url = URI.encode(url)
117
124
  uri = URI.parse(url)
118
125
  response = @client.get(uri)
126
+ return response if do_json == false
119
127
  json = JSON.parse(response.body)
120
128
  if json['success']
121
129
  return json
@@ -141,6 +149,6 @@ module Fishbans
141
149
  end
142
150
 
143
151
  return nil if ret.empty?
144
- return ret
152
+ ret
145
153
  end
146
154
  end
@@ -0,0 +1,45 @@
1
+ require 'chunky_png'
2
+ require_relative 'fishbans'
3
+
4
+ module Fishbans
5
+ module PlayerSkins
6
+ # Gets the image for the front face of the player head.
7
+ # @param username [String] The username to get the head of.
8
+ # @param size [Fixnum] The width of the image to get.
9
+ # @return [ChunkyPNG::Image] The ChunkyPNG::Image instance of that head.
10
+ def get_player_head(username, size = 100)
11
+ get_player_image(username, 'helm', size)
12
+ end
13
+
14
+ # Gets the image for the entire front of the player.
15
+ # @param username [String] See #get_player_head.
16
+ # @param size [Fixnum] See #get_player_head.
17
+ # @return [ChunkyPNG::Image] The ChunkyPNG::Image instance of that front.
18
+ def get_player_front(username, size = 100)
19
+ get_player_image(username, 'player', size)
20
+ end
21
+
22
+ # Gets the image for the player's raw skin.
23
+ # @param username [String] See #get_player_head.
24
+ # @param size [Fixnum] See #get_player_head.
25
+ # @return [ChunkyPNG::Image] The ChunkyPNG::Image instance of that skin.
26
+ def get_player_skin(username, size = 64)
27
+ get_player_image(username, 'skin', size)
28
+ end
29
+
30
+ private
31
+
32
+ # Gets the player image for the type.
33
+ # @param username [String] See #get_player_head.
34
+ # @param type [String] The type of image to get. Can be 'helm', 'player', or
35
+ # 'skin' as defined by the Fishbans Player Skins API.
36
+ # @param size [Fixnum] See #get_player_head.
37
+ # @return [ChunkyPNG::Image] The ChunkyPNG::Image instance for the params.
38
+ def get_player_image(username, type, size)
39
+ type.downcase
40
+ url = "http://i.fishbans.com/#{type}/#{username}/#{size}"
41
+ response = get(url, false)
42
+ ChunkyPNG::Image.from_blob(response.body)
43
+ end
44
+ end
45
+ end
metadata CHANGED
@@ -1,38 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fishbans
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eli Foster
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-18 00:00:00.000000000 Z
11
+ date: 2015-11-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httpclient
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: 2.6.0.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: 2.6.0.1
27
+ - !ruby/object:Gem::Dependency
28
+ name: chunky_png
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '='
32
+ - !ruby/object:Gem::Version
33
+ version: 1.3.5
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '='
39
+ - !ruby/object:Gem::Version
40
+ version: 1.3.5
27
41
  description: Accessing the Fishbans Minecraft API through HTTPClient. Has methods
28
- for all Fishban APIs.
42
+ for all Fishban APIs, including the APIs for getting block, monster, and player
43
+ images.
29
44
  email: elifosterwy@gmail.com
30
45
  executables: []
31
46
  extensions: []
32
47
  extra_rdoc_files: []
33
48
  files:
34
49
  - CHANGELOG.md
50
+ - lib/block_engine.rb
35
51
  - lib/fishbans.rb
52
+ - lib/player_skins.rb
36
53
  homepage: https://github.com/elifoster/fishbans-rb
37
54
  licenses:
38
55
  - CC-BY-NC-ND-4.0
@@ -59,3 +76,4 @@ signing_key:
59
76
  specification_version: 4
60
77
  summary: A Ruby gem for accessing the Fishbans Minecraft API.
61
78
  test_files: []
79
+ has_rdoc: