summaryrefslogtreecommitdiffstats
path: root/bukkit/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'bukkit/src/main/java')
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/PaginatedQMenu.java7
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/QuestQMenu.java4
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/MenuUtils.java5
3 files changed, 12 insertions, 4 deletions
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/PaginatedQMenu.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/PaginatedQMenu.java
index dd094855..2c6a03ae 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/PaginatedQMenu.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/PaginatedQMenu.java
@@ -3,6 +3,7 @@ package com.leonardobishop.quests.bukkit.menu;
import com.leonardobishop.quests.bukkit.BukkitQuestsPlugin;
import com.leonardobishop.quests.bukkit.config.BukkitQuestsConfig;
import com.leonardobishop.quests.bukkit.menu.element.*;
+import com.leonardobishop.quests.bukkit.util.MenuUtils;
import com.leonardobishop.quests.bukkit.util.StringUtils;
import com.leonardobishop.quests.common.player.QPlayer;
import org.bukkit.Bukkit;
@@ -106,7 +107,7 @@ public abstract class PaginatedQMenu extends QMenu {
int maxSize = pageSize - (backMenuElement == null ? 0 : 9);
BukkitQuestsConfig config = (BukkitQuestsConfig) plugin.getQuestsConfig();
if ((menuElements.isEmpty() ? 0 : Collections.max(menuElements.keySet())) + 1 > maxSize
- || menuElements.keySet().size() + menuElementsToFill.size() + customStaticElements > maxSize) {
+ || menuElements.size() + menuElementsToFill.size() + customStaticElements > maxSize) {
MenuElement pageNextMenuElement = new PageNextMenuElement(config, this);
MenuElement pagePrevMenuElement = new PagePrevMenuElement(config, this);
MenuElement pageDescMenuElement = new PageDescMenuElement(config, this);
@@ -122,8 +123,8 @@ public abstract class PaginatedQMenu extends QMenu {
// else find a place for the back button if needed
} else if (backMenuElement != null) {
- int row = ((menuElements.keySet().size() + menuElementsToFill.size() + customStaticElements) / 9) + 1;
- staticMenuElements[row * 9] = backMenuElement;
+ int slot = MenuUtils.getHigherOrEqualMultiple(menuElements.size() + menuElementsToFill.size() + customStaticElements, 9);
+ staticMenuElements[slot] = backMenuElement;
}
boolean staticMenuElementsIsFull = true;
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/QuestQMenu.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/QuestQMenu.java
index a33f344f..2e8e1875 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/QuestQMenu.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/QuestQMenu.java
@@ -29,7 +29,9 @@ public class QuestQMenu extends PaginatedQMenu {
BukkitQuestsConfig config = (BukkitQuestsConfig) plugin.getQuestsConfig();
this.categoryName = categoryName;
- MenuElement backMenuElement = new BackMenuElement(config, owner.getPlayerUUID(), plugin.getMenuController(), categoryQMenu);
+ MenuElement backMenuElement = categoryQMenu != null
+ ? new BackMenuElement(config, owner.getPlayerUUID(), plugin.getMenuController(), categoryQMenu)
+ : null;
List<MenuElement> filteredQuests = new ArrayList<>();
for (Quest quest : quests) {
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/MenuUtils.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/MenuUtils.java
index 48840201..d5c042c0 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/MenuUtils.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/MenuUtils.java
@@ -143,4 +143,9 @@ public class MenuUtils {
return placeholders;
}
+ public static int getHigherOrEqualMultiple(int num, int base) {
+ int r = num % base;
+ return r == 0 ? num : num + base - r;
+ }
+
}