set up system for command hovers

This commit is contained in:
Pyrbu 2023-10-31 21:41:20 +01:00
parent 93c6a42124
commit 5ef94c09a4
42 changed files with 87 additions and 71 deletions

@ -10,6 +10,8 @@ import org.bukkit.plugin.java.JavaPlugin;
import java.io.File;
import java.io.Reader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ZNpcsPlusBootstrap extends JavaPlugin {
private ZNpcsPlus zNpcsPlus;
@ -78,10 +80,27 @@ public class ZNpcsPlusBootstrap extends JavaPlugin {
if (zNpcsPlus != null) zNpcsPlus.onDisable();
}
private final static Pattern EMBEDDED_FILE_PATTERN = Pattern.compile("\\{@(.*?)}");
private String loadMessageFile(String file) {
Reader reader = getTextResource("messages/" + file + ".txt");
if (reader == null) throw new RuntimeException(file + ".txt is missing from ZNPCsPlus jar!");
String text = FileUtil.dumpReaderAsString(reader);
System.out.println(text);
Matcher matcher = EMBEDDED_FILE_PATTERN.matcher(text);
StringBuilder builder = new StringBuilder();
int lastMatchEnd = 0;
while (matcher.find()) {
builder.append(text, lastMatchEnd, matcher.start());
lastMatchEnd = matcher.end();
builder.append(loadMessageFile(matcher.group(1)));
}
builder.append(text, lastMatchEnd, text.length());
return builder.toString();
}
protected Message<CommandContext> loadHelpMessage(String name) {
Reader reader = getTextResource("help-messages/" + name + ".txt");
if (reader == null) throw new RuntimeException(name + ".txt is missing from the help-messages folder in the ZNPCsPlus jar!");
Component component = MiniMessage.miniMessage().deserialize(FileUtil.dumpReaderAsString(reader));
Component component = MiniMessage.miniMessage().deserialize(loadMessageFile(name));
return context -> context.send(component);
}

@ -9,12 +9,9 @@ public class FileUtil {
BufferedReader bReader = new BufferedReader(reader);
try {
StringBuilder sb = new StringBuilder();
String line = bReader.readLine();
while (true) {
sb.append(line);
line = bReader.readLine();
if (line == null) break;
sb.append("\n");
String line;
while ((line = bReader.readLine()) != null) {
sb.append(line).append("\n");
}
return sb.toString();
} catch (IOException e) {

@ -1,10 +0,0 @@
<gold>ZNPCsPlus <yellow>v${version} <red><click:run_command:/npc><hover:show_text:'<red>Click to view the main help message'>[BACK]</hover></click></red>
<gray>Hover over any command for more info
<gold>* <yellow>/npc action add <type> <id> <args>
<gold>* <yellow>/npc action clear <id>
<gold>* <yellow>/npc action delete <id> <index>
<gold>* <yellow>/npc action edit <id> <index> <type> <args>
<gold>* <yellow>/npc action list <id>

@ -1,11 +0,0 @@
<gold>ZNPCsPlus <yellow>v${version} <red><click:run_command:/npc><hover:show_text:'<red>Click to view the main help message'>[BACK]</hover></click></red>
<gray>Hover over any command more info
<gold>* <yellow>/npc holo add <id> <text>
<gold>* <yellow>/npc holo delete <id> <line>
<gold>* <yellow>/npc holo set <id> <line> <text>
<gold>* <yellow>/npc holo insert <id> <line> <text>
<gold>* <yellow>/npc holo offset <id> <amount>
<gold>* <yellow>/npc holo info <id>

@ -1,7 +0,0 @@
<gold>ZNPCsPlus <yellow>v${version} <red><click:run_command:/npc><hover:show_text:'<red>Click to view the main help message'>[BACK]</hover></click></red>
<gray>Hover over any command more info
<gold>* <yellow>/npc property set <id> <property> <value>
<gold>* <yellow>/npc property remove <id> <property>

@ -1,26 +0,0 @@
<gold>ZNPCsPlus <yellow>v${version}
<gray>Hover over any command for more info
<gold>* <yellow>/npc create <id> <type>
<gold>* <yellow>/npc delete <id>
<gold>* <yellow>/npc changeid <old> <new>
<gold>* <yellow>/npc toggle <id>
<gold>* <yellow>/npc list
<gold>* <yellow>/npc type <id> <type>
<gold>* <yellow>/npc near <distance>
<gold>* <yellow>/npc center <id>
<gold>* <yellow>/npc lookatme <id>
<gold>* <yellow>/npc setlocation <id> <x> <y> <z>
<gold>* <yellow>/npc setrotation <id> <yaw> <pitch>
<gold>* <yellow>/npc move <id>
<gold>* <yellow>/npc teleport <id>
<gold>* <yellow>/npc skin <id> <type> <args>
<gold>* <yellow><click:run_command:/npc property><hover:show_text:'<gray>Npc property commands<br>Click to view full list'>/npc property help</hover></click>
<gold>* <yellow><click:run_command:/npc holo><hover:show_text:'<gray>Npc hologram commands<br>Click to view full list'>/npc holo help</hover></click>
<gold>* <yellow><click:run_command:/npc action><hover:show_text:'<gray>Player interaction commands<br>Click to view full list'>/npc action help</hover></click>
<gold>* <yellow><click:run_command:/npc storage><hover:show_text:'<gray>Npc data storage commands<br>Click to view full list'>/npc storage help</hover></click>

@ -1,8 +0,0 @@
<gold>ZNPCsPlus <yellow>v${version} <red><click:run_command:/npc><hover:show_text:'<red>Click to view the main help message'>[BACK]</hover></click></red>
<gray>Hover over any command for more info
<gold>* <yellow>/npc storage save
<gold>* <yellow>/npc storage reload
<gold>* <yellow>/npc storage import <importer>

@ -0,0 +1,10 @@
<gold>ZNPCsPlus <yellow>v${version} <red><click:run_command:/npc><hover:show_text:'<red>Click to view the main help message'>[BACK]</hover></click></red>
<gray>Hover over any command for more info
<hover:show_text:'{@action-hover/add}'><gold>* <yellow>/npc action add <type> <id> <args></hover>
<hover:show_text:'{@action-hover/clear}'><gold>* <yellow>/npc action clear <id></hover>
<hover:show_text:'{@action-hover/delete}'><gold>* <yellow>/npc action delete <id> <index></hover>
<hover:show_text:'{@action-hover/edit}'><gold>* <yellow>/npc action edit <id> <index> <type> <args></hover>
<hover:show_text:'{@action-hover/list}'><gold>* <yellow>/npc action list <id></hover>

@ -0,0 +1,11 @@
<gold>ZNPCsPlus <yellow>v${version} <red><click:run_command:/npc><hover:show_text:'<red>Click to view the main help message'>[BACK]</hover></click></red>
<gray>Hover over any command more info
<hover:show_text:'{@holo-hover/add}'><gold>* <yellow>/npc holo add <id> <text></hover>
<hover:show_text:'{@holo-hover/delete}'><gold>* <yellow>/npc holo delete <id> <line></hover>
<hover:show_text:'{@holo-hover/set}'><gold>* <yellow>/npc holo set <id> <line> <text></hover>
<hover:show_text:'{@holo-hover/insert}'><gold>* <yellow>/npc holo insert <id> <line> <text></hover>
<hover:show_text:'{@holo-hover/offset}'><gold>* <yellow>/npc holo offset <id> <amount></hover>
<hover:show_text:'{@holo-hover/info}'><gold>* <yellow>/npc holo info <id></hover>

@ -0,0 +1,7 @@
<gold>ZNPCsPlus <yellow>v${version} <red><click:run_command:/npc><hover:show_text:'<red>Click to view the main help message'>[BACK]</hover></click></red>
<gray>Hover over any command more info
<hover:show_text:'{@property-hover/set}'><gold>* <yellow>/npc property set <id> <property> <value></hover>
<hover:show_text:'{@property-hover/remove}'><gold>* <yellow>/npc property remove <id> <property></hover>

@ -0,0 +1,26 @@
<gold>ZNPCsPlus <yellow>v${version}
<gray>Hover over any command for more info
<hover:show_text:'{@root-hover/create}'><gold>* <yellow>/npc create <id> <type></hover>
<hover:show_text:'{@root-hover/delete}'><gold>* <yellow>/npc delete <id></hover>
<hover:show_text:'{@root-hover/changeid}'><gold>* <yellow>/npc changeid <old> <new></hover>
<hover:show_text:'{@root-hover/toggle}'><gold>* <yellow>/npc toggle <id></hover>
<hover:show_text:'{@root-hover/list}'><gold>* <yellow>/npc list</hover>
<hover:show_text:'{@root-hover/type}'><gold>* <yellow>/npc type <id> <type></hover>
<hover:show_text:'{@root-hover/near}'><gold>* <yellow>/npc near <distance></hover>
<hover:show_text:'{@root-hover/center}'><gold>* <yellow>/npc center <id></hover>
<hover:show_text:'{@root-hover/lookatme}'><gold>* <yellow>/npc lookatme <id></hover>
<hover:show_text:'{@root-hover/setlocation}'><gold>* <yellow>/npc setlocation <id> <x> <y> <z></hover>
<hover:show_text:'{@root-hover/setrotation}'><gold>* <yellow>/npc setrotation <id> <yaw> <pitch></hover>
<hover:show_text:'{@root-hover/move}'><gold>* <yellow>/npc move <id></hover>
<hover:show_text:'{@root-hover/teleport}'><gold>* <yellow>/npc teleport <id></hover>
<hover:show_text:'{@root-hover/skin}'><gold>* <yellow>/npc skin <id> <type> <args></hover>
<gold>* <yellow><click:run_command:/npc property><hover:show_text:'<gray>Npc property commands<br>Click to view full list'>/npc property help</hover></click>
<gold>* <yellow><click:run_command:/npc holo><hover:show_text:'<gray>Npc hologram commands<br>Click to view full list'>/npc holo help</hover></click>
<gold>* <yellow><click:run_command:/npc action><hover:show_text:'<gray>Player interaction commands<br>Click to view full list'>/npc action help</hover></click>
<gold>* <yellow><click:run_command:/npc storage><hover:show_text:'<gray>Npc data storage commands<br>Click to view full list'>/npc storage help</hover></click>

@ -0,0 +1,8 @@
<gold>ZNPCsPlus <yellow>v${version} <red><click:run_command:/npc><hover:show_text:'<red>Click to view the main help message'>[BACK]</hover></click></red>
<gray>Hover over any command for more info
<hover:show_text:'{@storage-hover/save}'><gold>* <yellow>/npc storage save</hover>
<hover:show_text:'{@storage-hover/reload}'><gold>* <yellow>/npc storage reload</hover>
<hover:show_text:'{@storage-hover/import}'><gold>* <yellow>/npc storage import <importer></hover>