use of fr.minuskube.inv.ClickableItem in project WereWolfPlugin by Ph1Lou.
the class ScenariosGUI method update.
@Override
public void update(Player player, InventoryContents contents) {
Main main = JavaPlugin.getPlugin(Main.class);
GameManager game = (GameManager) main.getWereWolfAPI();
IConfiguration config = game.getConfig();
Pagination pagination = contents.pagination();
List<ClickableItem> items = new ArrayList<>();
for (ScenarioRegister scenarioRegister : main.getRegisterManager().getScenariosRegister()) {
List<String> lore = new ArrayList<>();
scenarioRegister.getLoreKey().stream().map(game::translate).map(s -> Arrays.stream(s.split("\\n")).collect(Collectors.toList())).forEach(lore::addAll);
ItemStack itemStack;
if (config.isScenarioActive(scenarioRegister.getKey())) {
lore.add(0, game.translate("werewolf.utils.enable"));
itemStack = UniversalMaterial.GREEN_TERRACOTTA.getStack();
} else {
lore.add(0, game.translate("werewolf.utils.disable"));
itemStack = UniversalMaterial.RED_TERRACOTTA.getStack();
}
Optional<String> incompatible = scenarioRegister.getIncompatibleScenarios().stream().filter(s -> game.getConfig().isScenarioActive(s)).map(game::translate).findFirst();
incompatible.ifPresent(scenario -> lore.add(game.translate("werewolf.menu.scenarios.incompatible", Formatter.format("&scenario&", scenario))));
items.add(ClickableItem.of((new ItemBuilder(scenarioRegister.getItem().isPresent() ? scenarioRegister.getItem().get() : itemStack).setDisplayName(game.translate(scenarioRegister.getKey())).setLore(lore).build()), e -> {
if (!incompatible.isPresent() || config.isScenarioActive(scenarioRegister.getKey())) {
config.switchScenarioValue(scenarioRegister.getKey());
scenarioRegister.getScenario().register(config.isScenarioActive(scenarioRegister.getKey()));
}
}));
}
if (items.size() > 45) {
pagination.setItems(items.toArray(new ClickableItem[0]));
pagination.setItemsPerPage(36);
pagination.addToIterator(contents.newIterator(SlotIterator.Type.HORIZONTAL, 1, 0));
int page = pagination.getPage() + 1;
contents.set(5, 0, null);
contents.set(5, 1, null);
contents.set(5, 3, null);
contents.set(5, 5, null);
contents.set(5, 7, null);
contents.set(5, 8, null);
contents.set(5, 2, ClickableItem.of(new ItemBuilder(Material.ARROW).setDisplayName(game.translate("werewolf.menu.roles.previous", Formatter.format("¤t&", page), Formatter.format("&previous&", pagination.isFirst() ? page : page - 1))).build(), e -> INVENTORY.open(player, pagination.previous().getPage())));
contents.set(5, 6, ClickableItem.of(new ItemBuilder(Material.ARROW).setDisplayName(game.translate("werewolf.menu.roles.next", Formatter.format("¤t&", page), Formatter.format("&next&", pagination.isLast() ? page : page + 1))).build(), e -> INVENTORY.open(player, pagination.next().getPage())));
contents.set(5, 4, ClickableItem.empty(new ItemBuilder(UniversalMaterial.SIGN.getType()).setDisplayName(game.translate("werewolf.menu.roles.current", Formatter.format("¤t&", page), Formatter.format("&sum&", items.size() / 36 + 1))).build()));
} else {
int i = 0;
for (ClickableItem clickableItem : items) {
contents.set(i / 9 + 1, i % 9, clickableItem);
i++;
}
for (int k = i; k < (i / 9 + 1) * 9; k++) {
contents.set(k / 9 + 1, k % 9, null);
}
}
}
use of fr.minuskube.inv.ClickableItem in project WereWolfPlugin by Ph1Lou.
the class TimersGUI method update.
@Override
public void update(Player player, InventoryContents contents) {
Main main = JavaPlugin.getPlugin(Main.class);
GameManager game = (GameManager) main.getWereWolfAPI();
IConfiguration config = game.getConfig();
Pagination pagination = contents.pagination();
List<ClickableItem> items = new ArrayList<>();
String c = getConversion(game, key);
contents.set(0, 1, ClickableItem.of((new ItemBuilder(Material.STONE_BUTTON).setDisplayName(game.translate("werewolf.utils.display", Formatter.format("&field&", "-10m"), Formatter.format("&value&", c))).build()), e -> {
config.moveTimer(key, -600);
e.setCurrentItem(new ItemBuilder(e.getCurrentItem()).setDisplayName(game.translate("werewolf.utils.display", Formatter.format("&field&", "-10m"), Formatter.format("&value&", getConversion(game, key)))).build());
}));
contents.set(0, 2, ClickableItem.of((new ItemBuilder(Material.STONE_BUTTON).setDisplayName(game.translate("werewolf.utils.display", Formatter.format("&field&", "-1m"), Formatter.format("&value&", c))).build()), e -> {
config.moveTimer(key, -60);
e.setCurrentItem(new ItemBuilder(e.getCurrentItem()).setDisplayName(game.translate("werewolf.utils.display", Formatter.format("&field&", "-1m"), Formatter.format("&value&", getConversion(game, key)))).build());
}));
contents.set(0, 3, ClickableItem.of((new ItemBuilder(Material.STONE_BUTTON).setDisplayName(game.translate("werewolf.utils.display", Formatter.format("&field&", "-10s"), Formatter.format("&value&", c))).build()), e -> {
config.moveTimer(key, -10);
e.setCurrentItem(new ItemBuilder(e.getCurrentItem()).setDisplayName(game.translate("werewolf.utils.display", Formatter.format("&field&", "-10s"), Formatter.format("&value&", getConversion(game, key)))).build());
}));
contents.set(0, 5, ClickableItem.of((new ItemBuilder(Material.STONE_BUTTON).setDisplayName(game.translate("werewolf.utils.display", Formatter.format("&field&", "+10s"), Formatter.format("&value&", c))).build()), e -> {
config.moveTimer(key, 10);
e.setCurrentItem(new ItemBuilder(e.getCurrentItem()).setDisplayName(game.translate("werewolf.utils.display", Formatter.format("&field&", "+10s"), Formatter.format("&value&", getConversion(game, key)))).build());
}));
contents.set(0, 6, ClickableItem.of((new ItemBuilder(Material.STONE_BUTTON).setDisplayName(game.translate("werewolf.utils.display", Formatter.format("&field&", "+1m"), Formatter.format("&value&", c))).build()), e -> {
config.moveTimer(key, 60);
e.setCurrentItem(new ItemBuilder(e.getCurrentItem()).setDisplayName(game.translate("werewolf.utils.display", Formatter.format("&field&", "+1m"), Formatter.format("&value&", getConversion(game, key)))).build());
}));
contents.set(0, 7, ClickableItem.of((new ItemBuilder(Material.STONE_BUTTON).setDisplayName(game.translate("werewolf.utils.display", Formatter.format("&field&", "+10m"), Formatter.format("&value&", c))).build()), e -> {
config.moveTimer(key, 600);
e.setCurrentItem(new ItemBuilder(e.getCurrentItem()).setDisplayName(game.translate("werewolf.utils.display", Formatter.format("&field&", "+10m"), Formatter.format("&value&", getConversion(game, key)))).build());
}));
main.getRegisterManager().getTimersRegister().stream().filter(timerRegister -> !timerRegister.getRoleKey().isPresent() || game.isDebug()).forEach(timerRegister -> {
List<String> lore = new ArrayList<>();
timerRegister.getLoreKey().stream().map(game::translate).map(s -> Arrays.stream(s.split("\\n")).collect(Collectors.toList())).forEach(lore::addAll);
if (game.getConfig().getTimerValue(timerRegister.getKey()) >= 0 || game.isDebug()) {
items.add(ClickableItem.of((new ItemBuilder(timerRegister.getKey().equals(key) ? Material.FEATHER : Material.ANVIL).setLore(lore).setDisplayName(game.translate(timerRegister.getKey(), Formatter.timer(Utils.conversion(config.getTimerValue(timerRegister.getKey()))))).build()), e -> this.key = timerRegister.getKey()));
}
});
if (items.size() > 45) {
pagination.setItems(items.toArray(new ClickableItem[0]));
pagination.setItemsPerPage(36);
pagination.addToIterator(contents.newIterator(SlotIterator.Type.HORIZONTAL, 1, 0));
int page = pagination.getPage() + 1;
contents.set(5, 0, null);
contents.set(5, 1, null);
contents.set(5, 3, null);
contents.set(5, 5, null);
contents.set(5, 7, null);
contents.set(5, 8, null);
contents.set(5, 2, ClickableItem.of(new ItemBuilder(Material.ARROW).setDisplayName(game.translate("werewolf.menu.roles.previous", Formatter.format("¤t&", page), Formatter.format("&previous&", pagination.isFirst() ? page : page - 1))).build(), e -> getInventory(player).open(player, pagination.previous().getPage())));
contents.set(5, 6, ClickableItem.of(new ItemBuilder(Material.ARROW).setDisplayName(game.translate("werewolf.menu.roles.next", Formatter.format("¤t&", page), Formatter.format("&next&", pagination.isLast() ? page : page + 1))).build(), e -> getInventory(player).open(player, pagination.next().getPage())));
contents.set(5, 4, ClickableItem.empty(new ItemBuilder(UniversalMaterial.SIGN.getType()).setDisplayName(game.translate("werewolf.menu.roles.current", Formatter.format("¤t&", page), Formatter.format("&sum&", items.size() / 36 + 1))).build()));
} else {
int i = 0;
for (ClickableItem clickableItem : items) {
contents.set(i / 9 + 1, i % 9, clickableItem);
i++;
}
for (int k = i; k < (i / 9 + 1) * 9; k++) {
contents.set(k / 9 + 1, k % 9, null);
}
}
}
use of fr.minuskube.inv.ClickableItem in project WereWolfPlugin by Ph1Lou.
the class GlobalConfigs method update.
@Override
public void update(Player player, InventoryContents contents) {
Main main = JavaPlugin.getPlugin(Main.class);
GameManager game = (GameManager) main.getWereWolfAPI();
Pagination pagination = contents.pagination();
List<ClickableItem> items = new ArrayList<>();
main.getRegisterManager().getConfigsRegister().stream().filter(config1 -> (config1.isAppearInMenu() && !config1.getRoleKey().isPresent()) || game.isDebug()).forEach(configRegister -> items.add(getClickableItem(game, configRegister)));
if (items.size() > 45) {
pagination.setItems(items.toArray(new ClickableItem[0]));
pagination.setItemsPerPage(36);
pagination.addToIterator(contents.newIterator(SlotIterator.Type.HORIZONTAL, 1, 0));
int page = pagination.getPage() + 1;
contents.set(5, 0, null);
contents.set(5, 1, null);
contents.set(5, 3, null);
contents.set(5, 5, null);
contents.set(5, 7, null);
contents.set(5, 8, null);
contents.set(5, 2, ClickableItem.of(new ItemBuilder(Material.ARROW).setDisplayName(game.translate("werewolf.menu.roles.previous", Formatter.format("¤t&", page), Formatter.format("&previous&", pagination.isFirst() ? page : page - 1))).build(), e -> INVENTORY.open(player, pagination.previous().getPage())));
contents.set(5, 6, ClickableItem.of(new ItemBuilder(Material.ARROW).setDisplayName(game.translate("werewolf.menu.roles.next", Formatter.format("¤t&", page), Formatter.format("&next&", pagination.isLast() ? page : page + 1))).build(), e -> INVENTORY.open(player, pagination.next().getPage())));
contents.set(5, 4, ClickableItem.empty(new ItemBuilder(UniversalMaterial.SIGN.getType()).setDisplayName(game.translate("werewolf.menu.roles.current", Formatter.format("¤t&", page), Formatter.format("&sum&", items.size() / 36 + 1))).build()));
} else {
int i = 0;
for (ClickableItem clickableItem : items) {
contents.set(i / 9 + 1, i % 9, clickableItem);
i++;
}
for (int k = i; k < (i / 9 + 1) * 9; k++) {
contents.set(k / 9 + 1, k % 9, null);
}
}
}
use of fr.minuskube.inv.ClickableItem in project WereWolfPlugin by Ph1Lou.
the class AdvancedConfigRole method update.
@Override
public void update(Player player, InventoryContents contents) {
Main main = JavaPlugin.getPlugin(Main.class);
WereWolfAPI game = main.getWereWolfAPI();
Pagination pagination = contents.pagination();
List<ClickableItem> items = new ArrayList<>();
for (RoleRegister roleRegister : main.getRegisterManager().getRolesRegister()) {
for (Function<WereWolfAPI, ClickableItem> item : roleRegister.getConfig()) {
items.add(item.apply(game));
}
items.addAll(getTimersRole(main, roleRegister));
items.addAll(getConfigsRole(main, roleRegister));
}
if (items.size() > 45) {
pagination.setItems(items.toArray(new ClickableItem[0]));
pagination.setItemsPerPage(36);
pagination.addToIterator(contents.newIterator(SlotIterator.Type.HORIZONTAL, 1, 0));
int page = pagination.getPage() + 1;
contents.set(5, 0, null);
contents.set(5, 1, null);
contents.set(5, 3, null);
contents.set(5, 5, null);
contents.set(5, 7, null);
contents.set(5, 8, null);
contents.set(5, 2, ClickableItem.of(new ItemBuilder(Material.ARROW).setDisplayName(game.translate("werewolf.menu.roles.previous", Formatter.format("¤t&", page), Formatter.format("&previous&", pagination.isFirst() ? page : page - 1))).build(), e -> getInventory().open(player, pagination.previous().getPage())));
contents.set(5, 6, ClickableItem.of(new ItemBuilder(Material.ARROW).setDisplayName(game.translate("werewolf.menu.roles.next", Formatter.format("¤t&", page), Formatter.format("&next&", pagination.isLast() ? page : page + 1))).build(), e -> getInventory().open(player, pagination.next().getPage())));
contents.set(5, 4, ClickableItem.empty(new ItemBuilder(UniversalMaterial.SIGN.getType()).setDisplayName(game.translate("werewolf.menu.roles.current", Formatter.format("¤t&", page), Formatter.format("&sum&", items.size() / 36 + 1))).build()));
} else {
int i = 0;
for (ClickableItem clickableItem : items) {
contents.set(i / 9 + 1, i % 9, clickableItem);
i++;
}
for (int k = i; k < (i / 9 + 1) * 9; k++) {
contents.set(k / 9 + 1, k % 9, null);
}
}
}
use of fr.minuskube.inv.ClickableItem in project PGM by PGMDev.
the class PagedInventoryMenu method setupPageContents.
/**
* Automatic setup of page contents
*
* <p>To enable paged setup call in {@link #init(Player, InventoryContents)}
*
* @param player {@link Player} viewing the inventory
* @param contents {@link InventoryContents} of menu
*/
public void setupPageContents(Player player, InventoryContents contents) {
ClickableItem[] items = getPageContents(player);
// If no items are found, display empty contents button
if (items == null || items.length == 0) {
contents.set(getEmptyPageSlot(), getEmptyContentsButton(player));
return;
}
// Setup pagination
Pagination page = contents.pagination();
page.setItems(items);
page.setItemsPerPage(itemsPerPage);
page.addToIterator(contents.newIterator(SlotIterator.Type.HORIZONTAL, startingRow, startingCol));
// Previous button
if (!page.isFirst()) {
contents.set(getPreviousPageSlot(), getPageItem(player, page.getPage() - 1, "menu.page.previous"));
}
// Next button
if (!page.isLast()) {
contents.set(getNextPageSlot(), getPageItem(player, page.getPage() + 1, "menu.page.next"));
}
}
Aggregations