Add MiniMessage

This commit is contained in:
Frank van der Heijden 2021-08-03 02:07:39 +02:00
parent bb5c642f31
commit 083012abfe
No known key found for this signature in database
GPG key ID: B808721C2DD5B5B8
74 changed files with 1328 additions and 1078 deletions

View file

@ -1,4 +1,5 @@
group = rootProject.group + '.bungee'
String rootDependencyDir = rootProject.group + '.dependencies'
String dependencyDir = group + '.dependencies'
version = rootProject.version
archivesBaseName = rootProject.name + '-Bungee'
@ -9,6 +10,8 @@ repositories {
dependencies {
implementation "com.github.FrankHeijden.cloud:cloud-bungee:${rootProject.cloudVersion}"
implementation 'net.kyori:adventure-api:4.8.1'
implementation 'net.kyori:adventure-platform-bungeecord:4.0.0-SNAPSHOT'
implementation 'org.bstats:bstats-bungeecord:2.2.1'
implementation project(":Common")
compileOnly 'net.md-5:bungeecord-api:1.17-R0.1-SNAPSHOT'
@ -23,4 +26,6 @@ processResources {
shadowJar {
relocate 'org.bstats', dependencyDir + '.bstats'
relocate 'net.kyori.adventure', rootDependencyDir + '.adventure'
relocate 'net.kyori.examination', rootDependencyDir + '.examination'
}

View file

@ -3,13 +3,18 @@ package net.frankheijden.serverutils.bungee.commands;
import cloud.commandframework.Command;
import cloud.commandframework.CommandManager;
import cloud.commandframework.context.CommandContext;
import net.frankheijden.serverutils.bungee.entities.BungeeCommandSender;
import net.frankheijden.serverutils.bungee.entities.BungeeAudience;
import net.frankheijden.serverutils.bungee.entities.BungeePlugin;
import net.frankheijden.serverutils.common.commands.CommandPlugins;
import net.frankheijden.serverutils.common.config.MessageKey;
import net.frankheijden.serverutils.common.config.MessagesResource;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.TextComponent;
import net.kyori.adventure.text.minimessage.Template;
import net.md_5.bungee.api.plugin.Plugin;
import net.md_5.bungee.api.plugin.PluginDescription;
public class BungeeCommandPlugins extends CommandPlugins<BungeePlugin, Plugin, BungeeCommandSender> {
public class BungeeCommandPlugins extends CommandPlugins<BungeePlugin, Plugin, BungeeAudience> {
public BungeeCommandPlugins(BungeePlugin plugin) {
super(plugin);
@ -17,8 +22,8 @@ public class BungeeCommandPlugins extends CommandPlugins<BungeePlugin, Plugin, B
@Override
protected void register(
CommandManager<BungeeCommandSender> manager,
Command.Builder<BungeeCommandSender> builder
CommandManager<BungeeAudience> manager,
Command.Builder<BungeeAudience> builder
) {
manager.command(builder
.flag(parseFlag("version"))
@ -27,27 +32,26 @@ public class BungeeCommandPlugins extends CommandPlugins<BungeePlugin, Plugin, B
}
@Override
protected void handlePlugins(CommandContext<BungeeCommandSender> context) {
BungeeCommandSender sender = context.getSender();
protected void handlePlugins(CommandContext<BungeeAudience> context) {
BungeeAudience sender = context.getSender();
boolean hasVersionFlag = context.flags().contains("version");
boolean hasModulesFlag = context.flags().contains("modules");
MessagesResource messages = plugin.getMessagesResource();
handlePlugins(sender, plugin.getPluginManager().getPluginsSorted(hasModulesFlag), bungeePlugin -> {
PluginDescription description = bungeePlugin.getDescription();
String message = plugin.getMessagesResource().getMessage(
"serverutils.plugins.format",
"%plugin%", description.getName()
);
TextComponent.Builder builder = Component.text();
builder.append(messages.get(MessageKey.PLUGINS_FORMAT).toComponent(
Template.of("plugin", description.getName())
));
if (hasVersionFlag) {
message += plugin.getMessagesResource().getMessage(
"serverutils.plugins.version",
"%version%", description.getVersion()
);
builder.append(messages.get(MessageKey.PLUGINS_FORMAT).toComponent(
Template.of("version", description.getVersion())
));
}
return message;
return builder.build();
});
}
}

View file

@ -5,27 +5,28 @@ import java.util.Map;
import java.util.function.Consumer;
import java.util.function.Function;
import net.frankheijden.serverutils.bungee.ServerUtils;
import net.frankheijden.serverutils.bungee.entities.BungeeCommandSender;
import net.frankheijden.serverutils.bungee.entities.BungeeAudience;
import net.frankheijden.serverutils.bungee.entities.BungeePlugin;
import net.frankheijden.serverutils.bungee.reflection.RPluginManager;
import net.frankheijden.serverutils.common.commands.CommandServerUtils;
import net.frankheijden.serverutils.common.utils.FormatBuilder;
import net.frankheijden.serverutils.common.utils.ListBuilder;
import net.frankheijden.serverutils.common.utils.KeyValueComponentBuilder;
import net.frankheijden.serverutils.common.utils.ListComponentBuilder;
import net.kyori.adventure.text.Component;
import net.md_5.bungee.api.plugin.Command;
import net.md_5.bungee.api.plugin.Plugin;
import net.md_5.bungee.api.plugin.PluginDescription;
import net.md_5.bungee.api.plugin.PluginManager;
public class BungeeCommandServerUtils extends CommandServerUtils<BungeePlugin, Plugin, BungeeCommandSender> {
public class BungeeCommandServerUtils extends CommandServerUtils<BungeePlugin, Plugin, BungeeAudience> {
public BungeeCommandServerUtils(BungeePlugin plugin) {
super(plugin, Plugin[]::new);
}
@Override
protected FormatBuilder createPluginInfo(
FormatBuilder builder,
Function<Consumer<ListBuilder<String>>, String> listBuilderFunction,
protected KeyValueComponentBuilder createPluginInfo(
KeyValueComponentBuilder builder,
Function<Consumer<ListComponentBuilder<String>>, Component> listBuilderFunction,
Plugin bungeePlugin
) {
PluginDescription desc = bungeePlugin.getDescription();
@ -42,9 +43,9 @@ public class BungeeCommandServerUtils extends CommandServerUtils<BungeePlugin, P
}
@Override
protected FormatBuilder createCommandInfo(
FormatBuilder builder,
Function<Consumer<ListBuilder<String>>, String> listBuilderFunction,
protected KeyValueComponentBuilder createCommandInfo(
KeyValueComponentBuilder builder,
Function<Consumer<ListComponentBuilder<String>>, Component> listBuilderFunction,
String commandName
) {
PluginManager proxyPluginManager = ServerUtils.getInstance().getProxy().getPluginManager();

View file

@ -0,0 +1,23 @@
package net.frankheijden.serverutils.bungee.entities;
import net.frankheijden.serverutils.common.entities.ServerUtilsAudience;
import net.kyori.adventure.audience.Audience;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.connection.ProxiedPlayer;
public class BungeeAudience extends ServerUtilsAudience<CommandSender> {
protected BungeeAudience(Audience audience, CommandSender source) {
super(audience, source);
}
@Override
public boolean isPlayer() {
return source instanceof ProxiedPlayer;
}
@Override
public boolean hasPermission(String permission) {
return source.hasPermission(permission);
}
}

View file

@ -0,0 +1,39 @@
package net.frankheijden.serverutils.bungee.entities;
import net.frankheijden.serverutils.bungee.ServerUtils;
import net.frankheijden.serverutils.common.providers.ServerUtilsAudienceProvider;
import net.kyori.adventure.platform.bungeecord.BungeeAudiences;
import net.kyori.adventure.text.Component;
import net.md_5.bungee.api.CommandSender;
public class BungeeAudienceProvider implements ServerUtilsAudienceProvider<CommandSender> {
private final BungeeAudiences audiences;
private final BungeeAudience consoleServerAudience;
/**
* Constructs a new BungeeAudienceProvider.
*/
public BungeeAudienceProvider(ServerUtils plugin, BungeeAudiences audiences) {
this.audiences = audiences;
this.consoleServerAudience = new BungeeAudience(
audiences.console(),
plugin.getProxy().getConsole()
);
}
@Override
public BungeeAudience getConsoleServerAudience() {
return consoleServerAudience;
}
@Override
public BungeeAudience get(CommandSender source) {
return new BungeeAudience(audiences.sender(source), source);
}
@Override
public void broadcast(Component component, String permission) {
audiences.filter(sender -> sender.hasPermission(permission)).sendMessage(component);
}
}

View file

@ -1,32 +0,0 @@
package net.frankheijden.serverutils.bungee.entities;
import net.frankheijden.serverutils.common.providers.ChatProvider;
import net.frankheijden.serverutils.common.utils.HexUtils;
import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.ProxyServer;
public class BungeeChatProvider implements ChatProvider<BungeeCommandSender, CommandSender> {
@Override
public BungeeCommandSender getConsoleSender() {
return new BungeeCommandSender(ProxyServer.getInstance().getConsole());
}
@Override
public BungeeCommandSender get(CommandSender source) {
return new BungeeCommandSender(source);
}
@Override
public String color(String str) {
return ChatColor.translateAlternateColorCodes('&', HexUtils.convertHexString(str));
}
@Override
public void broadcast(String permission, String message) {
ProxyServer.getInstance().getPlayers().stream()
.filter(p -> p.hasPermission(permission))
.forEach(p -> p.sendMessage(message));
}
}

View file

@ -1,38 +0,0 @@
package net.frankheijden.serverutils.bungee.entities;
import net.frankheijden.serverutils.common.entities.ServerCommandSender;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.connection.ProxiedPlayer;
public class BungeeCommandSender implements ServerCommandSender<CommandSender> {
private final CommandSender sender;
public BungeeCommandSender(CommandSender sender) {
this.sender = sender;
}
@Override
public void sendMessage(String message) {
sender.sendMessage(message);
}
@Override
public boolean hasPermission(String permission) {
return sender.hasPermission(permission);
}
/**
* Whether or not the given instance is a player.
* @return Boolean true or false.
*/
@Override
public boolean isPlayer() {
return sender instanceof ProxiedPlayer;
}
@Override
public CommandSender getSource() {
return sender;
}
}

View file

@ -11,17 +11,19 @@ import net.frankheijden.serverutils.bungee.listeners.BungeePlayerListener;
import net.frankheijden.serverutils.bungee.managers.BungeePluginManager;
import net.frankheijden.serverutils.bungee.managers.BungeeTaskManager;
import net.frankheijden.serverutils.common.entities.ServerUtilsPlugin;
import net.kyori.adventure.platform.bungeecord.BungeeAudiences;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.plugin.Plugin;
import net.md_5.bungee.api.scheduler.ScheduledTask;
public class BungeePlugin extends ServerUtilsPlugin<Plugin, ScheduledTask, BungeeCommandSender, CommandSender, BungeePluginDescription> {
public class BungeePlugin extends ServerUtilsPlugin<Plugin, ScheduledTask, BungeeAudience, CommandSender, BungeePluginDescription> {
private final ServerUtils plugin;
private final BungeePluginManager pluginManager;
private final BungeeTaskManager taskManager;
private final BungeeResourceProvider resourceProvider;
private final BungeeChatProvider chatProvider;
private final BungeeAudiences audiences;
private final BungeeAudienceProvider chatProvider;
/**
* Creates a new BungeePlugin instance of ServerUtils.
@ -32,16 +34,17 @@ public class BungeePlugin extends ServerUtilsPlugin<Plugin, ScheduledTask, Bunge
this.pluginManager = new BungeePluginManager();
this.taskManager = new BungeeTaskManager();
this.resourceProvider = new BungeeResourceProvider(plugin);
this.chatProvider = new BungeeChatProvider();
this.audiences = BungeeAudiences.create(plugin);
this.chatProvider = new BungeeAudienceProvider(plugin, audiences);
}
@Override
protected BungeeCommandManager<BungeeCommandSender> newCommandManager() {
protected BungeeCommandManager<BungeeAudience> newCommandManager() {
return new BungeeCommandManager<>(
plugin,
AsynchronousCommandExecutionCoordinator.<BungeeCommandSender>newBuilder().build(),
AsynchronousCommandExecutionCoordinator.<BungeeAudience>newBuilder().build(),
chatProvider::get,
BungeeCommandSender::getSource
BungeeAudience::getSource
);
}
@ -71,7 +74,7 @@ public class BungeePlugin extends ServerUtilsPlugin<Plugin, ScheduledTask, Bunge
}
@Override
public BungeeChatProvider getChatProvider() {
public BungeeAudienceProvider getChatProvider() {
return chatProvider;
}
@ -90,6 +93,11 @@ public class BungeePlugin extends ServerUtilsPlugin<Plugin, ScheduledTask, Bunge
plugin.getProxy().getPluginManager().registerListener(plugin, new BungeePlayerListener(this));
}
@Override
protected void disablePlugin() {
this.audiences.close();
}
@Override
protected void reloadPlugin() {
new BungeeCommandPlugins(this).register(commandManager);

View file

@ -1,6 +1,6 @@
package net.frankheijden.serverutils.bungee.listeners;
import net.frankheijden.serverutils.bungee.entities.BungeeCommandSender;
import net.frankheijden.serverutils.bungee.entities.BungeeAudience;
import net.frankheijden.serverutils.bungee.entities.BungeePlugin;
import net.frankheijden.serverutils.common.listeners.PlayerListener;
import net.md_5.bungee.api.event.ServerConnectEvent;
@ -8,8 +8,7 @@ import net.md_5.bungee.api.plugin.Listener;
import net.md_5.bungee.api.plugin.Plugin;
import net.md_5.bungee.event.EventHandler;
public class BungeePlayerListener
extends PlayerListener<BungeePlugin, Plugin, BungeeCommandSender>
public class BungeePlayerListener extends PlayerListener<BungeePlugin, Plugin, BungeeAudience>
implements Listener {
public BungeePlayerListener(BungeePlugin plugin) {