Compare commits

..

11 commits

13 changed files with 102 additions and 66 deletions

View file

@ -5,8 +5,8 @@ plugins {
}
group = rootProject.group
val rootDependencyDir = "${rootProject.group}.dependencies"
val dependencyDir = "${group}.bukkit.dependencies"
val rootDependencyDir = "net.frankheijden.serverutils.dependencies"
val dependencyDir = "net.frankheijden.serverutils.bukkit.dependencies"
version = rootProject.version
base {
archivesName.set("${rootProject.name}-bukkit")

View file

@ -28,7 +28,8 @@ import net.frankheijden.serverutils.common.utils.KeyValueComponentBuilder;
import net.frankheijden.serverutils.common.utils.ForwardFilter;
import net.frankheijden.serverutils.common.utils.ListComponentBuilder;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.PluginIdentifiableCommand;
@ -126,7 +127,7 @@ public class BukkitCommandServerUtils extends CommandServerUtils<BukkitPlugin, P
if (handler == null) {
messages.get(BukkitMessageKey.RELOADCONFIG_NOT_EXISTS).sendTo(
sender,
Template.of("config", config)
TagResolver.resolver("config", Tag.inserting(Component.text(config)))
);
return;
}
@ -138,7 +139,7 @@ public class BukkitCommandServerUtils extends CommandServerUtils<BukkitPlugin, P
if (MinecraftReflectionVersion.MINOR > max) {
messages.get(BukkitMessageKey.RELOADCONFIG_NOT_SUPPORTED).sendTo(
sender,
Template.of("config", config)
TagResolver.resolver("config", Tag.inserting(Component.text(config)))
);
return;
}
@ -153,7 +154,8 @@ public class BukkitCommandServerUtils extends CommandServerUtils<BukkitPlugin, P
BukkitMessageKey key = filter.hasWarnings()
? BukkitMessageKey.RELOADCONFIG_WARNINGS
: BukkitMessageKey.RELOADCONFIG_SUCCESS;
plugin.getMessagesResource().get(key).sendTo(sender, Template.of("config", config));
plugin.getMessagesResource().get(key).sendTo(sender, TagResolver.resolver("config",
Tag.inserting(Component.text(config))));
} catch (Exception ex) {
filter.stop(Bukkit.getLogger());

View file

@ -5,8 +5,8 @@ plugins {
}
group = rootProject.group
val rootDependencyDir = "${group}.dependencies"
val dependencyDir = "${group}.bungee.dependencies"
val rootDependencyDir = "net.frankheijden.serverutils.dependencies"
val dependencyDir = "net.frankheijden.serverutils.bungee.dependencies"
version = rootProject.version
base {
archivesName.set("${rootProject.name}-bungee")

View file

@ -14,7 +14,8 @@ import net.frankheijden.serverutils.common.managers.AbstractPluginManager;
import net.frankheijden.serverutils.common.utils.ListComponentBuilder;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.TextComponent;
import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
@SuppressWarnings("LineLength")
public abstract class CommandPlugins<U extends ServerUtilsPlugin<P, ?, C, ?, D>, P, C extends ServerUtilsAudience<?>, D extends ServerUtilsPluginDescription>
@ -49,7 +50,7 @@ public abstract class CommandPlugins<U extends ServerUtilsPlugin<P, ?, C, ?, D>,
sender.sendMessage(messages.get(MessageKey.PLUGINS_HEADER).toComponent());
TextComponent.Builder builder = Component.text();
builder.append(messages.get(MessageKey.PLUGINS_PREFIX).toComponent(
Template.of("count", String.valueOf(filteredPlugins.size()))
TagResolver.resolver("count", Tag.inserting(Component.text(String.valueOf(filteredPlugins.size()))))
));
builder.append(ListComponentBuilder.create(filteredPlugins)
.separator(messages.get(MessageKey.PLUGINS_SEPARATOR).toComponent())
@ -62,11 +63,11 @@ public abstract class CommandPlugins<U extends ServerUtilsPlugin<P, ?, C, ?, D>,
? MessageKey.PLUGINS_FORMAT
: MessageKey.PLUGINS_FORMAT_DISABLED;
formatBuilder.append(messages.get(formatKey).toComponent(
Template.of("plugin", description.getName())
TagResolver.resolver("plugin", Tag.inserting(Component.text(description.getName())))
));
if (hasVersionFlag) {
formatBuilder.append(messages.get(MessageKey.PLUGINS_VERSION).toComponent(
Template.of("version", description.getVersion())
TagResolver.resolver("version", Tag.inserting(Component.text(description.getVersion())))
));
}

View file

@ -36,7 +36,8 @@ import net.frankheijden.serverutils.common.utils.ListComponentBuilder;
import net.frankheijden.serverutils.common.utils.KeyValueComponentBuilder;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.TextComponent;
import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
public abstract class CommandServerUtils<U extends ServerUtilsPlugin<P, ?, C, ?, ?>, P, C extends ServerUtilsAudience<?>>
extends ServerUtilsCommand<U, C> {
@ -117,8 +118,9 @@ public abstract class CommandServerUtils<U extends ServerUtilsPlugin<P, ?, C, ?,
if (commandElement.shouldDisplayInHelp()) {
sender.sendMessage(helpFormatMessage.toComponent(
Template.of("command", shortestCommandAlias),
Template.of("help", commandElement.getDescription().getDescription())
TagResolver.resolver("command", Tag.inserting(Component.text(shortestCommandAlias))),
TagResolver.resolver("help",
Tag.inserting(Component.text(commandElement.getDescription().getDescription())))
));
}
@ -132,8 +134,12 @@ public abstract class CommandServerUtils<U extends ServerUtilsPlugin<P, ?, C, ?,
if (subcommandElement.shouldDisplayInHelp()) {
String shortestSubcommandAlias = determineShortestAlias(subcommandElement);
sender.sendMessage(helpFormatMessage.toComponent(
Template.of("command", shortestCommandAlias + ' ' + shortestSubcommandAlias),
Template.of("help", subcommandElement.getDescription().getDescription())
TagResolver.resolver("command",
Tag.inserting(Component.text(shortestCommandAlias + ' '
+ shortestSubcommandAlias))),
TagResolver.resolver("help",
Tag.inserting(Component.text(subcommandElement.getDescription()
.getDescription())))
));
}
}
@ -150,8 +156,11 @@ public abstract class CommandServerUtils<U extends ServerUtilsPlugin<P, ?, C, ?,
String shortestFlagAlias = determineShortestAlias(flagElement);
String flagPrefix = "-" + (flagElement.getMain().equals(shortestFlagAlias) ? "_" : "");
sender.sendMessage(helpFormatMessage.toComponent(
Template.of("command", shortestCommandAlias + ' ' + flagPrefix + shortestFlagAlias),
Template.of("help", flagElement.getDescription().getDescription())
TagResolver.resolver("command",
Tag.inserting(Component.text(shortestCommandAlias + ' ' + flagPrefix
+ shortestFlagAlias))),
TagResolver.resolver("help",
Tag.inserting(Component.text(flagElement.getDescription().getDescription())))
));
}
}
@ -319,11 +328,12 @@ public abstract class CommandServerUtils<U extends ServerUtilsPlugin<P, ?, C, ?,
if (!recursive) {
TextComponent.Builder builder = Component.text();
builder.append(messages.get(MessageKey.DEPENDING_PLUGINS_PREFIX).toComponent(
Template.of("plugin", pluginId)
TagResolver.resolver("plugin", Tag.inserting(Component.text(pluginId)))
));
builder.append(ListComponentBuilder.create(dependingPlugins)
.format(p -> messages.get(MessageKey.DEPENDING_PLUGINS_FORMAT).toComponent(
Template.of("plugin", pluginManager.getPluginId(p))
TagResolver.resolver("plugin",
Tag.inserting(Component.text(pluginManager.getPluginId(p))))
))
.separator(messages.get(MessageKey.DEPENDING_PLUGINS_SEPARATOR).toComponent())
.lastSeparator(messages.get(MessageKey.DEPENDING_PLUGINS_LAST_SEPARATOR).toComponent())
@ -349,10 +359,12 @@ public abstract class CommandServerUtils<U extends ServerUtilsPlugin<P, ?, C, ?,
.orElse("-r");
sender.sendMessage(messages.get(MessageKey.DEPENDING_PLUGINS_OVERRIDE).toComponent(
Template.of("command", context.getRawInputJoined() + " " + forceFlag)
TagResolver.resolver("command", Tag.inserting(Component.text(context.getRawInputJoined() + " "
+ forceFlag)))
));
sender.sendMessage(messages.get(MessageKey.DEPENDING_PLUGINS_RECURSIVELY).toComponent(
Template.of("command", context.getRawInputJoined() + " " + rescuriveFlag)
TagResolver.resolver("command", Tag.inserting(Component.text(context.getRawInputJoined() + " "
+ rescuriveFlag)))
));
}
@ -365,8 +377,10 @@ public abstract class CommandServerUtils<U extends ServerUtilsPlugin<P, ?, C, ?,
String restartCommand = plugin.getCommandsResource().getAllAliases(getRawPath("restart")).stream()
.min(Comparator.comparingInt(String::length))
.orElse("restart");
Component component = plugin.getMessagesResource().get(MessageKey.RELOADPLUGIN_SERVERUTILS).toComponent(
Template.of("command", context.getRawInput().peekFirst() + " " + restartCommand)
Component component = plugin.getMessagesResource().get(MessageKey.RELOADPLUGIN_SERVERUTILS)
.toComponent(TagResolver.resolver("command",
Tag.inserting(Component.text(context.getRawInput().peekFirst() + " "
+ restartCommand)))
);
sender.sendMessage(component);
return true;
@ -384,7 +398,7 @@ public abstract class CommandServerUtils<U extends ServerUtilsPlugin<P, ?, C, ?,
String pluginId = pluginManager.getPluginId(plugin);
if (protectedPlugins.contains(pluginId)) {
sender.sendMessage(messagesResource.get(MessageKey.GENERIC_PROTECTED_PLUGIN).toComponent(
Template.of("plugin", pluginId)
TagResolver.resolver("plugin", Tag.inserting(Component.text(pluginId)))
));
return true;
}
@ -461,7 +475,8 @@ public abstract class CommandServerUtils<U extends ServerUtilsPlugin<P, ?, C, ?,
KeyValueComponentBuilder.create(formatMessage, "key", "value"),
listBuilderConsumer -> {
ListComponentBuilder<String> listBuilder = ListComponentBuilder.<String>create()
.format(str -> listFormatMessage.toComponent(Template.of("value", str)))
.format(str -> listFormatMessage.toComponent(TagResolver.resolver("value",
Tag.inserting(Component.text(str)))))
.separator(separator)
.lastSeparator(lastSeparator)
.emptyValue(null);

View file

@ -7,7 +7,8 @@ import net.frankheijden.serverutils.common.entities.ServerUtilsAudience;
import net.frankheijden.serverutils.common.entities.ServerUtilsPlugin;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.minimessage.MiniMessage;
import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
public class MessagesResource extends ServerUtilsResource {
@ -22,7 +23,7 @@ public class MessagesResource extends ServerUtilsResource {
public MessagesResource(ServerUtilsPlugin<?, ?, ?, ?, ?> plugin) {
super(plugin, MESSAGES_RESOURCE);
this.messageMap = new HashMap<>();
this.miniMessage = MiniMessage.get();
this.miniMessage = MiniMessage.miniMessage();
}
public Message get(String path) {
@ -54,31 +55,41 @@ public class MessagesResource extends ServerUtilsResource {
public Message(PlaceholderConfigKey key) {
this.key = key;
this.messageString = getConfig().getString("messages." + key.getPath());
this.component = key.hasPlaceholders() ? null : miniMessage.parse(messageString);
this.component = key.hasPlaceholders() ? null : miniMessage.deserialize(messageString);
}
/**
* Creates a {@link Component}.
*/
public Component toComponent() {
return this.component == null ? miniMessage.parse(messageString) : this.component;
return this.component == null ? miniMessage.deserialize(messageString) : this.component;
}
/**
* Creates a {@link Component}.
*/
public Component toComponent(Template... templates) {
return this.component == null ? miniMessage.parse(messageString, templates) : this.component;
public Component toComponent(TagResolver... templates) {
return this.component == null ? miniMessage.deserialize(messageString, templates) : this.component;
}
/**
* Creates a {@link Component}.
*/
public Component toComponent(String... placeholders) {
return this.component == null ? miniMessage.parse(messageString, placeholders) : this.component;
TagResolver.Builder builder = TagResolver.builder();
String placeholderKey = null;
for (int i = 0; i < placeholders.length; i++) {
if (i % 2 == 0) {
placeholderKey = placeholders[i];
} else {
String placeholderValue = placeholders[i];
builder.tag(placeholderKey, Tag.inserting(Component.text(placeholderValue)));
}
}
return this.component == null ? miniMessage.deserialize(messageString, builder.build()) : this.component;
}
public void sendTo(ServerUtilsAudience<?> serverAudience, Template... placeholders) {
public void sendTo(ServerUtilsAudience<?> serverAudience, TagResolver... placeholders) {
serverAudience.sendMessage(toComponent(placeholders));
}
}

View file

@ -5,7 +5,7 @@ import net.frankheijden.serverutils.common.config.ConfigKey;
import net.frankheijden.serverutils.common.config.MessageKey;
import net.frankheijden.serverutils.common.entities.ServerUtilsAudience;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
public enum WatchResult implements AbstractResult {
START(MessageKey.WATCHPLUGIN_START),
@ -23,7 +23,7 @@ public enum WatchResult implements AbstractResult {
this.key = key;
}
public void sendTo(ServerUtilsAudience<?> sender, Template... templates) {
public void sendTo(ServerUtilsAudience<?> sender, TagResolver... templates) {
Component component = ServerUtilsApp.getPlugin().getMessagesResource().get(key).toComponent(templates);
sender.sendMessage(component);
}

View file

@ -28,7 +28,9 @@ import net.frankheijden.serverutils.common.entities.results.PluginResults;
import net.frankheijden.serverutils.common.entities.results.WatchResult;
import net.frankheijden.serverutils.common.managers.AbstractPluginManager;
import net.frankheijden.serverutils.common.utils.FileUtils;
import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
public class PluginWatcherTask<P, T> extends AbstractTask {
@ -116,7 +118,8 @@ public class PluginWatcherTask<P, T> extends AbstractTask {
ServerUtilsPluginDescription description = descriptionOptional.get();
WatchEntry foundEntry = pluginIdToWatchEntryMap.remove(description.getId());
if (foundEntry != null) {
send(WatchResult.DELETED_FILE_IS_CREATED, Template.of("plugin", foundEntry.pluginId));
send(WatchResult.DELETED_FILE_IS_CREATED, TagResolver.resolver("plugin",
Tag.inserting(Component.text(foundEntry.pluginId))));
fileNameToWatchEntryMap.put(fileName, foundEntry);
if (pluginIdToWatchEntryMap.isEmpty()) {
@ -139,7 +142,8 @@ public class PluginWatcherTask<P, T> extends AbstractTask {
AbstractPluginManager<P, ?> pluginManager = plugin.getPluginManager();
Optional<File> fileOptional = pluginManager.getPluginFile(entry.pluginId);
if (!fileOptional.isPresent()) {
send(WatchResult.FILE_DELETED, Template.of("plugin", entry.pluginId));
send(WatchResult.FILE_DELETED, TagResolver.resolver("plugin",
Tag.inserting(Component.text(entry.pluginId))));
fileNameToWatchEntryMap.remove(fileName);
pluginIdToWatchEntryMap.put(entry.pluginId, entry);
@ -183,7 +187,7 @@ public class PluginWatcherTask<P, T> extends AbstractTask {
}, 10L);
}
private void send(WatchResult result, Template... templates) {
private void send(WatchResult result, TagResolver... templates) {
result.sendTo(sender, templates);
if (sender.isPlayer()) {
result.sendTo(plugin.getChatProvider().getConsoleServerAudience(), templates);

View file

@ -25,7 +25,8 @@ import net.frankheijden.serverutils.common.utils.GitHubUtils;
import net.frankheijden.serverutils.common.utils.VersionUtils;
import net.frankheijden.serverutilsupdater.common.Updater;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
public class UpdateCheckerTask<U extends ServerUtilsPlugin<P, ?, ?, ?, ?>, P> implements Runnable {
@ -136,9 +137,9 @@ public class UpdateCheckerTask<U extends ServerUtilsPlugin<P, ?, ?, ?, ?>, P> im
if (!download || pluginAsset == null) {
if (sender.isPlayer()) {
Component component = plugin.getMessagesResource().get(MessageKey.UPDATE_AVAILABLE).toComponent(
Template.of("old", ServerUtilsApp.VERSION),
Template.of("new", githubVersion),
Template.of("info", body)
TagResolver.resolver("old", Tag.inserting(Component.text(ServerUtilsApp.VERSION))),
TagResolver.resolver("new", Tag.inserting(Component.text(githubVersion))),
TagResolver.resolver("info", Tag.inserting(Component.text(body)))
);
sender.sendMessage(component);
}
@ -148,9 +149,9 @@ public class UpdateCheckerTask<U extends ServerUtilsPlugin<P, ?, ?, ?, ?>, P> im
plugin.getLogger().log(Level.INFO, DOWNLOAD_START, pluginAsset.getDownloadUrl());
if (sender.isPlayer()) {
Component component = plugin.getMessagesResource().get(MessageKey.UPDATE_DOWNLOADING).toComponent(
Template.of("old", ServerUtilsApp.VERSION),
Template.of("new", githubVersion),
Template.of("info", body)
TagResolver.resolver("old", Tag.inserting(Component.text(ServerUtilsApp.VERSION))),
TagResolver.resolver("new", Tag.inserting(Component.text(githubVersion))),
TagResolver.resolver("info", Tag.inserting(Component.text(body)))
);
sender.sendMessage(component);
}
@ -286,7 +287,8 @@ public class UpdateCheckerTask<U extends ServerUtilsPlugin<P, ?, ?, ?, ?>, P> im
private void broadcastDownloadStatus(String githubVersion, boolean isError) {
ConfigKey key = isError ? MessageKey.UPDATE_DOWNLOAD_FAILED : MessageKey.UPDATE_DOWNLOAD_SUCCESS;
Component component = plugin.getMessagesResource().get(key).toComponent(Template.of("new", githubVersion));
Component component = plugin.getMessagesResource().get(key).toComponent(TagResolver.resolver("new",
Tag.inserting(Component.text(githubVersion))));
plugin.getChatProvider().broadcast(component, "serverutils.notification.update");
}
}

View file

@ -4,12 +4,13 @@ import java.util.ArrayList;
import java.util.List;
import net.frankheijden.serverutils.common.config.MessagesResource;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
public class KeyValueComponentBuilder {
private final MessagesResource.Message format;
private final List<Template[]> templatesList;
private final List<TagResolver[]> templatesList;
private final String keyPlaceholder;
private final String valuePlaceholder;
@ -43,8 +44,8 @@ public class KeyValueComponentBuilder {
return new KeyValuePair(key);
}
private KeyValueComponentBuilder add(Template key, Template value) {
this.templatesList.add(new Template[]{ key, value });
private KeyValueComponentBuilder add(TagResolver key, TagResolver value) {
this.templatesList.add(new TagResolver[]{ key, value });
return this;
}
@ -54,7 +55,7 @@ public class KeyValueComponentBuilder {
public List<Component> build() {
List<Component> components = new ArrayList<>(templatesList.size());
for (Template[] templates : templatesList) {
for (TagResolver[] templates : templatesList) {
components.add(format.toComponent(templates));
}
@ -63,24 +64,24 @@ public class KeyValueComponentBuilder {
public class KeyValuePair {
private final Template key;
private final TagResolver key;
private KeyValuePair(String key) {
this.key = Template.of(keyPlaceholder, key);
this.key = TagResolver.resolver(keyPlaceholder, Tag.inserting(Component.text(key)));
}
private KeyValuePair(Component key) {
this.key = Template.of(keyPlaceholder, key);
this.key = TagResolver.resolver(keyPlaceholder, Tag.inserting(key));
}
public KeyValueComponentBuilder value(String value) {
if (value == null) return KeyValueComponentBuilder.this;
return add(key, Template.of(valuePlaceholder, value));
return add(key, TagResolver.resolver(valuePlaceholder, Tag.inserting(Component.text(value))));
}
public KeyValueComponentBuilder value(Component value) {
if (value == null) return KeyValueComponentBuilder.this;
return add(key, Template.of(valuePlaceholder, value));
return add(key, TagResolver.resolver(valuePlaceholder, Tag.inserting(value)));
}
}
}

View file

@ -5,7 +5,7 @@ plugins {
}
group = "${rootProject.group}"
val dependencyDir = "${group}.velocity.dependencies"
val dependencyDir = "net.frankheijden.serverutils.velocity.dependencies"
version = rootProject.version
base {
archivesName.set("${rootProject.name}-velocity")

View file

@ -6,9 +6,9 @@ plugins {
id("com.github.johnrengelman.shadow") version "7.1.2"
}
group = "net.frankheijden.serverutils"
val dependencyDir = "${group}.dependencies"
version = "3.5.6-SNAPSHOT"
group = "org.zhdev.bukman"
val dependencyDir = "net.frankheijden.serverutils.dependencies"
version = "3.5.6"
java {
sourceCompatibility = JavaVersion.VERSION_1_8

View file

@ -1,7 +1,7 @@
object VersionConstants {
const val cloudVersion = "1.8.5-SNAPSHOT"
const val adventureVersion = "4.11.0"
const val adventurePlatformVersion = "4.1.2"
const val adventureMinimessageVersion = "4.2.0-SNAPSHOT"
const val adventureVersion = "4.14.0"
const val adventurePlatformVersion = "4.4.1"
const val adventureMinimessageVersion = "4.14.0"
const val bstatsVersion = "3.0.0"
}