{"action":"created","comment":{"url":"https://api.github.com/repos/runelite/runelite/pulls/comments/209087678","pull_request_review_id":145035681,"id":209087678,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwOTA4NzY3OA==","diff_hunk":"@@ -0,0 +1,120 @@\n+/*\r\n+ * Copyright (c) 2018, Psikoi <https://github.com/Psikoi>\r\n+ * All rights reserved.\r\n+ *\r\n+ * Redistribution and use in source and binary forms, with or without\r\n+ * modification, are permitted provided that the following conditions are met:\r\n+ *\r\n+ * 1. Redistributions of source code must retain the above copyright notice, this\r\n+ *    list of conditions and the following disclaimer.\r\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r\n+ *    this list of conditions and the following disclaimer in the documentation\r\n+ *    and/or other materials provided with the distribution.\r\n+ *\r\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\r\n+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\r\n+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\r\n+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\r\n+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\r\n+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\r\n+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\r\n+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r\n+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\r\n+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r\n+ */\r\n+package net.runelite.client.plugins.worldhopper;\r\n+\r\n+import java.awt.BorderLayout;\r\n+import java.awt.Color;\r\n+import java.awt.event.MouseAdapter;\r\n+import java.awt.event.MouseEvent;\r\n+import java.awt.event.MouseListener;\r\n+import javax.swing.BorderFactory;\r\n+import javax.swing.ImageIcon;\r\n+import javax.swing.JLabel;\r\n+import javax.swing.JPanel;\r\n+import javax.swing.border.CompoundBorder;\r\n+import javax.swing.border.EmptyBorder;\r\n+import net.runelite.client.ui.ColorScheme;\r\n+import net.runelite.client.ui.FontManager;\r\n+import net.runelite.client.util.ImageUtil;\r\n+\r\n+class WorldTableHeader extends JPanel\r\n+{\r\n+\tprivate static final ImageIcon ARROW_DOWN;\r\n+\tprivate static final ImageIcon ARROW_UP;\r\n+\tprivate static final ImageIcon ARROW_UP_FADED;\r\n+\r\n+\tprivate final JLabel textLabel = new JLabel();\r\n+\tprivate final JLabel arrowLabel = new JLabel();\r\n+\r\n+\t// Determines if this header column is being used to order the list\r\n+\tprivate boolean ordering = false;\r\n+\r\n+\tstatic\r\n+\t{\r\n+\t\tARROW_DOWN = new ImageIcon(ImageUtil.getResourceStreamFromClass(WorldHopperPlugin.class, \"arrow_down.png\"));\r\n+\t\tARROW_UP = new ImageIcon(ImageUtil.getResourceStreamFromClass(WorldHopperPlugin.class, \"arrow_up.png\"));\r","path":"runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldTableHeader.java","position":57,"original_position":57,"commit_id":"7ad2b1c81437cc33cfa5140ce343d784c0b003b4","original_commit_id":"7ad2b1c81437cc33cfa5140ce343d784c0b003b4","user":{"login":"deathbeam","id":5115805,"node_id":"MDQ6VXNlcjUxMTU4MDU=","avatar_url":"https://avatars3.githubusercontent.com/u/5115805?v=4","gravatar_id":"","url":"https://api.github.com/users/deathbeam","html_url":"https://github.com/deathbeam","followers_url":"https://api.github.com/users/deathbeam/followers","following_url":"https://api.github.com/users/deathbeam/following{/other_user}","gists_url":"https://api.github.com/users/deathbeam/gists{/gist_id}","starred_url":"https://api.github.com/users/deathbeam/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/deathbeam/subscriptions","organizations_url":"https://api.github.com/users/deathbeam/orgs","repos_url":"https://api.github.com/users/deathbeam/repos","events_url":"https://api.github.com/users/deathbeam/events{/privacy}","received_events_url":"https://api.github.com/users/deathbeam/received_events","type":"User","site_admin":false},"body":"Remove these images, and use ImageUtil to create them from ARROW_DOWN","created_at":"2018-08-09T21:39:53Z","updated_at":"2018-08-09T21:43:40Z","html_url":"https://github.com/runelite/runelite/pull/4761#discussion_r209087678","pull_request_url":"https://api.github.com/repos/runelite/runelite/pulls/4761","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/runelite/runelite/pulls/comments/209087678"},"html":{"href":"https://github.com/runelite/runelite/pull/4761#discussion_r209087678"},"pull_request":{"href":"https://api.github.com/repos/runelite/runelite/pulls/4761"}}},"pull_request":{"url":"https://api.github.com/repos/runelite/runelite/pulls/4761","id":206704099,"node_id":"MDExOlB1bGxSZXF1ZXN0MjA2NzA0MDk5","html_url":"https://github.com/runelite/runelite/pull/4761","diff_url":"https://github.com/runelite/runelite/pull/4761.diff","patch_url":"https://github.com/runelite/runelite/pull/4761.patch","issue_url":"https://api.github.com/repos/runelite/runelite/issues/4761","number":4761,"state":"open","locked":false,"title":"Add world hopper plugin","user":{"login":"devLotto","id":8920674,"node_id":"MDQ6VXNlcjg5MjA2NzQ=","avatar_url":"https://avatars0.githubusercontent.com/u/8920674?v=4","gravatar_id":"","url":"https://api.github.com/users/devLotto","html_url":"https://github.com/devLotto","followers_url":"https://api.github.com/users/devLotto/followers","following_url":"https://api.github.com/users/devLotto/following{/other_user}","gists_url":"https://api.github.com/users/devLotto/gists{/gist_id}","starred_url":"https://api.github.com/users/devLotto/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/devLotto/subscriptions","organizations_url":"https://api.github.com/users/devLotto/orgs","repos_url":"https://api.github.com/users/devLotto/repos","events_url":"https://api.github.com/users/devLotto/events{/privacy}","received_events_url":"https://api.github.com/users/devLotto/received_events","type":"User","site_admin":false},"body":"When this plugin is enabled, pressing ctrl + shift + left/right \"quick-hops\" you to the previous/next world of the same type as the one you're currently in. \r\n\r\nThis means that you hop to a members world if you're in a members world, you hop to a F2P world if you're in a F2P world, you hop to a Deadman world if you're in a Deadman world, and so on.. \r\n\r\nYou never hop into a PVP or high risk world, and a special case exists for PVP and high risk worlds, where hopping from one always hops you to a non-PVP world. It also only tries to quick-hop to total level restricted worlds if your total level is adequate.\r\n\r\nThis pull request only introduces the quickhopping ability, and not a side panel where you can list all worlds. That functionality will most likely be added in the future.\r\n\r\nQuickhopping: \r\nhttps://gfycat.com/LegitimateVacantGonolek\r\nUsing Hop-to: \r\nhttps://gfycat.com/MelodicUnsungArgentinehornedfrog\r\nQuickhopping in Tournament worlds (same type): \r\nhttps://gfycat.com/LimpingEasygoingLeopardseal\r\n\r\nClan Hop-to: \r\n\r\n![](https://i.imgur.com/yfLIJdZ.png)\r\n\r\nFriend Hop-to (only appears if the target is online): \r\n\r\n![](https://i.imgur.com/vYlmzIt.png)\r\n\r\nChat Hop-to (only appears if you're a friend or in the same clan as the target):\r\n\r\n![](https://i.imgur.com/uSNtrcf.png)","created_at":"2018-08-07T13:47:32Z","updated_at":"2018-08-09T21:43:40Z","closed_at":null,"merged_at":null,"merge_commit_sha":"f8f1079b6261e0ec2bc71d1b9fd036c7f5302d75","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":771846940,"node_id":"MDU6TGFiZWw3NzE4NDY5NDA=","url":"https://api.github.com/repos/runelite/runelite/labels/feature-request","name":"feature-request","color":"fbca04","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/runelite/runelite/pulls/4761/commits","review_comments_url":"https://api.github.com/repos/runelite/runelite/pulls/4761/comments","review_comment_url":"https://api.github.com/repos/runelite/runelite/pulls/comments{/number}","comments_url":"https://api.github.com/repos/runelite/runelite/issues/4761/comments","statuses_url":"https://api.github.com/repos/runelite/runelite/statuses/7ad2b1c81437cc33cfa5140ce343d784c0b003b4","head":{"label":"devLotto:worldhopper","ref":"worldhopper","sha":"7ad2b1c81437cc33cfa5140ce343d784c0b003b4","user":{"login":"devLotto","id":8920674,"node_id":"MDQ6VXNlcjg5MjA2NzQ=","avatar_url":"https://avatars0.githubusercontent.com/u/8920674?v=4","gravatar_id":"","url":"https://api.github.com/users/devLotto","html_url":"https://github.com/devLotto","followers_url":"https://api.github.com/users/devLotto/followers","following_url":"https://api.github.com/users/devLotto/following{/other_user}","gists_url":"https://api.github.com/users/devLotto/gists{/gist_id}","starred_url":"https://api.github.com/users/devLotto/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/devLotto/subscriptions","organizations_url":"https://api.github.com/users/devLotto/orgs","repos_url":"https://api.github.com/users/devLotto/repos","events_url":"https://api.github.com/users/devLotto/events{/privacy}","received_events_url":"https://api.github.com/users/devLotto/received_events","type":"User","site_admin":false},"repo":{"id":133694645,"node_id":"MDEwOlJlcG9zaXRvcnkxMzM2OTQ2NDU=","name":"runelite","full_name":"devLotto/runelite","owner":{"login":"devLotto","id":8920674,"node_id":"MDQ6VXNlcjg5MjA2NzQ=","avatar_url":"https://avatars0.githubusercontent.com/u/8920674?v=4","gravatar_id":"","url":"https://api.github.com/users/devLotto","html_url":"https://github.com/devLotto","followers_url":"https://api.github.com/users/devLotto/followers","following_url":"https://api.github.com/users/devLotto/following{/other_user}","gists_url":"https://api.github.com/users/devLotto/gists{/gist_id}","starred_url":"https://api.github.com/users/devLotto/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/devLotto/subscriptions","organizations_url":"https://api.github.com/users/devLotto/orgs","repos_url":"https://api.github.com/users/devLotto/repos","events_url":"https://api.github.com/users/devLotto/events{/privacy}","received_events_url":"https://api.github.com/users/devLotto/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/devLotto/runelite","description":"Open source Old School RuneScape client","fork":true,"url":"https://api.github.com/repos/devLotto/runelite","forks_url":"https://api.github.com/repos/devLotto/runelite/forks","keys_url":"https://api.github.com/repos/devLotto/runelite/keys{/key_id}","collaborators_url":"https://api.github.com/repos/devLotto/runelite/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/devLotto/runelite/teams","hooks_url":"https://api.github.com/repos/devLotto/runelite/hooks","issue_events_url":"https://api.github.com/repos/devLotto/runelite/issues/events{/number}","events_url":"https://api.github.com/repos/devLotto/runelite/events","assignees_url":"https://api.github.com/repos/devLotto/runelite/assignees{/user}","branches_url":"https://api.github.com/repos/devLotto/runelite/branches{/branch}","tags_url":"https://api.github.com/repos/devLotto/runelite/tags","blobs_url":"https://api.github.com/repos/devLotto/runelite/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/devLotto/runelite/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/devLotto/runelite/git/refs{/sha}","trees_url":"https://api.github.com/repos/devLotto/runelite/git/trees{/sha}","statuses_url":"https://api.github.com/repos/devLotto/runelite/statuses/{sha}","languages_url":"https://api.github.com/repos/devLotto/runelite/languages","stargazers_url":"https://api.github.com/repos/devLotto/runelite/stargazers","contributors_url":"https://api.github.com/repos/devLotto/runelite/contributors","subscribers_url":"https://api.github.com/repos/devLotto/runelite/subscribers","subscription_url":"https://api.github.com/repos/devLotto/runelite/subscription","commits_url":"https://api.github.com/repos/devLotto/runelite/commits{/sha}","git_commits_url":"https://api.github.com/repos/devLotto/runelite/git/commits{/sha}","comments_url":"https://api.github.com/repos/devLotto/runelite/comments{/number}","issue_comment_url":"https://api.github.com/repos/devLotto/runelite/issues/comments{/number}","contents_url":"https://api.github.com/repos/devLotto/runelite/contents/{+path}","compare_url":"https://api.github.com/repos/devLotto/runelite/compare/{base}...{head}","merges_url":"https://api.github.com/repos/devLotto/runelite/merges","archive_url":"https://api.github.com/repos/devLotto/runelite/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/devLotto/runelite/downloads","issues_url":"https://api.github.com/repos/devLotto/runelite/issues{/number}","pulls_url":"https://api.github.com/repos/devLotto/runelite/pulls{/number}","milestones_url":"https://api.github.com/repos/devLotto/runelite/milestones{/number}","notifications_url":"https://api.github.com/repos/devLotto/runelite/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/devLotto/runelite/labels{/name}","releases_url":"https://api.github.com/repos/devLotto/runelite/releases{/id}","deployments_url":"https://api.github.com/repos/devLotto/runelite/deployments","created_at":"2018-05-16T16:28:21Z","updated_at":"2018-08-02T11:32:32Z","pushed_at":"2018-08-09T21:35:45Z","git_url":"git://github.com/devLotto/runelite.git","ssh_url":"git@github.com:devLotto/runelite.git","clone_url":"https://github.com/devLotto/runelite.git","svn_url":"https://github.com/devLotto/runelite","homepage":"https://runelite.net","size":47850,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"bsd-2-clause","name":"BSD 2-Clause \"Simplified\" License","spdx_id":"BSD-2-Clause","url":"https://api.github.com/licenses/bsd-2-clause","node_id":"MDc6TGljZW5zZTQ="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"runelite:master","ref":"master","sha":"1bd82ad26007cc884c2db52d2f01d147d0611344","user":{"login":"runelite","id":13814776,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzODE0Nzc2","avatar_url":"https://avatars1.githubusercontent.com/u/13814776?v=4","gravatar_id":"","url":"https://api.github.com/users/runelite","html_url":"https://github.com/runelite","followers_url":"https://api.github.com/users/runelite/followers","following_url":"https://api.github.com/users/runelite/following{/other_user}","gists_url":"https://api.github.com/users/runelite/gists{/gist_id}","starred_url":"https://api.github.com/users/runelite/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/runelite/subscriptions","organizations_url":"https://api.github.com/users/runelite/orgs","repos_url":"https://api.github.com/users/runelite/repos","events_url":"https://api.github.com/users/runelite/events{/privacy}","received_events_url":"https://api.github.com/users/runelite/received_events","type":"Organization","site_admin":false},"repo":{"id":57461213,"node_id":"MDEwOlJlcG9zaXRvcnk1NzQ2MTIxMw==","name":"runelite","full_name":"runelite/runelite","owner":{"login":"runelite","id":13814776,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzODE0Nzc2","avatar_url":"https://avatars1.githubusercontent.com/u/13814776?v=4","gravatar_id":"","url":"https://api.github.com/users/runelite","html_url":"https://github.com/runelite","followers_url":"https://api.github.com/users/runelite/followers","following_url":"https://api.github.com/users/runelite/following{/other_user}","gists_url":"https://api.github.com/users/runelite/gists{/gist_id}","starred_url":"https://api.github.com/users/runelite/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/runelite/subscriptions","organizations_url":"https://api.github.com/users/runelite/orgs","repos_url":"https://api.github.com/users/runelite/repos","events_url":"https://api.github.com/users/runelite/events{/privacy}","received_events_url":"https://api.github.com/users/runelite/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/runelite/runelite","description":"Open source Old School RuneScape client","fork":false,"url":"https://api.github.com/repos/runelite/runelite","forks_url":"https://api.github.com/repos/runelite/runelite/forks","keys_url":"https://api.github.com/repos/runelite/runelite/keys{/key_id}","collaborators_url":"https://api.github.com/repos/runelite/runelite/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/runelite/runelite/teams","hooks_url":"https://api.github.com/repos/runelite/runelite/hooks","issue_events_url":"https://api.github.com/repos/runelite/runelite/issues/events{/number}","events_url":"https://api.github.com/repos/runelite/runelite/events","assignees_url":"https://api.github.com/repos/runelite/runelite/assignees{/user}","branches_url":"https://api.github.com/repos/runelite/runelite/branches{/branch}","tags_url":"https://api.github.com/repos/runelite/runelite/tags","blobs_url":"https://api.github.com/repos/runelite/runelite/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/runelite/runelite/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/runelite/runelite/git/refs{/sha}","trees_url":"https://api.github.com/repos/runelite/runelite/git/trees{/sha}","statuses_url":"https://api.github.com/repos/runelite/runelite/statuses/{sha}","languages_url":"https://api.github.com/repos/runelite/runelite/languages","stargazers_url":"https://api.github.com/repos/runelite/runelite/stargazers","contributors_url":"https://api.github.com/repos/runelite/runelite/contributors","subscribers_url":"https://api.github.com/repos/runelite/runelite/subscribers","subscription_url":"https://api.github.com/repos/runelite/runelite/subscription","commits_url":"https://api.github.com/repos/runelite/runelite/commits{/sha}","git_commits_url":"https://api.github.com/repos/runelite/runelite/git/commits{/sha}","comments_url":"https://api.github.com/repos/runelite/runelite/comments{/number}","issue_comment_url":"https://api.github.com/repos/runelite/runelite/issues/comments{/number}","contents_url":"https://api.github.com/repos/runelite/runelite/contents/{+path}","compare_url":"https://api.github.com/repos/runelite/runelite/compare/{base}...{head}","merges_url":"https://api.github.com/repos/runelite/runelite/merges","archive_url":"https://api.github.com/repos/runelite/runelite/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/runelite/runelite/downloads","issues_url":"https://api.github.com/repos/runelite/runelite/issues{/number}","pulls_url":"https://api.github.com/repos/runelite/runelite/pulls{/number}","milestones_url":"https://api.github.com/repos/runelite/runelite/milestones{/number}","notifications_url":"https://api.github.com/repos/runelite/runelite/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/runelite/runelite/labels{/name}","releases_url":"https://api.github.com/repos/runelite/runelite/releases{/id}","deployments_url":"https://api.github.com/repos/runelite/runelite/deployments","created_at":"2016-04-30T20:48:02Z","updated_at":"2018-08-09T18:27:40Z","pushed_at":"2018-08-09T21:35:47Z","git_url":"git://github.com/runelite/runelite.git","ssh_url":"git@github.com:runelite/runelite.git","clone_url":"https://github.com/runelite/runelite.git","svn_url":"https://github.com/runelite/runelite","homepage":"https://runelite.net","size":18356,"stargazers_count":1153,"watchers_count":1153,"language":"Java","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1515,"mirror_url":null,"archived":false,"open_issues_count":1210,"license":{"key":"bsd-2-clause","name":"BSD 2-Clause \"Simplified\" License","spdx_id":"BSD-2-Clause","url":"https://api.github.com/licenses/bsd-2-clause","node_id":"MDc6TGljZW5zZTQ="},"forks":1515,"open_issues":1210,"watchers":1153,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/runelite/runelite/pulls/4761"},"html":{"href":"https://github.com/runelite/runelite/pull/4761"},"issue":{"href":"https://api.github.com/repos/runelite/runelite/issues/4761"},"comments":{"href":"https://api.github.com/repos/runelite/runelite/issues/4761/comments"},"review_comments":{"href":"https://api.github.com/repos/runelite/runelite/pulls/4761/comments"},"review_comment":{"href":"https://api.github.com/repos/runelite/runelite/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/runelite/runelite/pulls/4761/commits"},"statuses":{"href":"https://api.github.com/repos/runelite/runelite/statuses/7ad2b1c81437cc33cfa5140ce343d784c0b003b4"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"deathbeam"}}