Search in sources :

Example 1 with InputReceiver

use of com.bencodez.advancedcore.api.valuerequest.sign.SignMenu.InputReceiver in project AdvancedCore by BenCodez.

the class StringRequester method request.

/**
 * Request.
 *
 * @param player            the player
 * @param method            the method
 * @param currentValue      the current value
 * @param promptText        the prompt text
 * @param options           the options
 * @param allowCustomOption the allow custom option
 * @param listener          the listener
 */
public void request(Player player, InputMethod method, String currentValue, LinkedHashMap<String, ItemStack> options, String promptText, boolean allowCustomOption, StringListener listener) {
    if ((options == null || options.size() == 0) && method.equals(InputMethod.INVENTORY) && allowCustomOption) {
        method = InputMethod.CHAT;
    }
    if (AdvancedCorePlugin.getInstance().getOptions().getDisabledRequestMethods().contains(method.toString())) {
        player.sendMessage("Disabled method: " + method.toString());
    }
    if (method.equals(InputMethod.INVENTORY)) {
        if (options == null) {
            player.sendMessage("There are no choices to choice from to use this method");
            return;
        }
        BInventory inv = new BInventory("Click one of the following:");
        for (Entry<String, ItemStack> entry : options.entrySet()) {
            inv.addButton(inv.getNextSlot(), new BInventoryButton(entry.getKey(), new String[] {}, entry.getValue()) {

                @Override
                public void onClick(ClickEvent clickEvent) {
                    listener.onInput(clickEvent.getPlayer(), clickEvent.getClickedItem().getItemMeta().getDisplayName());
                }
            });
        }
        if (allowCustomOption) {
            inv.addButton(inv.getNextSlot(), new BInventoryButton("&cClick to enter custom value", new String[] {}, new ItemStack(Material.ANVIL)) {

                @Override
                public void onClick(ClickEvent clickEvent) {
                    new ValueRequest().requestString(clickEvent.getPlayer(), listener);
                }
            });
        }
        inv.openInventory(player);
    } else if (method.equals(InputMethod.CHAT)) {
        if (options != null && options.size() != 0) {
            AdvancedCoreUser user = AdvancedCorePlugin.getInstance().getUserManager().getUser(player);
            user.sendMessage("&cClick one of the following options below:");
            PlayerUtils.getInstance().setPlayerMeta(player, "ValueRequestString", listener);
            for (String option : options.keySet()) {
                TextComponent comp = new TextComponent(option);
                comp.setClickEvent(new net.md_5.bungee.api.chat.ClickEvent(Action.RUN_COMMAND, "/" + AdvancedCorePlugin.getInstance().getName() + "valuerequestinput String " + option));
                user.sendJson(comp);
            }
            if (allowCustomOption) {
                String option = "CustomValue";
                TextComponent comp = new TextComponent(option);
                comp.setClickEvent(new net.md_5.bungee.api.chat.ClickEvent(Action.RUN_COMMAND, "/" + AdvancedCorePlugin.getInstance().getName() + "valuerequestinput String " + option));
                user.sendJson(comp);
            }
        } else {
            ConversationFactory convoFactory = new ConversationFactory(AdvancedCorePlugin.getInstance()).withModality(true).withEscapeSequence("cancel").withTimeout(60);
            PromptManager prompt = new PromptManager(promptText + " Current value: " + currentValue, convoFactory);
            prompt.stringPrompt(player, new PromptReturnString() {

                @Override
                public void onInput(ConversationContext context, Conversable conversable, String input) {
                    Bukkit.getScheduler().runTaskAsynchronously(AdvancedCorePlugin.getInstance(), new Runnable() {

                        @Override
                        public void run() {
                            listener.onInput((Player) conversable, input);
                        }
                    });
                }
            });
        }
    } else if (method.equals(InputMethod.BOOK)) {
        new BookManager(player, currentValue, new BookSign() {

            @Override
            public void onBookSign(Player player, String input) {
                listener.onInput(player, input);
            }
        });
    } else if (method.equals(InputMethod.SIGN)) {
        AdvancedCorePlugin.getInstance().getSignMenu().open(player.getUniqueId(), new String[] { "", "", "", "" }, new InputReceiver() {

            @Override
            public void receive(Player player, String[] text) {
                String str = "";
                for (String t : text) {
                    str += t;
                }
                listener.onInput(player, str);
            }
        });
    } else {
        player.sendMessage("Invalid method/disabled method, change your request method");
    }
}
Also used : TextComponent(net.md_5.bungee.api.chat.TextComponent) InputReceiver(com.bencodez.advancedcore.api.valuerequest.sign.SignMenu.InputReceiver) Player(org.bukkit.entity.Player) ConversationFactory(org.bukkit.conversations.ConversationFactory) BInventoryButton(com.bencodez.advancedcore.api.inventory.BInventoryButton) ClickEvent(com.bencodez.advancedcore.api.inventory.BInventory.ClickEvent) Conversable(org.bukkit.conversations.Conversable) BInventory(com.bencodez.advancedcore.api.inventory.BInventory) PromptReturnString(com.bencodez.advancedcore.api.valuerequest.prompt.PromptReturnString) ValueRequest(com.bencodez.advancedcore.api.valuerequest.ValueRequest) PromptReturnString(com.bencodez.advancedcore.api.valuerequest.prompt.PromptReturnString) AdvancedCoreUser(com.bencodez.advancedcore.api.user.AdvancedCoreUser) BookSign(com.bencodez.advancedcore.api.valuerequest.book.BookSign) ItemStack(org.bukkit.inventory.ItemStack) ConversationContext(org.bukkit.conversations.ConversationContext) BookManager(com.bencodez.advancedcore.api.valuerequest.book.BookManager) PromptManager(com.bencodez.advancedcore.api.valuerequest.prompt.PromptManager)

Aggregations

BInventory (com.bencodez.advancedcore.api.inventory.BInventory)1 ClickEvent (com.bencodez.advancedcore.api.inventory.BInventory.ClickEvent)1 BInventoryButton (com.bencodez.advancedcore.api.inventory.BInventoryButton)1 AdvancedCoreUser (com.bencodez.advancedcore.api.user.AdvancedCoreUser)1 ValueRequest (com.bencodez.advancedcore.api.valuerequest.ValueRequest)1 BookManager (com.bencodez.advancedcore.api.valuerequest.book.BookManager)1 BookSign (com.bencodez.advancedcore.api.valuerequest.book.BookSign)1 PromptManager (com.bencodez.advancedcore.api.valuerequest.prompt.PromptManager)1 PromptReturnString (com.bencodez.advancedcore.api.valuerequest.prompt.PromptReturnString)1 InputReceiver (com.bencodez.advancedcore.api.valuerequest.sign.SignMenu.InputReceiver)1 TextComponent (net.md_5.bungee.api.chat.TextComponent)1 Conversable (org.bukkit.conversations.Conversable)1 ConversationContext (org.bukkit.conversations.ConversationContext)1 ConversationFactory (org.bukkit.conversations.ConversationFactory)1 Player (org.bukkit.entity.Player)1 ItemStack (org.bukkit.inventory.ItemStack)1