Search in sources :

Example 1 with ClickableItem

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("&current&", 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("&current&", 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("&current&", 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);
        }
    }
}
Also used : UniversalMaterial(fr.ph1lou.werewolfapi.enums.UniversalMaterial) Arrays(java.util.Arrays) SmartInventory(fr.minuskube.inv.SmartInventory) Main(fr.ph1lou.werewolfplugin.Main) WereWolfAPI(fr.ph1lou.werewolfapi.game.WereWolfAPI) Player(org.bukkit.entity.Player) Collectors(java.util.stream.Collectors) GameManager(fr.ph1lou.werewolfplugin.game.GameManager) ItemStack(org.bukkit.inventory.ItemStack) ArrayList(java.util.ArrayList) JavaPlugin(org.bukkit.plugin.java.JavaPlugin) SlotIterator(fr.minuskube.inv.content.SlotIterator) List(java.util.List) InventoryProvider(fr.minuskube.inv.content.InventoryProvider) InventoryContents(fr.minuskube.inv.content.InventoryContents) ItemBuilder(fr.ph1lou.werewolfapi.utils.ItemBuilder) Optional(java.util.Optional) IConfiguration(fr.ph1lou.werewolfapi.game.IConfiguration) Pagination(fr.minuskube.inv.content.Pagination) Formatter(fr.ph1lou.werewolfapi.player.utils.Formatter) ScenarioRegister(fr.ph1lou.werewolfapi.registers.impl.ScenarioRegister) Material(org.bukkit.Material) ClickableItem(fr.minuskube.inv.ClickableItem) GameManager(fr.ph1lou.werewolfplugin.game.GameManager) ClickableItem(fr.minuskube.inv.ClickableItem) ArrayList(java.util.ArrayList) ScenarioRegister(fr.ph1lou.werewolfapi.registers.impl.ScenarioRegister) Pagination(fr.minuskube.inv.content.Pagination) ItemBuilder(fr.ph1lou.werewolfapi.utils.ItemBuilder) IConfiguration(fr.ph1lou.werewolfapi.game.IConfiguration) ItemStack(org.bukkit.inventory.ItemStack) Main(fr.ph1lou.werewolfplugin.Main)

Example 2 with ClickableItem

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("&current&", 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("&current&", 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("&current&", 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);
        }
    }
}
Also used : UniversalMaterial(fr.ph1lou.werewolfapi.enums.UniversalMaterial) Arrays(java.util.Arrays) SmartInventory(fr.minuskube.inv.SmartInventory) WereWolfAPI(fr.ph1lou.werewolfapi.game.WereWolfAPI) Main(fr.ph1lou.werewolfplugin.Main) Player(org.bukkit.entity.Player) Utils(fr.ph1lou.werewolfapi.utils.Utils) Collectors(java.util.stream.Collectors) GameManager(fr.ph1lou.werewolfplugin.game.GameManager) ArrayList(java.util.ArrayList) JavaPlugin(org.bukkit.plugin.java.JavaPlugin) SlotIterator(fr.minuskube.inv.content.SlotIterator) List(java.util.List) InventoryProvider(fr.minuskube.inv.content.InventoryProvider) InventoryContents(fr.minuskube.inv.content.InventoryContents) ItemBuilder(fr.ph1lou.werewolfapi.utils.ItemBuilder) IConfiguration(fr.ph1lou.werewolfapi.game.IConfiguration) Pagination(fr.minuskube.inv.content.Pagination) Formatter(fr.ph1lou.werewolfapi.player.utils.Formatter) Material(org.bukkit.Material) ClickableItem(fr.minuskube.inv.ClickableItem) GameManager(fr.ph1lou.werewolfplugin.game.GameManager) ClickableItem(fr.minuskube.inv.ClickableItem) ArrayList(java.util.ArrayList) Pagination(fr.minuskube.inv.content.Pagination) ItemBuilder(fr.ph1lou.werewolfapi.utils.ItemBuilder) IConfiguration(fr.ph1lou.werewolfapi.game.IConfiguration) Main(fr.ph1lou.werewolfplugin.Main)

