Skip to content

Commit c3bdfe1

Browse files
committed
implement cancel reason
1 parent c3f5ac2 commit c3bdfe1

File tree

8 files changed

+30
-16
lines changed

8 files changed

+30
-16
lines changed

src/main/java/com/cyr1en/commandprompter/commands/MainCommand.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.cyr1en.commandprompter.commands;
22

33
import com.cyr1en.commandprompter.CommandPrompter;
4+
import com.cyr1en.commandprompter.prompt.PromptManager;
45
import dev.jorel.commandapi.CommandAPICommand;
56
import dev.jorel.commandapi.executors.CommandArguments;
67
import org.bukkit.command.CommandSender;
@@ -71,7 +72,7 @@ public void exec(CommandSender sender, CommandArguments args) {
7172
return;
7273
}
7374

74-
plugin.getPromptManager().cancel(sender);
75+
plugin.getPromptManager().cancel(sender, PromptManager.CancelReason.Manual);
7576
}
7677

7778
}

src/main/java/com/cyr1en/commandprompter/hook/hooks/CarbonChatHook.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public void handle(CarbonChatEvent event) {
4646
var cancel = getPlugin().getConfiguration().cancelKeyword();
4747

4848
if (cancel.equalsIgnoreCase(serializedMsg)) {
49-
promptManager.cancel(player);
49+
promptManager.cancel(player, PromptManager.CancelReason.Manual);
5050
event.message(Component.empty());
5151
return;
5252
}

src/main/java/com/cyr1en/commandprompter/prompt/PromptManager.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,8 @@ public Class<? extends Prompt> put(String key, Class<? extends Prompt> value) {
116116
public void parse(PromptContext context) {
117117
var queueHash = promptParser.parsePrompts(context);
118118
var timeout = plugin.getConfiguration().promptTimeout();
119-
scheduler.runTaskLater(plugin, () -> cancel(context.getPromptedPlayer(), queueHash), 20L * timeout);
119+
scheduler.runTaskLater(plugin, () ->
120+
cancel(context.getPromptedPlayer(), queueHash, CancelReason.Timeout), 20L * timeout);
120121
}
121122

122123
public void sendPrompt(CommandSender sender) {
@@ -233,7 +234,7 @@ public PromptParser getParser() {
233234
return promptParser;
234235
}
235236

236-
public void cancel(CommandSender sender, int queueHash) {
237+
public void cancel(CommandSender sender, int queueHash, CancelReason reason) {
237238
if (!promptRegistry.containsKey(sender))
238239
return;
239240
plugin.getPluginLogger().debug("queueHash: " + queueHash);
@@ -259,8 +260,8 @@ public void cancel(CommandSender sender, int queueHash) {
259260
plugin.getPluginLogger().debug("Command completion called for: %s", sender.getName());
260261
}
261262

262-
public void cancel(CommandSender sender) {
263-
cancel(sender, -1);
263+
public void cancel(CommandSender sender, CancelReason reason) {
264+
cancel(sender, -1, reason);
264265
}
265266

266267
public Pattern getArgumentPattern(String... additionalKeys) {
@@ -283,4 +284,12 @@ public void clearPromptRegistry() {
283284
public CommandPrompter getPlugin() {
284285
return plugin;
285286
}
287+
288+
public static enum CancelReason {
289+
GUIExit,
290+
GUIErr,
291+
Manual,
292+
Timeout,
293+
BlankInput
294+
}
286295
}

src/main/java/com/cyr1en/commandprompter/prompt/prompts/AnvilPrompt.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
import org.bukkit.ChatColor;
3434
import org.bukkit.Material;
3535
import org.bukkit.enchantments.Enchantment;
36-
import org.bukkit.entity.Player;
3736
import org.bukkit.inventory.ItemFlag;
3837
import org.bukkit.inventory.ItemStack;
3938
import org.jetbrains.annotations.NotNull;
@@ -44,6 +43,8 @@
4443
import java.util.Objects;
4544
import java.util.concurrent.atomic.AtomicBoolean;
4645

46+
import static com.cyr1en.commandprompter.prompt.PromptManager.CancelReason;
47+
4748
public class AnvilPrompt extends AbstractPrompt {
4849

4950
public static char BLANK_CHAR = '\u00A0'; // No-Break Space
@@ -68,7 +69,7 @@ private AnvilGUI.Builder makeAnvil(List<String> parts, ItemStack item, ItemStack
6869
builder.onClose(p -> {
6970
if (isComplete.get())
7071
return;
71-
getPromptManager().cancel(p.getPlayer());
72+
getPromptManager().cancel(p.getPlayer(), CancelReason.GUIExit);
7273
});
7374

7475
var promptText = getPlugin().getPromptConfig().promptMessage();
@@ -98,7 +99,7 @@ private AnvilGUI.Builder getBuilder(AtomicBoolean isComplete) {
9899
builder.onClick((slot, stateSnapshot) -> {
99100
var cancelEnabled = getPlugin().getPromptConfig().enableCancelItem();
100101
if (slot == AnvilGUI.Slot.INPUT_RIGHT && cancelEnabled) {
101-
getPromptManager().cancel(stateSnapshot.getPlayer());
102+
getPromptManager().cancel(stateSnapshot.getPlayer(), CancelReason.Manual);
102103
return Collections.singletonList(AnvilGUI.ResponseAction.close());
103104
}
104105

@@ -109,7 +110,7 @@ private AnvilGUI.Builder getBuilder(AtomicBoolean isComplete) {
109110
ChatColor.translateAlternateColorCodes('&', stateSnapshot.getText()));
110111
var cancelKeyword = getPlugin().getConfiguration().cancelKeyword();
111112
if (cancelKeyword.equalsIgnoreCase(message)) {
112-
getPromptManager().cancel(stateSnapshot.getPlayer());
113+
getPromptManager().cancel(stateSnapshot.getPlayer(), CancelReason.Manual);
113114
return Collections.singletonList(AnvilGUI.ResponseAction.close());
114115
}
115116

src/main/java/com/cyr1en/commandprompter/prompt/prompts/ChatPrompt.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ public void onResponse(Player player, String msg, Cancellable event) {
159159
var cancelKeyword = plugin.getConfiguration().cancelKeyword();
160160

161161
if (cancelKeyword.equalsIgnoreCase(message))
162-
manager.cancel(player);
162+
manager.cancel(player, PromptManager.CancelReason.Manual);
163163

164164
var queue = manager.getPromptRegistry().get(player);
165165
if (Objects.isNull(queue))

src/main/java/com/cyr1en/commandprompter/prompt/prompts/PlayerUIPrompt.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import com.cyr1en.commandprompter.CommandPrompter;
2828
import com.cyr1en.commandprompter.hook.hooks.VanishHook;
2929
import com.cyr1en.commandprompter.prompt.PromptContext;
30+
import com.cyr1en.commandprompter.prompt.PromptManager;
3031
import com.cyr1en.commandprompter.prompt.PromptParser;
3132
import com.cyr1en.commandprompter.prompt.ui.CacheFilter;
3233
import com.cyr1en.commandprompter.prompt.ui.HeadCache;
@@ -157,7 +158,7 @@ private int getCapturingGroup(CacheFilter cacheFilter) {
157158
private void send(Player p) {
158159
gui.setOnClose(e -> {
159160
if (!isSearching)
160-
getPromptManager().cancel(p);
161+
getPromptManager().cancel(p, PromptManager.CancelReason.Manual);
161162
});
162163

163164
var skullPane = new PaginatedPane(0, 0, 9, size - 1);

src/main/java/com/cyr1en/commandprompter/prompt/prompts/SignPrompt.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.cyr1en.commandprompter.CommandPrompter;
44
import com.cyr1en.commandprompter.prompt.PromptContext;
5+
import com.cyr1en.commandprompter.prompt.PromptManager;
56
import com.cyr1en.commandprompter.prompt.PromptParser;
67
import com.cyr1en.commandprompter.util.Util;
78
import com.cyr1en.kiso.utils.FastStrings;
@@ -53,7 +54,7 @@ else if (parts.size() > 4)
5354
gui.open((Player) getContext().getPromptedPlayer());
5455
} catch (SignGUIVersionException e) {
5556
getPlugin().getPluginLogger().err("SignGUI version exception: " + e.getMessage());
56-
getPromptManager().cancel(getContext().getPromptedPlayer());
57+
getPromptManager().cancel(getContext().getPromptedPlayer(), PromptManager.CancelReason.GUIErr);
5758
}
5859
}
5960

@@ -77,13 +78,13 @@ private List<SignGUIAction> process(List<String> parts, Player p, String[] s) {
7778
// If the sign contains the same message as the prompt
7879
// we'll consider the command completion cancelled.
7980
if (response.isBlank()) {
80-
getPromptManager().cancel(p);
81+
getPromptManager().cancel(p, PromptManager.CancelReason.BlankInput);
8182
return Collections.emptyList();
8283
}
8384

8485
var cancelKeyword = getPlugin().getConfiguration().cancelKeyword();
8586
if (cancelKeyword.equalsIgnoreCase(response)) {
86-
getPromptManager().cancel(p);
87+
getPromptManager().cancel(p, PromptManager.CancelReason.Manual);
8788
return Collections.emptyList();
8889
}
8990
var ctx = new PromptContext.Builder()

src/main/java/com/cyr1en/commandprompter/prompt/ui/inventory/ControlPane.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.cyr1en.commandprompter.CommandPrompter;
44
import com.cyr1en.commandprompter.prompt.PromptContext;
5+
import com.cyr1en.commandprompter.prompt.PromptManager;
56
import com.cyr1en.commandprompter.prompt.prompts.PlayerUIPrompt;
67
import com.cyr1en.commandprompter.util.ServerUtil;
78
import com.cyr1en.commandprompter.util.Util;
@@ -92,7 +93,7 @@ private void setupButtons() {
9293
addItem(plugin.getPromptConfig().cancelText(), cancelIS, cancelLoc, cancelCMD,
9394
c -> {
9495
c.setCancelled(true);
95-
plugin.getPromptManager().cancel(ctx.getPromptedPlayer());
96+
plugin.getPromptManager().cancel(ctx.getPromptedPlayer(), PromptManager.CancelReason.Manual);
9697
((Player) ctx.getPromptedPlayer()).closeInventory();
9798
});
9899

0 commit comments

Comments
 (0)