From 99b6dbdc19494a9cfcb7c309d7a470ae2a7378c5 Mon Sep 17 00:00:00 2001 From: Tristan Vermeesch Date: Sat, 25 Oct 2025 12:57:37 +0200 Subject: [PATCH] chore: replace ConverastionAPI usage with own implementation In order to make editing values in the chat work with Folia, ConversationAPI has been replaced with a simple custom implementation. Folia does not support ConversationAPI at this point in time --- build.gradle | 4 +- java17-build.gradle | 4 +- java21-build.gradle | 4 +- .../playbosswar/com/gui/TextInputManager.java | 118 ++++++++++++++++++ .../com/gui/conditions/ConditionMenu.java | 49 +++----- .../gui/events/ConfigureEventValuesMenu.java | 67 ++++------ .../com/gui/tasks/EditTaskMenu.java | 17 +-- .../gui/tasks/commands/EditCommandMenu.java | 31 ++--- .../general/ClickableTextInputButton.java | 13 +- .../com/gui/tasks/scheduler/EditHourMenu.java | 3 + .../gui/tasks/scheduler/EditIntervalMenu.java | 4 + .../playbosswar/com/language/LanguageKey.java | 2 + src/main/resources/languages/default.json | 2 + src/main/resources/languages/en.json | 2 + src/main/resources/plugin.yml | 2 +- 15 files changed, 206 insertions(+), 116 deletions(-) create mode 100644 src/main/java/me/playbosswar/com/gui/TextInputManager.java diff --git a/build.gradle b/build.gradle index 64c7221e..372a0617 100644 --- a/build.gradle +++ b/build.gradle @@ -9,7 +9,7 @@ java { } group = 'me.playbosswar.com' -version = '8.13.1' +version = '8.13.2' description = 'CommandTimer' repositories { @@ -74,7 +74,7 @@ publishing { maven(MavenPublication) { groupId = 'me.playbosswar.com' artifactId = 'commandtimer' - version = '8.13.1' + version = '8.13.2' from components.java } diff --git a/java17-build.gradle b/java17-build.gradle index b8643413..eacdf107 100644 --- a/java17-build.gradle +++ b/java17-build.gradle @@ -10,7 +10,7 @@ java { group = 'me.playbosswar.com' -version = '8.13.1' +version = '8.13.2' description = 'CommandTimer' repositories { @@ -63,7 +63,7 @@ publishing { maven(MavenPublication) { groupId = 'me.playbosswar.com' artifactId = 'commandtimer-java17' - version = '8.13.1' + version = '8.13.2' from components.java } diff --git a/java21-build.gradle b/java21-build.gradle index bcb9931a..2186608f 100644 --- a/java21-build.gradle +++ b/java21-build.gradle @@ -10,7 +10,7 @@ java { group = 'me.playbosswar.com' -version = '8.13.1' +version = '8.13.2' description = 'CommandTimer' repositories { @@ -67,7 +67,7 @@ publishing { maven(MavenPublication) { groupId = 'me.playbosswar.com' artifactId = 'commandtimer-java21' - version = '8.13.1' + version = '8.13.2' from components.java } } diff --git a/src/main/java/me/playbosswar/com/gui/TextInputManager.java b/src/main/java/me/playbosswar/com/gui/TextInputManager.java new file mode 100644 index 00000000..b114977b --- /dev/null +++ b/src/main/java/me/playbosswar/com/gui/TextInputManager.java @@ -0,0 +1,118 @@ +package me.playbosswar.com.gui; + +import me.playbosswar.com.CommandTimerPlugin; +import me.playbosswar.com.language.LanguageKey; +import me.playbosswar.com.language.LanguageManager; +import me.playbosswar.com.utils.Callback; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerQuitEvent; + +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +public class TextInputManager implements Listener { + private static TextInputManager instance; + private final Map activePrompts = new HashMap<>(); + private final LanguageManager languageManager = CommandTimerPlugin.getLanguageManager(); + + public static TextInputManager getInstance() { + if (instance == null) { + instance = new TextInputManager(); + } + return instance; + } + + private TextInputManager() { + Bukkit.getPluginManager().registerEvents(this, CommandTimerPlugin.getPlugin()); + } + + public void startTextInput(Player player, String prompt, Callback callback) { + startTextInput(player, prompt, callback, null); + } + + public void startTextInput(Player player, LanguageKey languageKey, Callback callback) { + startTextInput(player, languageManager.get(languageKey), callback, null); + } + + public void startTextInput(Player player, String prompt, Callback callback, Callback cancelCallback) { + UUID playerId = player.getUniqueId(); + + if (activePrompts.containsKey(playerId)) { + activePrompts.remove(playerId); + } + + TextInputPrompt textPrompt = new TextInputPrompt(prompt, callback, cancelCallback); + activePrompts.put(playerId, textPrompt); + + player.sendMessage("§6" + prompt); + player.sendMessage("§7" + languageManager.get(LanguageKey.TEXT_INPUT_CANCEL_HINT)); + } + + @EventHandler(priority = EventPriority.HIGHEST) + public void onPlayerChat(AsyncPlayerChatEvent event) { + Player player = event.getPlayer(); + UUID playerId = player.getUniqueId(); + + if (!activePrompts.containsKey(playerId)) { + return; + } + + event.setCancelled(true); + + TextInputPrompt prompt = activePrompts.remove(playerId); + String input = event.getMessage(); + + if (input.equalsIgnoreCase("cancel") || input.equalsIgnoreCase("exit")) { + if (prompt.getCancelCallback() != null) { + prompt.getCancelCallback().execute(null); + } + player.sendMessage("§c" + languageManager.get(LanguageKey.TEXT_INPUT_CANCELLED)); + return; + } + + CommandTimerPlugin.getScheduler().runTask(() -> prompt.getCallback().execute(input)); + } + + @EventHandler + public void onPlayerQuit(PlayerQuitEvent event) { + activePrompts.remove(event.getPlayer().getUniqueId()); + } + + public boolean hasActivePrompt(Player player) { + return activePrompts.containsKey(player.getUniqueId()); + } + + public void cancelPrompt(Player player) { + activePrompts.remove(player.getUniqueId()); + } + + private static class TextInputPrompt { + private final String prompt; + private final Callback callback; + private final Callback cancelCallback; + + public TextInputPrompt(String prompt, Callback callback, Callback cancelCallback) { + this.prompt = prompt; + this.callback = callback; + this.cancelCallback = cancelCallback; + } + + public String getPrompt() { + return prompt; + } + + public Callback getCallback() { + return callback; + } + + public Callback getCancelCallback() { + return cancelCallback; + } + } +} diff --git a/src/main/java/me/playbosswar/com/gui/conditions/ConditionMenu.java b/src/main/java/me/playbosswar/com/gui/conditions/ConditionMenu.java index 26e438fa..eb299cb3 100644 --- a/src/main/java/me/playbosswar/com/gui/conditions/ConditionMenu.java +++ b/src/main/java/me/playbosswar/com/gui/conditions/ConditionMenu.java @@ -15,13 +15,12 @@ import me.playbosswar.com.conditionsengine.validations.SimpleCondition; import me.playbosswar.com.gui.MenuUtils; import me.playbosswar.com.gui.conditions.inputs.ConditionCompareItem; -import me.playbosswar.com.gui.tasks.general.TextInputConversationPrompt; +import me.playbosswar.com.gui.TextInputManager; import me.playbosswar.com.language.LanguageKey; import me.playbosswar.com.language.LanguageManager; import me.playbosswar.com.tasks.Task; import me.playbosswar.com.utils.Callback; import me.playbosswar.com.utils.Items; -import org.bukkit.conversations.ConversationFactory; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -145,46 +144,34 @@ public void init(Player player, InventoryContents contents) { lore); ClickableItem clickableItem = ClickableItem.of(item, e -> { if(neededValue.getType() == Double.class) { - ConversationFactory conversationFactory = - new ConversationFactory(CommandTimerPlugin.getPlugin()) - .withModality(true) - .withFirstPrompt(new TextInputConversationPrompt(data -> { - double text = Double.parseDouble(data); - ((ConditionParamField) conditionParamField).setValue(text); - task.storeInstance(); - new ConditionMenu(task, condition, onClose).INVENTORY.open(player); - })); - conversationFactory.buildConversation(player).begin(); player.closeInventory(); + TextInputManager.getInstance().startTextInput(player, LanguageKey.TEXT_INPUT_DEFAULT, data -> { + double text = Double.parseDouble(data); + ((ConditionParamField) conditionParamField).setValue(text); + task.storeInstance(); + new ConditionMenu(task, condition, onClose).INVENTORY.open(player); + }); return; } if(neededValue.getType() == Integer.class) { - ConversationFactory conversationFactory = - new ConversationFactory(CommandTimerPlugin.getPlugin()) - .withModality(true) - .withFirstPrompt(new TextInputConversationPrompt(data -> { - int text = Integer.parseInt(data); - ((ConditionParamField) conditionParamField).setValue(text); - task.storeInstance(); - new ConditionMenu(task, condition, onClose).INVENTORY.open(player); - })); - conversationFactory.buildConversation(player).begin(); player.closeInventory(); + TextInputManager.getInstance().startTextInput(player, LanguageKey.TEXT_INPUT_DEFAULT, data -> { + int text = Integer.parseInt(data); + ((ConditionParamField) conditionParamField).setValue(text); + task.storeInstance(); + new ConditionMenu(task, condition, onClose).INVENTORY.open(player); + }); return; } if(neededValue.getType() == String.class) { - ConversationFactory conversationFactory = - new ConversationFactory(CommandTimerPlugin.getPlugin()) - .withModality(true) - .withFirstPrompt(new TextInputConversationPrompt(text -> { - ((ConditionParamField) conditionParamField).setValue(text); - task.storeInstance(); - new ConditionMenu(task, condition, onClose).INVENTORY.open(player); - })); - conversationFactory.buildConversation(player).begin(); player.closeInventory(); + TextInputManager.getInstance().startTextInput(player, LanguageKey.TEXT_INPUT_DEFAULT, text -> { + ((ConditionParamField) conditionParamField).setValue(text); + task.storeInstance(); + new ConditionMenu(task, condition, onClose).INVENTORY.open(player); + }); } }); diff --git a/src/main/java/me/playbosswar/com/gui/events/ConfigureEventValuesMenu.java b/src/main/java/me/playbosswar/com/gui/events/ConfigureEventValuesMenu.java index a6124810..2fa4dc67 100644 --- a/src/main/java/me/playbosswar/com/gui/events/ConfigureEventValuesMenu.java +++ b/src/main/java/me/playbosswar/com/gui/events/ConfigureEventValuesMenu.java @@ -13,7 +13,7 @@ import me.playbosswar.com.api.events.EventSimpleCondition; import me.playbosswar.com.conditionsengine.ConditionCompare; import me.playbosswar.com.gui.HorizontalIteratorWithBorder; -import me.playbosswar.com.gui.tasks.general.TextInputConversationPrompt; +import me.playbosswar.com.gui.TextInputManager; import me.playbosswar.com.gui.tasks.scheduler.EditSpecificTimeMenu; import me.playbosswar.com.gui.worlds.WorldSelector; import me.playbosswar.com.language.LanguageKey; @@ -23,7 +23,6 @@ import me.playbosswar.com.utils.Callback; import me.playbosswar.com.utils.Items; import org.bukkit.World; -import org.bukkit.conversations.ConversationFactory; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -76,55 +75,43 @@ public void init(Player player, InventoryContents contents) { return ClickableItem.of(item, e -> { if(e.isLeftClick()) { if(v.getType() == Double.class) { - ConversationFactory conversationFactory = - new ConversationFactory(CommandTimerPlugin.getPlugin()) - .withModality(true) - .withFirstPrompt(new TextInputConversationPrompt(data -> { - double text = Double.parseDouble(data); - EventSimpleCondition simpleCondition = - new EventSimpleCondition<>(v.getName(), text, - ConditionCompare.EQUAL); - condition.setSimpleCondition(simpleCondition); - task.storeInstance(); - new ConfigureEventValuesMenu(task, extension, eventExtension, condition, callback).INVENTORY.open(player); - })); - conversationFactory.buildConversation(player).begin(); player.closeInventory(); + TextInputManager.getInstance().startTextInput(player, LanguageKey.TEXT_INPUT_DEFAULT, data -> { + double text = Double.parseDouble(data); + EventSimpleCondition simpleCondition = + new EventSimpleCondition<>(v.getName(), text, + ConditionCompare.EQUAL); + condition.setSimpleCondition(simpleCondition); + task.storeInstance(); + new ConfigureEventValuesMenu(task, extension, eventExtension, condition, callback).INVENTORY.open(player); + }); return; } if(v.getType() == Integer.class) { - ConversationFactory conversationFactory = - new ConversationFactory(CommandTimerPlugin.getPlugin()) - .withModality(true) - .withFirstPrompt(new TextInputConversationPrompt(data -> { - int text = Integer.parseInt(data); - EventSimpleCondition simpleCondition = - new EventSimpleCondition<>(v.getName(), text, - ConditionCompare.EQUAL); - condition.setSimpleCondition(simpleCondition); - task.storeInstance(); - new ConfigureEventValuesMenu(task, extension, eventExtension, condition, callback).INVENTORY.open(player); - })); - conversationFactory.buildConversation(player).begin(); player.closeInventory(); + TextInputManager.getInstance().startTextInput(player, LanguageKey.TEXT_INPUT_DEFAULT, data -> { + int text = Integer.parseInt(data); + EventSimpleCondition simpleCondition = + new EventSimpleCondition<>(v.getName(), text, + ConditionCompare.EQUAL); + condition.setSimpleCondition(simpleCondition); + task.storeInstance(); + new ConfigureEventValuesMenu(task, extension, eventExtension, condition, callback).INVENTORY.open(player); + }); return; } if(v.getType() == String.class) { - ConversationFactory conversationFactory = - new ConversationFactory(CommandTimerPlugin.getPlugin()) - .withModality(true) - .withFirstPrompt(new TextInputConversationPrompt(text -> { - EventSimpleCondition simpleCondition = - new EventSimpleCondition<>(v.getName(), text, - ConditionCompare.EQUAL); - condition.setSimpleCondition(simpleCondition); - task.storeInstance(); - new ConfigureEventValuesMenu(task, extension, eventExtension, condition, callback).INVENTORY.open(player); - })); - conversationFactory.buildConversation(player).begin(); player.closeInventory(); + TextInputManager.getInstance().startTextInput(player, LanguageKey.TEXT_INPUT_DEFAULT, text -> { + EventSimpleCondition simpleCondition = + new EventSimpleCondition<>(v.getName(), text, + ConditionCompare.EQUAL); + condition.setSimpleCondition(simpleCondition); + task.storeInstance(); + new ConfigureEventValuesMenu(task, extension, eventExtension, condition, callback).INVENTORY.open(player); + }); } if(v.getType() == World.class) { diff --git a/src/main/java/me/playbosswar/com/gui/tasks/EditTaskMenu.java b/src/main/java/me/playbosswar/com/gui/tasks/EditTaskMenu.java index 1f04e8e8..f7592376 100644 --- a/src/main/java/me/playbosswar/com/gui/tasks/EditTaskMenu.java +++ b/src/main/java/me/playbosswar/com/gui/tasks/EditTaskMenu.java @@ -10,14 +10,13 @@ import me.playbosswar.com.gui.events.MainEventsMenu; import me.playbosswar.com.gui.tasks.commands.AllCommandsMenu; import me.playbosswar.com.gui.tasks.general.GeneralLimitsMenu; -import me.playbosswar.com.gui.tasks.general.TextInputConversationPrompt; +import me.playbosswar.com.gui.TextInputManager; import me.playbosswar.com.gui.tasks.scheduler.MainScheduleMenu; import me.playbosswar.com.language.LanguageKey; import me.playbosswar.com.language.LanguageManager; import me.playbosswar.com.tasks.Task; import me.playbosswar.com.utils.Callback; import me.playbosswar.com.utils.Items; -import org.bukkit.conversations.ConversationFactory; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -40,19 +39,15 @@ public EditTaskMenu(Task task) { public void init(Player player, InventoryContents contents) { contents.fillBorders(ClickableItem.empty(XMaterial.BLUE_STAINED_GLASS_PANE.parseItem())); - ConversationFactory conversationFactory = new ConversationFactory(CommandTimerPlugin.getPlugin()) - .withModality(true) - .withFirstPrompt(new TextInputConversationPrompt(LanguageKey.NEW_TASK_INPUT, text -> { - task.setName(text); - task.storeInstance(); - new EditTaskMenu(task).INVENTORY.open(player); - })); - String[] nameLore = languageManager.getList(LanguageKey.CHANGE_TASK_DISPLAY_NAME_LORE).toArray(new String[]{}); ItemStack nameItem = Items.generateItem(LanguageKey.CHANGE_TASK_DISPLAY_NAME_TITLE, XMaterial.PAPER, nameLore); ClickableItem clickableNameItem = ClickableItem.of(nameItem, e -> { player.closeInventory(); - conversationFactory.buildConversation(player).begin(); + TextInputManager.getInstance().startTextInput(player, LanguageKey.NEW_TASK_INPUT, text -> { + task.setName(text); + task.storeInstance(); + new EditTaskMenu(task).INVENTORY.open(player); + }); }); contents.set(1, 1, clickableNameItem); diff --git a/src/main/java/me/playbosswar/com/gui/tasks/commands/EditCommandMenu.java b/src/main/java/me/playbosswar/com/gui/tasks/commands/EditCommandMenu.java index dc5495ff..88719ad9 100644 --- a/src/main/java/me/playbosswar/com/gui/tasks/commands/EditCommandMenu.java +++ b/src/main/java/me/playbosswar/com/gui/tasks/commands/EditCommandMenu.java @@ -8,14 +8,13 @@ import me.playbosswar.com.CommandTimerPlugin; import me.playbosswar.com.enums.CommandExecutionMode; import me.playbosswar.com.enums.Gender; -import me.playbosswar.com.gui.tasks.general.TextInputConversationPrompt; +import me.playbosswar.com.gui.TextInputManager; import me.playbosswar.com.gui.tasks.scheduler.EditIntervalMenu; import me.playbosswar.com.language.LanguageKey; import me.playbosswar.com.language.LanguageManager; import me.playbosswar.com.tasks.Task; import me.playbosswar.com.tasks.TaskCommand; import me.playbosswar.com.utils.Items; -import org.bukkit.conversations.ConversationFactory; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -47,18 +46,14 @@ public void init(Player player, InventoryContents contents) { languageManager.get(LanguageKey.GUI_CURRENT, taskCommand.getCommand()) }; - ConversationFactory conversationFactory = new ConversationFactory(CommandTimerPlugin.getPlugin()) - .withModality(true) - .withFirstPrompt(new TextInputConversationPrompt(LanguageKey.ENTER_COMMAND_INPUT, text -> { - taskCommand.setCommand(text); - task.storeInstance(); - new EditCommandMenu(task, taskCommand).INVENTORY.open(player); - })); - ItemStack editCommandItem = Items.generateItem(LanguageKey.CHANGE_COMMAND, XMaterial.PAPER, editCommandLore); ClickableItem clickableCommandItem = ClickableItem.of(editCommandItem, e -> { - conversationFactory.buildConversation(player).begin(); player.closeInventory(); + TextInputManager.getInstance().startTextInput(player, LanguageKey.ENTER_COMMAND_INPUT, text -> { + taskCommand.setCommand(text); + task.storeInstance(); + new EditCommandMenu(task, taskCommand).INVENTORY.open(player); + }); }); contents.set(1, 1, clickableCommandItem); @@ -76,17 +71,13 @@ public void init(Player player, InventoryContents contents) { languageManager.getList(LanguageKey.DESCRIPTION_LORE, taskCommand.getDescription()) .toArray(new String[] {})); - ConversationFactory descriptionConversationHistory = new ConversationFactory(CommandTimerPlugin.getPlugin()) - .withModality(true) - .withFirstPrompt(new TextInputConversationPrompt(LanguageKey.EDIT_COMMAND_DESCRIPTION, text -> { - taskCommand.setDescription(text); - task.storeInstance(); - new EditCommandMenu(task, taskCommand).INVENTORY.open(player); - })); - ClickableItem clickableDescriptionItem = ClickableItem.of(descriptionItem, e -> { - descriptionConversationHistory.buildConversation(player).begin(); player.closeInventory(); + TextInputManager.getInstance().startTextInput(player, LanguageKey.EDIT_COMMAND_DESCRIPTION, text -> { + taskCommand.setDescription(text); + task.storeInstance(); + new EditCommandMenu(task, taskCommand).INVENTORY.open(player); + }); }); contents.set(1, 3, clickableDescriptionItem); diff --git a/src/main/java/me/playbosswar/com/gui/tasks/general/ClickableTextInputButton.java b/src/main/java/me/playbosswar/com/gui/tasks/general/ClickableTextInputButton.java index 8a4ffe39..64ce82e2 100644 --- a/src/main/java/me/playbosswar/com/gui/tasks/general/ClickableTextInputButton.java +++ b/src/main/java/me/playbosswar/com/gui/tasks/general/ClickableTextInputButton.java @@ -1,18 +1,20 @@ package me.playbosswar.com.gui.tasks.general; import fr.minuskube.inv.ClickableItem; -import me.playbosswar.com.CommandTimerPlugin; +import me.playbosswar.com.language.LanguageKey; import me.playbosswar.com.utils.Callback; -import org.bukkit.conversations.ConversationFactory; +import me.playbosswar.com.gui.TextInputManager; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; public class ClickableTextInputButton { private final ItemStack item; + private final LanguageKey inputText; private final Callback callback; - public ClickableTextInputButton(ItemStack item, Callback callback) { + public ClickableTextInputButton(ItemStack item, LanguageKey inputText, Callback callback) { this.item = item; + this.inputText = inputText; this.callback = callback; } @@ -21,10 +23,7 @@ public ClickableItem getItem() { } public void open(Player player) { - ConversationFactory conversationFactory = new ConversationFactory(CommandTimerPlugin.getPlugin()) - .withModality(true) - .withFirstPrompt(new TextInputConversationPrompt(callback)); - conversationFactory.buildConversation(player).begin(); player.closeInventory(); + TextInputManager.getInstance().startTextInput(player, inputText, callback); } } diff --git a/src/main/java/me/playbosswar/com/gui/tasks/scheduler/EditHourMenu.java b/src/main/java/me/playbosswar/com/gui/tasks/scheduler/EditHourMenu.java index 50601f92..0c88834e 100644 --- a/src/main/java/me/playbosswar/com/gui/tasks/scheduler/EditHourMenu.java +++ b/src/main/java/me/playbosswar/com/gui/tasks/scheduler/EditHourMenu.java @@ -65,6 +65,7 @@ public void init(Player player, InventoryContents contents) { languageManager.get(LanguageKey.HOURS_LABEL, String.valueOf(usedTime.getHour())), XMaterial.CLOCK, clockLore), + LanguageKey.TEXT_INPUT_DEFAULT, data -> { int hours = Integer.parseInt(data); setTime(task, finalUsedTime.withHour(hours)); @@ -87,6 +88,7 @@ public void init(Player player, InventoryContents contents) { languageManager.get(LanguageKey.MINUTES_LABEL, String.valueOf(usedTime.getMinute())), XMaterial.CLOCK, clockLore), + LanguageKey.TEXT_INPUT_DEFAULT, data -> { int minutes = Integer.parseInt(data); setTime(task, finalUsedTime.withMinute(minutes)); @@ -108,6 +110,7 @@ public void init(Player player, InventoryContents contents) { Items.generateItem(languageManager.get(LanguageKey.SECONDS_LABEL, String.valueOf(usedTime.getSecond())), XMaterial.CLOCK, clockLore), + LanguageKey.TEXT_INPUT_DEFAULT, data -> { int seconds = Integer.parseInt(data); setTime(task, finalUsedTime.withSecond(seconds)); diff --git a/src/main/java/me/playbosswar/com/gui/tasks/scheduler/EditIntervalMenu.java b/src/main/java/me/playbosswar/com/gui/tasks/scheduler/EditIntervalMenu.java index 460513c0..2fd2b0af 100644 --- a/src/main/java/me/playbosswar/com/gui/tasks/scheduler/EditIntervalMenu.java +++ b/src/main/java/me/playbosswar/com/gui/tasks/scheduler/EditIntervalMenu.java @@ -52,6 +52,7 @@ public void init(Player player, InventoryContents contents) { Items.generateItem(languageManager.get(LanguageKey.DAYS_LABEL, String.valueOf(interval.getDays())), XMaterial.CLOCK, clockLore), + LanguageKey.TEXT_INPUT_DEFAULT, data -> { int days = Integer.parseInt(data); interval.setDays(days); @@ -76,6 +77,7 @@ public void init(Player player, InventoryContents contents) { Items.generateItem(languageManager.get(LanguageKey.HOURS_LABEL, String.valueOf(interval.getHours())), XMaterial.CLOCK, clockLore), + LanguageKey.TEXT_INPUT_DEFAULT, data -> { int hours = Integer.parseInt(data); interval.setHours(hours); @@ -101,6 +103,7 @@ public void init(Player player, InventoryContents contents) { String.valueOf(interval.getMinutes())), XMaterial.CLOCK, clockLore), + LanguageKey.TEXT_INPUT_DEFAULT, data -> { int minutes = Integer.parseInt(data); interval.setMinutes(minutes); @@ -126,6 +129,7 @@ public void init(Player player, InventoryContents contents) { String.valueOf(interval.getSeconds())), XMaterial.CLOCK, clockLore), + LanguageKey.TEXT_INPUT_DEFAULT, data -> { int seconds = Integer.parseInt(data); interval.setSeconds(seconds); diff --git a/src/main/java/me/playbosswar/com/language/LanguageKey.java b/src/main/java/me/playbosswar/com/language/LanguageKey.java index d794901c..fc0ea01c 100644 --- a/src/main/java/me/playbosswar/com/language/LanguageKey.java +++ b/src/main/java/me/playbosswar/com/language/LanguageKey.java @@ -41,6 +41,8 @@ public enum LanguageKey { NOT_SET, SET_VALUE, TEXT_INPUT_DEFAULT, + TEXT_INPUT_CANCEL_HINT, + TEXT_INPUT_CANCELLED, TYPE, CURRENT_CONFIGURATION, AUTHOR, diff --git a/src/main/resources/languages/default.json b/src/main/resources/languages/default.json index 08a9d2ad..9fe4e905 100644 --- a/src/main/resources/languages/default.json +++ b/src/main/resources/languages/default.json @@ -36,6 +36,8 @@ "configure_condition": "&bConfigure condition", "add_condition": "&bAdd condition", "text_input_default": "Enter your value:", + "text_input_cancel_hint": "Type 'cancel' or 'exit' to cancel", + "text_input_cancelled": "Text input cancelled", "type": "&7Type: &e$1", "current_configuration": "&bCurrent configuration:", "author": "&7Author: &e$1", diff --git a/src/main/resources/languages/en.json b/src/main/resources/languages/en.json index 08a9d2ad..9fe4e905 100644 --- a/src/main/resources/languages/en.json +++ b/src/main/resources/languages/en.json @@ -36,6 +36,8 @@ "configure_condition": "&bConfigure condition", "add_condition": "&bAdd condition", "text_input_default": "Enter your value:", + "text_input_cancel_hint": "Type 'cancel' or 'exit' to cancel", + "text_input_cancelled": "Text input cancelled", "type": "&7Type: &e$1", "current_configuration": "&bCurrent configuration:", "author": "&7Author: &e$1", diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 718e0524..97633f72 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ main: me.playbosswar.com.CommandTimerPlugin name: "CommandTimer" -version: "8.13.1" +version: "8.13.2" description: "Schedule commands like you want" author: PlayBossWar api-version: 1.13