Skip to content

Commit 35fdb6b

Browse files
authored
Merge pull request #59 from CyR1en/development
1.21.4 support and improvements.
2 parents 53043a7 + 5a37245 commit 35fdb6b

13 files changed

Lines changed: 263 additions & 122 deletions

File tree

build.gradle

Lines changed: 7 additions & 7 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: 11, patch: 0, fix: 0, classifier: 'SNAPSHOT'),
42+
version : new Version(major: 2, minor: 12, patch: 0, fix: 0, classifier: 'SNAPSHOT'),
4343
author : 'CyR1en',
4444
description: 'Making Commands More Interactive!',
4545
entry : 'com.cyr1en.commandprompter.CommandPrompter'
@@ -66,19 +66,19 @@ repositories {
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.3-SNAPSHOT'
69+
implementation 'net.wesjd:anvilgui:1.10.4-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.18'
72+
implementation 'com.github.stefvanschie.inventoryframework:IF:0.10.19'
7373
implementation "net.kyori:adventure-text-minimessage:4.17.0"
74-
implementation "dev.jorel:commandapi-bukkit-shade:9.6.1"
75-
implementation 'de.rapha149.signgui:signgui:2.4.2'
74+
implementation "dev.jorel:commandapi-bukkit-shade:9.7.0"
75+
implementation 'de.rapha149.signgui:signgui:2.5.0'
7676

77-
compileOnly 'me.clip:placeholderapi:2.11.2'
77+
compileOnly 'me.clip:placeholderapi:2.11.6'
7878
compileOnly "net.kyori:adventure-text-serializer-legacy:4.17.0"
7979
compileOnly "net.kyori:adventure-text-serializer-plain:4.17.0"
8080
compileOnly 'com.palmergames.bukkit.towny:towny:0.100.3.0'
81-
compileOnly "org.spigotmc:spigot-api:1.21-R0.1-SNAPSHOT"
81+
compileOnly "org.spigotmc:spigot-api:1.21.3-R0.1-SNAPSHOT"
8282
compileOnly 'com.github.LeonMangler:SuperVanish:6.2.18-3'
8383
compileOnly 'de.hexaoxi:carbonchat-api:3.0.0-beta.26'
8484
compileOnly 'com.github.mbax:VanishNoPacket:3.22'

gradle/wrapper/gradle-wrapper.jar

121 Bytes
Binary file not shown.

gradle/wrapper/gradle-wrapper.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip
44
networkTimeout=10000
55
validateDistributionUrl=true
66
zipStoreBase=GRADLE_USER_HOME

gradlew

Lines changed: 5 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

gradlew.bat

Lines changed: 12 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
import com.cyr1en.commandprompter.prompt.PromptManager;
3636
import com.cyr1en.commandprompter.prompt.prompts.ChatPrompt;
3737
import com.cyr1en.commandprompter.prompt.ui.HeadCache;
38-
import com.cyr1en.commandprompter.util.Util.ServerType;
38+
import com.cyr1en.commandprompter.util.ServerUtil;
3939
import com.cyr1en.kiso.mc.I18N;
4040
import com.cyr1en.kiso.mc.UpdateChecker;
4141
import com.cyr1en.kiso.utils.SRegex;
@@ -71,9 +71,9 @@ public void onEnable() {
7171
new Metrics(this, 5359);
7272
setupConfig();
7373
logger = new PluginLogger(this, "CommandPrompter");
74-
var serverType = ServerType.resolve();
74+
var serverType = ServerUtil.resolve();
7575
logger.debug("Server Name: " + serverType.name());
76-
logger.debug("Server Version: " + serverType.version());
76+
logger.debug("Server Version: " + ServerUtil.version());
7777

7878
i18n = new I18N(this, "CommandPrompter");
7979

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

Lines changed: 66 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -152,10 +152,17 @@ public record PromptConfig(
152152
"Enable-Title - Show the first line of the prompt",
153153
"(if with {br}) as title of Anvil GUI",
154154
"",
155-
"Item - The item to place on the Anvil GUI",
155+
"Enable-Cancel-Item - Show a cancel item on the ",
156+
"right slot input slot.",
157+
"",
158+
"Item - The Left item to place on the Anvil GUI",
156159
"",
157160
"Enchanted - Do you want the item enchanted?",
158161
"",
162+
"ResultItem - The Result item to place on the Anvil GUI",
163+
"",
164+
"Hide-Tooltips - Hide tooltips of item (1.21.2 OR ABOVE)",
165+
"",
159166
"Custom-Title - If title is enabled, and if custom",
160167
"title is not empty, CommandPrompter will use this instead",
161168
"",
@@ -174,20 +181,76 @@ public record PromptConfig(
174181
@NodeDefault("")
175182
String promptMessage,
176183

184+
@ConfigNode
185+
@NodeName("AnvilGUI.Enable-Cancel-Item")
186+
@NodeDefault("false")
187+
boolean enableCancelItem,
188+
177189
@ConfigNode
178190
@NodeName("AnvilGUI.Item.Material")
179191
@NodeDefault("Paper")
180192
String anvilItem,
181193

194+
@ConfigNode
195+
@NodeName("AnvilGUI.Item.HideTooltips")
196+
@NodeDefault("false")
197+
boolean itemHideTooltips,
198+
182199
@ConfigNode
183200
@NodeName("AnvilGUI.Item.Custom-Model-Data")
184201
@NodeDefault("0")
185202
int itemCustomModelData,
186203

187204
@ConfigNode
188-
@NodeName("AnvilGUI.Enchanted")
205+
@NodeName("AnvilGUI.Item.Enchanted")
206+
@NodeDefault("false")
207+
boolean itemAnvilEnchanted,
208+
209+
210+
@ConfigNode
211+
@NodeName("AnvilGUI.ResultItem.Material")
212+
@NodeDefault("Paper")
213+
String anvilResultItem,
214+
215+
@ConfigNode
216+
@NodeName("AnvilGUI.ResultItem.HideTooltips")
217+
@NodeDefault("false")
218+
boolean resultItemHideTooltips,
219+
220+
@ConfigNode
221+
@NodeName("AnvilGUI.ResultItem.Custom-Model-Data")
222+
@NodeDefault("0")
223+
int resultItemCustomModelData,
224+
225+
@ConfigNode
226+
@NodeName("AnvilGUI.ResultItem.Enchanted")
227+
@NodeDefault("false")
228+
boolean resultItemAnvilEnchanted,
229+
230+
@ConfigNode
231+
@NodeName("AnvilGUI.CancelItem.Material")
232+
@NodeDefault("Barrier")
233+
String anvilCancelItem,
234+
235+
@ConfigNode
236+
@NodeName("AnvilGUI.CancelItem.HideTooltips")
189237
@NodeDefault("false")
190-
boolean anvilEnchanted,
238+
boolean cancelItemHideTooltips,
239+
240+
@ConfigNode
241+
@NodeName("AnvilGUI.CancelItem.Custom-Model-Data")
242+
@NodeDefault("0")
243+
int cancelItemCustomModelData,
244+
245+
@ConfigNode
246+
@NodeName("AnvilGUI.CancelItem.Enchanted")
247+
@NodeDefault("false")
248+
boolean cancelItemAnvilEnchanted,
249+
250+
@ConfigNode
251+
@NodeName("AnvilGUI.CancelItem.HoverText")
252+
@NodeDefault("&cClick to Cancel")
253+
String cancelItemHoverText,
191254

192255
// ============================== Text Prompt ==============================
193256
@ConfigNode

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import com.cyr1en.commandprompter.prompt.prompts.ChatPrompt;
3131
import com.cyr1en.commandprompter.prompt.prompts.PlayerUIPrompt;
3232
import com.cyr1en.commandprompter.prompt.prompts.SignPrompt;
33+
import com.cyr1en.commandprompter.util.ServerUtil;
3334
import com.cyr1en.commandprompter.util.Util;
3435
import com.cyr1en.kiso.mc.Version;
3536
import org.bukkit.Bukkit;
@@ -66,7 +67,7 @@ public class PromptManager extends HashMap<String, Class<? extends Prompt>> {
6667

6768
private static final HashMap<Class<? extends Prompt>, Version> supportTable;
6869

69-
private static final Version LATEST = Version.parse("1.21.3");
70+
private static final Version LATEST = Version.parse("1.21.4");
7071
// Arbitrary 10 version, that means this should work until minecraft v10 lol "any".
7172
private static final Version ANY = Version.parse("10");
7273

@@ -97,7 +98,7 @@ public void registerPrompts() {
9798
public Class<? extends Prompt> put(String key, Class<? extends Prompt> value) {
9899
if (!supportTable.containsKey(value)) return null;
99100
var version = supportTable.get(value);
100-
var serverVersion = Util.ServerType.resolve().parsedVersion();
101+
var serverVersion = ServerUtil.parsedVersion();
101102
plugin.getPluginLogger().debug("Server Version: " + serverVersion);
102103
plugin.getPluginLogger().debug("Prompt Version: " + version);
103104

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

Lines changed: 60 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import com.cyr1en.commandprompter.CommandPrompter;
2828
import com.cyr1en.commandprompter.prompt.PromptContext;
2929
import com.cyr1en.commandprompter.prompt.PromptParser;
30+
import com.cyr1en.commandprompter.util.ServerUtil;
3031
import com.cyr1en.commandprompter.util.Util;
3132
import net.wesjd.anvilgui.AnvilGUI;
3233
import org.bukkit.ChatColor;
@@ -46,18 +47,20 @@
4647
public class AnvilPrompt extends AbstractPrompt {
4748

4849
public AnvilPrompt(CommandPrompter plugin, PromptContext context,
49-
String prompt, List<PromptParser.PromptArgument> args) {
50+
String prompt, List<PromptParser.PromptArgument> args) {
5051
super(plugin, context, prompt, args);
5152
}
5253

5354
@Override
5455
public void sendPrompt() {
5556
List<String> parts = Arrays.asList(getPrompt().split("\\{br}"));
56-
var item = makeItem(parts);
57-
makeAnvil(parts, item).open((Player) getContext().getSender());
57+
var item = makeAnvilItem(parts);
58+
var resultItem = makeResultItem(parts);
59+
var cancelItem = makeCancelItem(parts);
60+
makeAnvil(parts, item, resultItem, cancelItem).open((Player) getContext().getSender());
5861
}
5962

60-
private AnvilGUI.Builder makeAnvil(List<String> parts, ItemStack item) {
63+
private AnvilGUI.Builder makeAnvil(List<String> parts, ItemStack item, ItemStack resultItem, ItemStack cancelItem) {
6164
var isComplete = new AtomicBoolean(false);
6265
var builder = getBuilder(isComplete);
6366
builder.onClose(p -> {
@@ -75,7 +78,11 @@ private AnvilGUI.Builder makeAnvil(List<String> parts, ItemStack item) {
7578
title = title.isEmpty() ? color(parts.get(0)) : color(title);
7679
builder.title(title);
7780
}
81+
82+
if (getPlugin().getPromptConfig().enableCancelItem())
83+
builder.itemRight(cancelItem);
7884
builder.itemLeft(item);
85+
builder.itemOutput(resultItem);
7986
builder.plugin(getPlugin());
8087
return builder;
8188
}
@@ -84,6 +91,12 @@ private AnvilGUI.Builder makeAnvil(List<String> parts, ItemStack item) {
8491
private AnvilGUI.Builder getBuilder(AtomicBoolean isComplete) {
8592
var builder = new AnvilGUI.Builder();
8693
builder.onClick((slot, stateSnapshot) -> {
94+
var cancelEnabled = getPlugin().getPromptConfig().enableCancelItem();
95+
if (slot == AnvilGUI.Slot.INPUT_RIGHT && cancelEnabled) {
96+
getPromptManager().cancel(stateSnapshot.getPlayer());
97+
return Collections.singletonList(AnvilGUI.ResponseAction.close());
98+
}
99+
87100
if (slot != AnvilGUI.Slot.OUTPUT)
88101
return Collections.emptyList();
89102

@@ -106,26 +119,59 @@ private AnvilGUI.Builder getBuilder(AtomicBoolean isComplete) {
106119
return builder;
107120
}
108121

109-
private ItemStack makeItem(List<String> parts) {
110-
var item = new ItemStack(Util.getCheckedMaterial(getPlugin().getPromptConfig().anvilItem(), Material.PAPER));
122+
private ItemStack makeItem(String prefix, List<String> parts, String customTitle) {
123+
var config = getPlugin().getPromptConfig().rawConfig();
124+
var material = config.getString(prefix + ".Material", "PAPER");
125+
var enchanted = config.getBoolean(prefix + ".Enchanted", false);
126+
var customModelData = config.getInt(prefix + ".Custom-Model-Data", 0);
127+
var hideTooltips = config.getBoolean(prefix + ".HideTooltips", false);
128+
129+
var item = new ItemStack(Util.getCheckedMaterial(material, Material.PAPER));
111130
var meta = item.getItemMeta();
112131
getPlugin().getPluginLogger().debug("ItemMeta: " + meta);
113-
if (getPlugin().getPromptConfig().anvilEnchanted()) {
132+
133+
if (enchanted) {
114134
Objects.requireNonNull(meta).addEnchant(Enchantment.LURE, 1, true);
115135
meta.addItemFlags(ItemFlag.HIDE_ENCHANTS);
116136
}
137+
117138
Objects.requireNonNull(meta).addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
118-
meta.setDisplayName(parts.get(0));
139+
if (customTitle != null)
140+
meta.setDisplayName(customTitle);
141+
else {
142+
meta.setDisplayName(parts.get(0));
143+
144+
meta.setDisplayName(parts.get(0));
145+
146+
if (parts.size() > 1)
147+
meta.setLore(parts.subList(1, parts.size()).stream().map(this::color).toList());
119148

120-
if (parts.size() > 1)
121-
meta.setLore(parts.subList(1, parts.size()).stream().map(this::color).toList());
149+
if (customModelData != 0)
150+
meta.setCustomModelData(customModelData);
122151

123-
// set custom model data
124-
var integerData = getPlugin().getPromptConfig().itemCustomModelData();
125-
if (integerData != 0)
126-
meta.setCustomModelData(integerData);
152+
if (ServerUtil.isAtOrAbove("1.21.2")) {
153+
meta.setHideTooltip(hideTooltips);
154+
}
155+
}
127156

128157
item.setItemMeta(meta);
129158
return item;
130159
}
160+
161+
private ItemStack makeItem(String prefix, List<String> parts) {
162+
return makeItem("AnvilGUI.Item", parts, null);
163+
}
164+
165+
private ItemStack makeAnvilItem(List<String> parts) {
166+
return makeItem("AnvilGUI.Item", parts);
167+
}
168+
169+
private ItemStack makeResultItem(List<String> parts) {
170+
return makeItem("AnvilGUI.ResultItem", parts);
171+
}
172+
173+
private ItemStack makeCancelItem(List<String> parts) {
174+
var cancelText = getPlugin().getPromptConfig().cancelItemHoverText();
175+
return makeItem("AnvilGUI.CancelItem", parts, Util.color(cancelText));
176+
}
131177
}

0 commit comments

Comments
 (0)