Skip to content

Commit 664c96c

Browse files
committed
post command ignore cancel timeout
1 parent c3bdfe1 commit 664c96c

File tree

1 file changed

+9
-10
lines changed

1 file changed

+9
-10
lines changed

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

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -237,23 +237,22 @@ public PromptParser getParser() {
237237
public void cancel(CommandSender sender, int queueHash, CancelReason reason) {
238238
if (!promptRegistry.containsKey(sender))
239239
return;
240+
plugin.getPluginLogger().debug("Canceling prompt queue for %s. (Reason: %s)", sender.getName(), reason.name());
240241
plugin.getPluginLogger().debug("queueHash: " + queueHash);
241242
plugin.getPluginLogger().debug("registryQueueHash: " + promptRegistry.get(sender).hashCode());
243+
242244
if (queueHash != -1 && queueHash != promptRegistry.get(sender).hashCode())
243245
return;
246+
244247
var queue = promptRegistry.get(sender);
245-
if (queue.containsPCM()) {
246-
queue.getPostCommandMetas().forEach(pcm -> {
247-
if (!pcm.isOnCancel())
248-
return;
249-
250-
if (pcm.delayTicks() > 0)
251-
plugin.getServer().getScheduler().runTaskLater(plugin, () -> queue.execPCM(pcm, (Player) sender),
252-
pcm.delayTicks());
253-
else
254-
queue.execPCM(pcm, (Player) sender);
248+
if (reason != CancelReason.Timeout && queue.containsPCM()) {
249+
var filtered = queue.getPostCommandMetas().stream().filter(PromptQueue.PostCommandMeta::isOnCancel);
250+
filtered.forEach(pcm -> {
251+
plugin.getPluginLogger().debug("Dispatching PCM: %s", pcm);
252+
Bukkit.getScheduler().runTaskLater(plugin, () -> queue.execPCM(pcm, (Player) sender), pcm.delayTicks());
255253
});
256254
}
255+
257256
promptRegistry.unregister(sender);
258257
if (plugin.getConfiguration().showCancelled())
259258
plugin.getMessenger().sendMessage(sender, plugin.getI18N().getProperty("PromptCancel"));

0 commit comments

Comments
 (0)