diff --git a/src/main/java/me/goodandevil/skyblock/levelling/LevellingManager.java b/src/main/java/me/goodandevil/skyblock/levelling/LevellingManager.java index a715c27f..43ddb7e6 100644 --- a/src/main/java/me/goodandevil/skyblock/levelling/LevellingManager.java +++ b/src/main/java/me/goodandevil/skyblock/levelling/LevellingManager.java @@ -145,7 +145,9 @@ public class LevellingManager { Map materials = new HashMap<>(); for (LevellingData data : levellingData.keySet()) { int amount = levellingData.get(data); - materials.put(data.getMaterials().name(), amount); + if (data.getMaterials() != null) { + materials.put(data.getMaterials().name(), amount); + } } if (materials.size() == 0) { diff --git a/src/main/java/me/goodandevil/skyblock/menus/Leaderboard.java b/src/main/java/me/goodandevil/skyblock/menus/Leaderboard.java index 4779d3b7..8b865b74 100644 --- a/src/main/java/me/goodandevil/skyblock/menus/Leaderboard.java +++ b/src/main/java/me/goodandevil/skyblock/menus/Leaderboard.java @@ -166,6 +166,50 @@ public class Leaderboard { } } + int clickedSlot = event.getSlot(); + int leaderboardPosition = -1; + + if (clickedSlot == 13) { + leaderboardPosition = 0; + } else if (clickedSlot == 21) { + leaderboardPosition = 1; + } else if (clickedSlot == 22) { + leaderboardPosition = 2; + } else if (clickedSlot == 23) { + leaderboardPosition = 3; + } else if (clickedSlot == 29) { + leaderboardPosition = 4; + } else if (clickedSlot == 31) { + leaderboardPosition = 5; + } else if (clickedSlot == 33) { + leaderboardPosition = 6; + } else if (clickedSlot == 37) { + leaderboardPosition = 7; + } else if (clickedSlot == 40) { + leaderboardPosition = 8; + } else if (clickedSlot == 43) { + leaderboardPosition = 9; + } + + if (leaderboardPosition != -1) { + List leaderboardIslands = skyblock + .getLeaderboardManager().getLeaderboard( + me.goodandevil.skyblock.leaderboard.Leaderboard.Type.valueOf(viewer.getType().name())); + + if (leaderboardIslands.size() > leaderboardPosition) { + me.goodandevil.skyblock.leaderboard.Leaderboard leaderboard = leaderboardIslands.get(leaderboardPosition); + me.goodandevil.skyblock.visit.Visit visit = leaderboard.getVisit(); + + OfflinePlayer offlinePlayer = new OfflinePlayer(visit.getOwnerUUID()); + Bukkit.getScheduler().scheduleSyncDelayedTask(skyblock, () -> Bukkit.dispatchCommand(player, "island teleport " + offlinePlayer.getName())); + } + + event.setWillClose(false); + event.setWillDestroy(false); + + return; + } + soundManager.playSound(player, Sounds.CHICKEN_EGG_POP.bukkitSound(), 1.0F, 1.0F); event.setWillClose(false); diff --git a/src/main/java/me/goodandevil/skyblock/menus/Levelling.java b/src/main/java/me/goodandevil/skyblock/menus/Levelling.java index 65058d9b..ae7aca43 100644 --- a/src/main/java/me/goodandevil/skyblock/menus/Levelling.java +++ b/src/main/java/me/goodandevil/skyblock/menus/Levelling.java @@ -194,7 +194,7 @@ public class Levelling { IslandLevel level = island.getLevel(); Map testIslandMaterials = level.getMaterials(); - Map islandMaterials = level.getMaterials(); + Map islandMaterials = new HashMap<>(); Config mainConfig = fileManager.getConfig(new File(skyblock.getDataFolder(), "levelling.yml")); Config settingsConfig = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")); @@ -204,8 +204,9 @@ public class Levelling { for (String materialName : testIslandMaterials.keySet()) { if (mainConfig.getFileConfiguration().getString("Materials." + materialName + ".Points") == null) continue; - if (mainConfig.getFileConfiguration().getInt("Materials." + materialName + ".Points") <= 0) - continue; + if (!settingsConfig.getFileConfiguration().getBoolean("Island.Levelling.IncludeEmptyPointsInList") && + mainConfig.getFileConfiguration().getInt("Materials." + materialName + ".Points") <= 0) + continue; Materials materials = Materials.fromString(materialName); ItemStack is = materials.parseItem(); @@ -281,17 +282,20 @@ public class Levelling { int pointsEarned = materialAmount * pointsMultiplier; ItemStack is = materials.parseItem(); - is.setAmount(materialAmount); + is.setAmount(Math.min(materialAmount, 64)); is.setType(MaterialUtil.correctMaterial(is.getType())); - System.out.println(MaterialUtil.correctMaterial(is.getType()).name() + " | " + material); - List lore = configLoad.getStringList("Menu.Levelling.Item.Material.Lore"); - lore.replaceAll(x -> x.replace("%blocks", NumberUtil.formatNumberByDecimal(materialAmount))); + lore.replaceAll(x -> x.replace("%points", NumberUtil.formatNumberByDecimal(pointsEarned)) + .replace("%blocks", NumberUtil.formatNumberByDecimal(materialAmount)) + .replace("%material", + WordUtils.capitalize(material.toLowerCase().replace("_", " ") + .replace("item", "").replace("block", "")))); nInv.addItem(nInv.createItem(is, configLoad .getString("Menu.Levelling.Item.Material.Displayname") .replace("%points", NumberUtil.formatNumberByDecimal(pointsEarned)) + .replace("%blocks", NumberUtil.formatNumberByDecimal(materialAmount)) .replace("%material", WordUtils.capitalize(material.toLowerCase().replace("_", " ") .replace("item", "").replace("block", ""))),