Example 3 with ClickableItem

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("&current&", 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("&current&", 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("&current&", 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);
        }
    }
}
Also used : UniversalMaterial(fr.ph1lou.werewolfapi.enums.UniversalMaterial) Arrays(java.util.Arrays) SmartInventory(fr.minuskube.inv.SmartInventory) WereWolfAPI(fr.ph1lou.werewolfapi.game.WereWolfAPI) Main(fr.ph1lou.werewolfplugin.Main) Player(org.bukkit.entity.Player) Collectors(java.util.stream.Collectors) GameManager(fr.ph1lou.werewolfplugin.game.GameManager) ItemStack(org.bukkit.inventory.ItemStack) ArrayList(java.util.ArrayList) JavaPlugin(org.bukkit.plugin.java.JavaPlugin) SlotIterator(fr.minuskube.inv.content.SlotIterator) List(java.util.List) InventoryProvider(fr.minuskube.inv.content.InventoryProvider) InventoryContents(fr.minuskube.inv.content.InventoryContents) ItemBuilder(fr.ph1lou.werewolfapi.utils.ItemBuilder) Optional(java.util.Optional) IConfiguration(fr.ph1lou.werewolfapi.game.IConfiguration) Pagination(fr.minuskube.inv.content.Pagination) Formatter(fr.ph1lou.werewolfapi.player.utils.Formatter) Material(org.bukkit.Material) ClickableItem(fr.minuskube.inv.ClickableItem) ConfigRegister(fr.ph1lou.werewolfapi.registers.impl.ConfigRegister) Pagination(fr.minuskube.inv.content.Pagination) ItemBuilder(fr.ph1lou.werewolfapi.utils.ItemBuilder) GameManager(fr.ph1lou.werewolfplugin.game.GameManager) ClickableItem(fr.minuskube.inv.ClickableItem) ArrayList(java.util.ArrayList) Main(fr.ph1lou.werewolfplugin.Main)

Example 4 with ClickableItem

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("&current&", 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("&current&", 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("&current&", 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);
        }
    }
}
Also used : UniversalMaterial(fr.ph1lou.werewolfapi.enums.UniversalMaterial) Arrays(java.util.Arrays) SmartInventory(fr.minuskube.inv.SmartInventory) Main(fr.ph1lou.werewolfplugin.Main) WereWolfAPI(fr.ph1lou.werewolfapi.game.WereWolfAPI) GetWereWolfAPI(fr.ph1lou.werewolfapi.GetWereWolfAPI) Player(org.bukkit.entity.Player) Utils(fr.ph1lou.werewolfapi.utils.Utils) Function(java.util.function.Function) Collectors(java.util.stream.Collectors) ArrayList(java.util.ArrayList) JavaPlugin(org.bukkit.plugin.java.JavaPlugin) SlotIterator(fr.minuskube.inv.content.SlotIterator) List(java.util.List) InventoryProvider(fr.minuskube.inv.content.InventoryProvider) RoleRegister(fr.ph1lou.werewolfapi.registers.impl.RoleRegister) InventoryContents(fr.minuskube.inv.content.InventoryContents) ItemBuilder(fr.ph1lou.werewolfapi.utils.ItemBuilder) IConfiguration(fr.ph1lou.werewolfapi.game.IConfiguration) Pagination(fr.minuskube.inv.content.Pagination) Formatter(fr.ph1lou.werewolfapi.player.utils.Formatter) Material(org.bukkit.Material) ClickableItem(fr.minuskube.inv.ClickableItem) Pagination(fr.minuskube.inv.content.Pagination) ItemBuilder(fr.ph1lou.werewolfapi.utils.ItemBuilder) ClickableItem(fr.minuskube.inv.ClickableItem) ArrayList(java.util.ArrayList) RoleRegister(fr.ph1lou.werewolfapi.registers.impl.RoleRegister) WereWolfAPI(fr.ph1lou.werewolfapi.game.WereWolfAPI) GetWereWolfAPI(fr.ph1lou.werewolfapi.GetWereWolfAPI) Main(fr.ph1lou.werewolfplugin.Main)

Example 5 with ClickableItem

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"));
    }
}
Also used : Pagination(fr.minuskube.inv.content.Pagination) ClickableItem(fr.minuskube.inv.ClickableItem)

Aggregations

ClickableItem (fr.minuskube.inv.ClickableItem)36 Player (org.bukkit.entity.Player)32 ArrayList (java.util.ArrayList)30 List (java.util.List)29 InventoryContents (fr.minuskube.inv.content.InventoryContents)28 Material (org.bukkit.Material)26 ItemBuilder (gg.projecteden.nexus.utils.ItemBuilder)23 InventoryProvider (fr.minuskube.inv.content.InventoryProvider)22 SmartInventory (fr.minuskube.inv.SmartInventory)21 ItemStack (org.bukkit.inventory.ItemStack)19 Pagination (fr.minuskube.inv.content.Pagination)15 SlotIterator (fr.minuskube.inv.content.SlotIterator)13 MenuUtils (gg.projecteden.nexus.features.menus.MenuUtils)11 Collectors (java.util.stream.Collectors)11 Getter (lombok.Getter)9 UniversalMaterial (fr.ph1lou.werewolfapi.enums.UniversalMaterial)8 IConfiguration (fr.ph1lou.werewolfapi.game.IConfiguration)8 Formatter (fr.ph1lou.werewolfapi.player.utils.Formatter)8 ItemBuilder (fr.ph1lou.werewolfapi.utils.ItemBuilder)8 Main (fr.ph1lou.werewolfplugin.Main)8