diff --git a/.github/CHANGELOG.md b/.github/CHANGELOG.md
index 15e2f295..b7f72ce6 100644
--- a/.github/CHANGELOG.md
+++ b/.github/CHANGELOG.md
@@ -10,6 +10,13 @@ deploy webhooks to print changelog successfully
That's all, matcher will stop when detects next line started with `###` match
+## 5.0.15 Release (03.05.2025)
+* Allowing by default 20 places placeholder for summary list
+* Check if OPTIONS_MENU item is still in builders inventory and readd it if necessary
+* Fixed IllegalArgumentException on PlotSelector, also switched to PaginatedInventory to support all Plots
+* Added filter to maxplayers/random join team / solo so that only the correct arenas are selected
+* Updated Minigamesbox to 1.4.1
+
### 5.0.14 Release (13.03.2025)
* Changed plot distribution on team mode tries to create only full plots now
* Fixed plot distribution in same cases lets spectators into the plot as member
diff --git a/.github/building/pom.xml b/.github/building/pom.xml
index 23d4c421..98284ef1 100644
--- a/.github/building/pom.xml
+++ b/.github/building/pom.xml
@@ -26,7 +26,7 @@
plugily.projects
buildbattle
- 5.0.13-SNAPSHOT5
+ 5.0.14-SNAPSHOT1
BuildBattle
@@ -51,17 +51,13 @@
jitpack
https://jitpack.io
-
- codemc-repo
- https://repo.codemc.org/repository/maven-public/
-
spigot-repo
https://hub.spigotmc.org/nexus/content/repositories/snapshots/
citizens-repo
- http://repo.citizensnpcs.co/
+ https://repo.citizensnpcs.co/
@@ -82,7 +78,7 @@
plugily.projects
MiniGamesBox-Classic
- 1.3.17-SNAPSHOT12
+ 1.4.0
compile
true
@@ -115,6 +111,7 @@
${java.version}
${java.version}
+ UTF-8
@@ -160,6 +157,7 @@
shade
+ true
com.zaxxer.hikari
diff --git a/pom.xml b/pom.xml
index fadabde0..81766f80 100644
--- a/pom.xml
+++ b/pom.xml
@@ -26,7 +26,7 @@
plugily.projects
buildbattle
- 5.0.14
+ 5.0.14-SNAPSHOT8
BuildBattle
@@ -78,7 +78,7 @@
plugily.projects
MiniGamesBox-Classic
- 1.4.0
+ 1.4.1
compile
true
@@ -111,6 +111,7 @@
${java.version}
${java.version}
+ UTF-8
diff --git a/src/main/java/plugily/projects/buildbattle/arena/managers/ScoreboardManager.java b/src/main/java/plugily/projects/buildbattle/arena/managers/ScoreboardManager.java
index 5e46b99f..abce932e 100644
--- a/src/main/java/plugily/projects/buildbattle/arena/managers/ScoreboardManager.java
+++ b/src/main/java/plugily/projects/buildbattle/arena/managers/ScoreboardManager.java
@@ -45,10 +45,9 @@ public ScoreboardManager(PluginArena arena) {
}
@Override
- public List formatScoreboardLines(List lines, Player player) {
- List changedLines = new ArrayList<>();
-
- switch (arena.getArenaState()) {
+ public List getScoreboardLines(Player player) {
+ List lines;
+ switch(arena.getArenaState()) {
case IN_GAME: {
if(arena instanceof GuessArena) {
lines = arena.getPlugin().getLanguageManager().getLanguageList("Scoreboard.Content." + arena.getArenaState().getFormattedName() + ".Guess-The-Build" + (((GuessArena) arena).getArenaInGameState() == BaseArena.ArenaInGameState.PLOT_VOTING ? "-Waiting" : ""));
@@ -70,16 +69,9 @@ public List formatScoreboardLines(List lines, Player player) {
break;
}
default: {
- lines = arena.getPlugin().getLanguageManager().getLanguageList(arena.getArenaState() == IArenaState.FULL_GAME ? "Scoreboard.Content.Starting"
- : "Scoreboard.Content." + arena.getArenaState().getFormattedName());
-
+ lines = super.getScoreboardLines(player);
}
}
-
- for(String line : lines) {
- changedLines.add(new MessageBuilder(line).player(player).arena(arena).build());
- }
- return changedLines;
+ return lines;
}
-
}
diff --git a/src/main/java/plugily/projects/buildbattle/arena/managers/plots/PlotMenuHandler.java b/src/main/java/plugily/projects/buildbattle/arena/managers/plots/PlotMenuHandler.java
index 688ef48b..036f3f79 100644
--- a/src/main/java/plugily/projects/buildbattle/arena/managers/plots/PlotMenuHandler.java
+++ b/src/main/java/plugily/projects/buildbattle/arena/managers/plots/PlotMenuHandler.java
@@ -35,6 +35,8 @@
import plugily.projects.minigamesbox.classic.utils.version.xseries.XMaterial;
import plugily.projects.minigamesbox.inventory.common.item.SimpleClickableItem;
import plugily.projects.minigamesbox.inventory.normal.NormalFastInv;
+import plugily.projects.minigamesbox.inventory.utils.fastinv.InventoryScheme;
+import plugily.projects.minigamesbox.inventory.utils.fastinv.PaginatedFastInv;
import java.util.ArrayList;
import java.util.List;
@@ -79,10 +81,22 @@ private ItemStack getItemStack(Plot plot, int maxPlotMembers, Player player) {
}
public void createMenu(Player player, BaseArena arena) {
- NormalFastInv gui = new NormalFastInv(plugin.getBukkitHelper().serializeInt(arena.getPlotManager().getPlots().size()), new MessageBuilder("IN_GAME_MESSAGES_PLOT_SELECTOR_MENU_NAME").asKey().build());
+ PaginatedFastInv gui = new PaginatedFastInv(27, new MessageBuilder("IN_GAME_MESSAGES_PLOT_SELECTOR_MENU_NAME").asKey().build());
+ new InventoryScheme()
+ .mask(" 1111111 ")
+ .mask(" 1111111 ")
+ .bindPagination('1').apply(gui);
+
+
int plots = 0;
int arenaPlotMemberSize = arena.getArenaOption("PLOT_MEMBER_SIZE");
+ gui.previousPageItem(20, p -> new ItemBuilder(XMaterial.ARROW.parseItem()).name("<- " + p + "/" + gui.lastPage()).build());
+ gui.nextPageItem(24, p -> new ItemBuilder(XMaterial.ARROW.parseItem()).name(p + "/" + gui.lastPage() + " ->").build());
+
+ gui.setItem(22, new ItemBuilder(XMaterial.BARRIER.parseItem()).name("X").build(),
+ e -> e.getWhoClicked().closeInventory());
+
for(Plot plot : arena.getPlotManager().getPlots()) {
ItemStack itemStack = getItemStack(plot, arenaPlotMemberSize, player);
int plotMemberSize = plot.getMembersSize();
@@ -127,7 +141,7 @@ public void createMenu(Player player, BaseArena arena) {
});
int finalPlots = plots;
- gui.addItem(new SimpleClickableItem(itemStack, event -> {
+ gui.addContent(itemStack, event -> {
event.setCancelled(true);
if(!(event.isLeftClick() || event.isRightClick())) {
@@ -143,7 +157,7 @@ public void createMenu(Player player, BaseArena arena) {
new MessageBuilder("IN_GAME_MESSAGES_PLOT_SELECTOR_PLOT_CHOOSE").asKey().player(player).integer(finalPlots).sendPlayer();
event.getWhoClicked().closeInventory();
- }));
+ });
plots++;
}
diff --git a/src/main/java/plugily/projects/buildbattle/arena/states/build/InGameState.java b/src/main/java/plugily/projects/buildbattle/arena/states/build/InGameState.java
index 3c99e3e4..5d1f000c 100644
--- a/src/main/java/plugily/projects/buildbattle/arena/states/build/InGameState.java
+++ b/src/main/java/plugily/projects/buildbattle/arena/states/build/InGameState.java
@@ -77,12 +77,11 @@ public void handleCall(PluginArena arena) {
break;
case BUILD_TIME:
handleBuildTime(pluginArena);
+ handleOptionsMenu(pluginArena);
if(arena.getTimer() <= 0) {
for(Player player : pluginArena.getPlayersLeft()) {
IUser user = getPlugin().getUserManager().getUser(player);
- if(user.isSpectator()) continue;
-
Plot playerPlot = pluginArena.getPlotFromPlayer(player);
if(!pluginArena.getQueue().contains(playerPlot)) {
pluginArena.getQueue().add(playerPlot);
@@ -198,6 +197,15 @@ private void handleBuildTime(BuildArena pluginArena) {
pluginArena.checkPlayerOutSidePlot();
}
+ private void handleOptionsMenu(BuildArena pluginArena) {
+ if(pluginArena.getTimer() % 10 != 0) {
+ return;
+ }
+ for(Player player : pluginArena.getPlayersLeft()) {
+ pluginArena.getPlugin().getSpecialItemManager().getSpecialItem("OPTIONS_MENU").setItem(player);
+ }
+ }
+
private void handlePlotVoting(BuildArena pluginArena) {
}
diff --git a/src/main/java/plugily/projects/buildbattle/arena/states/guess/InGameState.java b/src/main/java/plugily/projects/buildbattle/arena/states/guess/InGameState.java
index 103085c3..5581746e 100644
--- a/src/main/java/plugily/projects/buildbattle/arena/states/guess/InGameState.java
+++ b/src/main/java/plugily/projects/buildbattle/arena/states/guess/InGameState.java
@@ -26,6 +26,7 @@
import org.bukkit.entity.HumanEntity;
import org.bukkit.entity.Player;
import plugily.projects.buildbattle.arena.BaseArena;
+import plugily.projects.buildbattle.arena.BuildArena;
import plugily.projects.buildbattle.arena.GuessArena;
import plugily.projects.buildbattle.arena.managers.plots.Plot;
import plugily.projects.buildbattle.handlers.themes.BBTheme;
@@ -102,6 +103,7 @@ public void handleCall(PluginArena arena) {
}
//}
handleBuildTime(pluginArena);
+ handleOptionsMenu(pluginArena);
break;
case PLOT_VOTING:
if(pluginArena.getRound() + 1 > pluginArena.getPlotList().size() * pluginArena.getArenaOption("GTB_ROUNDS_PER_PLOT")) {
@@ -189,6 +191,15 @@ private void forceSetTheme(GuessArena pluginArena) {
setChosenTheme(pluginArena, getThemeByDifficulty(pluginArena, difficulty));
}
+ private void handleOptionsMenu(GuessArena pluginArena) {
+ if(pluginArena.getTimer() % 10 != 0) {
+ return;
+ }
+ for(Player player : pluginArena.getCurrentBuilders()) {
+ pluginArena.getPlugin().getSpecialItemManager().getSpecialItem("OPTIONS_MENU").setItem(player);
+ }
+ }
+
private void setChosenTheme(GuessArena pluginArena, BBTheme bbTheme) {
setTheme(pluginArena, bbTheme);
pluginArena.getCurrentBuilders().forEach(HumanEntity::closeInventory);
diff --git a/src/main/java/plugily/projects/buildbattle/boot/PlaceholderInitializer.java b/src/main/java/plugily/projects/buildbattle/boot/PlaceholderInitializer.java
index 1f3e4dcd..f06e5a84 100644
--- a/src/main/java/plugily/projects/buildbattle/boot/PlaceholderInitializer.java
+++ b/src/main/java/plugily/projects/buildbattle/boot/PlaceholderInitializer.java
@@ -447,8 +447,8 @@ private String getSummary(IPluginArena arena) {
return null;
}
int places = pluginArena.getPlotManager().getTopPlotsOrder().size();
- if(places > 16) {
- places = 16;
+ if(places > 20) {
+ places = 20;
}
StringBuilder placeSummary = new StringBuilder();
for(int i = 1; i <= places; i++) {
diff --git a/src/main/java/plugily/projects/buildbattle/commands/arguments/ArgumentsRegistry.java b/src/main/java/plugily/projects/buildbattle/commands/arguments/ArgumentsRegistry.java
index 0fb2596b..4512098d 100644
--- a/src/main/java/plugily/projects/buildbattle/commands/arguments/ArgumentsRegistry.java
+++ b/src/main/java/plugily/projects/buildbattle/commands/arguments/ArgumentsRegistry.java
@@ -21,6 +21,7 @@
package plugily.projects.buildbattle.commands.arguments;
import plugily.projects.buildbattle.Main;
+import plugily.projects.buildbattle.arena.BaseArena;
import plugily.projects.buildbattle.arena.BuildArena;
import plugily.projects.buildbattle.arena.GuessArena;
import plugily.projects.buildbattle.commands.arguments.admin.ThemeArgument;
@@ -63,10 +64,13 @@ public List getSpecificFilteredArenas(List arenas, S
case "guessthebuild":
case "guess_the_build":
return arenas.stream().filter(GuessArena.class::isInstance).collect(Collectors.toList());
+ case "team":
+ return arenas.stream().filter(BuildArena.class::isInstance).filter(arena -> ((BuildArena) arena).getArenaType().equals(BaseArena.ArenaType.TEAM)).collect(Collectors.toList());
case "classic":
case "solo":
- case "team":
- default:
+ return arenas.stream().filter(BuildArena.class::isInstance).filter(arena -> ((BuildArena) arena).getArenaType().equals(BaseArena.ArenaType.SOLO)).collect(Collectors.toList());
+ case "build":
+ default:
return arenas.stream().filter(BuildArena.class::isInstance).collect(Collectors.toList());
}
}
diff --git a/src/main/java/plugily/projects/buildbattle/handlers/menu/OptionsRegistry.java b/src/main/java/plugily/projects/buildbattle/handlers/menu/OptionsRegistry.java
index 3fde74cc..68af2b9d 100644
--- a/src/main/java/plugily/projects/buildbattle/handlers/menu/OptionsRegistry.java
+++ b/src/main/java/plugily/projects/buildbattle/handlers/menu/OptionsRegistry.java
@@ -39,6 +39,7 @@
import plugily.projects.minigamesbox.inventory.common.item.ItemMap;
import plugily.projects.minigamesbox.inventory.common.item.SimpleClickableItem;
import plugily.projects.minigamesbox.inventory.normal.NormalFastInv;
+import plugily.projects.minigamesbox.inventory.utils.fastinv.PaginatedFastInv;
import java.util.HashSet;
import java.util.Set;
@@ -50,147 +51,154 @@
*/
public class OptionsRegistry {
- private ParticleRegistry particleRegistry;
- private BiomesRegistry biomesRegistry;
- private PlayerHeadsRegistry playerHeadsRegistry;
- private final Set registeredOptions = new HashSet<>();
- private int inventorySize = 5 * 9;
- private final ItemStack menuItem;
- private final Main plugin;
-
- private NormalFastInv optionsGui;
-
- public OptionsRegistry(Main plugin) {
- this.plugin = plugin;
- this.menuItem = plugin.getSpecialItemManager().getSpecialItemStack("OPTIONS_MENU");
- }
-
- public void registerOptions() {
- biomesRegistry = new BiomesRegistry(this);
- new BiomeChangeOption(this);
-
- new FloorChangeOption(this);
-
- //register particles
- particleRegistry = new ParticleRegistry(this);
- new ParticlesOption(this);
-
- //register player heads
- playerHeadsRegistry = new PlayerHeadsRegistry(this);
- new PlayerHeadsOption(this);
-
- new PlotResetOption(this);
- new TimeChangeOption(this);
- new WeatherChangeOption(this);
- new BannerCreatorOption(this);
- }
-
- /**
- * Registers new menu option available in options menu in game.
- *
- * @param option option to register
- * @throws IllegalArgumentException if option slot is same as one of already registered ones
- * or ID of option is same as one of registered one
- */
- public void registerOption(MenuOption option) {
- for (MenuOption opt : registeredOptions) {
- if (opt.getSlot() == option.getSlot()) {
- throw new IllegalArgumentException("Cannot register new option on existing option slot!");
- }
- if (opt.getID().equals(option.getID())) {
- throw new IllegalArgumentException("Cannot register new option with equal identifier!");
- }
- }
- registeredOptions.add(option);
- }
-
- /**
- * Unregisters menu option that available in options menu
- *
- * @param option option to unregister
- * @throws IllegalArgumentException if option doesn't exist
- */
- public void unregisterOption(MenuOption option) {
- if (!registeredOptions.remove(option)) {
- throw new IllegalArgumentException("Cannot remove non existing option!");
- }
+ private ParticleRegistry particleRegistry;
+ private BiomesRegistry biomesRegistry;
+ private PlayerHeadsRegistry playerHeadsRegistry;
+ private final Set registeredOptions = new HashSet<>();
+ private int inventorySize = 5 * 9;
+ private final ItemStack menuItem;
+ private final Main plugin;
+
+ private NormalFastInv optionsGui;
+
+ public OptionsRegistry(Main plugin) {
+ this.plugin = plugin;
+ this.menuItem = plugin.getSpecialItemManager().getSpecialItemStack("OPTIONS_MENU");
+ }
+
+ public void registerOptions() {
+ biomesRegistry = new BiomesRegistry(this);
+ new BiomeChangeOption(this);
+
+ new FloorChangeOption(this);
+
+ //register particles
+ particleRegistry = new ParticleRegistry(this);
+ new ParticlesOption(this);
+
+ //register player heads
+ playerHeadsRegistry = new PlayerHeadsRegistry(this);
+ new PlayerHeadsOption(this);
+
+ new PlotResetOption(this);
+ new TimeChangeOption(this);
+ new WeatherChangeOption(this);
+ new BannerCreatorOption(this);
+ }
+
+ /**
+ * Registers new menu option available in options menu in game.
+ *
+ * @param option option to register
+ * @throws IllegalArgumentException if option slot is same as one of already registered ones
+ * or ID of option is same as one of registered one
+ */
+ public void registerOption(MenuOption option) {
+ for(MenuOption opt : registeredOptions) {
+ if(opt.getSlot() == option.getSlot()) {
+ throw new IllegalArgumentException("Cannot register new option on existing option slot!");
+ }
+ if(opt.getID().equals(option.getID())) {
+ throw new IllegalArgumentException("Cannot register new option with equal identifier!");
+ }
}
-
- /**
- * Defines new size of options inventory
- *
- * @param size size to set
- */
- public void defineInventorySize(int size) {
- inventorySize = size;
- }
-
- /**
- * Creates inventory with all of registered menu options
- *
- * @return options inventory
- */
- public NormalFastInv getOptionsGui() {
- if (optionsGui != null)
- return optionsGui;
- NormalFastInv gui = new NormalFastInv(inventorySize, new MessageBuilder("MENU_OPTION_INVENTORY").asKey().build());
- gui.addClickHandler(clickEvent -> {
- if (clickEvent.getClickedInventory() != gui.getInventory()) {
- clickEvent.setCancelled(false);
- }
- });
- for (MenuOption option : registeredOptions) {
- gui.setItem(option.getSlot(), new SimpleClickableItem(option.getItemStack(), option::onClick));
- }
- return optionsGui = gui;
+ registeredOptions.add(option);
+ }
+
+ /**
+ * Unregisters menu option that available in options menu
+ *
+ * @param option option to unregister
+ * @throws IllegalArgumentException if option doesn't exist
+ */
+ public void unregisterOption(MenuOption option) {
+ if(!registeredOptions.remove(option)) {
+ throw new IllegalArgumentException("Cannot remove non existing option!");
}
-
- public Set getRegisteredOptions() {
- return registeredOptions;
+ }
+
+ /**
+ * Defines new size of options inventory
+ *
+ * @param size size to set
+ */
+ public void defineInventorySize(int size) {
+ inventorySize = size;
+ }
+
+ /**
+ * Creates inventory with all of registered menu options
+ *
+ * @return options inventory
+ */
+ public NormalFastInv getOptionsGui() {
+ if(optionsGui != null)
+ return optionsGui;
+ NormalFastInv gui = new NormalFastInv(inventorySize, new MessageBuilder("MENU_OPTION_INVENTORY").asKey().build());
+ gui.addClickHandler(clickEvent -> {
+ if(clickEvent.getClickedInventory() != gui.getInventory()) {
+ clickEvent.setCancelled(false);
+ }
+ });
+ for(MenuOption option : registeredOptions) {
+ gui.setItem(option.getSlot(), new SimpleClickableItem(option.getItemStack(), option::onClick));
}
+ return optionsGui = gui;
+ }
- public ItemStack getMenuItem() {
- return menuItem;
- }
+ public Set getRegisteredOptions() {
+ return registeredOptions;
+ }
- public BiomesRegistry getBiomesRegistry() {
- return biomesRegistry;
- }
+ public ItemStack getMenuItem() {
+ return menuItem;
+ }
- public PlayerHeadsRegistry getPlayerHeadsRegistry() {
- return playerHeadsRegistry;
- }
+ public BiomesRegistry getBiomesRegistry() {
+ return biomesRegistry;
+ }
- public ParticleRegistry getParticleRegistry() {
- return particleRegistry;
- }
+ public PlayerHeadsRegistry getPlayerHeadsRegistry() {
+ return playerHeadsRegistry;
+ }
- public Main getPlugin() {
- return plugin;
- }
+ public ParticleRegistry getParticleRegistry() {
+ return particleRegistry;
+ }
- private ItemBuilder backButton;
-
- private SimpleClickableItem getBackItem() {
- if (backButton == null) {
- backButton = new ItemBuilder(XMaterial.STONE_BUTTON.parseItem())
- .name(new MessageBuilder("MENU_BUTTONS_BACK_ITEM_NAME").asKey().build())
- .lore(new MessageBuilder("MENU_BUTTONS_BACK_ITEM_LORE").asKey().build());
- }
- return new SimpleClickableItem(backButton.build(), event -> {
- event.setCancelled(true);
- event.getWhoClicked().closeInventory();
- getOptionsGui().open(event.getWhoClicked());
- });
- }
+ public Main getPlugin() {
+ return plugin;
+ }
- public void addGoBackItem(ItemMap page, int slot) {
- page.setItem(slot, getBackItem());
- }
+ private ItemBuilder backButton;
- public void addGoBackItem(NormalFastInv gui, int slot) {
- gui.setItem(slot, getBackItem());
+ private SimpleClickableItem getBackItem() {
+ if(backButton == null) {
+ backButton = new ItemBuilder(XMaterial.STONE_BUTTON.parseItem())
+ .name(new MessageBuilder("MENU_BUTTONS_BACK_ITEM_NAME").asKey().build())
+ .lore(new MessageBuilder("MENU_BUTTONS_BACK_ITEM_LORE").asKey().build());
}
-
+ return new SimpleClickableItem(backButton.build(), event -> {
+ event.setCancelled(true);
+ event.getWhoClicked().closeInventory();
+ getOptionsGui().open(event.getWhoClicked());
+ });
+ }
+
+ public void addGoBackItem(ItemMap page, int slot) {
+ page.setItem(slot, getBackItem());
+ }
+
+ public void addGoBackItem(NormalFastInv gui, int slot) {
+ gui.setItem(slot, getBackItem());
+ }
+
+ public void addGoBackItem(PaginatedFastInv gui, int slot) {
+ gui.setItem(slot, backButton.build(), event -> {
+ event.setCancelled(true);
+ event.getWhoClicked().closeInventory();
+ getOptionsGui().open(event.getWhoClicked());
+ });
+ }
}
diff --git a/src/main/java/plugily/projects/buildbattle/handlers/menu/registry/particles/ParticleRegistry.java b/src/main/java/plugily/projects/buildbattle/handlers/menu/registry/particles/ParticleRegistry.java
index b9b8b5d9..3479dda3 100644
--- a/src/main/java/plugily/projects/buildbattle/handlers/menu/registry/particles/ParticleRegistry.java
+++ b/src/main/java/plugily/projects/buildbattle/handlers/menu/registry/particles/ParticleRegistry.java
@@ -35,9 +35,8 @@
import plugily.projects.minigamesbox.classic.utils.helper.ItemBuilder;
import plugily.projects.minigamesbox.classic.utils.version.VersionUtils;
import plugily.projects.minigamesbox.classic.utils.version.xseries.XMaterial;
-import plugily.projects.minigamesbox.inventory.common.item.ItemMap;
-import plugily.projects.minigamesbox.inventory.common.item.SimpleClickableItem;
-import plugily.projects.minigamesbox.inventory.paged.PagedFastInv;
+import plugily.projects.minigamesbox.inventory.utils.fastinv.InventoryScheme;
+import plugily.projects.minigamesbox.inventory.utils.fastinv.PaginatedFastInv;
import java.util.*;
@@ -49,7 +48,7 @@
*/
public class ParticleRegistry {
- private PagedFastInv particles;
+ private PaginatedFastInv particles;
private final List blackListedParticles = Arrays.asList("BLOCK_CRACK", "ITEM_CRACK", "ITEM_TAKE", "BLOCK_DUST", "MOB_APPEARANCE", "FOOTSTEP", "REDSTONE");
private final Set registeredParticles = new HashSet<>();
private final Main plugin;
@@ -114,46 +113,23 @@ private void updateParticlesFile() {
}
private void registerInventory() {
- int i = 0;
- Set particleItemsPage1 = new HashSet<>(registeredParticles.size());
- Set particleItemsPage2 = new HashSet<>();
-
- for(ParticleItem item : registeredParticles) {
- (i >= 45 ? particleItemsPage2 : particleItemsPage1).add(item);
- i++;
- }
-
- PagedFastInv gui = new PagedFastInv(54, new MessageBuilder("MENU_OPTION_CONTENT_PARTICLE_INVENTORY").asKey().build());
-
- gui.setForceRefresh(true);
-
- ItemMap page1 = gui.createNewPage();
- ItemMap page2 = gui.createNewPage();
+ PaginatedFastInv gui = new PaginatedFastInv(54, new MessageBuilder("MENU_OPTION_CONTENT_PARTICLE_INVENTORY").asKey().build());
- page2.setItem(45, new SimpleClickableItem(new ItemBuilder(new ItemStack(XMaterial.ARROW.parseMaterial())).name("<-").build(), event -> {
- gui.setCurrentPage(0);
- gui.refresh();
- }));
- page1.setItem(53, new SimpleClickableItem(new ItemBuilder(new ItemStack(XMaterial.ARROW.parseMaterial())).name("->").build(), event -> {
- gui.setCurrentPage(1);
- gui.refresh();
- }));
+ new InventoryScheme()
+ .mask(" 1111111 ")
+ .mask(" 1111111 ")
+ .mask(" 1111111 ")
+ .mask(" 1111111 ")
+ .bindPagination('1').apply(gui);
- addParticles(page1, particleItemsPage1);
- addParticles(page2, particleItemsPage2);
- addRemoveItem(page1);
- addRemoveItem(page2);
- setParticles(gui);
-
- plugin.getOptionsRegistry().addGoBackItem(page1, 46);
- plugin.getOptionsRegistry().addGoBackItem(page2, 46);
+ gui.previousPageItem(45, p -> new ItemBuilder(XMaterial.ARROW.parseItem()).name("<- " + p + "/" + gui.lastPage()).build());
+ gui.nextPageItem(53, p -> new ItemBuilder(XMaterial.ARROW.parseItem()).name(p + "/" + gui.lastPage() + " ->").build());
- gui.refresh();
- }
+ gui.setItem(52, new ItemBuilder(XMaterial.BARRIER.parseItem()).name("X").build(),
+ e -> e.getWhoClicked().closeInventory());
- private void addRemoveItem(ItemMap itemMap) {
- itemMap.setItem(49, new SimpleClickableItem(new ItemBuilder(new ItemStack(Material.REDSTONE_BLOCK))
+ gui.setItem(49, new ItemBuilder(new ItemStack(Material.REDSTONE_BLOCK))
.name(new MessageBuilder("MENU_OPTION_CONTENT_PARTICLE_ITEM_REMOVE_NAME").asKey().build())
.lore(Collections.singletonList(new MessageBuilder("MENU_OPTION_CONTENT_PARTICLE_ITEM_REMOVE_LORE").asKey().build()))
.build(), event -> {
@@ -170,12 +146,18 @@ private void addRemoveItem(ItemMap itemMap) {
event.setCancelled(false);
player.closeInventory();
ParticleRemoveMenu.openMenu(player, arena.getPlotManager().getPlot(player));
- }));
+ });
+
+ plugin.getOptionsRegistry().addGoBackItem(gui, 46);
+
+ addParticles(gui);
+
+ setParticles(gui);
}
- private void addParticles(ItemMap itemMap, Set particleItems) {
- for(ParticleItem item : particleItems) {
- itemMap.addItem(new SimpleClickableItem(item.getItemStack(), event -> {
+ private void addParticles(PaginatedFastInv gui) {
+ for(ParticleItem item : registeredParticles) {
+ gui.addContent(item.getItemStack(), event -> {
HumanEntity humanEntity = event.getWhoClicked();
if(!(humanEntity instanceof Player))
@@ -198,15 +180,15 @@ private void addParticles(ItemMap itemMap, Set particleItems) {
plot.getParticles().put(player.getLocation(), item.getEffect());
plugin.getUserManager().getUser(player).adjustStatistic("PARTICLES_USED", 1);
new MessageBuilder("MENU_OPTION_CONTENT_PARTICLE_ADDED").asKey().player(player).sendPlayer();
- }));
+ });
}
}
- public PagedFastInv getParticles() {
+ public PaginatedFastInv getParticles() {
return particles;
}
- public void setParticles(PagedFastInv particles) {
+ public void setParticles(PaginatedFastInv particles) {
this.particles = particles;
}
diff --git a/src/main/java/plugily/projects/buildbattle/handlers/menu/registry/particles/ParticlesOption.java b/src/main/java/plugily/projects/buildbattle/handlers/menu/registry/particles/ParticlesOption.java
index 41281d35..26fed1f9 100644
--- a/src/main/java/plugily/projects/buildbattle/handlers/menu/registry/particles/ParticlesOption.java
+++ b/src/main/java/plugily/projects/buildbattle/handlers/menu/registry/particles/ParticlesOption.java
@@ -52,7 +52,7 @@ public void onClick(InventoryClickEvent event) {
}
humanEntity.closeInventory();
- registry.getPlugin().getOptionsRegistry().getParticleRegistry().getParticles().open(humanEntity);
+ registry.getPlugin().getOptionsRegistry().getParticleRegistry().getParticles().open(((Player) humanEntity));
}
});
}
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
index 72834414..d466aefd 100644
--- a/src/main/resources/config.yml
+++ b/src/main/resources/config.yml
@@ -10,6 +10,7 @@
# Available localizations:
# default - English language. Uses 'language.yml'.
# See https://github.com/Plugily-Projects/locale_storage/tree/master/plugins/minecraft/buildbattle
+# Help us translate the project -> https://translate.plugily.xyz
# Use filename of the language e.g. de_DE.yml -> locale: de_DE
locale: default