Skip to content

Commit 82f734b

Browse files
authored
Merge pull request #67 from CyR1en/development
Version 2.15.0
2 parents 2e2cf3e + 664c96c commit 82f734b

File tree

12 files changed

+65
-46
lines changed

12 files changed

+65
-46
lines changed

build.gradle

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ java {
3939

4040
PluginManifest pluginManifest = [
4141
name : 'CommandPrompter',
42-
version : new Version(major: 2, minor: 14, patch: 0, fix: 0, classifier: 'SNAPSHOT'),
42+
version : new Version(major: 2, minor: 15, patch: 0, fix: 0, classifier: 'SNAPSHOT'),
4343
author : 'CyR1en',
4444
description: 'Making Commands More Interactive!',
4545
entry : 'com.cyr1en.commandprompter.CommandPrompter'
@@ -71,12 +71,12 @@ dependencies {
7171
implementation "net.kyori:adventure-text-minimessage:4.21.0"
7272
implementation 'org.openjdk.nashorn:nashorn-core:15.4'
7373

74-
implementation "dev.jorel:commandapi-bukkit-shade:10.1.1"
74+
implementation "dev.jorel:commandapi-bukkit-shade:10.1.2"
7575

7676
// UI libs
77-
implementation 'net.wesjd:anvilgui:1.10.6-SNAPSHOT'
78-
implementation 'com.github.stefvanschie.inventoryframework:IF:0.11.2'
79-
implementation 'de.rapha149.signgui:signgui:2.5.2'
77+
implementation 'net.wesjd:anvilgui:1.10.8-SNAPSHOT'
78+
implementation 'com.github.stefvanschie.inventoryframework:IF:0.11.3'
79+
implementation 'de.rapha149.signgui:signgui:2.5.4'
8080

8181
compileOnly "net.kyori:adventure-text-serializer-legacy:4.21.0"
8282
compileOnly "net.kyori:adventure-text-serializer-plain:4.21.0"

src/main/java/com/cyr1en/commandprompter/PluginLogger.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,14 @@ public PluginLogger(CommandPrompter plugin, String prefix) {
2323
this.isFancy = plugin.getConfiguration().fancyLogger();
2424
this.debugMode = plugin.getConfiguration().debugMode();
2525

26-
// Spread love not war <3
27-
normalGrad = new ColorGradient(new Color(101, 78, 163), new Color(234, 175, 200));
28-
29-
debugGrad = new ColorGradient(new Color(255, 96, 109), new Color(255, 195, 113));
26+
normalGrad = new ColorGradient(new Color(198, 160, 246), new Color(138, 173, 244));
27+
debugGrad = new ColorGradient(new Color(238, 153, 160), new Color(245, 169, 127));
3028

3129
setPrefix(prefix);
3230
}
3331

3432
public void setPrefix(String prefix) {
35-
var sep = isFancy ? new Ansi().fgRgb(153, 214, 90).a(">>").reset().toString() : ">>";
33+
var sep = isFancy ? new Ansi().fgRgb(166, 218, 149).a(">>").reset().toString() : ">>";
3634
var normal = isFancy ? makeGradient(prefix, normalGrad) : prefix;
3735
var debug = isFancy ? makeGradient(prefix + "-" + "Debug", debugGrad) : prefix + "-" + "Debug";
3836
this.prefix = String.format("%s %s ", normal, sep);
@@ -84,7 +82,7 @@ public void debug(String msg, Object... args) {
8482
msg = callerAvailable ? String.format("[%s] - %s", caller.getSimpleName(), msg)
8583
: Objects.isNull(lastDebugClass) ? msg
8684
: String.format("[%s?] - %s", lastDebugClass.getSimpleName(), msg);
87-
var str = new Ansi().fgRgb(255, 195, 113).a(msg).reset().toString();
85+
var str = new Ansi().fgRgb(238, 212, 159).a(msg).reset().toString();
8886
log(debugPrefix, Level.INFO, str, args);
8987
}
9088
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ public void register() {
8585

8686
public void doCommand(CommandSender sender, Player targetPlayer, String command, CommandArguments args) {
8787
var context = new PromptContext.Builder()
88-
.setCommandSender(targetPlayer)
88+
.setCommandSender(sender)
8989
.setPromptedPlayer(targetPlayer)
9090
.setContent(command)
9191
.setConsoleDelegate(true)
@@ -120,7 +120,7 @@ public void register() {
120120
@Override
121121
public void doCommand(CommandSender sender, Player targetPlayer, String command, CommandArguments args) {
122122
var context = new PromptContext.Builder()
123-
.setCommandSender(targetPlayer)
123+
.setCommandSender(sender)
124124
.setPromptedPlayer(targetPlayer)
125125
.setContent(command)
126126
.setPaKey(args.getRaw("permission"))

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: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public class PromptManager extends HashMap<String, Class<? extends Prompt>> {
6767

6868
private static final HashMap<Class<? extends Prompt>, Version> supportTable;
6969

70-
private static final Version LATEST = Version.parse("1.21.7");
70+
private static final Version LATEST = Version.parse("1.21.8");
7171
// Arbitrary 10 version, that means this should work until minecraft v10 lol "any".
7272
private static final Version ANY = Version.parse("10");
7373

@@ -109,14 +109,15 @@ public Class<? extends Prompt> put(String key, Class<? extends Prompt> value) {
109109

110110
var ret = super.put(key, value);
111111
plugin.getPluginLogger().info("Registered " +
112-
new Ansi().fgRgb(153, 214, 90).a(value.getSimpleName()).reset());
112+
new Ansi().fgRgb(166, 218, 149).a(value.getSimpleName()).reset());
113113
return ret;
114114
}
115115

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,34 +234,33 @@ 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;
240+
plugin.getPluginLogger().debug("Canceling prompt queue for %s. (Reason: %s)", sender.getName(), reason.name());
239241
plugin.getPluginLogger().debug("queueHash: " + queueHash);
240242
plugin.getPluginLogger().debug("registryQueueHash: " + promptRegistry.get(sender).hashCode());
243+
241244
if (queueHash != -1 && queueHash != promptRegistry.get(sender).hashCode())
242245
return;
246+
243247
var queue = promptRegistry.get(sender);
244-
if (queue.containsPCM()) {
245-
queue.getPostCommandMetas().forEach(pcm -> {
246-
if (!pcm.isOnCancel())
247-
return;
248-
249-
if (pcm.delayTicks() > 0)
250-
plugin.getServer().getScheduler().runTaskLater(plugin, () -> queue.execPCM(pcm, (Player) sender),
251-
pcm.delayTicks());
252-
else
253-
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());
254253
});
255254
}
255+
256256
promptRegistry.unregister(sender);
257257
if (plugin.getConfiguration().showCancelled())
258258
plugin.getMessenger().sendMessage(sender, plugin.getI18N().getProperty("PromptCancel"));
259259
plugin.getPluginLogger().debug("Command completion called for: %s", sender.getName());
260260
}
261261

262-
public void cancel(CommandSender sender) {
263-
cancel(sender, -1);
262+
public void cancel(CommandSender sender, CancelReason reason) {
263+
cancel(sender, -1, reason);
264264
}
265265

266266
public Pattern getArgumentPattern(String... additionalKeys) {
@@ -283,4 +283,12 @@ public void clearPromptRegistry() {
283283
public CommandPrompter getPlugin() {
284284
return plugin;
285285
}
286+
287+
public static enum CancelReason {
288+
GUIExit,
289+
GUIErr,
290+
Manual,
291+
Timeout,
292+
BlankInput
293+
}
286294
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ public void dispatch(CommandPrompter plugin, Player sender) {
100100
} else if (!permissionAttachmentKey.isBlank()) {
101101
Dispatcher.dispatchWithAttachment(plugin, sender, getCompleteCommand(),
102102
plugin.getConfiguration().permissionAttachmentTicks(),
103-
plugin.getConfiguration().getPermissionAttachment(permissionAttachmentKey));
103+
plugin.getConfiguration().getPermissionAttachment(getPermissionAttachmentKey()));
104104
} else
105105
Dispatcher.dispatchCommand(plugin, sender, getCompleteCommand());
106106

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: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,14 @@ private void sendWithDefault(List<String> parts) {
6666
var cancelText = makeCancelButton();
6767
if (parts.size() == 1) {
6868
getContext().getPromptedPlayer().sendMessage(color(prefix + parts.get(0)));
69-
getContext().getPromptedPlayer().spigot().sendMessage(cancelText);
69+
if (!Arrays.equals(cancelText, new BaseComponent[0]))
70+
getContext().getPromptedPlayer().spigot().sendMessage(cancelText);
7071
return;
7172
}
7273
parts.forEach(part -> getContext().getPromptedPlayer().sendMessage(color(prefix + part)));
74+
getPlugin().getPluginLogger().debug("Cancel component length: " + cancelText.length);
75+
if (Arrays.equals(cancelText, new BaseComponent[0]))
76+
return;
7377
getContext().getPromptedPlayer().spigot().sendMessage(cancelText);
7478
}
7579

@@ -79,13 +83,17 @@ private void sendWithChatAPI(List<String> parts) {
7983
var msg = color(prefix + parts.get(0) + " ");
8084
var component = new ComponentBuilder().append(TextComponent.fromLegacy(msg));
8185
var cancelComponent = makeCancelButton();
82-
if (cancelComponent.length > 0)
83-
component.append(makeCancelButton());
86+
if (!Arrays.equals(cancelComponent, new BaseComponent[0]))
87+
component.append(cancelComponent);
8488
getContext().getPromptedPlayer().spigot().sendMessage(component.create());
8589
return;
8690
}
8791
parts.forEach(part -> getContext().getPromptedPlayer().sendMessage(color(prefix + part)));
88-
getContext().getPromptedPlayer().spigot().sendMessage(makeCancelButton(true));
92+
var cancelComponent = makeCancelButton(true);
93+
getPlugin().getPluginLogger().debug("Cancel component length: " + cancelComponent.length);
94+
if (Arrays.equals(cancelComponent, new BaseComponent[0]))
95+
return;
96+
getContext().getPromptedPlayer().spigot().sendMessage(cancelComponent);
8997
}
9098

9199
private BaseComponent[] makeCancelButton() {
@@ -151,7 +159,7 @@ public void onResponse(Player player, String msg, Cancellable event) {
151159
var cancelKeyword = plugin.getConfiguration().cancelKeyword();
152160

153161
if (cancelKeyword.equalsIgnoreCase(message))
154-
manager.cancel(player);
162+
manager.cancel(player, PromptManager.CancelReason.Manual);
155163

156164
var queue = manager.getPromptRegistry().get(player);
157165
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);

0 commit comments

Comments
 (0)