Skip to content

Commit d4761a8

Browse files
authored
Merge pull request #63 from CyR1en/development
Version 2.13.0
2 parents 35fdb6b + 55edebd commit d4761a8

24 files changed

Lines changed: 543 additions & 71 deletions

README.md

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ Features:
2020
CommandPrompter uses Gradle as a project manager. You can build CommandPrompter for yourself by following the instructions below:
2121

2222
#### Requirements
23-
* JDK 16 or newer
23+
* JDK 17 or newer
2424
* Git
2525

2626
#### Compiling from source
@@ -32,12 +32,6 @@ cd CommandPrompter/
3232

3333
## Special Thanks To:
3434
<div align="Left">
35-
<a href="https://www.jetbrains.com">
36-
<img width="130" src="https://resources.jetbrains.com/storage/products/company/brand/logos/jb_beam.svg" />
37-
</a>
38-
39-
<p>This project was developed with the help of JetBrains' generous <a href="https://www.jetbrains.com/opensource/">Open Source License program</a>. Huge thanks to their continued support for open source development!</p>
40-
4135
<a href="https://www.gitbook.com/">
4236
<img width="230" src="https://i.imgur.com/SIPKmzS.png">
4337
</a>

build.gradle

Lines changed: 14 additions & 14 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: 12, patch: 0, fix: 0, classifier: 'SNAPSHOT'),
42+
version : new Version(major: 2, minor: 13, patch: 0, fix: 0, classifier: 'SNAPSHOT'),
4343
author : 'CyR1en',
4444
description: 'Making Commands More Interactive!',
4545
entry : 'com.cyr1en.commandprompter.CommandPrompter'
@@ -58,25 +58,26 @@ repositories {
5858
maven { url 'https://repo.codemc.io/repository/maven-public/' }
5959
maven { url 'https://repo.extendedclip.com/content/repositories/placeholderapi/' }
6060
maven { url 'https://jitpack.io' }
61-
maven { url 'https://repo.glaremasters.me/repository/towny/'}
61+
maven { url 'https://repo.glaremasters.me/repository/towny/' }
6262
maven { url 'https://repo.william278.net/releases' }
6363
flatDir { dirs 'libs' }
6464
}
6565

