Skip to content

Commit

Permalink
Add some config
Browse files Browse the repository at this point in the history
  • Loading branch information
Elikill58 authored and LMBishop committed Jul 15, 2023
1 parent 593d3af commit b721847
Show file tree
Hide file tree
Showing 10 changed files with 65 additions and 15 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Expand Up @@ -21,3 +21,5 @@ CHANGELOG_MD
CHANGELOG_GFM
UPDATE_MESSAGE

*.classpath
*.project
Expand Up @@ -19,13 +19,10 @@
*/
public class CategoryQMenu extends PaginatedQMenu {

private final BukkitQuestsPlugin plugin;

public CategoryQMenu(BukkitQuestsPlugin plugin, QPlayer owner) {
super(owner, Chat.legacyColor(plugin.getQuestsConfig().getString("options.guinames.quests-category")),
plugin.getQuestsConfig().getBoolean("options.trim-gui-size"), 54, plugin);

this.plugin = plugin;
BukkitQuestsConfig config = (BukkitQuestsConfig) plugin.getQuestsConfig();

List<MenuElement> categoryMenuElements = new ArrayList<>();
Expand Down
Expand Up @@ -60,15 +60,15 @@ public void setMaxPage(int maxPage) {
this.maxPage = maxPage;
}

public void populate(String customElementsPath, List<MenuElement> menuElementsToFill, MenuElement backMenuElement) {
public void populate(String customElementsPath, List<MenuElement> menuElementsToFill, BackMenuElement backMenuElement) {
Player player = Bukkit.getPlayer(owner.getPlayerUUID());
if (player == null) {
return;
}

MenuElement[] staticMenuElements = new MenuElement[pageSize];
int customStaticElements = 0;
MenuElement spacer = new SpacerMenuElement();
SpacerMenuElement spacer = new SpacerMenuElement();

// populate custom elements first
if (customElementsPath != null) {
Expand Down Expand Up @@ -100,29 +100,33 @@ public void populate(String customElementsPath, List<MenuElement> menuElementsTo
}
}

// TODO: make these page controls configurable
// if the amount of predicted menu elements is greater than the size of a page, add
// the page controls as menu elements
// this won't check if static elements overlap normal ones first but i don't care
int maxSize = pageSize - (backMenuElement == null ? 0 : 9);
BukkitQuestsConfig config = (BukkitQuestsConfig) plugin.getQuestsConfig();
if ((menuElements.isEmpty() ? 0 : Ints.max(menuElements.keys)) + 1 > 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);
staticMenuElements[45] = backMenuElement == null ? spacer : backMenuElement;
PageNextMenuElement pageNextMenuElement = new PageNextMenuElement(config, this);
PagePrevMenuElement pagePrevMenuElement = new PagePrevMenuElement(config, this);
PageDescMenuElement pageDescMenuElement = new PageDescMenuElement(config, this);
// add manually spacer then let people change item
staticMenuElements[46] = spacer;
staticMenuElements[47] = spacer;
staticMenuElements[48] = pagePrevMenuElement;
staticMenuElements[49] = pageDescMenuElement;
staticMenuElements[50] = pageNextMenuElement;
staticMenuElements[51] = spacer;
staticMenuElements[52] = spacer;
staticMenuElements[53] = spacer;
if(backMenuElement != null && backMenuElement.isEnabled())
staticMenuElements[backMenuElement.getSlot()] = backMenuElement == null ? spacer : backMenuElement;
if(pagePrevMenuElement.isEnabled())
staticMenuElements[pagePrevMenuElement.getSlot()] = pagePrevMenuElement;
if(pageDescMenuElement.isEnabled())
staticMenuElements[pageDescMenuElement.getSlot()] = pageDescMenuElement;
if(pageNextMenuElement.isEnabled())
staticMenuElements[pageNextMenuElement.getSlot()] = pageNextMenuElement;

// else find a place for the back button if needed
} else if (backMenuElement != null) {
} else if (backMenuElement != null && backMenuElement.isEnabled()) {
int slot = MenuUtils.getHigherOrEqualMultiple(menuElements.size() + menuElementsToFill.size() + customStaticElements, 9);
staticMenuElements[slot] = backMenuElement;
}
Expand Down
Expand Up @@ -29,7 +29,7 @@ public QuestQMenu(BukkitQuestsPlugin plugin, QPlayer owner, List<Quest> quests,
BukkitQuestsConfig config = (BukkitQuestsConfig) plugin.getQuestsConfig();
this.categoryName = categoryName;

MenuElement backMenuElement = categoryQMenu != null
BackMenuElement backMenuElement = categoryQMenu != null
? new BackMenuElement(config, owner.getPlayerUUID(), plugin.getMenuController(), categoryQMenu)
: null;

Expand Down
Expand Up @@ -36,4 +36,13 @@ public ClickResult handleClick(ClickType clickType) {
controller.openMenu(player, previousMenu);
return ClickResult.DO_NOTHING;
}

public int getSlot() {
return config.getInt("gui.back-button.slot", 45);
}

@Override
public boolean isEnabled() {
return config.getBoolean("gui.back-button.enabled", true);
}
}
Expand Up @@ -16,4 +16,7 @@ public abstract class MenuElement {
*/
public abstract ClickResult handleClick(ClickType clickType);

public boolean isEnabled() {
return true;
}
}
Expand Up @@ -31,4 +31,13 @@ public ItemStack asItemStack() {
public ClickResult handleClick(ClickType clickType) {
return ClickResult.DO_NOTHING;
}

public int getSlot() {
return config.getInt("gui.page-desc.slot", 49);
}

@Override
public boolean isEnabled() {
return config.getBoolean("gui.page-desc.enabled", true);
}
}
Expand Up @@ -34,4 +34,13 @@ public ClickResult handleClick(ClickType clickType) {
menu.setCurrentPage(menu.getCurrentPage() + 1);
return ClickResult.REFRESH_PANE;
}

public int getSlot() {
return config.getInt("gui.page-next.slot", 50);
}

@Override
public boolean isEnabled() {
return config.getBoolean("gui.page-next.enabled", true);
}
}
Expand Up @@ -34,4 +34,13 @@ public ClickResult handleClick(ClickType clickType) {
menu.setCurrentPage(menu.getCurrentPage() - 1);
return ClickResult.REFRESH_PANE;
}

public int getSlot() {
return config.getInt("gui.page-prev.slot", 48);
}

@Override
public boolean isEnabled() {
return config.getBoolean("gui.page-prev.enabled", true);
}
}
8 changes: 8 additions & 0 deletions bukkit/src/main/resources/resources/bukkit/config.yml
Expand Up @@ -216,21 +216,29 @@ global-macros:
# -----------------------------------------------------------
gui:
back-button:
enabled: true
slot: 45
name: "&cReturn"
lore:
- "&7Return to the categories menu."
type: "ARROW"
page-prev:
enabled: true
slot: 48
name: "&7Previous Page"
lore:
- "&7Switch the page to page &c{prevpage}."
type: "FEATHER"
page-next:
enabled: true
slot: 50
name: "&7Next Page"
lore:
- "&7Switch the page to page &c{nextpage}."
type: "FEATHER"
page-desc:
enabled: true
slot: 49
name: "&7Page &c{page}"
lore:
- "&7You are currently viewing page &c{page}."
Expand Down

0 comments on commit b721847

Please sign in to comment.