From fac0997c979e5e931d257ce41ba72f7cb301908c Mon Sep 17 00:00:00 2001 From: Esophose Date: Tue, 26 Feb 2019 03:04:10 -0700 Subject: [PATCH] Fix `/is level` showing gaps --- .../goodandevil/skyblock/menus/Levelling.java | 32 ++++++++++++++++--- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/src/main/java/me/goodandevil/skyblock/menus/Levelling.java b/src/main/java/me/goodandevil/skyblock/menus/Levelling.java index 21260fc8..ba7d8cc3 100644 --- a/src/main/java/me/goodandevil/skyblock/menus/Levelling.java +++ b/src/main/java/me/goodandevil/skyblock/menus/Levelling.java @@ -1,6 +1,7 @@ package me.goodandevil.skyblock.menus; import java.io.File; +import java.util.HashMap; import java.util.Map; import org.apache.commons.lang3.text.WordUtils; @@ -10,6 +11,7 @@ import org.bukkit.Material; import org.bukkit.OfflinePlayer; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemStack; @@ -33,8 +35,6 @@ import me.goodandevil.skyblock.utils.NumberUtil; import me.goodandevil.skyblock.utils.item.MaterialUtil; import me.goodandevil.skyblock.utils.item.SkullUtil; import me.goodandevil.skyblock.utils.item.nInventoryUtil; -import me.goodandevil.skyblock.utils.item.nInventoryUtil.ClickEvent; -import me.goodandevil.skyblock.utils.item.nInventoryUtil.ClickEventHandler; import me.goodandevil.skyblock.utils.version.Materials; import me.goodandevil.skyblock.utils.version.Sounds; @@ -192,7 +192,31 @@ public class Levelling { Island island = islandManager.getIsland(player); IslandLevel level = island.getLevel(); - Map islandMaterials = level.getMaterials(); + Map testIslandMaterials = level.getMaterials(); + Map islandMaterials = new HashMap<>(); + + Config mainConfig = fileManager.getConfig(new File(skyblock.getDataFolder(), "levelling.yml")); + + // Filter out ItemStacks that can't be displayed in the inventory + Inventory testInventory = Bukkit.createInventory(null, 9); + for (String materialName : testIslandMaterials.keySet()) { + if (mainConfig.getFileConfiguration().getString("Materials." + materialName + ".Points") == null) + continue; + if (mainConfig.getFileConfiguration().getInt("Materials." + materialName + ".Points") <= 0) + continue; + + Materials materials = Materials.fromString(materialName); + ItemStack is = materials.parseItem(); + is.setAmount(testIslandMaterials.get(materialName)); + is.setType(MaterialUtil.correctMaterial(is.getType())); + + if (is == null || is.getItemMeta() == null) continue; + testInventory.clear(); + testInventory.setItem(0, is); + if (testInventory.getItem(0) != null) { + islandMaterials.put(materialName, testIslandMaterials.get(materialName)); + } + } int playerMenuPage = playerData.getPage(), nextEndIndex = islandMaterials.size() - playerMenuPage * 36; @@ -238,8 +262,6 @@ public class Levelling { endIndex = index >= islandMaterials.size() ? islandMaterials.size() - 1 : index + 36, inventorySlot = 17; - Config mainConfig = fileManager.getConfig(new File(skyblock.getDataFolder(), "levelling.yml")); - for (; index < endIndex; index++) { if (islandMaterials.size() > index) { String material = (String) islandMaterials.keySet().toArray()[index];