{"action":"created","comment":{"url":"https://api.github.com/repos/SpongePowered/SpongeCommon/pulls/comments/41295431","id":41295431,"diff_hunk":"@@ -0,0 +1,91 @@\n+/*\n+ * This file is part of Sponge, licensed under the MIT License (MIT).\n+ *\n+ * Copyright (c) SpongePowered <https://www.spongepowered.org>\n+ * Copyright (c) contributors\n+ *\n+ * Permission is hereby granted, free of charge, to any person obtaining a copy\n+ * of this software and associated documentation files (the \"Software\"), to deal\n+ * in the Software without restriction, including without limitation the rights\n+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n+ * copies of the Software, and to permit persons to whom the Software is\n+ * furnished to do so, subject to the following conditions:\n+ *\n+ * The above copyright notice and this permission notice shall be included in\n+ * all copies or substantial portions of the Software.\n+ *\n+ * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n+ * THE SOFTWARE.\n+ */\n+package org.spongepowered.common.data.manipulator.mutable.item;\n+\n+import com.google.common.collect.Lists;\n+import com.google.common.collect.Sets;\n+import com.google.common.primitives.Booleans;\n+import org.spongepowered.api.block.BlockType;\n+import org.spongepowered.api.data.DataContainer;\n+import org.spongepowered.api.data.MemoryDataContainer;\n+import org.spongepowered.api.data.key.Keys;\n+import org.spongepowered.api.data.manipulator.immutable.item.ImmutableBreakableData;\n+import org.spongepowered.api.data.manipulator.mutable.item.BreakableData;\n+import org.spongepowered.api.data.value.mutable.SetValue;\n+import org.spongepowered.api.data.value.mutable.Value;\n+import org.spongepowered.api.util.annotation.NonnullByDefault;\n+import org.spongepowered.common.data.manipulator.immutable.item.ImmutableSpongeBreakableData;\n+import org.spongepowered.common.data.manipulator.mutable.common.AbstractSingleData;\n+import org.spongepowered.common.data.value.mutable.SpongeSetValue;\n+\n+import java.util.List;\n+import java.util.Set;\n+\n+@NonnullByDefault\n+public class SpongeBreakableData extends AbstractSingleData<Set<BlockType>, BreakableData, ImmutableBreakableData> implements BreakableData {\n+    \n+    public SpongeBreakableData() {\n+        this(Sets.<BlockType>newHashSet());\n+    }\n+\n+    public SpongeBreakableData(Set<BlockType> breakable) {\n+        super(BreakableData.class, breakable, Keys.BREAKABLE_BLOCK_TYPES);\n+    }\n+\n+    @Override\n+    public int compareTo(BreakableData o) {\n+        return Booleans.compare(o.breakable().containsAll(getValue()),\n+                getValue().containsAll(o.breakable().get()));\n+    }\n+\n+    @Override\n+    public DataContainer toContainer() {\n+        List<String> breakableIds = Lists.newArrayListWithExpectedSize(getValue().size());\n+        for (BlockType breakable : getValue()) {\n+            breakableIds.add(breakable.getId());\n+        }\n+        return new MemoryDataContainer().set(Keys.BREAKABLE_BLOCK_TYPES.getQuery(), breakableIds);\n+    }\n+\n+    @Override\n+    public SetValue<BlockType> breakable() {\n+        return new SpongeSetValue<BlockType>(Keys.BREAKABLE_BLOCK_TYPES, Sets.newHashSet(getValue()));\n+    }\n+\n+    @Override\n+    public BreakableData copy() {\n+        return new SpongeBreakableData(Sets.newHashSet(getValue()));","path":"src/main/java/org/spongepowered/common/data/manipulator/mutable/item/SpongeBreakableData.java","position":79,"original_position":79,"commit_id":"7dcda2a0dd52009849d640d0edf459dbc8cdd0c3","original_commit_id":"7dcda2a0dd52009849d640d0edf459dbc8cdd0c3","user":{"login":"gabizou","id":1203877,"avatar_url":"https://avatars.githubusercontent.com/u/1203877?v=3","gravatar_id":"","url":"https://api.github.com/users/gabizou","html_url":"https://github.com/gabizou","followers_url":"https://api.github.com/users/gabizou/followers","following_url":"https://api.github.com/users/gabizou/following{/other_user}","gists_url":"https://api.github.com/users/gabizou/gists{/gist_id}","starred_url":"https://api.github.com/users/gabizou/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gabizou/subscriptions","organizations_url":"https://api.github.com/users/gabizou/orgs","repos_url":"https://api.github.com/users/gabizou/repos","events_url":"https://api.github.com/users/gabizou/events{/privacy}","received_events_url":"https://api.github.com/users/gabizou/received_events","type":"User","site_admin":false},"body":"You wouldn't have to make a defensive copy here if you already made defensive copies in the constructor.","created_at":"2015-10-06T17:31:09Z","updated_at":"2015-10-06T17:31:09Z","html_url":"https://github.com/SpongePowered/SpongeCommon/pull/159#discussion_r41295431","pull_request_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/pulls/159","_links":{"self":{"href":"https://api.github.com/repos/SpongePowered/SpongeCommon/pulls/comments/41295431"},"html":{"href":"https://github.com/SpongePowered/SpongeCommon/pull/159#discussion_r41295431"},"pull_request":{"href":"https://api.github.com/repos/SpongePowered/SpongeCommon/pulls/159"}}},"pull_request":{"url":"https://api.github.com/repos/SpongePowered/SpongeCommon/pulls/159","id":44498306,"html_url":"https://github.com/SpongePowered/SpongeCommon/pull/159","diff_url":"https://github.com/SpongePowered/SpongeCommon/pull/159.diff","patch_url":"https://github.com/SpongePowered/SpongeCommon/pull/159.patch","issue_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/issues/159","number":159,"state":"open","locked":false,"title":"Implement PlaceableData and BreakableData","user":{"login":"JBYoshi","id":12983479,"avatar_url":"https://avatars.githubusercontent.com/u/12983479?v=3","gravatar_id":"","url":"https://api.github.com/users/JBYoshi","html_url":"https://github.com/JBYoshi","followers_url":"https://api.github.com/users/JBYoshi/followers","following_url":"https://api.github.com/users/JBYoshi/following{/other_user}","gists_url":"https://api.github.com/users/JBYoshi/gists{/gist_id}","starred_url":"https://api.github.com/users/JBYoshi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JBYoshi/subscriptions","organizations_url":"https://api.github.com/users/JBYoshi/orgs","repos_url":"https://api.github.com/users/JBYoshi/repos","events_url":"https://api.github.com/users/JBYoshi/events{/privacy}","received_events_url":"https://api.github.com/users/JBYoshi/received_events","type":"User","site_admin":false},"body":"I bundled these together because `PlaceableData` was pretty much just find/replace from `BreakableData`.\r\n\r\nChecklist:\r\n\r\n- [x] Implemented correctly using appropriate abstractions\r\n - [x] `DataManipulator`\r\n - [x] `ImmutableDataManipulator`\r\n - [x] `DataManipulatorBuilder`\r\n - [x] `DataProcessor`\r\n - [x] `ValueProcessor`\r\n- [x] Registered correctly\r\n - [x] `Keys.BREAKABLE_BLOCK_TYPES`\r\n - [x] `Keys.PLACEABLE_BLOCKS`\r\n - [x] `DataManipulatorBuilder`\r\n - [x] `DataProcessor`\r\n - [x] `ValueProcessor`\r\n- [x] Test plugin\r\n\r\nTest plugin:\r\n```java\r\npackage jbyoshi.sponge.test;\r\n\r\nimport com.google.common.base.Optional;\r\nimport com.google.common.collect.ImmutableList;\r\nimport org.spongepowered.api.block.BlockType;\r\nimport org.spongepowered.api.block.BlockTypes;\r\nimport org.spongepowered.api.data.key.Keys;\r\nimport org.spongepowered.api.data.manipulator.mutable.item.BreakableData;\r\nimport org.spongepowered.api.data.manipulator.mutable.item.PlaceableData;\r\nimport org.spongepowered.api.entity.living.player.Player;\r\nimport org.spongepowered.api.event.Listener;\r\nimport org.spongepowered.api.event.action.InteractEvent;\r\nimport org.spongepowered.api.event.block.InteractBlockEvent;\r\nimport org.spongepowered.api.event.game.state.GameInitializationEvent;\r\nimport org.spongepowered.api.item.inventory.ItemStack;\r\nimport org.spongepowered.api.plugin.Plugin;\r\nimport org.spongepowered.api.text.Text;\r\nimport org.spongepowered.api.text.Texts;\r\nimport org.spongepowered.api.util.command.CommandCallable;\r\nimport org.spongepowered.api.util.command.CommandResult;\r\nimport org.spongepowered.api.util.command.CommandSource;\r\nimport org.spongepowered.api.util.command.spec.CommandExecutor;\r\n\r\nimport java.util.List;\r\n\r\n@Plugin(id = \"jbyoshi.sponge.test\", name=\"JBYoshi Sponge Test\")\r\npublic final class SpongeTestPlugin {\r\n    \r\n    @Listener\r\n    public void init(GameInitializationEvent e) {\r\n    }\r\n    \r\n    @Listener\r\n    public void onClick(InteractEvent e) {\r\n        if (!e.getCause().any(Player.class)) {\r\n            return;\r\n        }\r\n        Player player = e.getCause().first(Player.class).get();\r\n        Optional<ItemStack> stack = player.getItemInHand();\r\n        if (!stack.isPresent()) {\r\n            return;\r\n        }\r\n        if (stack.get().get(Keys.BREAKABLE_BLOCK_TYPES).isPresent()) {\r\n            player.sendMessage(Texts.of(\"This item can break: \"));\r\n            for (BlockType type : stack.get().get(Keys.BREAKABLE_BLOCK_TYPES).get()) {\r\n                player.sendMessage(Texts.of(\"    \", type));\r\n            }\r\n        }\r\n        if (stack.get().get(Keys.PLACEABLE_BLOCKS).isPresent()) {\r\n            player.sendMessage(Texts.of(\"This item can be placed on: \"));\r\n            for (BlockType type : stack.get().get(Keys.PLACEABLE_BLOCKS).get()) {\r\n                player.sendMessage(Texts.of(\"    \", type));\r\n            }\r\n        }\r\n        \r\n        \r\n        if (!stack.get().supports(BreakableData.class)) {\r\n            return;\r\n        }\r\n        if (!stack.get().supports(PlaceableData.class)) {\r\n            return;\r\n        }\r\n        BreakableData breakable = stack.get().getOrCreate(BreakableData.class).get();\r\n        breakable.breakable().add(BlockTypes.DIRT);\r\n        stack.get().offer(breakable);\r\n        PlaceableData placeable = stack.get().getOrCreate(PlaceableData.class).get();\r\n        placeable.placeable().add(BlockTypes.STONE);\r\n        stack.get().offer(placeable);\r\n        player.sendMessage(Texts.of(\"This item can now break dirt and be placed on stone!\"));\r\n    }\r\n}\r\n```\r\n\r\nJust hold an item and right click, then check the lore to see if the modification worked. Right click again to test getting.","created_at":"2015-09-09T00:19:33Z","updated_at":"2015-10-06T17:31:09Z","closed_at":null,"merged_at":null,"merge_commit_sha":"889e9e19d2fed5b1a6fef44900234a6c69ff9d9c","assignee":{"login":"Aaron1011","id":1408859,"avatar_url":"https://avatars.githubusercontent.com/u/1408859?v=3","gravatar_id":"","url":"https://api.github.com/users/Aaron1011","html_url":"https://github.com/Aaron1011","followers_url":"https://api.github.com/users/Aaron1011/followers","following_url":"https://api.github.com/users/Aaron1011/following{/other_user}","gists_url":"https://api.github.com/users/Aaron1011/gists{/gist_id}","starred_url":"https://api.github.com/users/Aaron1011/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Aaron1011/subscriptions","organizations_url":"https://api.github.com/users/Aaron1011/orgs","repos_url":"https://api.github.com/users/Aaron1011/repos","events_url":"https://api.github.com/users/Aaron1011/events{/privacy}","received_events_url":"https://api.github.com/users/Aaron1011/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/pulls/159/commits","review_comments_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/pulls/159/comments","review_comment_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/pulls/comments{/number}","comments_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/issues/159/comments","statuses_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/statuses/7dcda2a0dd52009849d640d0edf459dbc8cdd0c3","head":{"label":"JBYoshi:data/placeable-breakable","ref":"data/placeable-breakable","sha":"7dcda2a0dd52009849d640d0edf459dbc8cdd0c3","user":{"login":"JBYoshi","id":12983479,"avatar_url":"https://avatars.githubusercontent.com/u/12983479?v=3","gravatar_id":"","url":"https://api.github.com/users/JBYoshi","html_url":"https://github.com/JBYoshi","followers_url":"https://api.github.com/users/JBYoshi/followers","following_url":"https://api.github.com/users/JBYoshi/following{/other_user}","gists_url":"https://api.github.com/users/JBYoshi/gists{/gist_id}","starred_url":"https://api.github.com/users/JBYoshi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JBYoshi/subscriptions","organizations_url":"https://api.github.com/users/JBYoshi/orgs","repos_url":"https://api.github.com/users/JBYoshi/repos","events_url":"https://api.github.com/users/JBYoshi/events{/privacy}","received_events_url":"https://api.github.com/users/JBYoshi/received_events","type":"User","site_admin":false},"repo":{"id":37821950,"name":"SpongeCommon","full_name":"JBYoshi/SpongeCommon","owner":{"login":"JBYoshi","id":12983479,"avatar_url":"https://avatars.githubusercontent.com/u/12983479?v=3","gravatar_id":"","url":"https://api.github.com/users/JBYoshi","html_url":"https://github.com/JBYoshi","followers_url":"https://api.github.com/users/JBYoshi/followers","following_url":"https://api.github.com/users/JBYoshi/following{/other_user}","gists_url":"https://api.github.com/users/JBYoshi/gists{/gist_id}","starred_url":"https://api.github.com/users/JBYoshi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JBYoshi/subscriptions","organizations_url":"https://api.github.com/users/JBYoshi/orgs","repos_url":"https://api.github.com/users/JBYoshi/repos","events_url":"https://api.github.com/users/JBYoshi/events{/privacy}","received_events_url":"https://api.github.com/users/JBYoshi/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/JBYoshi/SpongeCommon","description":"Shared code between SpongeForge and SpongeVanilla","fork":true,"url":"https://api.github.com/repos/JBYoshi/SpongeCommon","forks_url":"https://api.github.com/repos/JBYoshi/SpongeCommon/forks","keys_url":"https://api.github.com/repos/JBYoshi/SpongeCommon/keys{/key_id}","collaborators_url":"https://api.github.com/repos/JBYoshi/SpongeCommon/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/JBYoshi/SpongeCommon/teams","hooks_url":"https://api.github.com/repos/JBYoshi/SpongeCommon/hooks","issue_events_url":"https://api.github.com/repos/JBYoshi/SpongeCommon/issues/events{/number}","events_url":"https://api.github.com/repos/JBYoshi/SpongeCommon/events","assignees_url":"https://api.github.com/repos/JBYoshi/SpongeCommon/assignees{/user}","branches_url":"https://api.github.com/repos/JBYoshi/SpongeCommon/branches{/branch}","tags_url":"https://api.github.com/repos/JBYoshi/SpongeCommon/tags","blobs_url":"https://api.github.com/repos/JBYoshi/SpongeCommon/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/JBYoshi/SpongeCommon/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/JBYoshi/SpongeCommon/git/refs{/sha}","trees_url":"https://api.github.com/repos/JBYoshi/SpongeCommon/git/trees{/sha}","statuses_url":"https://api.github.com/repos/JBYoshi/SpongeCommon/statuses/{sha}","languages_url":"https://api.github.com/repos/JBYoshi/SpongeCommon/languages","stargazers_url":"https://api.github.com/repos/JBYoshi/SpongeCommon/stargazers","contributors_url":"https://api.github.com/repos/JBYoshi/SpongeCommon/contributors","subscribers_url":"https://api.github.com/repos/JBYoshi/SpongeCommon/subscribers","subscription_url":"https://api.github.com/repos/JBYoshi/SpongeCommon/subscription","commits_url":"https://api.github.com/repos/JBYoshi/SpongeCommon/commits{/sha}","git_commits_url":"https://api.github.com/repos/JBYoshi/SpongeCommon/git/commits{/sha}","comments_url":"https://api.github.com/repos/JBYoshi/SpongeCommon/comments{/number}","issue_comment_url":"https://api.github.com/repos/JBYoshi/SpongeCommon/issues/comments{/number}","contents_url":"https://api.github.com/repos/JBYoshi/SpongeCommon/contents/{+path}","compare_url":"https://api.github.com/repos/JBYoshi/SpongeCommon/compare/{base}...{head}","merges_url":"https://api.github.com/repos/JBYoshi/SpongeCommon/merges","archive_url":"https://api.github.com/repos/JBYoshi/SpongeCommon/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/JBYoshi/SpongeCommon/downloads","issues_url":"https://api.github.com/repos/JBYoshi/SpongeCommon/issues{/number}","pulls_url":"https://api.github.com/repos/JBYoshi/SpongeCommon/pulls{/number}","milestones_url":"https://api.github.com/repos/JBYoshi/SpongeCommon/milestones{/number}","notifications_url":"https://api.github.com/repos/JBYoshi/SpongeCommon/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/JBYoshi/SpongeCommon/labels{/name}","releases_url":"https://api.github.com/repos/JBYoshi/SpongeCommon/releases{/id}","created_at":"2015-06-21T19:08:45Z","updated_at":"2015-09-06T18:41:14Z","pushed_at":"2015-10-06T17:25:11Z","git_url":"git://github.com/JBYoshi/SpongeCommon.git","ssh_url":"git@github.com:JBYoshi/SpongeCommon.git","clone_url":"https://github.com/JBYoshi/SpongeCommon.git","svn_url":"https://github.com/JBYoshi/SpongeCommon","homepage":"","size":3984,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"SpongePowered:master","ref":"master","sha":"c02693fda986b16067971e97135872c4251ce06b","user":{"login":"SpongePowered","id":8683473,"avatar_url":"https://avatars.githubusercontent.com/u/8683473?v=3","gravatar_id":"","url":"https://api.github.com/users/SpongePowered","html_url":"https://github.com/SpongePowered","followers_url":"https://api.github.com/users/SpongePowered/followers","following_url":"https://api.github.com/users/SpongePowered/following{/other_user}","gists_url":"https://api.github.com/users/SpongePowered/gists{/gist_id}","starred_url":"https://api.github.com/users/SpongePowered/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SpongePowered/subscriptions","organizations_url":"https://api.github.com/users/SpongePowered/orgs","repos_url":"https://api.github.com/users/SpongePowered/repos","events_url":"https://api.github.com/users/SpongePowered/events{/privacy}","received_events_url":"https://api.github.com/users/SpongePowered/received_events","type":"Organization","site_admin":false},"repo":{"id":33791453,"name":"SpongeCommon","full_name":"SpongePowered/SpongeCommon","owner":{"login":"SpongePowered","id":8683473,"avatar_url":"https://avatars.githubusercontent.com/u/8683473?v=3","gravatar_id":"","url":"https://api.github.com/users/SpongePowered","html_url":"https://github.com/SpongePowered","followers_url":"https://api.github.com/users/SpongePowered/followers","following_url":"https://api.github.com/users/SpongePowered/following{/other_user}","gists_url":"https://api.github.com/users/SpongePowered/gists{/gist_id}","starred_url":"https://api.github.com/users/SpongePowered/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SpongePowered/subscriptions","organizations_url":"https://api.github.com/users/SpongePowered/orgs","repos_url":"https://api.github.com/users/SpongePowered/repos","events_url":"https://api.github.com/users/SpongePowered/events{/privacy}","received_events_url":"https://api.github.com/users/SpongePowered/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/SpongePowered/SpongeCommon","description":"Shared code between Sponge and SpongeVanilla","fork":false,"url":"https://api.github.com/repos/SpongePowered/SpongeCommon","forks_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/forks","keys_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/keys{/key_id}","collaborators_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/teams","hooks_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/hooks","issue_events_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/issues/events{/number}","events_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/events","assignees_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/assignees{/user}","branches_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/branches{/branch}","tags_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/tags","blobs_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/git/refs{/sha}","trees_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/git/trees{/sha}","statuses_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/statuses/{sha}","languages_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/languages","stargazers_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/stargazers","contributors_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/contributors","subscribers_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/subscribers","subscription_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/subscription","commits_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/commits{/sha}","git_commits_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/git/commits{/sha}","comments_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/comments{/number}","issue_comment_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/issues/comments{/number}","contents_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/contents/{+path}","compare_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/compare/{base}...{head}","merges_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/merges","archive_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/downloads","issues_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/issues{/number}","pulls_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/pulls{/number}","milestones_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/milestones{/number}","notifications_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/labels{/name}","releases_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/releases{/id}","created_at":"2015-04-11T20:38:48Z","updated_at":"2015-09-28T01:58:23Z","pushed_at":"2015-10-06T17:25:11Z","git_url":"git://github.com/SpongePowered/SpongeCommon.git","ssh_url":"git@github.com:SpongePowered/SpongeCommon.git","clone_url":"https://github.com/SpongePowered/SpongeCommon.git","svn_url":"https://github.com/SpongePowered/SpongeCommon","homepage":null,"size":10556,"stargazers_count":46,"watchers_count":46,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":50,"mirror_url":null,"open_issues_count":58,"forks":50,"open_issues":58,"watchers":46,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/SpongePowered/SpongeCommon/pulls/159"},"html":{"href":"https://github.com/SpongePowered/SpongeCommon/pull/159"},"issue":{"href":"https://api.github.com/repos/SpongePowered/SpongeCommon/issues/159"},"comments":{"href":"https://api.github.com/repos/SpongePowered/SpongeCommon/issues/159/comments"},"review_comments":{"href":"https://api.github.com/repos/SpongePowered/SpongeCommon/pulls/159/comments"},"review_comment":{"href":"https://api.github.com/repos/SpongePowered/SpongeCommon/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/SpongePowered/SpongeCommon/pulls/159/commits"},"statuses":{"href":"https://api.github.com/repos/SpongePowered/SpongeCommon/statuses/7dcda2a0dd52009849d640d0edf459dbc8cdd0c3"}}}}