{"action":"created","comment":{"url":"https://api.github.com/repos/SpongePowered/SpongeAPI/pulls/comments/69677754","id":69677754,"diff_hunk":"@@ -66,4 +69,24 @@\n      */\n     Optional<Question> getCurrentQuestionFor(Speaker speaker);\n \n+    /**\n+     * Stops the dialogue, removing all {@link Speaker}s.\n+     *\n+     * @param message The message to send as notification to the speakers\n+     * @param suppress Whether or not to suppress the next chat message\n+     * @throws IllegalStateException If the dialogue is already concluded\n+     */\n+    void conclude(Text message, boolean suppress);","path":"src/main/java/org/spongepowered/api/text/dialogue/Dialogue.java","position":79,"original_position":28,"commit_id":"33df92408f9d0d41efb05c80de175cc49bcd5e6a","original_commit_id":"33df92408f9d0d41efb05c80de175cc49bcd5e6a","user":{"login":"ryantheleach","id":141554,"avatar_url":"https://avatars.githubusercontent.com/u/141554?v=3","gravatar_id":"","url":"https://api.github.com/users/ryantheleach","html_url":"https://github.com/ryantheleach","followers_url":"https://api.github.com/users/ryantheleach/followers","following_url":"https://api.github.com/users/ryantheleach/following{/other_user}","gists_url":"https://api.github.com/users/ryantheleach/gists{/gist_id}","starred_url":"https://api.github.com/users/ryantheleach/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ryantheleach/subscriptions","organizations_url":"https://api.github.com/users/ryantheleach/orgs","repos_url":"https://api.github.com/users/ryantheleach/repos","events_url":"https://api.github.com/users/ryantheleach/events{/privacy}","received_events_url":"https://api.github.com/users/ryantheleach/received_events","type":"User","site_admin":false},"body":"Shouldn't conclude restore whatever suppression was in place before the first dialogue started?","created_at":"2016-07-06T05:41:18Z","updated_at":"2016-07-06T05:41:18Z","html_url":"https://github.com/SpongePowered/SpongeAPI/pull/1295#discussion_r69677754","pull_request_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/pulls/1295","_links":{"self":{"href":"https://api.github.com/repos/SpongePowered/SpongeAPI/pulls/comments/69677754"},"html":{"href":"https://github.com/SpongePowered/SpongeAPI/pull/1295#discussion_r69677754"},"pull_request":{"href":"https://api.github.com/repos/SpongePowered/SpongeAPI/pulls/1295"}}},"pull_request":{"url":"https://api.github.com/repos/SpongePowered/SpongeAPI/pulls/1295","id":76133734,"html_url":"https://github.com/SpongePowered/SpongeAPI/pull/1295","diff_url":"https://github.com/SpongePowered/SpongeAPI/pull/1295.diff","patch_url":"https://github.com/SpongePowered/SpongeAPI/pull/1295.patch","issue_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/issues/1295","number":1295,"state":"open","locked":false,"title":"[WIP] Dialogue API","user":{"login":"pie-flavor","id":17803831,"avatar_url":"https://avatars.githubusercontent.com/u/17803831?v=3","gravatar_id":"","url":"https://api.github.com/users/pie-flavor","html_url":"https://github.com/pie-flavor","followers_url":"https://api.github.com/users/pie-flavor/followers","following_url":"https://api.github.com/users/pie-flavor/following{/other_user}","gists_url":"https://api.github.com/users/pie-flavor/gists{/gist_id}","starred_url":"https://api.github.com/users/pie-flavor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pie-flavor/subscriptions","organizations_url":"https://api.github.com/users/pie-flavor/orgs","repos_url":"https://api.github.com/users/pie-flavor/repos","events_url":"https://api.github.com/users/pie-flavor/events{/privacy}","received_events_url":"https://api.github.com/users/pie-flavor/received_events","type":"User","site_admin":false},"body":"Nobody was doing this, and it seemed fun. So here is the Sponge Dialogue API, which is Sponge's equivalent of Bukkit's Conversations API. Fixes #432.\r\n\r\nFor those who don't know, the purpose of this sort of API is to allow plugins to initialize a back-and-forth communication in the chat. This can be used as a replacement for complicated commands, or for navigating menus.\r\n\r\nA `DialogueArchetype` object is constructed, which defines a few rules such as whether user input is swallowed as opposed to put in chat like normal, as well as an initial `Question` to use. It also contains a `DialogueChatHandler` and an arbitrary number of `DialogueConclusionHandler`s.\r\n\r\nA `Speaker` is somethiing that can take part in a dialogue. It has a few basic methods regarding current dialogues.\r\n\r\nWhere a `DialogueArchetype` represents the structure, a `Dialogue` represents an actual dialogue happening, and can retrieve things such as the list of `Speaker`s and what `Question` they're on.\r\n\r\nA `Question` is comprised of text shown to the `Speaker`, as well as an `AnswerProcessor` and an arbitrary number of `AdditionalAnswerProcessor`s. It also contains rules similar to those of the `DialogueArchetype`, and if defined, override them.\r\n\r\nAn `AnswerProcessor` is a functional interface for interpreting an `Answer` and returning the next `Question`. `AdditionalAnswerProcessor`s can do the same thing, minus being able to return the next `Question`. The purpose of these is to allow multiple plugins to take part in the same `Dialogue`.\r\n\r\nAn `Answer` represents a response to a `Question`. It is mostly a container class. \r\n\r\nA `DialogueChatHandler` is a class which determines how to handle chat sent to a `Speaker` in the middle of a `Dialogue`. It can perform handling whenever a message is sent, and decide whether or not to allow the message through, as well as being notified when the `Dialogue` has been concluded. However, a `DialogueConclusionHandler` is only for when the `Dialogue` has been concluded.\r\n\r\nEach `Dialogue` also contains a `DataContainer`, which all processors can use. Upon creation of the `Dialogue`, the container is populated from the defaults set by the `DialogueArchetype`, which can also be specified when building it.\r\n\r\nInput is greatly appreciated.","created_at":"2016-07-04T09:13:40Z","updated_at":"2016-07-06T05:41:19Z","closed_at":null,"merged_at":null,"merge_commit_sha":"755fde392e6853641bbe426e0392dce5b97328ff","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/pulls/1295/commits","review_comments_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/pulls/1295/comments","review_comment_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/pulls/comments{/number}","comments_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/issues/1295/comments","statuses_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/statuses/33df92408f9d0d41efb05c80de175cc49bcd5e6a","head":{"label":"pie-flavor:feature/dialogue","ref":"feature/dialogue","sha":"33df92408f9d0d41efb05c80de175cc49bcd5e6a","user":{"login":"pie-flavor","id":17803831,"avatar_url":"https://avatars.githubusercontent.com/u/17803831?v=3","gravatar_id":"","url":"https://api.github.com/users/pie-flavor","html_url":"https://github.com/pie-flavor","followers_url":"https://api.github.com/users/pie-flavor/followers","following_url":"https://api.github.com/users/pie-flavor/following{/other_user}","gists_url":"https://api.github.com/users/pie-flavor/gists{/gist_id}","starred_url":"https://api.github.com/users/pie-flavor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pie-flavor/subscriptions","organizations_url":"https://api.github.com/users/pie-flavor/orgs","repos_url":"https://api.github.com/users/pie-flavor/repos","events_url":"https://api.github.com/users/pie-flavor/events{/privacy}","received_events_url":"https://api.github.com/users/pie-flavor/received_events","type":"User","site_admin":false},"repo":{"id":58691632,"name":"SpongeAPI","full_name":"pie-flavor/SpongeAPI","owner":{"login":"pie-flavor","id":17803831,"avatar_url":"https://avatars.githubusercontent.com/u/17803831?v=3","gravatar_id":"","url":"https://api.github.com/users/pie-flavor","html_url":"https://github.com/pie-flavor","followers_url":"https://api.github.com/users/pie-flavor/followers","following_url":"https://api.github.com/users/pie-flavor/following{/other_user}","gists_url":"https://api.github.com/users/pie-flavor/gists{/gist_id}","starred_url":"https://api.github.com/users/pie-flavor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pie-flavor/subscriptions","organizations_url":"https://api.github.com/users/pie-flavor/orgs","repos_url":"https://api.github.com/users/pie-flavor/repos","events_url":"https://api.github.com/users/pie-flavor/events{/privacy}","received_events_url":"https://api.github.com/users/pie-flavor/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/pie-flavor/SpongeAPI","description":"A Minecraft plugin API","fork":true,"url":"https://api.github.com/repos/pie-flavor/SpongeAPI","forks_url":"https://api.github.com/repos/pie-flavor/SpongeAPI/forks","keys_url":"https://api.github.com/repos/pie-flavor/SpongeAPI/keys{/key_id}","collaborators_url":"https://api.github.com/repos/pie-flavor/SpongeAPI/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/pie-flavor/SpongeAPI/teams","hooks_url":"https://api.github.com/repos/pie-flavor/SpongeAPI/hooks","issue_events_url":"https://api.github.com/repos/pie-flavor/SpongeAPI/issues/events{/number}","events_url":"https://api.github.com/repos/pie-flavor/SpongeAPI/events","assignees_url":"https://api.github.com/repos/pie-flavor/SpongeAPI/assignees{/user}","branches_url":"https://api.github.com/repos/pie-flavor/SpongeAPI/branches{/branch}","tags_url":"https://api.github.com/repos/pie-flavor/SpongeAPI/tags","blobs_url":"https://api.github.com/repos/pie-flavor/SpongeAPI/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/pie-flavor/SpongeAPI/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/pie-flavor/SpongeAPI/git/refs{/sha}","trees_url":"https://api.github.com/repos/pie-flavor/SpongeAPI/git/trees{/sha}","statuses_url":"https://api.github.com/repos/pie-flavor/SpongeAPI/statuses/{sha}","languages_url":"https://api.github.com/repos/pie-flavor/SpongeAPI/languages","stargazers_url":"https://api.github.com/repos/pie-flavor/SpongeAPI/stargazers","contributors_url":"https://api.github.com/repos/pie-flavor/SpongeAPI/contributors","subscribers_url":"https://api.github.com/repos/pie-flavor/SpongeAPI/subscribers","subscription_url":"https://api.github.com/repos/pie-flavor/SpongeAPI/subscription","commits_url":"https://api.github.com/repos/pie-flavor/SpongeAPI/commits{/sha}","git_commits_url":"https://api.github.com/repos/pie-flavor/SpongeAPI/git/commits{/sha}","comments_url":"https://api.github.com/repos/pie-flavor/SpongeAPI/comments{/number}","issue_comment_url":"https://api.github.com/repos/pie-flavor/SpongeAPI/issues/comments{/number}","contents_url":"https://api.github.com/repos/pie-flavor/SpongeAPI/contents/{+path}","compare_url":"https://api.github.com/repos/pie-flavor/SpongeAPI/compare/{base}...{head}","merges_url":"https://api.github.com/repos/pie-flavor/SpongeAPI/merges","archive_url":"https://api.github.com/repos/pie-flavor/SpongeAPI/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/pie-flavor/SpongeAPI/downloads","issues_url":"https://api.github.com/repos/pie-flavor/SpongeAPI/issues{/number}","pulls_url":"https://api.github.com/repos/pie-flavor/SpongeAPI/pulls{/number}","milestones_url":"https://api.github.com/repos/pie-flavor/SpongeAPI/milestones{/number}","notifications_url":"https://api.github.com/repos/pie-flavor/SpongeAPI/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/pie-flavor/SpongeAPI/labels{/name}","releases_url":"https://api.github.com/repos/pie-flavor/SpongeAPI/releases{/id}","deployments_url":"https://api.github.com/repos/pie-flavor/SpongeAPI/deployments","created_at":"2016-05-13T02:11:15Z","updated_at":"2016-05-13T02:11:24Z","pushed_at":"2016-07-06T05:16:28Z","git_url":"git://github.com/pie-flavor/SpongeAPI.git","ssh_url":"git@github.com:pie-flavor/SpongeAPI.git","clone_url":"https://github.com/pie-flavor/SpongeAPI.git","svn_url":"https://github.com/pie-flavor/SpongeAPI","homepage":"http://www.spongepowered.org/","size":9076,"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":"4095716a30786ca63a7e02471bf76c2708a51771","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":23770421,"name":"SpongeAPI","full_name":"SpongePowered/SpongeAPI","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/SpongeAPI","description":"A Minecraft plugin API","fork":false,"url":"https://api.github.com/repos/SpongePowered/SpongeAPI","forks_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/forks","keys_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/keys{/key_id}","collaborators_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/teams","hooks_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/hooks","issue_events_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/issues/events{/number}","events_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/events","assignees_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/assignees{/user}","branches_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/branches{/branch}","tags_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/tags","blobs_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/git/refs{/sha}","trees_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/git/trees{/sha}","statuses_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/statuses/{sha}","languages_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/languages","stargazers_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/stargazers","contributors_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/contributors","subscribers_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/subscribers","subscription_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/subscription","commits_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/commits{/sha}","git_commits_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/git/commits{/sha}","comments_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/comments{/number}","issue_comment_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/issues/comments{/number}","contents_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/contents/{+path}","compare_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/compare/{base}...{head}","merges_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/merges","archive_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/downloads","issues_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/issues{/number}","pulls_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/pulls{/number}","milestones_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/milestones{/number}","notifications_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/labels{/name}","releases_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/releases{/id}","deployments_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/deployments","created_at":"2014-09-07T20:39:25Z","updated_at":"2016-07-05T13:04:22Z","pushed_at":"2016-07-06T05:16:29Z","git_url":"git://github.com/SpongePowered/SpongeAPI.git","ssh_url":"git@github.com:SpongePowered/SpongeAPI.git","clone_url":"https://github.com/SpongePowered/SpongeAPI.git","svn_url":"https://github.com/SpongePowered/SpongeAPI","homepage":"http://www.spongepowered.org/","size":23443,"stargazers_count":856,"watchers_count":856,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":354,"mirror_url":null,"open_issues_count":156,"forks":354,"open_issues":156,"watchers":856,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/SpongePowered/SpongeAPI/pulls/1295"},"html":{"href":"https://github.com/SpongePowered/SpongeAPI/pull/1295"},"issue":{"href":"https://api.github.com/repos/SpongePowered/SpongeAPI/issues/1295"},"comments":{"href":"https://api.github.com/repos/SpongePowered/SpongeAPI/issues/1295/comments"},"review_comments":{"href":"https://api.github.com/repos/SpongePowered/SpongeAPI/pulls/1295/comments"},"review_comment":{"href":"https://api.github.com/repos/SpongePowered/SpongeAPI/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/SpongePowered/SpongeAPI/pulls/1295/commits"},"statuses":{"href":"https://api.github.com/repos/SpongePowered/SpongeAPI/statuses/33df92408f9d0d41efb05c80de175cc49bcd5e6a"}}}}
{"actor":{"display_login":"ryantheleach"}}