{"action":"closed","number":2604,"pull_request":{"url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/pulls/2604","id":63508915,"html_url":"https://github.com/MinecraftForge/MinecraftForge/pull/2604","diff_url":"https://github.com/MinecraftForge/MinecraftForge/pull/2604.diff","patch_url":"https://github.com/MinecraftForge/MinecraftForge/pull/2604.patch","issue_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/issues/2604","number":2604,"state":"closed","locked":false,"title":"New PlayerInteractEvent for 1.9","user":{"login":"williewillus","id":2015032,"avatar_url":"https://avatars.githubusercontent.com/u/2015032?v=3","gravatar_id":"","url":"https://api.github.com/users/williewillus","html_url":"https://github.com/williewillus","followers_url":"https://api.github.com/users/williewillus/followers","following_url":"https://api.github.com/users/williewillus/following{/other_user}","gists_url":"https://api.github.com/users/williewillus/gists{/gist_id}","starred_url":"https://api.github.com/users/williewillus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/williewillus/subscriptions","organizations_url":"https://api.github.com/users/williewillus/orgs","repos_url":"https://api.github.com/users/williewillus/repos","events_url":"https://api.github.com/users/williewillus/events{/privacy}","received_events_url":"https://api.github.com/users/williewillus/received_events","type":"User","site_admin":false},"body":"Closes #2591 if taken.\r\n\r\nNotes:\r\n* All interaction events grouped and centralized into one file. Yes, that includes the entity ones. I figured I could move those as well since everything's getting ripped up from the roots right now (shhandcpwsaiditwasagoodidea)\r\n* Static subclasses for each type of interaction: Entity Interact_At, Entity Interact, right click block, right click item, left click block. \r\n* Side effect of reorganizing: No more RIGHT_CLICK_AIR. The case where that happens will always be the same as RightClickItem. However, it currently doesn't catch the case where you right click with an empty hand. That can easily be added on the client, but the server doesn't seem to know when you do that anymore (the section of code where packet is sent is nullchecked by stack)\r\n* Each static subclass has what it specifically needs to succeed, instead of lumping everything into one object type like it used to be\r\n* GREATLY improved the documentation on each event to detail specifically when it fires and what happens when you change the result or cancel it\r\n* Reapplied patches to PlayerInteractionManager (specifically, onItemUseFirst and doesSneakBypassBlockUse)\r\n* Event handling on the client and server are no longer tied together. With the old event, sometimes canceling clientside would cause the event to not even fire serverside, which according to some modders was a big point of confusion when working with this event. Hopefully changing this + better documentation will alleviate that.\r\n\r\nPlease post feedback and comments, and check my logic to make sure it's right.\r\n(Leaving all commits for ease of discussion, squash will happen if it gets taken)","created_at":"2016-03-20T21:56:50Z","updated_at":"2016-04-05T01:06:11Z","closed_at":"2016-04-05T01:06:11Z","merged_at":"2016-04-05T01:06:11Z","merge_commit_sha":"034efaff3de9d057217dfe8277a3c9db924f4e9b","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/pulls/2604/commits","review_comments_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/pulls/2604/comments","review_comment_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/pulls/comments{/number}","comments_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/issues/2604/comments","statuses_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/statuses/e8ea52558bbb9926d0a8694f132b5a572a360d1c","head":{"label":"williewillus:pie","ref":"pie","sha":"e8ea52558bbb9926d0a8694f132b5a572a360d1c","user":{"login":"williewillus","id":2015032,"avatar_url":"https://avatars.githubusercontent.com/u/2015032?v=3","gravatar_id":"","url":"https://api.github.com/users/williewillus","html_url":"https://github.com/williewillus","followers_url":"https://api.github.com/users/williewillus/followers","following_url":"https://api.github.com/users/williewillus/following{/other_user}","gists_url":"https://api.github.com/users/williewillus/gists{/gist_id}","starred_url":"https://api.github.com/users/williewillus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/williewillus/subscriptions","organizations_url":"https://api.github.com/users/williewillus/orgs","repos_url":"https://api.github.com/users/williewillus/repos","events_url":"https://api.github.com/users/williewillus/events{/privacy}","received_events_url":"https://api.github.com/users/williewillus/received_events","type":"User","site_admin":false},"repo":{"id":48932222,"name":"MinecraftForge","full_name":"williewillus/MinecraftForge","owner":{"login":"williewillus","id":2015032,"avatar_url":"https://avatars.githubusercontent.com/u/2015032?v=3","gravatar_id":"","url":"https://api.github.com/users/williewillus","html_url":"https://github.com/williewillus","followers_url":"https://api.github.com/users/williewillus/followers","following_url":"https://api.github.com/users/williewillus/following{/other_user}","gists_url":"https://api.github.com/users/williewillus/gists{/gist_id}","starred_url":"https://api.github.com/users/williewillus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/williewillus/subscriptions","organizations_url":"https://api.github.com/users/williewillus/orgs","repos_url":"https://api.github.com/users/williewillus/repos","events_url":"https://api.github.com/users/williewillus/events{/privacy}","received_events_url":"https://api.github.com/users/williewillus/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/williewillus/MinecraftForge","description":"Modifications to the Minecraft base files to assist in compatibility between mods.","fork":true,"url":"https://api.github.com/repos/williewillus/MinecraftForge","forks_url":"https://api.github.com/repos/williewillus/MinecraftForge/forks","keys_url":"https://api.github.com/repos/williewillus/MinecraftForge/keys{/key_id}","collaborators_url":"https://api.github.com/repos/williewillus/MinecraftForge/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/williewillus/MinecraftForge/teams","hooks_url":"https://api.github.com/repos/williewillus/MinecraftForge/hooks","issue_events_url":"https://api.github.com/repos/williewillus/MinecraftForge/issues/events{/number}","events_url":"https://api.github.com/repos/williewillus/MinecraftForge/events","assignees_url":"https://api.github.com/repos/williewillus/MinecraftForge/assignees{/user}","branches_url":"https://api.github.com/repos/williewillus/MinecraftForge/branches{/branch}","tags_url":"https://api.github.com/repos/williewillus/MinecraftForge/tags","blobs_url":"https://api.github.com/repos/williewillus/MinecraftForge/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/williewillus/MinecraftForge/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/williewillus/MinecraftForge/git/refs{/sha}","trees_url":"https://api.github.com/repos/williewillus/MinecraftForge/git/trees{/sha}","statuses_url":"https://api.github.com/repos/williewillus/MinecraftForge/statuses/{sha}","languages_url":"https://api.github.com/repos/williewillus/MinecraftForge/languages","stargazers_url":"https://api.github.com/repos/williewillus/MinecraftForge/stargazers","contributors_url":"https://api.github.com/repos/williewillus/MinecraftForge/contributors","subscribers_url":"https://api.github.com/repos/williewillus/MinecraftForge/subscribers","subscription_url":"https://api.github.com/repos/williewillus/MinecraftForge/subscription","commits_url":"https://api.github.com/repos/williewillus/MinecraftForge/commits{/sha}","git_commits_url":"https://api.github.com/repos/williewillus/MinecraftForge/git/commits{/sha}","comments_url":"https://api.github.com/repos/williewillus/MinecraftForge/comments{/number}","issue_comment_url":"https://api.github.com/repos/williewillus/MinecraftForge/issues/comments{/number}","contents_url":"https://api.github.com/repos/williewillus/MinecraftForge/contents/{+path}","compare_url":"https://api.github.com/repos/williewillus/MinecraftForge/compare/{base}...{head}","merges_url":"https://api.github.com/repos/williewillus/MinecraftForge/merges","archive_url":"https://api.github.com/repos/williewillus/MinecraftForge/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/williewillus/MinecraftForge/downloads","issues_url":"https://api.github.com/repos/williewillus/MinecraftForge/issues{/number}","pulls_url":"https://api.github.com/repos/williewillus/MinecraftForge/pulls{/number}","milestones_url":"https://api.github.com/repos/williewillus/MinecraftForge/milestones{/number}","notifications_url":"https://api.github.com/repos/williewillus/MinecraftForge/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/williewillus/MinecraftForge/labels{/name}","releases_url":"https://api.github.com/repos/williewillus/MinecraftForge/releases{/id}","deployments_url":"https://api.github.com/repos/williewillus/MinecraftForge/deployments","created_at":"2016-01-03T03:14:40Z","updated_at":"2016-02-01T02:26:09Z","pushed_at":"2016-04-05T00:58:55Z","git_url":"git://github.com/williewillus/MinecraftForge.git","ssh_url":"git@github.com:williewillus/MinecraftForge.git","clone_url":"https://github.com/williewillus/MinecraftForge.git","svn_url":"https://github.com/williewillus/MinecraftForge","homepage":"","size":85616,"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":"master"}},"base":{"label":"MinecraftForge:1.9","ref":"1.9","sha":"8fd0817c81ddfb13b5e673d1058e3690e1dde73e","user":{"login":"MinecraftForge","id":1390178,"avatar_url":"https://avatars.githubusercontent.com/u/1390178?v=3","gravatar_id":"","url":"https://api.github.com/users/MinecraftForge","html_url":"https://github.com/MinecraftForge","followers_url":"https://api.github.com/users/MinecraftForge/followers","following_url":"https://api.github.com/users/MinecraftForge/following{/other_user}","gists_url":"https://api.github.com/users/MinecraftForge/gists{/gist_id}","starred_url":"https://api.github.com/users/MinecraftForge/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MinecraftForge/subscriptions","organizations_url":"https://api.github.com/users/MinecraftForge/orgs","repos_url":"https://api.github.com/users/MinecraftForge/repos","events_url":"https://api.github.com/users/MinecraftForge/events{/privacy}","received_events_url":"https://api.github.com/users/MinecraftForge/received_events","type":"Organization","site_admin":false},"repo":{"id":3301400,"name":"MinecraftForge","full_name":"MinecraftForge/MinecraftForge","owner":{"login":"MinecraftForge","id":1390178,"avatar_url":"https://avatars.githubusercontent.com/u/1390178?v=3","gravatar_id":"","url":"https://api.github.com/users/MinecraftForge","html_url":"https://github.com/MinecraftForge","followers_url":"https://api.github.com/users/MinecraftForge/followers","following_url":"https://api.github.com/users/MinecraftForge/following{/other_user}","gists_url":"https://api.github.com/users/MinecraftForge/gists{/gist_id}","starred_url":"https://api.github.com/users/MinecraftForge/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MinecraftForge/subscriptions","organizations_url":"https://api.github.com/users/MinecraftForge/orgs","repos_url":"https://api.github.com/users/MinecraftForge/repos","events_url":"https://api.github.com/users/MinecraftForge/events{/privacy}","received_events_url":"https://api.github.com/users/MinecraftForge/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/MinecraftForge/MinecraftForge","description":"Modifications to the Minecraft base files to assist in compatibility between mods.","fork":false,"url":"https://api.github.com/repos/MinecraftForge/MinecraftForge","forks_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/forks","keys_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/keys{/key_id}","collaborators_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/teams","hooks_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/hooks","issue_events_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/issues/events{/number}","events_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/events","assignees_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/assignees{/user}","branches_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/branches{/branch}","tags_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/tags","blobs_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/git/refs{/sha}","trees_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/git/trees{/sha}","statuses_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/statuses/{sha}","languages_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/languages","stargazers_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/stargazers","contributors_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/contributors","subscribers_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/subscribers","subscription_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/subscription","commits_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/commits{/sha}","git_commits_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/git/commits{/sha}","comments_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/comments{/number}","issue_comment_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/issues/comments{/number}","contents_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/contents/{+path}","compare_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/compare/{base}...{head}","merges_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/merges","archive_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/downloads","issues_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/issues{/number}","pulls_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/pulls{/number}","milestones_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/milestones{/number}","notifications_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/labels{/name}","releases_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/releases{/id}","deployments_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/deployments","created_at":"2012-01-30T01:35:01Z","updated_at":"2016-04-03T14:29:52Z","pushed_at":"2016-04-05T01:06:11Z","git_url":"git://github.com/MinecraftForge/MinecraftForge.git","ssh_url":"git@github.com:MinecraftForge/MinecraftForge.git","clone_url":"https://github.com/MinecraftForge/MinecraftForge.git","svn_url":"https://github.com/MinecraftForge/MinecraftForge","homepage":"","size":144156,"stargazers_count":1304,"watchers_count":1304,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":730,"mirror_url":null,"open_issues_count":259,"forks":730,"open_issues":259,"watchers":1304,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/MinecraftForge/MinecraftForge/pulls/2604"},"html":{"href":"https://github.com/MinecraftForge/MinecraftForge/pull/2604"},"issue":{"href":"https://api.github.com/repos/MinecraftForge/MinecraftForge/issues/2604"},"comments":{"href":"https://api.github.com/repos/MinecraftForge/MinecraftForge/issues/2604/comments"},"review_comments":{"href":"https://api.github.com/repos/MinecraftForge/MinecraftForge/pulls/2604/comments"},"review_comment":{"href":"https://api.github.com/repos/MinecraftForge/MinecraftForge/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/MinecraftForge/MinecraftForge/pulls/2604/commits"},"statuses":{"href":"https://api.github.com/repos/MinecraftForge/MinecraftForge/statuses/e8ea52558bbb9926d0a8694f132b5a572a360d1c"}},"merged":true,"mergeable":null,"mergeable_state":"unknown","merged_by":{"login":"LexManos","id":702211,"avatar_url":"https://avatars.githubusercontent.com/u/702211?v=3","gravatar_id":"","url":"https://api.github.com/users/LexManos","html_url":"https://github.com/LexManos","followers_url":"https://api.github.com/users/LexManos/followers","following_url":"https://api.github.com/users/LexManos/following{/other_user}","gists_url":"https://api.github.com/users/LexManos/gists{/gist_id}","starred_url":"https://api.github.com/users/LexManos/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/LexManos/subscriptions","organizations_url":"https://api.github.com/users/LexManos/orgs","repos_url":"https://api.github.com/users/LexManos/repos","events_url":"https://api.github.com/users/LexManos/events{/privacy}","received_events_url":"https://api.github.com/users/LexManos/received_events","type":"User","site_admin":false},"comments":34,"review_comments":17,"commits":1,"additions":677,"deletions":286,"changed_files":14}}