From 0d60831878737e17f35c91e49d4246837f7825a3 Mon Sep 17 00:00:00 2001 From: FortyEffs Date: Thu, 28 Jan 2021 18:42:26 -0500 Subject: [PATCH 1/5] Correctly gets new hooks after a reload. --- .../src/main/java/us/talabrek/ultimateskyblock/uSkyBlock.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/uSkyBlock-Core/src/main/java/us/talabrek/ultimateskyblock/uSkyBlock.java b/uSkyBlock-Core/src/main/java/us/talabrek/ultimateskyblock/uSkyBlock.java index 91bb321d1..4abe3c74d 100644 --- a/uSkyBlock-Core/src/main/java/us/talabrek/ultimateskyblock/uSkyBlock.java +++ b/uSkyBlock-Core/src/main/java/us/talabrek/ultimateskyblock/uSkyBlock.java @@ -717,6 +717,9 @@ private void reloadConfigs() { createFolders(); HandlerList.unregisterAll(this); hookManager = new HookManager(this); + uSkyBlock.this.getHookManager().setupMultiverse(); + uSkyBlock.this.getHookManager().setupEconomyHook(); + uSkyBlock.this.getHookManager().setupPermissionsHook(); if (challengeLogic != null) { challengeLogic.shutdown(); } From c49e8410f51e61e197f10c546365eddbe2ff463c Mon Sep 17 00:00:00 2001 From: FortyEffs Date: Thu, 28 Jan 2021 13:31:22 -0500 Subject: [PATCH 2/5] Fixed the cursor location being reset upon menu click. (cherry picked from commit 8da8eaf98be33acf4d250d755c9fd8bd50ef5725) --- .../ultimateskyblock/menu/SkyBlockMenu.java | 33 ------------------- 1 file changed, 33 deletions(-) diff --git a/uSkyBlock-Core/src/main/java/us/talabrek/ultimateskyblock/menu/SkyBlockMenu.java b/uSkyBlock-Core/src/main/java/us/talabrek/ultimateskyblock/menu/SkyBlockMenu.java index 55542c7b0..3d2c0a05a 100644 --- a/uSkyBlock-Core/src/main/java/us/talabrek/ultimateskyblock/menu/SkyBlockMenu.java +++ b/uSkyBlock-Core/src/main/java/us/talabrek/ultimateskyblock/menu/SkyBlockMenu.java @@ -805,14 +805,12 @@ public void onClick(InventoryClickEvent event) { private void onClickRestartMenu(final InventoryClickEvent event, final Player p, ItemMeta meta, int slotIndex, ItemStack currentItem) { event.setCancelled(true); if (slotIndex == 0) { - p.closeInventory(); p.openInventory(createMainMenu(p)); } else if (currentItem != null && meta != null && meta.getDisplayName() != null) { String schemeName = stripFormatting(meta.getDisplayName()); IslandPerk islandPerk = plugin.getPerkLogic().getIslandPerk(schemeName); if (plugin.getPerkLogic().getSchemes(p).contains(schemeName) && p.hasPermission(islandPerk.getPermission())) { if (plugin.getConfirmHandler().millisLeft(p, "/is restart") > 0) { - p.closeInventory(); p.performCommand("island restart " + schemeName); } else { p.performCommand("island restart " + schemeName); @@ -839,18 +837,14 @@ private void updateRestartMenuTimer(final Player p, final Inventory inventory) { private void onClickCreateMenu(InventoryClickEvent event, Player p, ItemMeta meta, int slotIndex, int menuSize) { event.setCancelled(true); if (slotIndex == 0) { - p.closeInventory(); p.performCommand("island create"); } else if (slotIndex == menuSize-2) { - p.closeInventory(); p.performCommand("island spawn"); } else if (slotIndex == menuSize-1) { - p.closeInventory(); p.performCommand("island accept"); } else if (meta != null && meta.getDisplayName() != null) { String schemeName = stripFormatting(meta.getDisplayName()); if (plugin.getPerkLogic().getSchemes(p).contains(schemeName)) { - p.closeInventory(); p.performCommand("island create " + schemeName); } else { p.sendMessage(tr("\u00a7eYou do not have access to that island-schematic!")); @@ -866,53 +860,39 @@ private void onClickMainMenu(InventoryClickEvent event, ItemStack currentItem, P PlayerInfo playerInfo = plugin.getPlayerInfo(p); IslandInfo islandInfo = plugin.getIslandInfo(playerInfo); if (currentItem.getType() == Material.JUNGLE_SAPLING) { - p.closeInventory(); p.performCommand("island biome"); } else if (currentItem.getType() == Material.PLAYER_HEAD) { - p.closeInventory(); p.performCommand("island party"); } else if (currentItem.getType() == Material.RED_BED) { - p.closeInventory(); p.performCommand("island sethome"); p.performCommand("island"); } else if (currentItem.getType() == Material.GRASS) { - p.closeInventory(); p.performCommand("island spawn"); } else if (currentItem.getType() == Material.HOPPER) { - p.closeInventory(); p.performCommand("island setwarp"); p.performCommand("island"); } else if (currentItem.getType() == Material.WRITABLE_BOOK) { - p.closeInventory(); p.performCommand("island log"); } else if (currentItem.getType() == Material.OAK_DOOR) { - p.closeInventory(); p.performCommand("island home"); } else if (currentItem.getType() == Material.EXPERIENCE_BOTTLE) { - p.closeInventory(); p.performCommand("island level"); } else if (currentItem.getType() == Material.DIAMOND_ORE) { - p.closeInventory(); p.performCommand("c"); } else if (currentItem.getType() == Material.END_STONE || currentItem.getType() == Material.END_PORTAL_FRAME) { - p.closeInventory(); p.performCommand("island togglewarp"); p.performCommand("island"); } else if (currentItem.getType() == Material.IRON_BARS && islandInfo.isLocked()) { - p.closeInventory(); p.performCommand("island unlock"); p.performCommand("island"); } else if (currentItem.getType() == Material.IRON_BARS && !islandInfo.isLocked()) { - p.closeInventory(); p.performCommand("island lock"); p.performCommand("island"); } else if (slotIndex == 17) { if (islandInfo.isLeader(p) && plugin.getConfig().getBoolean("island-schemes-enabled", true)) { - p.closeInventory(); p.openInventory(createRestartGUI(p)); } else { if (plugin.getConfirmHandler().millisLeft(p, "/is leave") > 0) { - p.closeInventory(); p.performCommand("island leave"); } else { p.performCommand("island leave"); @@ -921,7 +901,6 @@ private void onClickMainMenu(InventoryClickEvent event, ItemStack currentItem, P } } else { if (!isExtraMenuAction(p, currentItem)) { - p.closeInventory(); p.performCommand("island"); } } @@ -1019,7 +998,6 @@ private void onClickLogMenu(InventoryClickEvent event, Player p, int slotIndex) if (slotIndex < 0 || slotIndex > 35) { return; } - p.closeInventory(); p.performCommand("island"); } @@ -1046,7 +1024,6 @@ private void onClickChallengeMenu(InventoryClickEvent event, ItemStack currentIt && currentItem != null && currentItem.getType() != Material.AIR) { // Pagination - p.closeInventory(); p.openInventory(displayChallengeGUI(p, currentItem.getAmount(), playerName)); return; } @@ -1055,7 +1032,6 @@ private void onClickChallengeMenu(InventoryClickEvent event, ItemStack currentIt return; } if ((slotIndex % 9) > 0) { // 0,9... are the rank-headers... - p.closeInventory(); if (currentItem.getItemMeta() != null) { String challenge = currentItem.getItemMeta().getDisplayName(); String challengeName = stripFormatting(challenge); @@ -1063,7 +1039,6 @@ private void onClickChallengeMenu(InventoryClickEvent event, ItemStack currentIt } p.openInventory(displayChallengeGUI(p, page, playerName)); } else { - p.closeInventory(); if (slotIndex < (CHALLENGE_PAGESIZE/2)) { // Upper half if (page > 1) { p.openInventory(displayChallengeGUI(p, page - 1, playerName)); @@ -1089,7 +1064,6 @@ private void onClickBiomeMenu(InventoryClickEvent event, ItemStack currentItem, return; } if (slotIndex == 0 && currentItem.getType() == Material.OAK_SIGN) { - p.closeInventory(); p.performCommand("island"); return; } @@ -1115,7 +1089,6 @@ private void onClickBiomeMenu(InventoryClickEvent event, ItemStack currentItem, ItemStack menuIcon = biomeMenu.getIcon(); if (currentItem.getType() == menuIcon.getType() && currentItem.getDurability() == menuIcon.getDurability()) { String radius = PlayerUtil.getMetadata(p, "biome.radius", "all"); - p.closeInventory(); p.performCommand("island biome " + biomeMenu.getId() + " " + radius); return; } @@ -1129,7 +1102,6 @@ private void onClickPermissionMenu(InventoryClickEvent event, ItemStack currentI } IslandInfo islandInfo = plugin.getIslandInfo(p); if (!plugin.getIslandInfo(p).isLeader(p)) { - p.closeInventory(); p.openInventory(displayPartyGUI(p)); } String[] playerPerm = inventoryName.split(" "); @@ -1143,17 +1115,14 @@ private void onClickPermissionMenu(InventoryClickEvent event, ItemStack currentI } for (PartyPermissionMenuItem item : permissionMenuItems) { if (currentItem.getType() == item.getIcon().getType()) { - p.closeInventory(); islandInfo.togglePerm(pname, item.getPerm()); p.openInventory(displayPartyPlayerGUI(p, pname)); return; } } if (currentItem.getType() == Material.OAK_SIGN) { - p.closeInventory(); p.openInventory(displayPartyGUI(p)); } else { - p.closeInventory(); p.openInventory(displayPartyPlayerGUI(p, pname)); } } @@ -1164,10 +1133,8 @@ private void onClickPartyMenu(InventoryClickEvent event, ItemStack currentItem, return; } if (meta == null || currentItem.getType() == Material.OAK_SIGN) { - p.closeInventory(); p.performCommand("island"); } else if (skull != null && plugin.getIslandInfo(p).isLeader(p)) { - p.closeInventory(); p.openInventory(displayPartyPlayerGUI(p, skull.getOwner())); } } From 6fbf93f48cc7d186171c733badc0e5ee2d400ac9 Mon Sep 17 00:00:00 2001 From: FortyEffs Date: Fri, 29 Jan 2021 09:17:37 -0500 Subject: [PATCH 3/5] Better calculation for challenge pages --- .../challenge/ChallengeLogic.java | 27 +++++++++++++------ 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/uSkyBlock-Core/src/main/java/us/talabrek/ultimateskyblock/challenge/ChallengeLogic.java b/uSkyBlock-Core/src/main/java/us/talabrek/ultimateskyblock/challenge/ChallengeLogic.java index f450a5b34..aaf6986f8 100644 --- a/uSkyBlock-Core/src/main/java/us/talabrek/ultimateskyblock/challenge/ChallengeLogic.java +++ b/uSkyBlock-Core/src/main/java/us/talabrek/ultimateskyblock/challenge/ChallengeLogic.java @@ -470,24 +470,35 @@ public void populateChallengeRank(Inventory menu, PlayerInfo pi, int page, boole private List getRanksForPage(int page, List ranksOnPage) { int rowsToSkip = (page - 1) * ROWS_OF_RANKS; - for (Iterator it = ranksOnPage.iterator(); it.hasNext(); ) { - Rank rank = it.next(); - int rowsInRank = getRows(rank); - if (rowsToSkip <= 0 || ((rowsToSkip - rowsInRank) < 0)) { + List allRanks = new ArrayList<>(ranksOnPage); + + int i = 1; + for (Iterator it = ranksOnPage.iterator(); it.hasNext(); i++) { + it.next(); + int rowsInRanks = calculateRows(allRanks.subList(0,i)); + if (rowsToSkip <= 0 || ((rowsToSkip - rowsInRanks) < 0)) { return ranksOnPage; } - rowsToSkip -= rowsInRank; it.remove(); } return ranksOnPage; } private int calculateRows(List ranksOnPage) { - int row = 0; + int totalRows = 0; + int previousRowsOnPage = 0; + int currentRows; + for (Rank rank : ranksOnPage) { - row += getRows(rank); + currentRows = getRows(rank); + totalRows += currentRows; + + if(previousRowsOnPage < 5 && (currentRows + previousRowsOnPage) > 5){ + totalRows = totalRows + (5 - previousRowsOnPage); + previousRowsOnPage = currentRows; + } else previousRowsOnPage = previousRowsOnPage + currentRows; } - return row; + return totalRows; } private int getRows(Rank rank) { From 8a706207f7a359d1068bf3b57adba8481e60760e Mon Sep 17 00:00:00 2001 From: FortyEffs Date: Fri, 29 Jan 2021 09:25:20 -0500 Subject: [PATCH 4/5] Revert "Better calculation for challenge pages" This reverts commit 6fbf93f4 --- .../challenge/ChallengeLogic.java | 27 ++++++------------- 1 file changed, 8 insertions(+), 19 deletions(-) diff --git a/uSkyBlock-Core/src/main/java/us/talabrek/ultimateskyblock/challenge/ChallengeLogic.java b/uSkyBlock-Core/src/main/java/us/talabrek/ultimateskyblock/challenge/ChallengeLogic.java index aaf6986f8..f450a5b34 100644 --- a/uSkyBlock-Core/src/main/java/us/talabrek/ultimateskyblock/challenge/ChallengeLogic.java +++ b/uSkyBlock-Core/src/main/java/us/talabrek/ultimateskyblock/challenge/ChallengeLogic.java @@ -470,35 +470,24 @@ public void populateChallengeRank(Inventory menu, PlayerInfo pi, int page, boole private List getRanksForPage(int page, List ranksOnPage) { int rowsToSkip = (page - 1) * ROWS_OF_RANKS; - List allRanks = new ArrayList<>(ranksOnPage); - - int i = 1; - for (Iterator it = ranksOnPage.iterator(); it.hasNext(); i++) { - it.next(); - int rowsInRanks = calculateRows(allRanks.subList(0,i)); - if (rowsToSkip <= 0 || ((rowsToSkip - rowsInRanks) < 0)) { + for (Iterator it = ranksOnPage.iterator(); it.hasNext(); ) { + Rank rank = it.next(); + int rowsInRank = getRows(rank); + if (rowsToSkip <= 0 || ((rowsToSkip - rowsInRank) < 0)) { return ranksOnPage; } + rowsToSkip -= rowsInRank; it.remove(); } return ranksOnPage; } private int calculateRows(List ranksOnPage) { - int totalRows = 0; - int previousRowsOnPage = 0; - int currentRows; - + int row = 0; for (Rank rank : ranksOnPage) { - currentRows = getRows(rank); - totalRows += currentRows; - - if(previousRowsOnPage < 5 && (currentRows + previousRowsOnPage) > 5){ - totalRows = totalRows + (5 - previousRowsOnPage); - previousRowsOnPage = currentRows; - } else previousRowsOnPage = previousRowsOnPage + currentRows; + row += getRows(rank); } - return totalRows; + return row; } private int getRows(Rank rank) { From 8cd115e2b6e0c59d9486362016cc2465441513f3 Mon Sep 17 00:00:00 2001 From: FortyEffs Date: Fri, 29 Jan 2021 09:40:38 -0500 Subject: [PATCH 5/5] Revert "Fixed the cursor location being reset upon menu click." This reverts commit c49e8410 --- .../ultimateskyblock/menu/SkyBlockMenu.java | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/uSkyBlock-Core/src/main/java/us/talabrek/ultimateskyblock/menu/SkyBlockMenu.java b/uSkyBlock-Core/src/main/java/us/talabrek/ultimateskyblock/menu/SkyBlockMenu.java index 3d2c0a05a..55542c7b0 100644 --- a/uSkyBlock-Core/src/main/java/us/talabrek/ultimateskyblock/menu/SkyBlockMenu.java +++ b/uSkyBlock-Core/src/main/java/us/talabrek/ultimateskyblock/menu/SkyBlockMenu.java @@ -805,12 +805,14 @@ public void onClick(InventoryClickEvent event) { private void onClickRestartMenu(final InventoryClickEvent event, final Player p, ItemMeta meta, int slotIndex, ItemStack currentItem) { event.setCancelled(true); if (slotIndex == 0) { + p.closeInventory(); p.openInventory(createMainMenu(p)); } else if (currentItem != null && meta != null && meta.getDisplayName() != null) { String schemeName = stripFormatting(meta.getDisplayName()); IslandPerk islandPerk = plugin.getPerkLogic().getIslandPerk(schemeName); if (plugin.getPerkLogic().getSchemes(p).contains(schemeName) && p.hasPermission(islandPerk.getPermission())) { if (plugin.getConfirmHandler().millisLeft(p, "/is restart") > 0) { + p.closeInventory(); p.performCommand("island restart " + schemeName); } else { p.performCommand("island restart " + schemeName); @@ -837,14 +839,18 @@ private void updateRestartMenuTimer(final Player p, final Inventory inventory) { private void onClickCreateMenu(InventoryClickEvent event, Player p, ItemMeta meta, int slotIndex, int menuSize) { event.setCancelled(true); if (slotIndex == 0) { + p.closeInventory(); p.performCommand("island create"); } else if (slotIndex == menuSize-2) { + p.closeInventory(); p.performCommand("island spawn"); } else if (slotIndex == menuSize-1) { + p.closeInventory(); p.performCommand("island accept"); } else if (meta != null && meta.getDisplayName() != null) { String schemeName = stripFormatting(meta.getDisplayName()); if (plugin.getPerkLogic().getSchemes(p).contains(schemeName)) { + p.closeInventory(); p.performCommand("island create " + schemeName); } else { p.sendMessage(tr("\u00a7eYou do not have access to that island-schematic!")); @@ -860,39 +866,53 @@ private void onClickMainMenu(InventoryClickEvent event, ItemStack currentItem, P PlayerInfo playerInfo = plugin.getPlayerInfo(p); IslandInfo islandInfo = plugin.getIslandInfo(playerInfo); if (currentItem.getType() == Material.JUNGLE_SAPLING) { + p.closeInventory(); p.performCommand("island biome"); } else if (currentItem.getType() == Material.PLAYER_HEAD) { + p.closeInventory(); p.performCommand("island party"); } else if (currentItem.getType() == Material.RED_BED) { + p.closeInventory(); p.performCommand("island sethome"); p.performCommand("island"); } else if (currentItem.getType() == Material.GRASS) { + p.closeInventory(); p.performCommand("island spawn"); } else if (currentItem.getType() == Material.HOPPER) { + p.closeInventory(); p.performCommand("island setwarp"); p.performCommand("island"); } else if (currentItem.getType() == Material.WRITABLE_BOOK) { + p.closeInventory(); p.performCommand("island log"); } else if (currentItem.getType() == Material.OAK_DOOR) { + p.closeInventory(); p.performCommand("island home"); } else if (currentItem.getType() == Material.EXPERIENCE_BOTTLE) { + p.closeInventory(); p.performCommand("island level"); } else if (currentItem.getType() == Material.DIAMOND_ORE) { + p.closeInventory(); p.performCommand("c"); } else if (currentItem.getType() == Material.END_STONE || currentItem.getType() == Material.END_PORTAL_FRAME) { + p.closeInventory(); p.performCommand("island togglewarp"); p.performCommand("island"); } else if (currentItem.getType() == Material.IRON_BARS && islandInfo.isLocked()) { + p.closeInventory(); p.performCommand("island unlock"); p.performCommand("island"); } else if (currentItem.getType() == Material.IRON_BARS && !islandInfo.isLocked()) { + p.closeInventory(); p.performCommand("island lock"); p.performCommand("island"); } else if (slotIndex == 17) { if (islandInfo.isLeader(p) && plugin.getConfig().getBoolean("island-schemes-enabled", true)) { + p.closeInventory(); p.openInventory(createRestartGUI(p)); } else { if (plugin.getConfirmHandler().millisLeft(p, "/is leave") > 0) { + p.closeInventory(); p.performCommand("island leave"); } else { p.performCommand("island leave"); @@ -901,6 +921,7 @@ private void onClickMainMenu(InventoryClickEvent event, ItemStack currentItem, P } } else { if (!isExtraMenuAction(p, currentItem)) { + p.closeInventory(); p.performCommand("island"); } } @@ -998,6 +1019,7 @@ private void onClickLogMenu(InventoryClickEvent event, Player p, int slotIndex) if (slotIndex < 0 || slotIndex > 35) { return; } + p.closeInventory(); p.performCommand("island"); } @@ -1024,6 +1046,7 @@ private void onClickChallengeMenu(InventoryClickEvent event, ItemStack currentIt && currentItem != null && currentItem.getType() != Material.AIR) { // Pagination + p.closeInventory(); p.openInventory(displayChallengeGUI(p, currentItem.getAmount(), playerName)); return; } @@ -1032,6 +1055,7 @@ private void onClickChallengeMenu(InventoryClickEvent event, ItemStack currentIt return; } if ((slotIndex % 9) > 0) { // 0,9... are the rank-headers... + p.closeInventory(); if (currentItem.getItemMeta() != null) { String challenge = currentItem.getItemMeta().getDisplayName(); String challengeName = stripFormatting(challenge); @@ -1039,6 +1063,7 @@ private void onClickChallengeMenu(InventoryClickEvent event, ItemStack currentIt } p.openInventory(displayChallengeGUI(p, page, playerName)); } else { + p.closeInventory(); if (slotIndex < (CHALLENGE_PAGESIZE/2)) { // Upper half if (page > 1) { p.openInventory(displayChallengeGUI(p, page - 1, playerName)); @@ -1064,6 +1089,7 @@ private void onClickBiomeMenu(InventoryClickEvent event, ItemStack currentItem, return; } if (slotIndex == 0 && currentItem.getType() == Material.OAK_SIGN) { + p.closeInventory(); p.performCommand("island"); return; } @@ -1089,6 +1115,7 @@ private void onClickBiomeMenu(InventoryClickEvent event, ItemStack currentItem, ItemStack menuIcon = biomeMenu.getIcon(); if (currentItem.getType() == menuIcon.getType() && currentItem.getDurability() == menuIcon.getDurability()) { String radius = PlayerUtil.getMetadata(p, "biome.radius", "all"); + p.closeInventory(); p.performCommand("island biome " + biomeMenu.getId() + " " + radius); return; } @@ -1102,6 +1129,7 @@ private void onClickPermissionMenu(InventoryClickEvent event, ItemStack currentI } IslandInfo islandInfo = plugin.getIslandInfo(p); if (!plugin.getIslandInfo(p).isLeader(p)) { + p.closeInventory(); p.openInventory(displayPartyGUI(p)); } String[] playerPerm = inventoryName.split(" "); @@ -1115,14 +1143,17 @@ private void onClickPermissionMenu(InventoryClickEvent event, ItemStack currentI } for (PartyPermissionMenuItem item : permissionMenuItems) { if (currentItem.getType() == item.getIcon().getType()) { + p.closeInventory(); islandInfo.togglePerm(pname, item.getPerm()); p.openInventory(displayPartyPlayerGUI(p, pname)); return; } } if (currentItem.getType() == Material.OAK_SIGN) { + p.closeInventory(); p.openInventory(displayPartyGUI(p)); } else { + p.closeInventory(); p.openInventory(displayPartyPlayerGUI(p, pname)); } } @@ -1133,8 +1164,10 @@ private void onClickPartyMenu(InventoryClickEvent event, ItemStack currentItem, return; } if (meta == null || currentItem.getType() == Material.OAK_SIGN) { + p.closeInventory(); p.performCommand("island"); } else if (skull != null && plugin.getIslandInfo(p).isLeader(p)) { + p.closeInventory(); p.openInventory(displayPartyPlayerGUI(p, skull.getOwner())); } }