Skip to content

Commit d1feb33

Browse files
authored
Merge pull request #236 from 1robie/developement
Improve download command
2 parents 8401579 + 8f5d6d2 commit d1feb33

9 files changed

Lines changed: 352 additions & 276 deletions

File tree

API/src/main/java/fr/maxlego08/menu/api/configuration/Configuration.java

Lines changed: 169 additions & 159 deletions
Large diffs are not rendered by default.

API/src/main/java/fr/maxlego08/menu/api/utils/Message.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,7 @@ public enum Message implements IMessage {
160160
WEBSITE_DOWNLOAD_ERROR_NAME("&cCannot find file name."),
161161
WEBSITE_DOWNLOAD_ERROR_CONSOLE("&cAn error has occurred, look at the console."),
162162
WEBSITE_DOWNLOAD_START("&7Start downloading inventory, please wait."),
163+
WEBSITE_DOWNLOAD_ERROR_HOST("&cDownload rejected: &7%host% &cis not allowed. &8(&7Allowed: &f%allowed%&8)"),
163164

164165
PLACEHOLDER_NEVER("never"),
165166

src/main/java/fr/maxlego08/menu/button/buttons/PaginationButton.java

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,13 @@ public abstract class PaginationButton extends Button {
1414
protected final MenuPlugin plugin;
1515
protected final PaginationManager manager;
1616
protected final String contextId;
17+
protected final boolean onlyRefreshButton;
1718

18-
public PaginationButton(@NotNull MenuPlugin plugin, @NotNull String contextId) {
19+
public PaginationButton(@NotNull MenuPlugin plugin, @NotNull String contextId, boolean onlyRefreshButton) {
1920
this.plugin = plugin;
2021
this.manager = plugin.getInventoryManager().getPaginationManager();
2122
this.contextId = contextId;
23+
this.onlyRefreshButton = onlyRefreshButton;
2224
}
2325

2426
@Nullable
@@ -31,8 +33,20 @@ protected GenericPaginateButton findPaginateButton(@NotNull InventoryEngine inve
3133
return null;
3234
}
3335

36+
protected void onPageChange(@NotNull Player player, @NotNull InventoryEngine inventory, GenericPaginateButton paginateButton) {
37+
if (this.onlyRefreshButton) {
38+
org.bukkit.inventory.ItemStack air = new org.bukkit.inventory.ItemStack(org.bukkit.Material.AIR);
39+
for (int i : paginateButton.getSlots()) {
40+
inventory.addItem(i, air, paginateButton.isPlayerInventory());
41+
}
42+
paginateButton.onRender(player, inventory);
43+
} else {
44+
refreshInventory(player);
45+
}
46+
}
47+
3448
protected void refreshInventory(@NotNull Player player) {
35-
this.plugin.getInventoryManager().updateInventory(player, this.plugin);
49+
this.plugin.getInventoryManager().updateInventory(player);
3650
}
3751

3852
@Override

src/main/java/fr/maxlego08/menu/button/buttons/PaginationNextButton.java

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,28 +10,16 @@
1010

1111
public class PaginationNextButton extends PaginationButton {
1212

13-
public PaginationNextButton(@NotNull MenuPlugin plugin, @NotNull String contextId) {
14-
super(plugin, contextId);
15-
}
16-
17-
protected void onNextPage(@NotNull Player player, @NotNull InventoryEngine inventory) {
18-
refreshInventory(player);
19-
}
20-
21-
protected void onCannotNextPage(@NotNull Player player, @NotNull InventoryEngine inventory) {
13+
public PaginationNextButton(@NotNull MenuPlugin plugin, @NotNull String contextId, boolean onlyRefreshButton) {
14+
super(plugin, contextId, onlyRefreshButton);
2215
}
2316

2417
@Override
2518
public void onClick(@NotNull Player player, @NotNull InventoryClickEvent event, @NotNull InventoryEngine inventory, int slot, @NotNull Placeholders placeholders) {
19+
super.onClick(player, event, inventory, slot, placeholders);
2620
GenericPaginateButton paginateButton = findPaginateButton(inventory, player);
27-
if (paginateButton == null) return;
28-
29-
int currentPage = this.manager.getPage(player.getUniqueId(), this.contextId);
30-
if (currentPage < paginateButton.getMaxPage(player)) {
31-
this.manager.nextPage(player.getUniqueId(), this.contextId);
32-
onNextPage(player, inventory);
33-
} else {
34-
onCannotNextPage(player, inventory);
21+
if (paginateButton != null && paginateButton.nextPage(player)) {
22+
onPageChange(player, inventory, paginateButton);
3523
}
3624
}
37-
}
25+
}
Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package fr.maxlego08.menu.button.buttons;
22

33
import fr.maxlego08.menu.api.MenuPlugin;
4+
import fr.maxlego08.menu.api.button.GenericPaginateButton;
45
import fr.maxlego08.menu.api.engine.InventoryEngine;
56
import fr.maxlego08.menu.api.utils.Placeholders;
67
import org.bukkit.entity.Player;
@@ -9,25 +10,16 @@
910

1011
public class PaginationPreviousButton extends PaginationButton {
1112

12-
public PaginationPreviousButton(@NotNull MenuPlugin plugin, @NotNull String contextId) {
13-
super(plugin, contextId);
14-
}
15-
16-
protected void onPreviousPage(@NotNull Player player, @NotNull InventoryEngine inventory) {
17-
refreshInventory(player);
18-
}
19-
20-
protected void onCannotPreviousPage(@NotNull Player player, @NotNull InventoryEngine inventory) {
13+
public PaginationPreviousButton(@NotNull MenuPlugin plugin, @NotNull String contextId, boolean onlyRefreshButton) {
14+
super(plugin, contextId, onlyRefreshButton);
2115
}
2216

2317
@Override
2418
public void onClick(@NotNull Player player, @NotNull InventoryClickEvent event, @NotNull InventoryEngine inventory, int slot, @NotNull Placeholders placeholders) {
25-
int currentPage = this.manager.getPage(player.getUniqueId(), this.contextId);
26-
if (currentPage > 0) {
27-
this.manager.previousPage(player.getUniqueId(), this.contextId);
28-
onPreviousPage(player, inventory);
29-
} else {
30-
onCannotPreviousPage(player, inventory);
19+
super.onClick(player, event, inventory, slot, placeholders);
20+
GenericPaginateButton paginateButton = findPaginateButton(inventory, player);
21+
if (paginateButton != null && paginateButton.previousPage(player)) {
22+
onPageChange(player, inventory, paginateButton);
3123
}
3224
}
33-
}
25+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package fr.maxlego08.menu.button.loader;
2+
3+
import fr.maxlego08.menu.api.MenuPlugin;
4+
import fr.maxlego08.menu.api.button.Button;
5+
import fr.maxlego08.menu.api.button.DefaultButtonValue;
6+
import fr.maxlego08.menu.api.loader.ButtonLoader;
7+
import fr.maxlego08.menu.zcore.logger.Logger;
8+
import org.bukkit.configuration.file.YamlConfiguration;
9+
import org.jetbrains.annotations.NotNull;
10+
import org.jetbrains.annotations.Nullable;
11+
12+
public abstract class AbstractPaginationButtonLoader extends ButtonLoader {
13+
14+
public AbstractPaginationButtonLoader(MenuPlugin plugin, String key) {
15+
super(plugin, key);
16+
}
17+
18+
@Override
19+
public @Nullable Button load(@NotNull YamlConfiguration configuration, @NotNull String path, @NotNull DefaultButtonValue defaultButtonValue) {
20+
String contextId = configuration.getString(path + "context-id");
21+
if (contextId == null) {
22+
Logger.info("Context-id is required for " + this.name + " button at path: " + path);
23+
return null;
24+
}
25+
boolean onlyRefreshButton = configuration.getBoolean(path + "only-refresh-button", false);
26+
return createButton(contextId, onlyRefreshButton);
27+
}
28+
29+
protected abstract Button createButton(String contextId, boolean onlyRefreshButton);
30+
}

src/main/java/fr/maxlego08/menu/button/loader/PaginationNextButtonLoader.java

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,16 @@
22

33
import fr.maxlego08.menu.api.MenuPlugin;
44
import fr.maxlego08.menu.api.button.Button;
5-
import fr.maxlego08.menu.api.button.DefaultButtonValue;
6-
import fr.maxlego08.menu.api.loader.ButtonLoader;
75
import fr.maxlego08.menu.button.buttons.PaginationNextButton;
8-
import fr.maxlego08.menu.zcore.logger.Logger;
9-
import org.bukkit.configuration.file.YamlConfiguration;
10-
import org.jetbrains.annotations.NotNull;
11-
import org.jetbrains.annotations.Nullable;
126

13-
public class PaginationNextButtonLoader extends ButtonLoader {
7+
public class PaginationNextButtonLoader extends AbstractPaginationButtonLoader {
148

159
public PaginationNextButtonLoader(MenuPlugin plugin) {
1610
super(plugin, "pagination_next");
1711
}
1812

1913
@Override
20-
public @Nullable Button load(@NotNull YamlConfiguration configuration, @NotNull String path, @NotNull DefaultButtonValue defaultButtonValue) {
21-
String contextId = configuration.getString(path + "context-id");
22-
if (contextId == null) {
23-
Logger.info("Context-id is required for pagination_next button at path: " + path);
24-
return null;
25-
}
26-
return new PaginationNextButton((MenuPlugin) this.plugin, contextId);
14+
protected Button createButton(String contextId, boolean onlyRefreshButton) {
15+
return new PaginationNextButton((MenuPlugin) this.plugin, contextId, onlyRefreshButton);
2716
}
28-
}
17+
}

src/main/java/fr/maxlego08/menu/button/loader/PaginationPreviousButtonLoader.java

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,16 @@
22

33
import fr.maxlego08.menu.api.MenuPlugin;
44
import fr.maxlego08.menu.api.button.Button;
5-
import fr.maxlego08.menu.api.button.DefaultButtonValue;
6-
import fr.maxlego08.menu.api.loader.ButtonLoader;
75
import fr.maxlego08.menu.button.buttons.PaginationPreviousButton;
8-
import fr.maxlego08.menu.zcore.logger.Logger;
9-
import org.bukkit.configuration.file.YamlConfiguration;
10-
import org.jetbrains.annotations.NotNull;
11-
import org.jetbrains.annotations.Nullable;
126

13-
public class PaginationPreviousButtonLoader extends ButtonLoader {
7+
public class PaginationPreviousButtonLoader extends AbstractPaginationButtonLoader {
148

159
public PaginationPreviousButtonLoader(MenuPlugin plugin) {
1610
super(plugin, "pagination_previous");
1711
}
1812

1913
@Override
20-
public @Nullable Button load(@NotNull YamlConfiguration configuration, @NotNull String path, @NotNull DefaultButtonValue defaultButtonValue) {
21-
String contextId = configuration.getString(path + "context-id");
22-
if (contextId == null) {
23-
Logger.info("Context-id is required for pagination_previous button at path: " + path);
24-
return null;
25-
}
26-
return new PaginationPreviousButton((MenuPlugin) this.plugin, contextId);
14+
protected Button createButton(String contextId, boolean onlyRefreshButton) {
15+
return new PaginationPreviousButton((MenuPlugin) this.plugin, contextId, onlyRefreshButton);
2716
}
28-
}
17+
}

0 commit comments

Comments
 (0)