use of com.github.stefvanschie.inventoryframework.pane.StaticPane in project oraxen by oraxen.
the class ItemsView method createSubGUI.
private ChestGui createSubGUI(final String fileName, final List<ItemBuilder> items) {
final int rows = Math.min((items.size() - 1) / 9 + 2, 6);
final ChestGui gui = new ChestGui(6, getMenuTexture(settings.getString(String.format("gui_inventory.%s.color", Utils.removeExtension(fileName)))));
final PaginatedPane pane = new PaginatedPane(9, rows);
for (int i = 0; i < (items.size() - 1) / 45 + 1; i++) {
final List<ItemStack> itemStackList = extractPageItems(items, i);
final StaticPane staticPane = new StaticPane(9, Math.min((itemStackList.size() - 1) / 9 + 1, 5));
for (int itemIndex = 0; itemIndex < itemStackList.size(); itemIndex++) {
final ItemStack oraxenItem = itemStackList.get(itemIndex);
staticPane.addItem(new GuiItem(oraxenItem, event -> event.getWhoClicked().getInventory().addItem(oraxenItem)), itemIndex % 9, itemIndex / 9);
}
pane.addPane(i, staticPane);
}
// page selection
final StaticPane back = new StaticPane(2, 5, 1, 1);
final StaticPane forward = new StaticPane(6, 5, 1, 1);
final StaticPane exit = new StaticPane(4, 5, 9, 1);
back.addItem(new GuiItem((OraxenItems.getItemById("arrow_previous_icon") == null ? new ItemBuilder(Material.ARROW) : OraxenItems.getItemById("arrow_previous_icon")).build(), event -> {
pane.setPage(pane.getPage() - 1);
if (pane.getPage() == 0)
back.setVisible(false);
forward.setVisible(true);
gui.update();
}), 0, 0);
back.setVisible(false);
forward.addItem(new GuiItem((OraxenItems.getItemById("arrow_next_icon") == null ? new ItemBuilder(Material.ARROW) : OraxenItems.getItemById("arrow_next_icon")).build(), event -> {
pane.setPage(pane.getPage() + 1);
if (pane.getPage() == pane.getPages() - 1)
forward.setVisible(false);
back.setVisible(true);
gui.update();
}), 0, 0);
if (pane.getPages() <= 1)
forward.setVisible(false);
exit.addItem(new GuiItem((OraxenItems.getItemById("exit_icon") == null ? new ItemBuilder(Material.BARRIER) : OraxenItems.getItemById("exit_icon")).build(), event -> mainGui.show(event.getWhoClicked())), 0, 0);
gui.addPane(back);
gui.addPane(forward);
gui.addPane(exit);
gui.addPane(pane);
gui.setOnGlobalClick(event -> event.setCancelled(true));
return gui;
}
use of com.github.stefvanschie.inventoryframework.pane.StaticPane in project oraxen by oraxen.
the class ItemsView method create.
public ChestGui create() {
final Map<File, ChestGui> files = new HashMap<>();
for (final File file : OraxenItems.getMap().keySet()) {
final List<ItemBuilder> unexcludedItems = OraxenItems.getUnexcludedItems(file);
if (unexcludedItems.size() > 0)
files.put(file, createSubGUI(file.getName(), unexcludedItems));
}
final int rows = (files.size() - 1) / 9 + 1;
mainGui = new ChestGui(6, getMenuTexture("<#84CBFF>"));
final StaticPane filesPane = new StaticPane(0, 0, 9, rows);
int i = 0;
for (final var entry : files.entrySet()) {
final GuiItem item = new GuiItem(getItemStack(entry.getKey()), event -> entry.getValue().show(event.getWhoClicked()));
filesPane.addItem(item, i % 9, i / 9);
i++;
}
mainGui.addPane(filesPane);
mainGui.setOnTopClick(event -> event.setCancelled(true));
return mainGui;
}
use of com.github.stefvanschie.inventoryframework.pane.StaticPane in project Nodewar by Rosstail.
the class PlayerAdminEmpireGUIs method initPane.
private static StaticPane initPane(Player player, fr.rosstail.nodewar.Nodewar plugin, ChestGui gui, ChestGui previousGui, PaginatedPane paginatedPane, Player target, int page) {
StaticPane staticPane = new StaticPane(0, 0, 9, 6);
ArrayList<Empire> empires = new ArrayList<>(EmpireManager.getEmpireManager().getEmpires().values());
int index = 45 * page;
int posY = 0;
int posX = 0;
staticPane.addItem(new GuiItem(GUIs.createGuiItem(player, plugin, null, Material.BARRIER, "&9Previous Menu", null, GUIs.adaptLore(player, null)), event -> {
previousGui.show(player);
}), 4, 5);
if (page > 0) {
staticPane.addItem(new GuiItem(GUIs.createGuiItem(player, plugin, null, Material.ARROW, "&9Previous page", null, GUIs.adaptLore(player, null)), event -> {
paginatedPane.setPage(page - 1);
gui.setTitle(AdaptMessage.playerMessage(target, target.getName() + "'s Empire - Page " + (page)));
gui.update();
}), 0, 5);
}
while (posY != 5) {
while (posX != 9) {
if (empires.size() - 1 < index) {
return staticPane;
}
Empire empire = empires.get(index);
staticPane.addItem(new GuiItem(GUIs.createGuiItem(player, plugin, null, Material.RED_BANNER, empire.getDisplay(), null, GUIs.adaptLore(player, null)), event -> {
PlayerInfo targetInfo = PlayerInfoManager.getPlayerInfoManager().getPlayerInfoMap().get(target);
targetInfo.leaveEmpire();
targetInfo.setEmpire(empire);
player.sendMessage(AdaptMessage.playerMessage(target, LangManager.getMessage(LangMessage.EMPIRE_PLAYER_SET)));
previousGui.show(player);
}), posX, posY);
posX++;
index++;
}
posX = 0;
posY++;
}
if (empires.size() > index) {
staticPane.addItem(new GuiItem(GUIs.createGuiItem(player, plugin, null, Material.SPECTRAL_ARROW, "&Next page", null, GUIs.adaptLore(player, null)), event -> {
paginatedPane.setPage(page + 1);
gui.setTitle(AdaptMessage.playerMessage(player, target.getName() + "'s Empire - Page " + (page + 1)));
gui.update();
}), 8, 5);
}
return staticPane;
}
use of com.github.stefvanschie.inventoryframework.pane.StaticPane in project Nodewar by Rosstail.
the class EmpiresListGUI method initGUI.
public static void initGUI(Player player, fr.rosstail.nodewar.Nodewar plugin) {
FileConfiguration customConfig = new YamlConfiguration();
String path = "gui/empireListGUI.yml";
File file = new File(plugin.getDataFolder(), path);
try {
customConfig.load(file);
ChestGui gui = new ChestGui(customConfig.getInt("gui.size"), AdaptMessage.playerMessage(player, customConfig.getString("gui.display")));
OutlinePane background = new OutlinePane(0, 0, 9, gui.getRows(), Pane.Priority.LOWEST);
background.addItem(new GuiItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE)));
background.setRepeat(true);
gui.addPane(background);
StaticPane itemSlot = new StaticPane(customConfig.getInt("gui.item-slot.x"), customConfig.getInt("gui.item-slot.y"), 9, gui.getRows(), Pane.Priority.HIGHEST);
initPane(player, plugin, customConfig, itemSlot, gui);
gui.setOnGlobalClick(event -> {
event.setCancelled(true);
initPane(player, plugin, customConfig, itemSlot, gui);
gui.update();
});
gui.addPane(itemSlot);
gui.show(player);
} catch (IOException | InvalidConfigurationException e) {
AdaptMessage.print("[" + Nodewar.getDimName() + "] Error while reading " + path + " file", AdaptMessage.prints.ERROR);
}
}
use of com.github.stefvanschie.inventoryframework.pane.StaticPane in project Nodewar by Rosstail.
the class TerritoryPointsGUIs method initPane.
private static StaticPane initPane(Player player, Nodewar plugin, ChestGui gui, ChestGui previousGui, PaginatedPane paginatedPane, Territory territory, int page) {
StaticPane staticPane = new StaticPane(0, 0, 9, 6);
ArrayList<Territory> subTerritories = new ArrayList<>(territory.getSubTerritories().values());
int index = 45 * page;
int posY = 0;
int posX = 0;
staticPane.addItem(new GuiItem(GUIs.createGuiItem(player, plugin, null, Material.BARRIER, "&9Previous Menu", null, GUIs.adaptLore(player, null)), event -> {
previousGui.show(player);
}), 4, 5);
if (page > 0) {
staticPane.addItem(new GuiItem(GUIs.createGuiItem(player, plugin, null, Material.ARROW, "&9Previous page", null, GUIs.adaptLore(player, null)), event -> {
paginatedPane.setPage(page - 1);
gui.setTitle(AdaptMessage.playerMessage(player, territory.getDisplay() + "'s points - Page " + (page)));
gui.update();
}), 0, 5);
}
while (posY != 5) {
while (posX != 9) {
if (subTerritories.size() - 1 < index) {
return staticPane;
}
Territory subTerritory = subTerritories.get(index);
staticPane.addItem(new GuiItem(GUIs.createGuiItem(player, plugin, null, Material.BEACON, subTerritory.getDisplay(), null, GUIs.adaptLore(player, null)), event -> {
TerritoryPointsGUIs.initGUI(player, plugin, subTerritory, gui);
}), posX, posY);
posX++;
index++;
}
posX = 0;
posY++;
}
if (subTerritories.size() > index) {
staticPane.addItem(new GuiItem(GUIs.createGuiItem(player, plugin, null, Material.SPECTRAL_ARROW, "&Next page", null, GUIs.adaptLore(player, null)), event -> {
paginatedPane.setPage(page + 1);
gui.setTitle(AdaptMessage.playerMessage(player, territory.getDisplay() + "'s points - Page " + (page + 1)));
gui.update();
}), 8, 5);
}
return staticPane;
}
Aggregations