{"action":"closed","number":30,"pull_request":{"url":"https://api.github.com/repos/wargamer/SignShop/pulls/30","id":73238274,"html_url":"https://github.com/wargamer/SignShop/pull/30","diff_url":"https://github.com/wargamer/SignShop/pull/30.diff","patch_url":"https://github.com/wargamer/SignShop/pull/30.patch","issue_url":"https://api.github.com/repos/wargamer/SignShop/issues/30","number":30,"state":"closed","locked":false,"title":"Fix item loss from canTakeItems not correctly identifying full player inventory","user":{"login":"RoyCurtis","id":2047000,"avatar_url":"https://avatars.githubusercontent.com/u/2047000?v=3","gravatar_id":"","url":"https://api.github.com/users/RoyCurtis","html_url":"https://github.com/RoyCurtis","followers_url":"https://api.github.com/users/RoyCurtis/followers","following_url":"https://api.github.com/users/RoyCurtis/following{/other_user}","gists_url":"https://api.github.com/users/RoyCurtis/gists{/gist_id}","starred_url":"https://api.github.com/users/RoyCurtis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RoyCurtis/subscriptions","organizations_url":"https://api.github.com/users/RoyCurtis/orgs","repos_url":"https://api.github.com/users/RoyCurtis/repos","events_url":"https://api.github.com/users/RoyCurtis/events{/privacy}","received_events_url":"https://api.github.com/users/RoyCurtis/received_events","type":"User","site_admin":false},"body":"This is a fix for a major bug discovered on our server. When a player attempts to use a `[Buy]` sign whilst their inventory is full, the shop's items are destroyed and the player's money is taken.\r\n\r\nI tracked the issue down to `findSpace()` as used by `canTakeItems()` in `VirtualInventory`. It checks for empty slots in the player's whole inventory, even if some of those slots are _read-only_.\r\n\r\n# Testing\r\n\r\n* Developed against Spigot API 1.9.4 and Java 8\r\n* Tested on PaperSpigot 1.9.4 b773 local server with EssentialsX and Vault\r\n* Tested on PaperSpigot 1.9.4 b772 live server with 30 plugins\r\n    *  `CleanroomGenerator, dynmap, WorldEdit, DaFlightManager, Skript, TerrainControl, Titanic, zPermissions, Chairs, WorldBorder, TicketMaster, ProtocolLib, Multiverse-Core, WorldGuard, NoCheatPlus, WoodCutter, Stables, HappyPet, SQLibrary, Multiverse-Portals, Vault, Prism, Essentials, PerWorldInventory, LWC, SignShop, VanishNoPacket, CraftBook, Multiverse-NetherPortals, PurpleIRC`\r\n\r\n# Notes\r\n\r\n* [A built jar of the latest available SignShop (2.11.0) with this fix can be found here](https://github.com/Gamealition/GSignShop/releases)\r\n* As this code change was made and tested on our [downstream fork](https://github.com/Gamealition/GSignShop), I cannot guarantee that this pull request has no compilation nor runtime errors\r\n* This bug was discovered by two of our players; StitchHasAGlitch and Vasha","created_at":"2016-06-09T15:46:41Z","updated_at":"2016-06-09T20:10:12Z","closed_at":"2016-06-09T20:10:12Z","merged_at":"2016-06-09T20:10:12Z","merge_commit_sha":"c3b384a555a8a08c5c2105c5f3613acc19f48f9f","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/wargamer/SignShop/pulls/30/commits","review_comments_url":"https://api.github.com/repos/wargamer/SignShop/pulls/30/comments","review_comment_url":"https://api.github.com/repos/wargamer/SignShop/pulls/comments{/number}","comments_url":"https://api.github.com/repos/wargamer/SignShop/issues/30/comments","statuses_url":"https://api.github.com/repos/wargamer/SignShop/statuses/3139542d4b2625793a9f97dcb812f0d17d32b1d3","head":{"label":"Gamealition:master","ref":"master","sha":"3139542d4b2625793a9f97dcb812f0d17d32b1d3","user":{"login":"Gamealition","id":7987483,"avatar_url":"https://avatars.githubusercontent.com/u/7987483?v=3","gravatar_id":"","url":"https://api.github.com/users/Gamealition","html_url":"https://github.com/Gamealition","followers_url":"https://api.github.com/users/Gamealition/followers","following_url":"https://api.github.com/users/Gamealition/following{/other_user}","gists_url":"https://api.github.com/users/Gamealition/gists{/gist_id}","starred_url":"https://api.github.com/users/Gamealition/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Gamealition/subscriptions","organizations_url":"https://api.github.com/users/Gamealition/orgs","repos_url":"https://api.github.com/users/Gamealition/repos","events_url":"https://api.github.com/users/Gamealition/events{/privacy}","received_events_url":"https://api.github.com/users/Gamealition/received_events","type":"Organization","site_admin":false},"repo":{"id":60767722,"name":"GSignShop","full_name":"Gamealition/GSignShop","owner":{"login":"Gamealition","id":7987483,"avatar_url":"https://avatars.githubusercontent.com/u/7987483?v=3","gravatar_id":"","url":"https://api.github.com/users/Gamealition","html_url":"https://github.com/Gamealition","followers_url":"https://api.github.com/users/Gamealition/followers","following_url":"https://api.github.com/users/Gamealition/following{/other_user}","gists_url":"https://api.github.com/users/Gamealition/gists{/gist_id}","starred_url":"https://api.github.com/users/Gamealition/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Gamealition/subscriptions","organizations_url":"https://api.github.com/users/Gamealition/orgs","repos_url":"https://api.github.com/users/Gamealition/repos","events_url":"https://api.github.com/users/Gamealition/events{/privacy}","received_events_url":"https://api.github.com/users/Gamealition/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Gamealition/GSignShop","description":"Downstream fork of SignShop, with Maven build system and testing fixes","fork":true,"url":"https://api.github.com/repos/Gamealition/GSignShop","forks_url":"https://api.github.com/repos/Gamealition/GSignShop/forks","keys_url":"https://api.github.com/repos/Gamealition/GSignShop/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Gamealition/GSignShop/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Gamealition/GSignShop/teams","hooks_url":"https://api.github.com/repos/Gamealition/GSignShop/hooks","issue_events_url":"https://api.github.com/repos/Gamealition/GSignShop/issues/events{/number}","events_url":"https://api.github.com/repos/Gamealition/GSignShop/events","assignees_url":"https://api.github.com/repos/Gamealition/GSignShop/assignees{/user}","branches_url":"https://api.github.com/repos/Gamealition/GSignShop/branches{/branch}","tags_url":"https://api.github.com/repos/Gamealition/GSignShop/tags","blobs_url":"https://api.github.com/repos/Gamealition/GSignShop/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Gamealition/GSignShop/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Gamealition/GSignShop/git/refs{/sha}","trees_url":"https://api.github.com/repos/Gamealition/GSignShop/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Gamealition/GSignShop/statuses/{sha}","languages_url":"https://api.github.com/repos/Gamealition/GSignShop/languages","stargazers_url":"https://api.github.com/repos/Gamealition/GSignShop/stargazers","contributors_url":"https://api.github.com/repos/Gamealition/GSignShop/contributors","subscribers_url":"https://api.github.com/repos/Gamealition/GSignShop/subscribers","subscription_url":"https://api.github.com/repos/Gamealition/GSignShop/subscription","commits_url":"https://api.github.com/repos/Gamealition/GSignShop/commits{/sha}","git_commits_url":"https://api.github.com/repos/Gamealition/GSignShop/git/commits{/sha}","comments_url":"https://api.github.com/repos/Gamealition/GSignShop/comments{/number}","issue_comment_url":"https://api.github.com/repos/Gamealition/GSignShop/issues/comments{/number}","contents_url":"https://api.github.com/repos/Gamealition/GSignShop/contents/{+path}","compare_url":"https://api.github.com/repos/Gamealition/GSignShop/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Gamealition/GSignShop/merges","archive_url":"https://api.github.com/repos/Gamealition/GSignShop/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Gamealition/GSignShop/downloads","issues_url":"https://api.github.com/repos/Gamealition/GSignShop/issues{/number}","pulls_url":"https://api.github.com/repos/Gamealition/GSignShop/pulls{/number}","milestones_url":"https://api.github.com/repos/Gamealition/GSignShop/milestones{/number}","notifications_url":"https://api.github.com/repos/Gamealition/GSignShop/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Gamealition/GSignShop/labels{/name}","releases_url":"https://api.github.com/repos/Gamealition/GSignShop/releases{/id}","deployments_url":"https://api.github.com/repos/Gamealition/GSignShop/deployments","created_at":"2016-06-09T10:53:52Z","updated_at":"2016-06-09T15:40:36Z","pushed_at":"2016-06-09T19:07:37Z","git_url":"git://github.com/Gamealition/GSignShop.git","ssh_url":"git@github.com:Gamealition/GSignShop.git","clone_url":"https://github.com/Gamealition/GSignShop.git","svn_url":"https://github.com/Gamealition/GSignShop","homepage":"","size":6805,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"gamealition"}},"base":{"label":"wargamer:master","ref":"master","sha":"3f17eba5c8839dd4b1908e0a25a9748aa13b67b7","user":{"login":"wargamer","id":805634,"avatar_url":"https://avatars.githubusercontent.com/u/805634?v=3","gravatar_id":"","url":"https://api.github.com/users/wargamer","html_url":"https://github.com/wargamer","followers_url":"https://api.github.com/users/wargamer/followers","following_url":"https://api.github.com/users/wargamer/following{/other_user}","gists_url":"https://api.github.com/users/wargamer/gists{/gist_id}","starred_url":"https://api.github.com/users/wargamer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wargamer/subscriptions","organizations_url":"https://api.github.com/users/wargamer/orgs","repos_url":"https://api.github.com/users/wargamer/repos","events_url":"https://api.github.com/users/wargamer/events{/privacy}","received_events_url":"https://api.github.com/users/wargamer/received_events","type":"User","site_admin":false},"repo":{"id":3630391,"name":"SignShop","full_name":"wargamer/SignShop","owner":{"login":"wargamer","id":805634,"avatar_url":"https://avatars.githubusercontent.com/u/805634?v=3","gravatar_id":"","url":"https://api.github.com/users/wargamer","html_url":"https://github.com/wargamer","followers_url":"https://api.github.com/users/wargamer/followers","following_url":"https://api.github.com/users/wargamer/following{/other_user}","gists_url":"https://api.github.com/users/wargamer/gists{/gist_id}","starred_url":"https://api.github.com/users/wargamer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wargamer/subscriptions","organizations_url":"https://api.github.com/users/wargamer/orgs","repos_url":"https://api.github.com/users/wargamer/repos","events_url":"https://api.github.com/users/wargamer/events{/privacy}","received_events_url":"https://api.github.com/users/wargamer/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/wargamer/SignShop","description":"A minecraft plugin allowing users to setup shops with signs","fork":false,"url":"https://api.github.com/repos/wargamer/SignShop","forks_url":"https://api.github.com/repos/wargamer/SignShop/forks","keys_url":"https://api.github.com/repos/wargamer/SignShop/keys{/key_id}","collaborators_url":"https://api.github.com/repos/wargamer/SignShop/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/wargamer/SignShop/teams","hooks_url":"https://api.github.com/repos/wargamer/SignShop/hooks","issue_events_url":"https://api.github.com/repos/wargamer/SignShop/issues/events{/number}","events_url":"https://api.github.com/repos/wargamer/SignShop/events","assignees_url":"https://api.github.com/repos/wargamer/SignShop/assignees{/user}","branches_url":"https://api.github.com/repos/wargamer/SignShop/branches{/branch}","tags_url":"https://api.github.com/repos/wargamer/SignShop/tags","blobs_url":"https://api.github.com/repos/wargamer/SignShop/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/wargamer/SignShop/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/wargamer/SignShop/git/refs{/sha}","trees_url":"https://api.github.com/repos/wargamer/SignShop/git/trees{/sha}","statuses_url":"https://api.github.com/repos/wargamer/SignShop/statuses/{sha}","languages_url":"https://api.github.com/repos/wargamer/SignShop/languages","stargazers_url":"https://api.github.com/repos/wargamer/SignShop/stargazers","contributors_url":"https://api.github.com/repos/wargamer/SignShop/contributors","subscribers_url":"https://api.github.com/repos/wargamer/SignShop/subscribers","subscription_url":"https://api.github.com/repos/wargamer/SignShop/subscription","commits_url":"https://api.github.com/repos/wargamer/SignShop/commits{/sha}","git_commits_url":"https://api.github.com/repos/wargamer/SignShop/git/commits{/sha}","comments_url":"https://api.github.com/repos/wargamer/SignShop/comments{/number}","issue_comment_url":"https://api.github.com/repos/wargamer/SignShop/issues/comments{/number}","contents_url":"https://api.github.com/repos/wargamer/SignShop/contents/{+path}","compare_url":"https://api.github.com/repos/wargamer/SignShop/compare/{base}...{head}","merges_url":"https://api.github.com/repos/wargamer/SignShop/merges","archive_url":"https://api.github.com/repos/wargamer/SignShop/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/wargamer/SignShop/downloads","issues_url":"https://api.github.com/repos/wargamer/SignShop/issues{/number}","pulls_url":"https://api.github.com/repos/wargamer/SignShop/pulls{/number}","milestones_url":"https://api.github.com/repos/wargamer/SignShop/milestones{/number}","notifications_url":"https://api.github.com/repos/wargamer/SignShop/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/wargamer/SignShop/labels{/name}","releases_url":"https://api.github.com/repos/wargamer/SignShop/releases{/id}","deployments_url":"https://api.github.com/repos/wargamer/SignShop/deployments","created_at":"2012-03-05T19:15:19Z","updated_at":"2016-05-11T23:37:54Z","pushed_at":"2016-06-09T20:10:12Z","git_url":"git://github.com/wargamer/SignShop.git","ssh_url":"git@github.com:wargamer/SignShop.git","clone_url":"https://github.com/wargamer/SignShop.git","svn_url":"https://github.com/wargamer/SignShop","homepage":"http://dev.bukkit.org/server-mods/signshop/","size":2530,"stargazers_count":8,"watchers_count":8,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":23,"mirror_url":null,"open_issues_count":5,"forks":23,"open_issues":5,"watchers":8,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/wargamer/SignShop/pulls/30"},"html":{"href":"https://github.com/wargamer/SignShop/pull/30"},"issue":{"href":"https://api.github.com/repos/wargamer/SignShop/issues/30"},"comments":{"href":"https://api.github.com/repos/wargamer/SignShop/issues/30/comments"},"review_comments":{"href":"https://api.github.com/repos/wargamer/SignShop/pulls/30/comments"},"review_comment":{"href":"https://api.github.com/repos/wargamer/SignShop/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/wargamer/SignShop/pulls/30/commits"},"statuses":{"href":"https://api.github.com/repos/wargamer/SignShop/statuses/3139542d4b2625793a9f97dcb812f0d17d32b1d3"}},"merged":true,"mergeable":null,"mergeable_state":"unknown","merged_by":{"login":"wargamer","id":805634,"avatar_url":"https://avatars.githubusercontent.com/u/805634?v=3","gravatar_id":"","url":"https://api.github.com/users/wargamer","html_url":"https://github.com/wargamer","followers_url":"https://api.github.com/users/wargamer/followers","following_url":"https://api.github.com/users/wargamer/following{/other_user}","gists_url":"https://api.github.com/users/wargamer/gists{/gist_id}","starred_url":"https://api.github.com/users/wargamer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wargamer/subscriptions","organizations_url":"https://api.github.com/users/wargamer/orgs","repos_url":"https://api.github.com/users/wargamer/repos","events_url":"https://api.github.com/users/wargamer/events{/privacy}","received_events_url":"https://api.github.com/users/wargamer/received_events","type":"User","site_admin":false},"comments":0,"review_comments":0,"commits":1,"additions":1,"deletions":1,"changed_files":1}}
{"actor":{"display_login":"wargamer"}}