Skip to content
328 changes: 169 additions & 159 deletions API/src/main/java/fr/maxlego08/menu/api/configuration/Configuration.java

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions API/src/main/java/fr/maxlego08/menu/api/utils/Message.java
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,7 @@ public enum Message implements IMessage {
WEBSITE_DOWNLOAD_ERROR_NAME("&cCannot find file name."),
WEBSITE_DOWNLOAD_ERROR_CONSOLE("&cAn error has occurred, look at the console."),
WEBSITE_DOWNLOAD_START("&7Start downloading inventory, please wait."),
WEBSITE_DOWNLOAD_ERROR_HOST("&cDownload rejected: &7%host% &cis not allowed. &8(&7Allowed: &f%allowed%&8)"),

PLACEHOLDER_NEVER("never"),

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,13 @@ public abstract class PaginationButton extends Button {
protected final MenuPlugin plugin;
protected final PaginationManager manager;
protected final String contextId;
protected final boolean onlyRefreshButton;

public PaginationButton(@NotNull MenuPlugin plugin, @NotNull String contextId) {
public PaginationButton(@NotNull MenuPlugin plugin, @NotNull String contextId, boolean onlyRefreshButton) {
this.plugin = plugin;
this.manager = plugin.getInventoryManager().getPaginationManager();
this.contextId = contextId;
this.onlyRefreshButton = onlyRefreshButton;
}

@Nullable
Expand All @@ -31,8 +33,20 @@ protected GenericPaginateButton findPaginateButton(@NotNull InventoryEngine inve
return null;
}

protected void onPageChange(@NotNull Player player, @NotNull InventoryEngine inventory, GenericPaginateButton paginateButton) {
if (this.onlyRefreshButton) {
org.bukkit.inventory.ItemStack air = new org.bukkit.inventory.ItemStack(org.bukkit.Material.AIR);
for (int i : paginateButton.getSlots()) {
inventory.addItem(i, air, paginateButton.isPlayerInventory());
}
paginateButton.onRender(player, inventory);
} else {
refreshInventory(player);
}
}

protected void refreshInventory(@NotNull Player player) {
this.plugin.getInventoryManager().updateInventory(player, this.plugin);
this.plugin.getInventoryManager().updateInventory(player);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,28 +10,16 @@

public class PaginationNextButton extends PaginationButton {

public PaginationNextButton(@NotNull MenuPlugin plugin, @NotNull String contextId) {
super(plugin, contextId);
}

protected void onNextPage(@NotNull Player player, @NotNull InventoryEngine inventory) {
refreshInventory(player);
}

protected void onCannotNextPage(@NotNull Player player, @NotNull InventoryEngine inventory) {
public PaginationNextButton(@NotNull MenuPlugin plugin, @NotNull String contextId, boolean onlyRefreshButton) {
super(plugin, contextId, onlyRefreshButton);
}

@Override
public void onClick(@NotNull Player player, @NotNull InventoryClickEvent event, @NotNull InventoryEngine inventory, int slot, @NotNull Placeholders placeholders) {
super.onClick(player, event, inventory, slot, placeholders);
GenericPaginateButton paginateButton = findPaginateButton(inventory, player);
if (paginateButton == null) return;

int currentPage = this.manager.getPage(player.getUniqueId(), this.contextId);
if (currentPage < paginateButton.getMaxPage(player)) {
this.manager.nextPage(player.getUniqueId(), this.contextId);
onNextPage(player, inventory);
} else {
onCannotNextPage(player, inventory);
if (paginateButton != null && paginateButton.nextPage(player)) {
onPageChange(player, inventory, paginateButton);
}
}
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package fr.maxlego08.menu.button.buttons;

import fr.maxlego08.menu.api.MenuPlugin;
import fr.maxlego08.menu.api.button.GenericPaginateButton;
import fr.maxlego08.menu.api.engine.InventoryEngine;
import fr.maxlego08.menu.api.utils.Placeholders;
import org.bukkit.entity.Player;
Expand All @@ -9,25 +10,16 @@

public class PaginationPreviousButton extends PaginationButton {

public PaginationPreviousButton(@NotNull MenuPlugin plugin, @NotNull String contextId) {
super(plugin, contextId);
}

protected void onPreviousPage(@NotNull Player player, @NotNull InventoryEngine inventory) {
refreshInventory(player);
}

protected void onCannotPreviousPage(@NotNull Player player, @NotNull InventoryEngine inventory) {
public PaginationPreviousButton(@NotNull MenuPlugin plugin, @NotNull String contextId, boolean onlyRefreshButton) {
super(plugin, contextId, onlyRefreshButton);
}

@Override
public void onClick(@NotNull Player player, @NotNull InventoryClickEvent event, @NotNull InventoryEngine inventory, int slot, @NotNull Placeholders placeholders) {
int currentPage = this.manager.getPage(player.getUniqueId(), this.contextId);
if (currentPage > 0) {
this.manager.previousPage(player.getUniqueId(), this.contextId);
onPreviousPage(player, inventory);
} else {
onCannotPreviousPage(player, inventory);
super.onClick(player, event, inventory, slot, placeholders);
GenericPaginateButton paginateButton = findPaginateButton(inventory, player);
if (paginateButton != null && paginateButton.previousPage(player)) {
onPageChange(player, inventory, paginateButton);
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package fr.maxlego08.menu.button.loader;

import fr.maxlego08.menu.api.MenuPlugin;
import fr.maxlego08.menu.api.button.Button;
import fr.maxlego08.menu.api.button.DefaultButtonValue;
import fr.maxlego08.menu.api.loader.ButtonLoader;
import fr.maxlego08.menu.zcore.logger.Logger;
import org.bukkit.configuration.file.YamlConfiguration;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

public abstract class AbstractPaginationButtonLoader extends ButtonLoader {

public AbstractPaginationButtonLoader(MenuPlugin plugin, String key) {
super(plugin, key);
}

@Override
public @Nullable Button load(@NotNull YamlConfiguration configuration, @NotNull String path, @NotNull DefaultButtonValue defaultButtonValue) {
String contextId = configuration.getString(path + "context-id");
if (contextId == null) {
Logger.info("Context-id is required for " + this.name + " button at path: " + path);
return null;
}
boolean onlyRefreshButton = configuration.getBoolean(path + "only-refresh-button", false);
return createButton(contextId, onlyRefreshButton);
}

protected abstract Button createButton(String contextId, boolean onlyRefreshButton);
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,27 +2,16 @@

import fr.maxlego08.menu.api.MenuPlugin;
import fr.maxlego08.menu.api.button.Button;
import fr.maxlego08.menu.api.button.DefaultButtonValue;
import fr.maxlego08.menu.api.loader.ButtonLoader;
import fr.maxlego08.menu.button.buttons.PaginationNextButton;
import fr.maxlego08.menu.zcore.logger.Logger;
import org.bukkit.configuration.file.YamlConfiguration;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

public class PaginationNextButtonLoader extends ButtonLoader {
public class PaginationNextButtonLoader extends AbstractPaginationButtonLoader {

public PaginationNextButtonLoader(MenuPlugin plugin) {
super(plugin, "pagination_next");
}

@Override
public @Nullable Button load(@NotNull YamlConfiguration configuration, @NotNull String path, @NotNull DefaultButtonValue defaultButtonValue) {
String contextId = configuration.getString(path + "context-id");
if (contextId == null) {
Logger.info("Context-id is required for pagination_next button at path: " + path);
return null;
}
return new PaginationNextButton((MenuPlugin) this.plugin, contextId);
protected Button createButton(String contextId, boolean onlyRefreshButton) {
return new PaginationNextButton((MenuPlugin) this.plugin, contextId, onlyRefreshButton);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,27 +2,16 @@

import fr.maxlego08.menu.api.MenuPlugin;
import fr.maxlego08.menu.api.button.Button;
import fr.maxlego08.menu.api.button.DefaultButtonValue;
import fr.maxlego08.menu.api.loader.ButtonLoader;
import fr.maxlego08.menu.button.buttons.PaginationPreviousButton;
import fr.maxlego08.menu.zcore.logger.Logger;
import org.bukkit.configuration.file.YamlConfiguration;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

public class PaginationPreviousButtonLoader extends ButtonLoader {
public class PaginationPreviousButtonLoader extends AbstractPaginationButtonLoader {

public PaginationPreviousButtonLoader(MenuPlugin plugin) {
super(plugin, "pagination_previous");
}

@Override
public @Nullable Button load(@NotNull YamlConfiguration configuration, @NotNull String path, @NotNull DefaultButtonValue defaultButtonValue) {
String contextId = configuration.getString(path + "context-id");
if (contextId == null) {
Logger.info("Context-id is required for pagination_previous button at path: " + path);
return null;
}
return new PaginationPreviousButton((MenuPlugin) this.plugin, contextId);
protected Button createButton(String contextId, boolean onlyRefreshButton) {
return new PaginationPreviousButton((MenuPlugin) this.plugin, contextId, onlyRefreshButton);
}
}
}
Loading
Loading