diff --git a/src/de/steamwar/bungeecore/listeners/TablistManager.java b/src/de/steamwar/bungeecore/listeners/TablistManager.java index 066facb5..797471de 100644 --- a/src/de/steamwar/bungeecore/listeners/TablistManager.java +++ b/src/de/steamwar/bungeecore/listeners/TablistManager.java @@ -197,9 +197,25 @@ public class TablistManager extends BasicListener { @Override public int slimSize(ProxiedPlayer viewer) { - int size = subTablists.stream().mapToInt(tPart -> viewer == null ? tPart.size() : tPart.slimSize(viewer)).sum(); - if(withHeaders) - size += subTablists.size() * 2; + int size = 0; + for (int i = 0; i < subTablists.size(); i++) { + TablistPart tablistPart = subTablists.get(i); + boolean removeFooter = i == subTablists.size() - 1; + if (viewer == null) { + size += tablistPart.size(); + if (withHeaders) size += 2; // The 2 is for the header and footer + if (removeFooter) size--; // The last one has no footer + } else { + int slimSize = tablistPart.slimSize(viewer); + if (slimSize == 0) { + if (withHeaders) size++; // This increment is just for the header + } else { + size += slimSize; + if (withHeaders) size += 2; // The 2 is for the header and footer + if (removeFooter) size--; // The last one has no footer + } + } + } return size; } @@ -210,8 +226,10 @@ public class TablistManager extends BasicListener { @Override public void print(Tablist viewer, boolean slim) { - subTablists.forEach(tPart -> { - if(withHeaders) + for (int i = 0; i < subTablists.size(); i++) { + TablistPart tPart = subTablists.get(i); + boolean removeFooter = i == subTablists.size() - 1; + if (withHeaders) { if (slim) { int slimSize = tPart.slimSize(viewer.player); int size = tPart.size(); @@ -219,16 +237,19 @@ public class TablistManager extends BasicListener { viewer.setSlot(gray, "§7§l" + tPart.name(), 1000); } else if (slimSize == 0) { viewer.setSlot(gray, "§7§l" + tPart.name() + " §8(§7" + size + "§8)", 1000); + removeFooter = true; } else { viewer.setSlot(gray, "§7§l" + tPart.name() + " §8(§7+" + (size - slimSize) + "§8)", 1000); } } else { viewer.setSlot(gray, "§7§l" + tPart.name(), 1000); } + } tPart.print(viewer, slim); - if(withHeaders) + if (withHeaders && !removeFooter) { viewer.setSlot(darkGray, "", 1000); - }); + } + } } }