{"action":"created","comment":{"url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/pulls/comments/236085605","pull_request_review_id":178092925,"id":236085605,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIzNjA4NTYwNQ==","diff_hunk":"@@ -0,0 +1,143 @@\n+package protocolsupport.protocol.packet.middleimpl.clientbound.play.v_pe;\n+\n+import io.netty.buffer.ByteBuf;\n+import io.netty.buffer.Unpooled;\n+import protocolsupport.protocol.ConnectionImpl;\n+import protocolsupport.protocol.packet.middle.clientbound.play.MiddleDeclareRecipes;\n+import protocolsupport.protocol.packet.middleimpl.ClientBoundPacketData;\n+import protocolsupport.protocol.serializer.ItemStackSerializer;\n+import protocolsupport.protocol.serializer.MiscSerializer;\n+import protocolsupport.protocol.serializer.VarNumberSerializer;\n+import protocolsupport.protocol.typeremapper.pe.PEItems;\n+import protocolsupport.protocol.typeremapper.pe.PEPacketIDs;\n+import protocolsupport.protocol.utils.i18n.I18NData;\n+import protocolsupport.protocol.utils.types.NetworkItemStack;\n+import protocolsupport.utils.recyclable.RecyclableCollection;\n+import protocolsupport.utils.recyclable.RecyclableSingletonList;\n+\n+import java.util.LinkedList;\n+import java.util.Arrays;\n+import java.util.List;\n+import java.util.UUID;\n+import java.util.function.Consumer;\n+\n+public class CraftingData extends MiddleDeclareRecipes {\n+\tprotected int recipesWritten;\n+\n+\tpublic CraftingData(ConnectionImpl connection) {\n+\t\tsuper(connection);\n+\t}\n+\n+\tvoid expandRecipe(Ingredient[] ingredients, Consumer<List<NetworkItemStack>> consumer) {\n+\t\texpandRecipe(new LinkedList<>(Arrays.asList(ingredients)), new LinkedList<>(), consumer);\n+\t}\n+\n+\tvoid expandRecipe(LinkedList<Ingredient> ingredients, List<NetworkItemStack> items, Consumer<List<NetworkItemStack>> consumer) {\n+\t\tLinkedList<Ingredient> tail = new LinkedList<>(ingredients);\n+\t\tIngredient first = tail.removeFirst();\n+\t\tNetworkItemStack[] possibleStacks = first.getPossibleStacks();\n+\t\tif (possibleStacks.length == 0) { //empty\n+\t\t\tpossibleStacks = new NetworkItemStack[]{null};\n+\t\t}\n+\t\tif (possibleStacks.length > 2) { //'large' ingredient set\n+\t\t\tNetworkItemStack firstType = ItemStackSerializer.remapItemToClient(connection.getVersion(), I18NData.DEFAULT_LOCALE, possibleStacks[0].cloneItemStack());\n+\t\t\tboolean allSameType = true;\n+\t\t\t//see if all ingredients are variants of the same type\n+\t\t\tfor (NetworkItemStack ing : possibleStacks) {\n+\t\t\t\tNetworkItemStack thisType = ItemStackSerializer.remapItemToClient(connection.getVersion(), I18NData.DEFAULT_LOCALE, ing.cloneItemStack());\n+\t\t\t\tif(thisType.getTypeId() != firstType.getTypeId() || thisType.getAmount() != 1) {\n+\t\t\t\t\tallSameType = false;\n+\t\t\t\t\tbreak;\n+\t\t\t\t}\n+\t\t\t}\n+\t\t\tif (allSameType) {\n+\t\t\t\tNetworkItemStack wildStack = new NetworkItemStack();\n+\t\t\t\twildStack.setTypeId(firstType.getTypeId());\n+\t\t\t\twildStack.setLegacyData(-1); //wildcard stack\n+\t\t\t\twildStack.setAmount(1);\n+\t\t\t\tpossibleStacks = new NetworkItemStack[]{wildStack};\n+\t\t\t}\n+\t\t}\n+\t\tfor (NetworkItemStack item : possibleStacks) {\n+\t\t\tLinkedList<NetworkItemStack> newItems = new LinkedList<>(items);\n+\t\t\tnewItems.add(item);\n+\t\t\tif (tail.isEmpty()) {\n+\t\t\t\tconsumer.accept(newItems); //final step\n+\t\t\t} else {\n+\t\t\t\t//recursively call with each new level of permutation\n+\t\t\t\texpandRecipe(tail, newItems, consumer);\n+\t\t\t}\n+\t\t}\n+\t}\n+\n+\t@Override\n+\tpublic RecyclableCollection<ClientBoundPacketData> toData() {\n+\t\trecipesWritten = 0;\n+\t\tByteBuf buffer = Unpooled.buffer();\n+\t\tfor (Recipe recipe : recipes) {\n+\t\t\tif (recipe instanceof ShapelessRecipe) {\n+\t\t\t\tShapelessRecipe shapeless = (ShapelessRecipe)recipe;\n+\n+\t\t\t\texpandRecipe(shapeless.getIngredients(), ingredients -> {\n+\t\t\t\t\taddRecipeShapeless(buffer, shapeless.getResult(), ingredients);\n+\t\t\t\t});\n+\t\t\t} else if(recipe instanceof ShapedRecipe) {\n+\t\t\t\tShapedRecipe shaped = (ShapedRecipe)recipe;\n+\n+\t\t\t\texpandRecipe(shaped.getIngredients(), ingredients -> {\n+\t\t\t\t\taddRecipeShaped(buffer, shaped.getResult(), shaped.getWidth(), shaped.getHeight(), ingredients);\n+\t\t\t\t});\n+\t\t\t} else if(recipe instanceof SmeltingRecipe) {\n+\t\t\t\tSmeltingRecipe smelting = (SmeltingRecipe)recipe;\n+\t\t\t\texpandRecipe(new Ingredient[]{smelting.getIngredient()}, ingredients -> {\n+\t\t\t\t\taddRecipeFurnace(buffer, smelting.getResult(), ingredients.get(0));\n+\t\t\t\t});\n+\t\t\t}\n+\t\t}\n+\t\tClientBoundPacketData craftPacket = ClientBoundPacketData.create(PEPacketIDs.CRAFTING_DATA);\n+\t\tVarNumberSerializer.writeVarInt(craftPacket, recipesWritten);\n+\t\tcraftPacket.writeBytes(buffer);\n+\t\tbuffer.release();\n+\t\treturn RecyclableSingletonList.create(craftPacket);\n+\t}\n+\n+\tprotected void addRecipeShaped(ByteBuf to, NetworkItemStack output, int width, int height, List<NetworkItemStack> required) {\n+\t\tVarNumberSerializer.writeSVarInt(to, 1); //recipe type\n+\t\tVarNumberSerializer.writeSVarInt(to, width);\n+\t\tVarNumberSerializer.writeSVarInt(to, height);\n+\t\tfor (NetworkItemStack stack : required) {\n+\t\t\tItemStackSerializer.writeItemStack(to, connection.getVersion(), I18NData.DEFAULT_LOCALE, stack, stack == null || stack.getLegacyData() != -1);","path":"src/protocolsupport/protocol/packet/middleimpl/clientbound/play/v_pe/CraftingData.java","position":109,"original_position":109,"commit_id":"3f9ade011c50e26b2b29873d61a5a7f313005ddc","original_commit_id":"3f9ade011c50e26b2b29873d61a5a7f313005ddc","user":{"login":"7kasper","id":6474340,"node_id":"MDQ6VXNlcjY0NzQzNDA=","avatar_url":"https://avatars2.githubusercontent.com/u/6474340?v=4","gravatar_id":"","url":"https://api.github.com/users/7kasper","html_url":"https://github.com/7kasper","followers_url":"https://api.github.com/users/7kasper/followers","following_url":"https://api.github.com/users/7kasper/following{/other_user}","gists_url":"https://api.github.com/users/7kasper/gists{/gist_id}","starred_url":"https://api.github.com/users/7kasper/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/7kasper/subscriptions","organizations_url":"https://api.github.com/users/7kasper/orgs","repos_url":"https://api.github.com/users/7kasper/repos","events_url":"https://api.github.com/users/7kasper/events{/privacy}","received_events_url":"https://api.github.com/users/7kasper/received_events","type":"User","site_admin":false},"body":"Why use the `I18NData.DEFAULT_LOCALE`? Get the player's locale using `cache.getAttributesCache().getLocale();`","created_at":"2018-11-25T19:01:44Z","updated_at":"2018-11-25T19:01:44Z","html_url":"https://github.com/ProtocolSupport/ProtocolSupport/pull/961#discussion_r236085605","pull_request_url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/pulls/961","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/pulls/comments/236085605"},"html":{"href":"https://github.com/ProtocolSupport/ProtocolSupport/pull/961#discussion_r236085605"},"pull_request":{"href":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/pulls/961"}}},"pull_request":{"url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/pulls/961","id":233388600,"node_id":"MDExOlB1bGxSZXF1ZXN0MjMzMzg4NjAw","html_url":"https://github.com/ProtocolSupport/ProtocolSupport/pull/961","diff_url":"https://github.com/ProtocolSupport/ProtocolSupport/pull/961.diff","patch_url":"https://github.com/ProtocolSupport/ProtocolSupport/pull/961.patch","issue_url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/issues/961","number":961,"state":"open","locked":false,"title":"[MCPE] Crafting fix, PE data value fix","user":{"login":"colinrgodsey","id":535083,"node_id":"MDQ6VXNlcjUzNTA4Mw==","avatar_url":"https://avatars3.githubusercontent.com/u/535083?v=4","gravatar_id":"","url":"https://api.github.com/users/colinrgodsey","html_url":"https://github.com/colinrgodsey","followers_url":"https://api.github.com/users/colinrgodsey/followers","following_url":"https://api.github.com/users/colinrgodsey/following{/other_user}","gists_url":"https://api.github.com/users/colinrgodsey/gists{/gist_id}","starred_url":"https://api.github.com/users/colinrgodsey/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/colinrgodsey/subscriptions","organizations_url":"https://api.github.com/users/colinrgodsey/orgs","repos_url":"https://api.github.com/users/colinrgodsey/repos","events_url":"https://api.github.com/users/colinrgodsey/events{/privacy}","received_events_url":"https://api.github.com/users/colinrgodsey/received_events","type":"User","site_admin":false},"body":"* Uses the new crafting packet directly, should support all server recipes.\r\n* Fixed the PE data value not getting copied in items stacks. This was causing all sorts of weird issues with inventory.","created_at":"2018-11-25T17:27:05Z","updated_at":"2018-11-25T19:01:44Z","closed_at":null,"merged_at":null,"merge_commit_sha":"98831c6b40c14c42f0b60228af91c1c3bb7f3979","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/pulls/961/commits","review_comments_url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/pulls/961/comments","review_comment_url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/issues/961/comments","statuses_url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/statuses/3f9ade011c50e26b2b29873d61a5a7f313005ddc","head":{"label":"yesdog:mcpe-etc2","ref":"mcpe-etc2","sha":"3f9ade011c50e26b2b29873d61a5a7f313005ddc","user":{"login":"yesdog","id":35696413,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM1Njk2NDEz","avatar_url":"https://avatars3.githubusercontent.com/u/35696413?v=4","gravatar_id":"","url":"https://api.github.com/users/yesdog","html_url":"https://github.com/yesdog","followers_url":"https://api.github.com/users/yesdog/followers","following_url":"https://api.github.com/users/yesdog/following{/other_user}","gists_url":"https://api.github.com/users/yesdog/gists{/gist_id}","starred_url":"https://api.github.com/users/yesdog/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yesdog/subscriptions","organizations_url":"https://api.github.com/users/yesdog/orgs","repos_url":"https://api.github.com/users/yesdog/repos","events_url":"https://api.github.com/users/yesdog/events{/privacy}","received_events_url":"https://api.github.com/users/yesdog/received_events","type":"Organization","site_admin":false},"repo":{"id":155604253,"node_id":"MDEwOlJlcG9zaXRvcnkxNTU2MDQyNTM=","name":"ProtocolSupport","full_name":"yesdog/ProtocolSupport","private":false,"owner":{"login":"yesdog","id":35696413,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM1Njk2NDEz","avatar_url":"https://avatars3.githubusercontent.com/u/35696413?v=4","gravatar_id":"","url":"https://api.github.com/users/yesdog","html_url":"https://github.com/yesdog","followers_url":"https://api.github.com/users/yesdog/followers","following_url":"https://api.github.com/users/yesdog/following{/other_user}","gists_url":"https://api.github.com/users/yesdog/gists{/gist_id}","starred_url":"https://api.github.com/users/yesdog/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yesdog/subscriptions","organizations_url":"https://api.github.com/users/yesdog/orgs","repos_url":"https://api.github.com/users/yesdog/repos","events_url":"https://api.github.com/users/yesdog/events{/privacy}","received_events_url":"https://api.github.com/users/yesdog/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/yesdog/ProtocolSupport","description":"Support 1.12, 1.11, 1.10.*, 1.9.*, 1.8.*, 1.7.*, 1.6.*, 1.5.*, 1.4.7 on spigot 1.13","fork":true,"url":"https://api.github.com/repos/yesdog/ProtocolSupport","forks_url":"https://api.github.com/repos/yesdog/ProtocolSupport/forks","keys_url":"https://api.github.com/repos/yesdog/ProtocolSupport/keys{/key_id}","collaborators_url":"https://api.github.com/repos/yesdog/ProtocolSupport/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/yesdog/ProtocolSupport/teams","hooks_url":"https://api.github.com/repos/yesdog/ProtocolSupport/hooks","issue_events_url":"https://api.github.com/repos/yesdog/ProtocolSupport/issues/events{/number}","events_url":"https://api.github.com/repos/yesdog/ProtocolSupport/events","assignees_url":"https://api.github.com/repos/yesdog/ProtocolSupport/assignees{/user}","branches_url":"https://api.github.com/repos/yesdog/ProtocolSupport/branches{/branch}","tags_url":"https://api.github.com/repos/yesdog/ProtocolSupport/tags","blobs_url":"https://api.github.com/repos/yesdog/ProtocolSupport/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/yesdog/ProtocolSupport/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/yesdog/ProtocolSupport/git/refs{/sha}","trees_url":"https://api.github.com/repos/yesdog/ProtocolSupport/git/trees{/sha}","statuses_url":"https://api.github.com/repos/yesdog/ProtocolSupport/statuses/{sha}","languages_url":"https://api.github.com/repos/yesdog/ProtocolSupport/languages","stargazers_url":"https://api.github.com/repos/yesdog/ProtocolSupport/stargazers","contributors_url":"https://api.github.com/repos/yesdog/ProtocolSupport/contributors","subscribers_url":"https://api.github.com/repos/yesdog/ProtocolSupport/subscribers","subscription_url":"https://api.github.com/repos/yesdog/ProtocolSupport/subscription","commits_url":"https://api.github.com/repos/yesdog/ProtocolSupport/commits{/sha}","git_commits_url":"https://api.github.com/repos/yesdog/ProtocolSupport/git/commits{/sha}","comments_url":"https://api.github.com/repos/yesdog/ProtocolSupport/comments{/number}","issue_comment_url":"https://api.github.com/repos/yesdog/ProtocolSupport/issues/comments{/number}","contents_url":"https://api.github.com/repos/yesdog/ProtocolSupport/contents/{+path}","compare_url":"https://api.github.com/repos/yesdog/ProtocolSupport/compare/{base}...{head}","merges_url":"https://api.github.com/repos/yesdog/ProtocolSupport/merges","archive_url":"https://api.github.com/repos/yesdog/ProtocolSupport/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/yesdog/ProtocolSupport/downloads","issues_url":"https://api.github.com/repos/yesdog/ProtocolSupport/issues{/number}","pulls_url":"https://api.github.com/repos/yesdog/ProtocolSupport/pulls{/number}","milestones_url":"https://api.github.com/repos/yesdog/ProtocolSupport/milestones{/number}","notifications_url":"https://api.github.com/repos/yesdog/ProtocolSupport/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/yesdog/ProtocolSupport/labels{/name}","releases_url":"https://api.github.com/repos/yesdog/ProtocolSupport/releases{/id}","deployments_url":"https://api.github.com/repos/yesdog/ProtocolSupport/deployments","created_at":"2018-10-31T18:18:31Z","updated_at":"2018-11-02T11:50:10Z","pushed_at":"2018-11-25T17:27:25Z","git_url":"git://github.com/yesdog/ProtocolSupport.git","ssh_url":"git@github.com:yesdog/ProtocolSupport.git","clone_url":"https://github.com/yesdog/ProtocolSupport.git","svn_url":"https://github.com/yesdog/ProtocolSupport","homepage":"","size":16099,"stargazers_count":1,"watchers_count":1,"language":"Java","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":1,"license":{"key":"agpl-3.0","name":"GNU Affero General Public License v3.0","spdx_id":"AGPL-3.0","url":"https://api.github.com/licenses/agpl-3.0","node_id":"MDc6TGljZW5zZTE="},"forks":0,"open_issues":1,"watchers":1,"default_branch":"master"}},"base":{"label":"ProtocolSupport:mcpenew","ref":"mcpenew","sha":"5e9e5071524e2d02f0fd65528f011729ee8329d4","user":{"login":"ProtocolSupport","id":15771858,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE1NzcxODU4","avatar_url":"https://avatars2.githubusercontent.com/u/15771858?v=4","gravatar_id":"","url":"https://api.github.com/users/ProtocolSupport","html_url":"https://github.com/ProtocolSupport","followers_url":"https://api.github.com/users/ProtocolSupport/followers","following_url":"https://api.github.com/users/ProtocolSupport/following{/other_user}","gists_url":"https://api.github.com/users/ProtocolSupport/gists{/gist_id}","starred_url":"https://api.github.com/users/ProtocolSupport/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ProtocolSupport/subscriptions","organizations_url":"https://api.github.com/users/ProtocolSupport/orgs","repos_url":"https://api.github.com/users/ProtocolSupport/repos","events_url":"https://api.github.com/users/ProtocolSupport/events{/privacy}","received_events_url":"https://api.github.com/users/ProtocolSupport/received_events","type":"Organization","site_admin":false},"repo":{"id":27644576,"node_id":"MDEwOlJlcG9zaXRvcnkyNzY0NDU3Ng==","name":"ProtocolSupport","full_name":"ProtocolSupport/ProtocolSupport","private":false,"owner":{"login":"ProtocolSupport","id":15771858,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE1NzcxODU4","avatar_url":"https://avatars2.githubusercontent.com/u/15771858?v=4","gravatar_id":"","url":"https://api.github.com/users/ProtocolSupport","html_url":"https://github.com/ProtocolSupport","followers_url":"https://api.github.com/users/ProtocolSupport/followers","following_url":"https://api.github.com/users/ProtocolSupport/following{/other_user}","gists_url":"https://api.github.com/users/ProtocolSupport/gists{/gist_id}","starred_url":"https://api.github.com/users/ProtocolSupport/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ProtocolSupport/subscriptions","organizations_url":"https://api.github.com/users/ProtocolSupport/orgs","repos_url":"https://api.github.com/users/ProtocolSupport/repos","events_url":"https://api.github.com/users/ProtocolSupport/events{/privacy}","received_events_url":"https://api.github.com/users/ProtocolSupport/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/ProtocolSupport/ProtocolSupport","description":"Support 1.12, 1.11, 1.10.*, 1.9.*, 1.8.*, 1.7.*, 1.6.*, 1.5.*, 1.4.7 on spigot 1.13","fork":false,"url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport","forks_url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/forks","keys_url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/teams","hooks_url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/hooks","issue_events_url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/issues/events{/number}","events_url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/events","assignees_url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/assignees{/user}","branches_url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/branches{/branch}","tags_url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/tags","blobs_url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/git/refs{/sha}","trees_url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/statuses/{sha}","languages_url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/languages","stargazers_url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/stargazers","contributors_url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/contributors","subscribers_url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/subscribers","subscription_url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/subscription","commits_url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/commits{/sha}","git_commits_url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/git/commits{/sha}","comments_url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/comments{/number}","issue_comment_url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/issues/comments{/number}","contents_url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/contents/{+path}","compare_url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/merges","archive_url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/downloads","issues_url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/issues{/number}","pulls_url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/pulls{/number}","milestones_url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/milestones{/number}","notifications_url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/labels{/name}","releases_url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/releases{/id}","deployments_url":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/deployments","created_at":"2014-12-06T18:35:33Z","updated_at":"2018-11-25T18:44:45Z","pushed_at":"2018-11-25T18:55:43Z","git_url":"git://github.com/ProtocolSupport/ProtocolSupport.git","ssh_url":"git@github.com:ProtocolSupport/ProtocolSupport.git","clone_url":"https://github.com/ProtocolSupport/ProtocolSupport.git","svn_url":"https://github.com/ProtocolSupport/ProtocolSupport","homepage":"","size":16086,"stargazers_count":189,"watchers_count":189,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":115,"mirror_url":null,"archived":false,"open_issues_count":25,"license":{"key":"agpl-3.0","name":"GNU Affero General Public License v3.0","spdx_id":"AGPL-3.0","url":"https://api.github.com/licenses/agpl-3.0","node_id":"MDc6TGljZW5zZTE="},"forks":115,"open_issues":25,"watchers":189,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/pulls/961"},"html":{"href":"https://github.com/ProtocolSupport/ProtocolSupport/pull/961"},"issue":{"href":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/issues/961"},"comments":{"href":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/issues/961/comments"},"review_comments":{"href":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/pulls/961/comments"},"review_comment":{"href":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/pulls/961/commits"},"statuses":{"href":"https://api.github.com/repos/ProtocolSupport/ProtocolSupport/statuses/3f9ade011c50e26b2b29873d61a5a7f313005ddc"}},"author_association":"NONE"}}
{"actor":{"display_login":"7kasper"}}