{"action":"created","comment":{"url":"https://api.github.com/repos/cuberite/cuberite/pulls/comments/63274686","id":63274686,"diff_hunk":"@@ -2965,6 +2965,28 @@ end\n \t\t\t},\n \t\t\tConstants =\n \t\t\t{\n+\t\t\t\tBLOCK_FACE_XM = { Notes = \"Interacting with the X- face of the block\" },\n+\t\t\t\tBLOCK_FACE_XP = { Notes = \"Interacting with the X+ face of the block\" },\n+\t\t\t\tBLOCK_FACE_YM = { Notes = \"Interacting with the Y- face of the block\" },\n+\t\t\t\tBLOCK_FACE_YP = { Notes = \"Interacting with the Y+ face of the block\" },\n+\t\t\t\tBLOCK_FACE_ZM = { Notes = \"Interacting with the Z- face of the block\" },\n+\t\t\t\tBLOCK_FACE_ZP = { Notes = \"Interacting with the Z+ face of the block\" },\n+\t\t\t\tBLOCK_FACE_NONE = { Notes = \"Interacting with no block face - swinging the item in the air\" },\n+\t\t\t\tBLOCK_FACE_EAST = { Notes = \"(<b>DEPRECATED!</b>) Please use BLOCK_FACE_XM instead. Interacting with the eastern face of the block.\" },\n+\t\t\t\tBLOCK_FACE_WEST = { Notes = \"(<b>DEPRECATED!</b>) Please use BLOCK_FACE_XP instead. Interacting with the western face of the block.\" },\n+\t\t\t\tBLOCK_FACE_BOTTOM = { Notes = \"(<b>DEPRECATED!</b>) Please use BLOCK_FACE_YM instead. Interacting with the bottom face of the block.\" },\n+\t\t\t\tBLOCK_FACE_TOP = { Notes = \"(<b>DEPRECATED!</b>) Please use BLOCK_FACE_YP instead. Interacting with the top face of the block.\" },\n+\t\t\t\tBLOCK_FACE_NORTH = { Notes = \"(<b>DEPRECATED!</b>) Please use BLOCK_FACE_ZM instead. Interacting with the northern face of the block.\" },\n+\t\t\t\tBLOCK_FACE_SOUTH = { Notes = \"(<b>DEPRECATED!</b>) Please use BLOCK_FACE_ZP instead. Interacting with the southern face of the block.\" },\n+\t\t\t\tBLOCK_FACE_MAX = { Notes = \"Used for range checking - highest legal value for an {{Globals#BlockFaces|eBlockFace}}\" },\n+\t\t\t\tBLOCK_FACE_MIN = { Notes = \"Used for range checking - lowest legal value for an {{Globals#BlockFaces|eBlockFace}}\" },\n+\t\t\t\tDIG_STATUS_STARTED = { Notes = \"The player has started digging\" },\n+\t\t\t\tDIG_STATUS_CANCELLED = { Notes = \"The player has let go of the mine block key before finishing mining the block\" },\n+\t\t\t\tDIG_STATUS_FINISHED = { Notes = \"The player thinks that it has finished mining a block\" },\n+\t\t\t\tDIG_STATUS_DROP_HELD = { Notes = \"The player has dropped a single item using the Drop Item key (default: Q)\" },\n+\t\t\t\tDIG_STATUS_DROP_STACK = { Notes = \"The player has dropped a full stack of items using the Drop Item key (default: Q) while holding down a specific modifier key (in windows, control)\" },\n+\t\t\t\tDIG_STATUS_SHOOT_EAT = { Notes = \"The player has finished shooting a bow or finished eating\" },\n+        DIG_STATUS_SWAP_ITEM_IN_HAND = { Notes = \"The player has swapped their held item with the item in their offhand slot (1.9)\" },","path":"Server/Plugins/APIDump/APIDesc.lua","position":25,"original_position":25,"commit_id":"f32ae4a30ed8fc450ab3a7ffcba7c99c7c0f2f4a","original_commit_id":"f32ae4a30ed8fc450ab3a7ffcba7c99c7c0f2f4a","user":{"login":"bearbin","id":1297699,"avatar_url":"https://avatars.githubusercontent.com/u/1297699?v=3","gravatar_id":"","url":"https://api.github.com/users/bearbin","html_url":"https://github.com/bearbin","followers_url":"https://api.github.com/users/bearbin/followers","following_url":"https://api.github.com/users/bearbin/following{/other_user}","gists_url":"https://api.github.com/users/bearbin/gists{/gist_id}","starred_url":"https://api.github.com/users/bearbin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bearbin/subscriptions","organizations_url":"https://api.github.com/users/bearbin/orgs","repos_url":"https://api.github.com/users/bearbin/repos","events_url":"https://api.github.com/users/bearbin/events{/privacy}","received_events_url":"https://api.github.com/users/bearbin/received_events","type":"User","site_admin":false},"body":"The indentation is wrong here.","created_at":"2016-05-14T11:14:00Z","updated_at":"2016-05-14T11:14:00Z","html_url":"https://github.com/cuberite/cuberite/pull/3135#discussion_r63274686","pull_request_url":"https://api.github.com/repos/cuberite/cuberite/pulls/3135","_links":{"self":{"href":"https://api.github.com/repos/cuberite/cuberite/pulls/comments/63274686"},"html":{"href":"https://github.com/cuberite/cuberite/pull/3135#discussion_r63274686"},"pull_request":{"href":"https://api.github.com/repos/cuberite/cuberite/pulls/3135"}}},"pull_request":{"url":"https://api.github.com/repos/cuberite/cuberite/pulls/3135","id":65872962,"html_url":"https://github.com/cuberite/cuberite/pull/3135","diff_url":"https://github.com/cuberite/cuberite/pull/3135.diff","patch_url":"https://github.com/cuberite/cuberite/pull/3135.patch","issue_url":"https://api.github.com/repos/cuberite/cuberite/issues/3135","number":3135,"state":"open","locked":false,"title":"1.9 / 1.9.2 / 1.9.3 / 1.9.4 protocol support","user":{"login":"Pokechu22","id":8334194,"avatar_url":"https://avatars.githubusercontent.com/u/8334194?v=3","gravatar_id":"","url":"https://api.github.com/users/Pokechu22","html_url":"https://github.com/Pokechu22","followers_url":"https://api.github.com/users/Pokechu22/followers","following_url":"https://api.github.com/users/Pokechu22/following{/other_user}","gists_url":"https://api.github.com/users/Pokechu22/gists{/gist_id}","starred_url":"https://api.github.com/users/Pokechu22/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Pokechu22/subscriptions","organizations_url":"https://api.github.com/users/Pokechu22/orgs","repos_url":"https://api.github.com/users/Pokechu22/repos","events_url":"https://api.github.com/users/Pokechu22/events{/privacy}","received_events_url":"https://api.github.com/users/Pokechu22/received_events","type":"User","site_admin":false},"body":"This updates to the 1.9 protocol, and also supports 1.9.1 and 1.9.2 (which have separate protocol IDs).  This update includes the new chunk format.  It does _not_ add any new blocks or items.  It also makes a few other changes:\r\n\r\n* Fixed a bug with CheckBasicStyle.lua that caused it to not properly strip line endings, causing issues when used in Cygwin\r\n* Add a `/blk` command for debugging (which was used to figure out what was supposed to be what when trying to diagnose highly broken chunks)\r\n* Split entity mounting/dismounting into separate functions, because 1.9's set passengers packet works with the ridden entity rather than the rider and thus wouldn't be portable with the old method (where the ridden entity would be null when dismounting).\r\n\r\nThere's a few things that I know are not quite finished yet:\r\n\r\n* Spawn eggs don't work since they have different IDs now\r\n* The offhand slot is broken and doesn't work at all.  I haven't tried to write code to deal with it since that's a more complex part of the project that I don't quite understand\r\n* The \"[Effect](http://wiki.vg/Protocol#Effect)\" packet (the one that does particles and sounds) uses new IDs in 1.9; I haven't tried to update the IDs used in the project since they are in a single enum which doesn't have a good way of converting.\r\n* UUIDs were added to a bunch of packets, but since there isn't a full UUID generated, I use a very non-unique UUID generated from the entity's ID.  The client doesn't seem to care, but this could cause issues.\r\n* I suspect that the new slot in the brewing inventory will cause things to not work properly in the brewing stand (if the brewing stand is implemented), but have not tested it.\r\n* Boats don't seem to work\r\n* No palette is created for chunks, meaning that all blocks are sent with the full 13 bits.  This is more of a performance issue than anything, and since the whole chunk section is sent even if the upper parts are empty, may dramatically reduce performance in comparison to what could be possible.\r\n\r\nThe main technique I used was following the [Protocol History](http://wiki.vg/Protocol_History) page, rather than trying to rewrite the entire protocol from scratch.  Of course, I wrote the protocol history page a bit ago by using [Burger](https://github.com/mcdevs/Burger)... which I had updated even before that.  So I used a lot of information that wasn't there a month or so ago.  By using protocol history, I could work version-by-version and test along the way, rather than making all the changes and hoping it works.\r\n\r\nFor the chunk format info, wiki.vg's article is wrong.  I'm going to rewrite sometime later, but the method I used here is based off of what is used by the game itself.\r\n\r\n@LogicParrot edit:\r\nBelow are some testing binaries.\r\n- [Linux x64](https://builds.cuberite.org/job/Cuberite%20Linux%20x64%20ingame-testing-needed/17/artifact/Cuberite.tar.gz)\r\n- [Windows x64](https://builds.cuberite.org/job/Cuberite%20Windows%20x64%20ingame-testing-needed/16/artifact/Install/Cuberite.zip)\r\n- [Raspberry Pi](https://builds.cuberite.org/job/Cuberite%20Linux%20raspi-armhf%20ingame-testing-needed/16/artifact/Cuberite.tar.gz)","created_at":"2016-04-09T06:37:32Z","updated_at":"2016-05-14T11:14:00Z","closed_at":null,"merged_at":null,"merge_commit_sha":"c0d3f3a4a41e3537cf24643f9eb10d5a6bf320c9","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/cuberite/cuberite/pulls/3135/commits","review_comments_url":"https://api.github.com/repos/cuberite/cuberite/pulls/3135/comments","review_comment_url":"https://api.github.com/repos/cuberite/cuberite/pulls/comments{/number}","comments_url":"https://api.github.com/repos/cuberite/cuberite/issues/3135/comments","statuses_url":"https://api.github.com/repos/cuberite/cuberite/statuses/f32ae4a30ed8fc450ab3a7ffcba7c99c7c0f2f4a","head":{"label":"Pokechu22:protocol-1.9","ref":"protocol-1.9","sha":"f32ae4a30ed8fc450ab3a7ffcba7c99c7c0f2f4a","user":{"login":"Pokechu22","id":8334194,"avatar_url":"https://avatars.githubusercontent.com/u/8334194?v=3","gravatar_id":"","url":"https://api.github.com/users/Pokechu22","html_url":"https://github.com/Pokechu22","followers_url":"https://api.github.com/users/Pokechu22/followers","following_url":"https://api.github.com/users/Pokechu22/following{/other_user}","gists_url":"https://api.github.com/users/Pokechu22/gists{/gist_id}","starred_url":"https://api.github.com/users/Pokechu22/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Pokechu22/subscriptions","organizations_url":"https://api.github.com/users/Pokechu22/orgs","repos_url":"https://api.github.com/users/Pokechu22/repos","events_url":"https://api.github.com/users/Pokechu22/events{/privacy}","received_events_url":"https://api.github.com/users/Pokechu22/received_events","type":"User","site_admin":false},"repo":{"id":55580086,"name":"cuberite","full_name":"Pokechu22/cuberite","owner":{"login":"Pokechu22","id":8334194,"avatar_url":"https://avatars.githubusercontent.com/u/8334194?v=3","gravatar_id":"","url":"https://api.github.com/users/Pokechu22","html_url":"https://github.com/Pokechu22","followers_url":"https://api.github.com/users/Pokechu22/followers","following_url":"https://api.github.com/users/Pokechu22/following{/other_user}","gists_url":"https://api.github.com/users/Pokechu22/gists{/gist_id}","starred_url":"https://api.github.com/users/Pokechu22/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Pokechu22/subscriptions","organizations_url":"https://api.github.com/users/Pokechu22/orgs","repos_url":"https://api.github.com/users/Pokechu22/repos","events_url":"https://api.github.com/users/Pokechu22/events{/privacy}","received_events_url":"https://api.github.com/users/Pokechu22/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/Pokechu22/cuberite","description":"A custom Minecraft compatible game server written in C++","fork":true,"url":"https://api.github.com/repos/Pokechu22/cuberite","forks_url":"https://api.github.com/repos/Pokechu22/cuberite/forks","keys_url":"https://api.github.com/repos/Pokechu22/cuberite/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Pokechu22/cuberite/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Pokechu22/cuberite/teams","hooks_url":"https://api.github.com/repos/Pokechu22/cuberite/hooks","issue_events_url":"https://api.github.com/repos/Pokechu22/cuberite/issues/events{/number}","events_url":"https://api.github.com/repos/Pokechu22/cuberite/events","assignees_url":"https://api.github.com/repos/Pokechu22/cuberite/assignees{/user}","branches_url":"https://api.github.com/repos/Pokechu22/cuberite/branches{/branch}","tags_url":"https://api.github.com/repos/Pokechu22/cuberite/tags","blobs_url":"https://api.github.com/repos/Pokechu22/cuberite/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Pokechu22/cuberite/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Pokechu22/cuberite/git/refs{/sha}","trees_url":"https://api.github.com/repos/Pokechu22/cuberite/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Pokechu22/cuberite/statuses/{sha}","languages_url":"https://api.github.com/repos/Pokechu22/cuberite/languages","stargazers_url":"https://api.github.com/repos/Pokechu22/cuberite/stargazers","contributors_url":"https://api.github.com/repos/Pokechu22/cuberite/contributors","subscribers_url":"https://api.github.com/repos/Pokechu22/cuberite/subscribers","subscription_url":"https://api.github.com/repos/Pokechu22/cuberite/subscription","commits_url":"https://api.github.com/repos/Pokechu22/cuberite/commits{/sha}","git_commits_url":"https://api.github.com/repos/Pokechu22/cuberite/git/commits{/sha}","comments_url":"https://api.github.com/repos/Pokechu22/cuberite/comments{/number}","issue_comment_url":"https://api.github.com/repos/Pokechu22/cuberite/issues/comments{/number}","contents_url":"https://api.github.com/repos/Pokechu22/cuberite/contents/{+path}","compare_url":"https://api.github.com/repos/Pokechu22/cuberite/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Pokechu22/cuberite/merges","archive_url":"https://api.github.com/repos/Pokechu22/cuberite/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Pokechu22/cuberite/downloads","issues_url":"https://api.github.com/repos/Pokechu22/cuberite/issues{/number}","pulls_url":"https://api.github.com/repos/Pokechu22/cuberite/pulls{/number}","milestones_url":"https://api.github.com/repos/Pokechu22/cuberite/milestones{/number}","notifications_url":"https://api.github.com/repos/Pokechu22/cuberite/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Pokechu22/cuberite/labels{/name}","releases_url":"https://api.github.com/repos/Pokechu22/cuberite/releases{/id}","deployments_url":"https://api.github.com/repos/Pokechu22/cuberite/deployments","created_at":"2016-04-06T06:06:06Z","updated_at":"2016-04-06T06:06:10Z","pushed_at":"2016-05-11T01:44:43Z","git_url":"git://github.com/Pokechu22/cuberite.git","ssh_url":"git@github.com:Pokechu22/cuberite.git","clone_url":"https://github.com/Pokechu22/cuberite.git","svn_url":"https://github.com/Pokechu22/cuberite","homepage":"http://cuberite.org","size":79092,"stargazers_count":0,"watchers_count":0,"language":"C++","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":"cuberite:master","ref":"master","sha":"b3d4e0fca665502b727f0088a3a20aac1b9ad073","user":{"login":"cuberite","id":8973961,"avatar_url":"https://avatars.githubusercontent.com/u/8973961?v=3","gravatar_id":"","url":"https://api.github.com/users/cuberite","html_url":"https://github.com/cuberite","followers_url":"https://api.github.com/users/cuberite/followers","following_url":"https://api.github.com/users/cuberite/following{/other_user}","gists_url":"https://api.github.com/users/cuberite/gists{/gist_id}","starred_url":"https://api.github.com/users/cuberite/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cuberite/subscriptions","organizations_url":"https://api.github.com/users/cuberite/orgs","repos_url":"https://api.github.com/users/cuberite/repos","events_url":"https://api.github.com/users/cuberite/events{/privacy}","received_events_url":"https://api.github.com/users/cuberite/received_events","type":"Organization","site_admin":false},"repo":{"id":11693709,"name":"cuberite","full_name":"cuberite/cuberite","owner":{"login":"cuberite","id":8973961,"avatar_url":"https://avatars.githubusercontent.com/u/8973961?v=3","gravatar_id":"","url":"https://api.github.com/users/cuberite","html_url":"https://github.com/cuberite","followers_url":"https://api.github.com/users/cuberite/followers","following_url":"https://api.github.com/users/cuberite/following{/other_user}","gists_url":"https://api.github.com/users/cuberite/gists{/gist_id}","starred_url":"https://api.github.com/users/cuberite/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cuberite/subscriptions","organizations_url":"https://api.github.com/users/cuberite/orgs","repos_url":"https://api.github.com/users/cuberite/repos","events_url":"https://api.github.com/users/cuberite/events{/privacy}","received_events_url":"https://api.github.com/users/cuberite/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/cuberite/cuberite","description":"A custom Minecraft compatible game server written in C++","fork":false,"url":"https://api.github.com/repos/cuberite/cuberite","forks_url":"https://api.github.com/repos/cuberite/cuberite/forks","keys_url":"https://api.github.com/repos/cuberite/cuberite/keys{/key_id}","collaborators_url":"https://api.github.com/repos/cuberite/cuberite/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/cuberite/cuberite/teams","hooks_url":"https://api.github.com/repos/cuberite/cuberite/hooks","issue_events_url":"https://api.github.com/repos/cuberite/cuberite/issues/events{/number}","events_url":"https://api.github.com/repos/cuberite/cuberite/events","assignees_url":"https://api.github.com/repos/cuberite/cuberite/assignees{/user}","branches_url":"https://api.github.com/repos/cuberite/cuberite/branches{/branch}","tags_url":"https://api.github.com/repos/cuberite/cuberite/tags","blobs_url":"https://api.github.com/repos/cuberite/cuberite/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/cuberite/cuberite/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/cuberite/cuberite/git/refs{/sha}","trees_url":"https://api.github.com/repos/cuberite/cuberite/git/trees{/sha}","statuses_url":"https://api.github.com/repos/cuberite/cuberite/statuses/{sha}","languages_url":"https://api.github.com/repos/cuberite/cuberite/languages","stargazers_url":"https://api.github.com/repos/cuberite/cuberite/stargazers","contributors_url":"https://api.github.com/repos/cuberite/cuberite/contributors","subscribers_url":"https://api.github.com/repos/cuberite/cuberite/subscribers","subscription_url":"https://api.github.com/repos/cuberite/cuberite/subscription","commits_url":"https://api.github.com/repos/cuberite/cuberite/commits{/sha}","git_commits_url":"https://api.github.com/repos/cuberite/cuberite/git/commits{/sha}","comments_url":"https://api.github.com/repos/cuberite/cuberite/comments{/number}","issue_comment_url":"https://api.github.com/repos/cuberite/cuberite/issues/comments{/number}","contents_url":"https://api.github.com/repos/cuberite/cuberite/contents/{+path}","compare_url":"https://api.github.com/repos/cuberite/cuberite/compare/{base}...{head}","merges_url":"https://api.github.com/repos/cuberite/cuberite/merges","archive_url":"https://api.github.com/repos/cuberite/cuberite/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/cuberite/cuberite/downloads","issues_url":"https://api.github.com/repos/cuberite/cuberite/issues{/number}","pulls_url":"https://api.github.com/repos/cuberite/cuberite/pulls{/number}","milestones_url":"https://api.github.com/repos/cuberite/cuberite/milestones{/number}","notifications_url":"https://api.github.com/repos/cuberite/cuberite/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/cuberite/cuberite/labels{/name}","releases_url":"https://api.github.com/repos/cuberite/cuberite/releases{/id}","deployments_url":"https://api.github.com/repos/cuberite/cuberite/deployments","created_at":"2013-07-26T19:56:59Z","updated_at":"2016-05-12T23:17:07Z","pushed_at":"2016-05-12T15:57:39Z","git_url":"git://github.com/cuberite/cuberite.git","ssh_url":"git@github.com:cuberite/cuberite.git","clone_url":"https://github.com/cuberite/cuberite.git","svn_url":"https://github.com/cuberite/cuberite","homepage":"http://cuberite.org","size":160325,"stargazers_count":1289,"watchers_count":1289,"language":"C++","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":291,"mirror_url":null,"open_issues_count":502,"forks":291,"open_issues":502,"watchers":1289,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/cuberite/cuberite/pulls/3135"},"html":{"href":"https://github.com/cuberite/cuberite/pull/3135"},"issue":{"href":"https://api.github.com/repos/cuberite/cuberite/issues/3135"},"comments":{"href":"https://api.github.com/repos/cuberite/cuberite/issues/3135/comments"},"review_comments":{"href":"https://api.github.com/repos/cuberite/cuberite/pulls/3135/comments"},"review_comment":{"href":"https://api.github.com/repos/cuberite/cuberite/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/cuberite/cuberite/pulls/3135/commits"},"statuses":{"href":"https://api.github.com/repos/cuberite/cuberite/statuses/f32ae4a30ed8fc450ab3a7ffcba7c99c7c0f2f4a"}}}}