{"action":"created","comment":{"url":"https://api.github.com/repos/SpongePowered/SpongeAPI/pulls/comments/27430792","id":27430792,"diff_hunk":"@@ -0,0 +1,56 @@\n+/*\n+ * This file is part of Sponge, licensed under the MIT License (MIT).\n+ *\n+ * Copyright (c) SpongePowered.org <http://www.spongepowered.org>\n+ * Copyright (c) contributors\n+ *\n+ * Permission is hereby granted, free of charge, to any person obtaining a copy\n+ * of this software and associated documentation files (the \"Software\"), to deal\n+ * in the Software without restriction, including without limitation the rights\n+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n+ * copies of the Software, and to permit persons to whom the Software is\n+ * furnished to do so, subject to the following conditions:\n+ *\n+ * The above copyright notice and this permission notice shall be included in\n+ * all copies or substantial portions of the Software.\n+ *\n+ * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n+ * THE SOFTWARE.\n+ */\n+\n+package org.spongepowered.api.world.gen;\n+\n+import org.spongepowered.api.plugin.Plugin;\n+\n+/**\n+ * If a plugin wishes to provide a world generator, the plugin class (the class\n+ * annotated with {@link Plugin}) must implement this interface.\n+ *\n+ */\n+public interface WorldGeneratorProvider {\n+\n+    /**\n+     * Modifies the given world generator. This method is called by the\n+     * implementation when the server is set to use this plugin for world\n+     * generation.\n+     *\n+     * <p>To replace the base chunk generator, replace the generator populator\n+     * using {@link WorldGenerator#setGeneratorPopulator(GeneratorPopulator)}.\n+     * To replace the biome generator, use\n+     * {@link WorldGenerator#setBiomeGenerator(BiomeGenerator)}. To change\n+     * terrain population, modify the populator list returned by\n+     * {@link WorldGenerator#getPopulators()}.</p>\n+     *\n+     * @param worldName The name of the world.\n+     * @param settings A string with settings, can be used by the plugin to\n+     *        modify the world generator.\n+     * @param worldGenerator The world generator, should be modified.\n+     */\n+    void modifyWorldGenerator(String worldName, String settings, WorldGenerator worldGenerator);","path":"src/main/java/org/spongepowered/api/world/gen/WorldGeneratorProvider.java","position":54,"original_position":54,"commit_id":"47239bee451b578b0c6741521ddcee9704077ff5","original_commit_id":"47239bee451b578b0c6741521ddcee9704077ff5","user":{"login":"ZephireNZ","id":1644496,"avatar_url":"https://avatars.githubusercontent.com/u/1644496?v=3","gravatar_id":"","url":"https://api.github.com/users/ZephireNZ","html_url":"https://github.com/ZephireNZ","followers_url":"https://api.github.com/users/ZephireNZ/followers","following_url":"https://api.github.com/users/ZephireNZ/following{/other_user}","gists_url":"https://api.github.com/users/ZephireNZ/gists{/gist_id}","starred_url":"https://api.github.com/users/ZephireNZ/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ZephireNZ/subscriptions","organizations_url":"https://api.github.com/users/ZephireNZ/orgs","repos_url":"https://api.github.com/users/ZephireNZ/repos","events_url":"https://api.github.com/users/ZephireNZ/events{/privacy}","received_events_url":"https://api.github.com/users/ZephireNZ/received_events","type":"User","site_admin":false},"body":"For `settings`, perhaps have an overload that uses a `DataContainer` rather than a `String`? This could mean that a node in a config could easily be passed through to the provider, while still allowing a simple `String`.\r\n\r\nSame for the method under `PluginContainer`.","created_at":"2015-03-30T20:53:15Z","updated_at":"2015-03-30T20:53:15Z","html_url":"https://github.com/SpongePowered/SpongeAPI/pull/522#discussion_r27430792","pull_request_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/pulls/522","_links":{"self":{"href":"https://api.github.com/repos/SpongePowered/SpongeAPI/pulls/comments/27430792"},"html":{"href":"https://github.com/SpongePowered/SpongeAPI/pull/522#discussion_r27430792"},"pull_request":{"href":"https://api.github.com/repos/SpongePowered/SpongeAPI/pulls/522"}}},"pull_request":{"url":"https://api.github.com/repos/SpongePowered/SpongeAPI/pulls/522","id":32231428,"html_url":"https://github.com/SpongePowered/SpongeAPI/pull/522","diff_url":"https://github.com/SpongePowered/SpongeAPI/pull/522.diff","patch_url":"https://github.com/SpongePowered/SpongeAPI/pull/522.patch","issue_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/issues/522","number":522,"state":"open","locked":false,"title":"Add API for custom world generators","user":{"login":"rutgerkok","id":1462188,"avatar_url":"https://avatars.githubusercontent.com/u/1462188?v=3","gravatar_id":"","url":"https://api.github.com/users/rutgerkok","html_url":"https://github.com/rutgerkok","followers_url":"https://api.github.com/users/rutgerkok/followers","following_url":"https://api.github.com/users/rutgerkok/following{/other_user}","gists_url":"https://api.github.com/users/rutgerkok/gists{/gist_id}","starred_url":"https://api.github.com/users/rutgerkok/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rutgerkok/subscriptions","organizations_url":"https://api.github.com/users/rutgerkok/orgs","repos_url":"https://api.github.com/users/rutgerkok/repos","events_url":"https://api.github.com/users/rutgerkok/events{/privacy}","received_events_url":"https://api.github.com/users/rutgerkok/received_events","type":"User","site_admin":false},"body":"This is the API part of a custom world generation API. I was asked by @bloodmc to create a PR, so here it is.\r\n\r\nPlugins can now implement the WorldGeneratorProvider interface. It is intended that, when the world is set to use that plugin as world generator, the plugin will be passed a WorldGenerator instance, which it can modify to provide custom populators, a custom biome generator and of course a custom chunk generator.\r\n\r\nWhen a plugin wants to modify the terrain generation of an *existing* world, it can call `world.getWorldGenerator()`, make the desired changes and then call `world.setWorldGenerator()`. A plugin can also ask the world generator to generate something in a custom buffer. This is for example useful if a plugin wants to create a biome map: it just calls `world.getWorldGenerator().getBiomeGenerator()`.\r\n\r\nI'm also working on an implementation, see https://github.com/SpongePowered/Sponge/pull/214.\r\n\r\n## Overview of all classes and interfaces\r\n\r\n##### PluginManager\r\nPluginManager got a new method to let a plugin modify a world generator. This method is intended to be called by other plugins who want to create worlds with that plugin as the world generator.\r\n\r\nI'm not too happy with the location of this method, I will try to find another location.\r\n\r\n##### World\r\nThe get/setSeed methods have been moved to WorldGenerator, as the world seed is purely a world generator property. The JavaDocs of getWorldGenerator have been clarified.\r\n\r\n##### BiomeType\r\nPreviously, there were two methods: getPopulators and insertPopulator. There was no indication whether the iterable returned by getPopulators was mutable. The existance of a insertPopulator method suggests it isn't, and that insertPopulator should instead be used to add populators (but how do you remove populators then?).\r\n\r\nI have just made the list mutable, so that people can do `BiomeType.JUNGLE.getPopulators().add(...)`, but also `BiomeType.JUNGLE.getPopulators().clear()`. The insertPopulator method is now redundant, and has been removed.\r\n\r\nThe JavaDocs of getPopulators have also been clarified.\r\n\r\n##### BiomeGenerator\r\nLots of parameters have been removed. The size of the area to generate can be retrieved from the buffer, so no need to specify it in the method. If only part of the buffer needs to be generated, then a method can be added to the buffer to view a subset of it, similar to `java.util.List.subList`. I feel that adding the dimensions in extra parameters will only be a source of bugs. It's not hard to imagine a plugin that ignores those parameters and ruins the whole buffer.\r\n\r\nThe world parameter is also removed. Many methods on world can cause new chunks to be generated, which would cause calls to the biome generator, which would cause an infinite loop. All useful information of the world has been provided when the plugin was asked to provide a biome generator, so the plugin can keep track itself of the world seed, name, settings, etc.\r\n\r\n##### GeneratorPopulator\r\nSame story here as for BiomeGenerator.\r\n\r\n##### Populator\r\nThe world parameter has been removed from the method: people can just call `chunk.getWorld()` to get the world.\r\n\r\nA huge wall of text has been added to explain terrain population, hopefully people will now write populators that don't have all kinds of rare bugs.\r\n\r\n##### PopulatorObject\r\nNo changes here, only a bit of extra JavaDocs.\r\n\r\n##### PopulatorObjects\r\nAs per the JavaDocs of Populator, it is not at all easy to write a well-behaving populator. This class helps you to turn a PopulatorObject into a well-behaving Populator. Currently there's only one method, but more can be added in the future.\r\n\r\n##### WorldGenerator\r\nAdded a getter/setter for the GeneratorPopulator. Made the same changes to getPopulators()/insertPopulator() as I did for BiomeType. The addition of the getter/setter for the world seed have been explained above for the World class.\r\n\r\nPR #515 renames the WorldGenerator to ChunkGenerator. I have kept the name the same, as I feel that this class should contain everything related to world generation, not just chunks, but also the biome generator, world seed and whether map features are enabled.\r\n\r\nIn other words: the design of this class is still in flux, if the class indeed gets renamed to ChunkGenerator some methods will need to be moved.\r\n\r\n##### WorldGeneratorProvider\r\nA plugin needs to implement this class when it's able to provide a world generator. The plugin will then get a WorldGenerator instance, ready for the plugin to modify. The world name is passed separetely, the world seed can be retrieved from the \r\n\r\nThe settings are currently a simple String, but this can be changed to something more fancy.","created_at":"2015-03-30T14:28:38Z","updated_at":"2015-03-30T20:53:15Z","closed_at":null,"merged_at":null,"merge_commit_sha":"3a0ee92c8d8268d5e1c387aa32cdb28ed915943a","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/pulls/522/commits","review_comments_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/pulls/522/comments","review_comment_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/pulls/comments{/number}","comments_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/issues/522/comments","statuses_url":"https://api.github.com/repos/SpongePowered/SpongeAPI/statuses/47239bee451b578b0c6741521ddcee9704077ff5","head":{"label":"rutgerkok:feature/custom-world-generators","ref":"feature/custom-world-generators","sha":"47239bee451b578b0c6741521ddcee9704077ff5","user":{"login":"rutgerkok","id":1462188,"avatar_url":"https://avatars.githubusercontent.com/u/1462188?v=3","gravatar_id":"","url":"https://api.github.com/users/rutgerkok","html_url":"https://github.com/rutgerkok","followers_url":"https://api.github.com/users/rutgerkok/followers","following_url":"https://api.github.com/users/rutgerkok/following{/other_user}","gists_url":"https://api.github.com/users/rutgerkok/gists{/gist_id}","starred_url":"https://api.github.com/users/rutgerkok/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rutgerkok/subscriptions","organizations_url":"https://api.github.com/users/rutgerkok/orgs","repos_url":"https://api.github.com/users/rutgerkok/repos","events_url":"https://api.github.com/users/rutgerkok/events{/privacy}","received_events_url":"https://api.github.com/users/rutgerkok/received_events","type":"User","site_admin":false},"repo":{"id":33038059,"name":"SpongeAPI","full_name":"rutgerkok/SpongeAPI","owner":{"login":"rutgerkok","id":1462188,"avatar_url":"https://avatars.githubusercontent.com/u/1462188?v=3","gravatar_id":"","url":"https://api.github.com/users/rutgerkok","html_url":"https://github.com/rutgerkok","followers_url":"https://api.github.com/users/rutgerkok/followers","following_url":"https://api.github.com/users/rutgerkok/following{/other_user}","gists_url":"https://api.github.com/users/rutgerkok/gists{/gist_id}","starred_url":"https://api.github.com/users/rutgerkok/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rutgerkok/subscriptions","organizations_url":"https://api.github.com/users/rutgerkok/orgs","repos_url":"https://api.github.com/users/rutgerkok/repos","events_url":"https://api.github.com/users/rutgerkok/events{/privacy}","received_events_url":"https://api.github.com/users/rutgerkok/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/rutgerkok/SpongeAPI","description":"A Minecraft plugin API","fork":true,"url":"https://api.github.com/repos/rutgerkok/SpongeAPI","forks_url":"https://api.github.com/repos/rutgerkok/SpongeAPI/forks","keys_url":"https://api.github.com/repos/rutgerkok/SpongeAPI/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rutgerkok/SpongeAPI/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rutgerkok/SpongeAPI/teams","hooks_url":"https://api.github.com/repos/rutgerkok/SpongeAPI/hooks","issue_events_url":"https://api.github.com/repos/rutgerkok/SpongeAPI/issues/events{/number}","events_url":"https://api.github.com/repos/rutgerkok/SpongeAPI/events","assignees_url":"https://api.github.com/repos/rutgerkok/SpongeAPI/assignees{/user}","branches_url":"https://api.github.com/repos/rutgerkok/SpongeAPI/branches{/branch}","tags_url":"https://api.github.com/repos/rutgerkok/SpongeAPI/tags","blobs_url":"https://api.github.com/repos/rutgerkok/SpongeAPI/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rutgerkok/SpongeAPI/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rutgerkok/SpongeAPI/git/refs{/sha}","trees_url":"https://api.github.com/repos/rutgerkok/SpongeAPI/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rutgerkok/SpongeAPI/statuses/{sha}","languages_url":"https://api.github.com/repos/rutgerkok/SpongeAPI/languages","stargazers_url":"https://api.github.com/repos/rutgerkok/SpongeAPI/stargazers","contributors_url":"https://api.github.com/repos/rutgerkok/SpongeAPI/contributors","subscribers_url":"https://api.github.com/repos/rutgerkok/SpongeAPI/subscribers","subscription_url":"https://api.github.com/repos/rutgerkok/SpongeAPI/subscription","commits_url":"https://api.github.com/repos/rutgerkok/SpongeAPI/commits{/sha}","git_commits_url":"https://api.github.com/repos/rutgerkok/SpongeAPI/git/commits{/sha}","comments_url":"https://api.github.com/repos/rutgerkok/SpongeAPI/comments{/number}","issue_comment_url":"https://api.github.com/repos/rutgerkok/SpongeAPI/issues/comments{/number}","contents_url":"https://api.github.com/repos/rutgerkok/SpongeAPI/contents/{+path}","compare_url":"https://api.github.com/repos/rutgerkok/SpongeAPI/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rutgerkok/SpongeAPI/merges","archive_url":"https://api.github.com/repos/rutgerkok/SpongeAPI/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rutgerkok/SpongeAPI/downloads","issues_url":"https://api.github.com/repos/rutgerkok/SpongeAPI/issues{/number}","pulls_url":"https://api.github.com/repos/rutgerkok/SpongeAPI/pulls{/number}","milestones_url":"https://api.github.com/repos/rutgerkok/SpongeAPI/milestones{/number}","notifications_url":"https://api.github.com/repos/rutgerkok/SpongeAPI/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rutgerkok/SpongeAPI/labels{/name}","releases_url":"https://api.github.com/repos/rutgerkok/SpongeAPI/releases{/id}","created_at":"2015-03-28T15:17:48Z","updated_at":"2015-03-28T15:17:50Z","pushed_at":"2015-03-30T13:29:16Z","git_url":"git://github.com/rutgerkok/SpongeAPI.git","ssh_url":"git@github.com:rutgerkok/SpongeAPI.git","clone_url":"https://github.com/rutgerkok/SpongeAPI.git","svn_url":"https://github.com/rutgerkok/SpongeAPI","homepage":"http://www.spongepowered.org/","size":3706,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":true,"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":"9acfa4e0c90143e84e110bb7a98ead80a47f6a2c","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}","created_at":"2014-09-07T20:39:25Z","updated_at":"2015-03-30T00:00:10Z","pushed_at":"2015-03-30T14:28:38Z","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":18558,"stargazers_count":753,"watchers_count":753,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":338,"mirror_url":null,"open_issues_count":49,"forks":338,"open_issues":49,"watchers":753,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/SpongePowered/SpongeAPI/pulls/522"},"html":{"href":"https://github.com/SpongePowered/SpongeAPI/pull/522"},"issue":{"href":"https://api.github.com/repos/SpongePowered/SpongeAPI/issues/522"},"comments":{"href":"https://api.github.com/repos/SpongePowered/SpongeAPI/issues/522/comments"},"review_comments":{"href":"https://api.github.com/repos/SpongePowered/SpongeAPI/pulls/522/comments"},"review_comment":{"href":"https://api.github.com/repos/SpongePowered/SpongeAPI/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/SpongePowered/SpongeAPI/pulls/522/commits"},"statuses":{"href":"https://api.github.com/repos/SpongePowered/SpongeAPI/statuses/47239bee451b578b0c6741521ddcee9704077ff5"}}}}