6666
dependencies {
6767
implementation 'com.cyr1en:kiso-utils:1.8-SNAPSHOT'
6868
implementation 'com.cyr1en:kiso-mc:1.8-SNAPSHOT'
69-
implementation 'net.wesjd:anvilgui:1.10.4-SNAPSHOT'
69+
implementation 'net.wesjd:anvilgui:1.10.5-SNAPSHOT'
7070
implementation 'org.bstats:bstats-bukkit:3.0.2'
7171
implementation group: 'org.fusesource.jansi', name: 'jansi', version: '2.4.0'
72-
implementation 'com.github.stefvanschie.inventoryframework:IF:0.10.19'
73-
implementation "net.kyori:adventure-text-minimessage:4.17.0"
74-
implementation "dev.jorel:commandapi-bukkit-shade:9.7.0"
75-
implementation 'de.rapha149.signgui:signgui:2.5.0'
76-
72+
implementation 'com.github.stefvanschie.inventoryframework:IF:0.11.0'
73+
implementation "net.kyori:adventure-text-minimessage:4.21.0"
74+
implementation "dev.jorel:commandapi-bukkit-shade:10.0.1"
75+
implementation 'de.rapha149.signgui:signgui:2.5.1'
76+
implementation 'org.openjdk.nashorn:nashorn-core:15.4'
77+
78+
compileOnly "net.kyori:adventure-text-serializer-legacy:4.21.0"
79+
compileOnly "net.kyori:adventure-text-serializer-plain:4.21.0"
7780
compileOnly 'me.clip:placeholderapi:2.11.6'
78-
compileOnly "net.kyori:adventure-text-serializer-legacy:4.17.0"
79-
compileOnly "net.kyori:adventure-text-serializer-plain:4.17.0"
8081
compileOnly 'com.palmergames.bukkit.towny:towny:0.100.3.0'
8182
compileOnly "org.spigotmc:spigot-api:1.21.3-R0.1-SNAPSHOT"
8283
compileOnly 'com.github.LeonMangler:SuperVanish:6.2.18-3'
@@ -85,7 +86,7 @@ dependencies {
8586
compileOnly 'org.jetbrains:annotations:23.0.0'
8687
compileOnly 'net.luckperms:api:5.4'
8788
compileOnly 'net.william278.husktowns:husktowns-common:3.0.5'
88-
89+
compileOnly 'com.github.LeonMangler:PremiumVanishAPI:2.9.0-4'
8990
// Local
9091
implementation fileTree(dir: 'libs', include: '*.jar')
9192
compileOnly fileTree(dir: 'libs/compileonly', include: '*.jar')
@@ -96,7 +97,7 @@ configurations.implementation {
9697
exclude group: 'org.atteo.classindex', module: 'classindex'
9798
}
9899

99-
tasks.named('jar').configure { enabled = false }
100+
tasks.named('jar').configure { enabled = true }
100101

101102
shadowJar {
102103
dependencies {
@@ -107,11 +108,10 @@ shadowJar {
107108
archiveClassifier.set('')
108109
archiveVersion.set(pluginManifest.version.getFullVersion())
109110

111+
//relocate 'net.kyori.adventure', 'com.cyr1en.adventure'
110112
relocate 'com.github.stefvanschie.inventoryframework', 'com.cyr1en.inventoryframework'
111113
relocate 'net.wesjd.anvilgui', 'com.cyr1en.anvilgui'
112114
relocate 'de.rapha149.signgui', 'com.cyr1en.signgui'
113-
relocate 'net.kyori.adventure', 'com.cyr1en.adventure'
114-
relocate 'net.kyori.examination', 'com.cyr1en.examination'
115115
relocate 'dev.jorel.commandapi', 'com.cyr1en.commandapi'
116116
relocate 'org.fusesource.jansi', 'com.cyr1en.jansi'
117117
relocate 'org.bstats', 'com.cyr1en.bstats'

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

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@ public class CommandPrompter extends JavaPlugin {
6767

6868
@Override
6969
public void onEnable() {
70-
7170
new Metrics(this, 5359);
7271
setupConfig();
7372
logger = new PluginLogger(this, "CommandPrompter");
@@ -105,10 +104,6 @@ public void onDisable() {
105104
if (promptManager != null)
106105
promptManager.clearPromptRegistry();
107106

108-
PluginLogger logger;
109-
if ((logger = getPluginLogger()) != null)
110-
logger.ansiUninstall();
111-
112107
if (Objects.nonNull(updateChecker) && !updateChecker.isDisabled())
113108
HandlerList.unregisterAll(updateChecker);
114109
}

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

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
import org.bukkit.Bukkit;
44
import org.fusesource.jansi.Ansi;
5-
import org.fusesource.jansi.AnsiConsole;
65

76
import java.awt.*;
87
import java.util.Objects;
8+
import java.util.UnknownFormatConversionException;
99
import java.util.logging.Level;
1010

1111
public class PluginLogger {
@@ -22,7 +22,6 @@ public class PluginLogger {
2222
public PluginLogger(CommandPrompter plugin, String prefix) {
2323
this.isFancy = plugin.getConfiguration().fancyLogger();
2424
this.debugMode = plugin.getConfiguration().debugMode();
25-
AnsiConsole.systemInstall();
2625

2726
// Spread love not war <3
2827
normalGrad = new ColorGradient(new Color(1, 88, 181), new Color(246, 206, 0));
@@ -32,11 +31,6 @@ public PluginLogger(CommandPrompter plugin, String prefix) {
3231
setPrefix(prefix);
3332
}
3433

35-
public void ansiUninstall() {
36-
if (AnsiConsole.isInstalled())
37-
AnsiConsole.systemUninstall();
38-
}
39-
4034
public void setPrefix(String prefix) {
4135
var sep = isFancy ? new Ansi().fgRgb(153, 214, 90).a(">>").reset().toString() : ">>";
4236
var normal = isFancy ? makeGradient(prefix, normalGrad) : prefix;
@@ -56,8 +50,11 @@ private String makeGradient(String prefix, ColorGradient grad) {
5650

5751
public void log(String prefix, Level level, String msg, Object... args) {
5852
String pre = prefix == null ? getPrefix() : prefix;
59-
if (msg.contains("%s"))
60-
msg = String.format(msg, args);
53+
try {
54+
if (msg.matches("%s"))
55+
msg = String.format(msg, args);
56+
} catch (UnknownFormatConversionException ignore) {
57+
}
6158
Bukkit.getLogger().log(level, pre + msg);
6259
}
6360

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.cyr1en.commandprompter.api.prompt;
2+
3+
4+
/**
5+
* A class that represents a compoundable validator.
6+
* <p>
7+
* This class is used to represent a validator that can be combined with other validators.
8+
*/
9+
public interface CompoundableValidator {
10+
11+
/**
12+
* Get the type of the compoundable validator.
13+
*
14+
* @return the type of the compoundable validator.
15+
*/
16+
public Type getType();
17+
18+
/**
19+
* Set the type of the compoundable validator.
20+
*
21+
* @param type the type of the compoundable validator.
22+
*/
23+
public void setType(Type type);
24+
25+
public enum Type {
26+
AND,
27+
OR,
28+
DEFAULT
29+
}
30+
}

src/main/java/com/cyr1en/commandprompter/api/prompt/InputValidator.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.cyr1en.commandprompter.api.prompt;
22

33

4+
import org.bukkit.entity.Player;
5+
46
/**
57
* A functional interface for validating input.
68
*
@@ -33,4 +35,9 @@ public interface InputValidator {
3335
* @return the message to send when validation fails
3436
*/
3537
String messageOnFail();
38+
39+
/**
40+
* Get the player that entered the input.
41+
*/
42+
Player inputPlayer();
3643
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ public CommandAPIWrapper(CommandPrompter plugin) {
2323

2424
public void load() {
2525
var config = new CommandAPIBukkitConfig(plugin);
26+
config.skipReloadDatapacks(true);
2627
config.useLatestNMSVersion(false);
2728
config = plugin.getConfiguration().debugMode() ? config.silentLogs(false).verboseOutput(true)
2829
: config.silentLogs(true).verboseOutput(false);

src/main/java/com/cyr1en/commandprompter/config/CommandPrompterConfig.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,16 @@ public record CommandPrompterConfig(
8888
})
8989
boolean showCompleted,
9090

91+
@ConfigNode
92+
@NodeName("Show-Prompt-Cancelled")
93+
@NodeDefault("true")
94+
@NodeComment({
95+
"Should CommandPrompter a",
96+
"prompt cancellation message",
97+
"to the player."
98+
})
99+
boolean showCancelled,
100+
91101
@ConfigNode
92102
@NodeName("Fancy-Logger")
93103
@NodeDefault("true")

src/main/java/com/cyr1en/commandprompter/config/PromptConfig.java

Lines changed: 67 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66
import com.cyr1en.commandprompter.config.annotations.type.ConfigPath;
77
import com.cyr1en.commandprompter.config.annotations.type.Configuration;
88
import com.cyr1en.commandprompter.prompt.ui.CacheFilter;
9-
import com.cyr1en.commandprompter.prompt.validators.NoopValidator;
10-
import com.cyr1en.commandprompter.prompt.validators.OnlinePlayerValidator;
11-
import com.cyr1en.commandprompter.prompt.validators.RegexValidator;
9+
import com.cyr1en.commandprompter.prompt.validators.*;
1210
import com.cyr1en.kiso.mc.configuration.base.Config;
11+
import org.bukkit.entity.Player;
1312

13+
import java.util.ArrayList;
1414
import java.util.regex.Pattern;
1515

1616
@Configuration
@@ -122,6 +122,46 @@ public record PromptConfig(
122122
@NodeDefault("&7Cancel ✘")
123123
String cancelText,
124124

125+
@ConfigNode
126+
@NodeName("PlayerUI.Search.Item")
127+
@NodeDefault("Name_Tag")
128+
String searchItem,
129+
130+
@ConfigNode
131+
@NodeName("PlayerUI.Search.Custom-Model-Data")
132+
@NodeDefault("0")
133+
int searchCustomModelData,
134+
135+
@ConfigNode
136+
@NodeName("PlayerUI.Search.Column")
137+
@NodeDefault("9")
138+
int searchColumn,
139+
140+
@ConfigNode
141+
@NodeName("PlayerUI.Search.Text")
142+
@NodeDefault("&6Search ⌕")
143+
String searchText,
144+
145+
@ConfigNode
146+
@NodeName("PlayerUI.Search.AnvilItem.Title")
147+
@NodeDefault("&6&lPlayer Search")
148+
String searchAnvilItemTitle,
149+
150+
@ConfigNode
151+
@NodeName("PlayerUI.Search.AnvilItem.Material")
152+
@NodeDefault("PAPER")
153+
String searchAnvilItem,
154+
155+
@ConfigNode
156+
@NodeName("PlayerUI.Search.AnvilItem.CustomModelData")
157+
@NodeDefault("0")
158+
int searchAnvilItemCustomModelData,
159+
160+
@ConfigNode
161+
@NodeName("PlayerUI.Search.AnvilItem.Text")
162+
@NodeDefault("&6Enter Player Name")
163+
String searchAnvilItemText,
164+
125165
@ConfigNode
126166
@NodeName("PlayerUI.Sorted")
127167
@NodeDefault("false")
@@ -375,16 +415,36 @@ private String getIVValue(String key, String keyVal, String query) {
375415
return getInputValidationValue("Input-Validation", key, keyVal, query);
376416
}
377417

378-
public InputValidator getInputValidator(String alias) {
418+
public InputValidator getInputValidator(String alias, Player player) {
379419
if (alias == null || alias.isBlank())
380420
return new NoopValidator();
421+
422+
var validators = findValidators(alias, player);
423+
if (validators.length == 1)
424+
return validators[0];
425+
else if (validators.length > 1) {
426+
return new CompoundedValidator(alias, getIVErrMessage(alias), player, validators);
427+
}
428+
429+
return new NoopValidator();
430+
}
431+
432+
private InputValidator[] findValidators(String alias, Player player) {
433+
var validators = new ArrayList<InputValidator>();
434+
435+
var expr = getIVValue("Alias", alias, "JS-Expression");
436+
if (expr != null && !expr.isBlank())
437+
validators.add(new JSExprValidator(alias, expr, getIVErrMessage(alias), null));
438+
381439
var isPlayer = Boolean.parseBoolean(getIVValue("Alias", alias, "Online-Player"));
382440
if (isPlayer)
383-
return new OnlinePlayerValidator(alias, getIVErrMessage(alias));
441+
validators.add(new OnlinePlayerValidator(alias, getIVErrMessage(alias), player));
442+
384443
var regex = findIVRegexCheckInConfig(alias);
385444
if (regex != null && !regex.isBlank())
386-
return new RegexValidator(alias, Pattern.compile(regex), getIVErrMessage(alias));
387-
return new NoopValidator();
445+
validators.add(new RegexValidator(alias, Pattern.compile(regex), getIVErrMessage(alias), player));
446+
447+
return validators.toArray(new InputValidator[0]);
388448
}
389449

390450
/**

src/main/java/com/cyr1en/commandprompter/hook/HookContainer.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ public HookContainer(CommandPrompter plugin) {
2121
}
2222

2323
public void initHooks() {
24+
hook(PremiumVanishHook.class);
2425
hook(SuperVanishHook.class);
2526
hook(CarbonChatHook.class);
2627
hook(VanishNoPacketHook.class);

0 commit comments

Comments
 (0)