Merge pull request #5 from 4drian3d/main

Improved MiniMessage integration and more
This commit is contained in:
FeuSalamander 2023-01-30 18:27:59 +01:00 committed by GitHub
commit 389ccd5adf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 82 additions and 81 deletions

View File

@ -157,7 +157,7 @@
<dependency> <dependency>
<groupId>com.velocitypowered</groupId> <groupId>com.velocitypowered</groupId>
<artifactId>velocity-api</artifactId> <artifactId>velocity-api</artifactId>
<version>3.1.1</version> <version>3.1.2-SNAPSHOT</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
@ -166,10 +166,5 @@
<version>5.4</version> <version>5.4</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency>
<groupId>net.kyori</groupId>
<artifactId>adventure-text-minimessage</artifactId>
<version>4.12.0</version>
</dependency>
</dependencies> </dependencies>
</project> </project>

View File

@ -1,10 +1,6 @@
package me.feusalamander.vmessage; package me.feusalamander.vmessage;
import com.moandjiezana.toml.Toml; import com.moandjiezana.toml.Toml;
import com.velocitypowered.api.command.CommandSource;
import com.velocitypowered.api.command.SimpleCommand;
import com.velocitypowered.api.proxy.Player;
import net.kyori.adventure.text.Component;
import java.io.File; import java.io.File;
import java.io.InputStream; import java.io.InputStream;

View File

@ -2,24 +2,19 @@ package me.feusalamander.vmessage;
import com.velocitypowered.api.event.Subscribe; import com.velocitypowered.api.event.Subscribe;
import com.velocitypowered.api.event.connection.DisconnectEvent; import com.velocitypowered.api.event.connection.DisconnectEvent;
import com.velocitypowered.api.event.connection.PostLoginEvent;
import com.velocitypowered.api.event.connection.PreLoginEvent;
import com.velocitypowered.api.event.player.PlayerChatEvent; import com.velocitypowered.api.event.player.PlayerChatEvent;
import com.velocitypowered.api.event.player.ServerConnectedEvent; import com.velocitypowered.api.event.player.ServerConnectedEvent;
import com.velocitypowered.api.event.player.TabCompleteEvent;
import com.velocitypowered.api.proxy.LoginPhaseConnection;
import com.velocitypowered.api.proxy.Player; import com.velocitypowered.api.proxy.Player;
import com.velocitypowered.api.proxy.ProxyServer; import com.velocitypowered.api.proxy.ProxyServer;
import com.velocitypowered.api.proxy.ServerConnection; import com.velocitypowered.api.proxy.ServerConnection;
import com.velocitypowered.api.proxy.server.RegisteredServer; import com.velocitypowered.api.proxy.server.RegisteredServer;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.minimessage.MiniMessage;
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
import net.luckperms.api.LuckPerms; import net.luckperms.api.LuckPerms;
import net.luckperms.api.LuckPermsProvider; import net.luckperms.api.LuckPermsProvider;
import net.luckperms.api.model.user.User; import net.luckperms.api.model.user.User;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.Objects; import java.util.Objects;
import java.util.Optional; import java.util.Optional;
@ -34,7 +29,7 @@ public final class Listeners {
private final ProxyServer proxyServer; private final ProxyServer proxyServer;
Listeners(ProxyServer proxyServer, Configuration configuration) { Listeners(ProxyServer proxyServer, Configuration configuration) {
if (proxyServer.getPluginManager().getPlugin("luckperms").isPresent()){ if (proxyServer.getPluginManager().getPlugin("luckperms").isPresent()) {
this.luckPermsAPI = LuckPermsProvider.get(); this.luckPermsAPI = LuckPermsProvider.get();
} }
this.configuration = configuration; this.configuration = configuration;
@ -42,43 +37,44 @@ public final class Listeners {
} }
@Subscribe @Subscribe
private void onMessage(PlayerChatEvent e){ private void onMessage(PlayerChatEvent e) {
if (!configuration.isMessageEnabled()) { if (!configuration.isMessageEnabled()) {
return; return;
} }
message(e.getPlayer(), e.getMessage()); message(e.getPlayer(), e.getMessage());
} }
@Subscribe @Subscribe
private void onLeave(DisconnectEvent e){ private void onLeave(DisconnectEvent e) {
if (!configuration.isLeaveEnabled()) { if (!configuration.isLeaveEnabled()) {
return; return;
} }
Player p = e.getPlayer(); Player p = e.getPlayer();
if(p.getCurrentServer().isEmpty()){ if (p.getCurrentServer().isEmpty()) {
return; return;
} }
String message = configuration.getLeaveFormat() String message = configuration.getLeaveFormat()
.replace("#player#", p.getUsername()); .replace("#player#", p.getUsername());
if (luckPermsAPI != null){ if (luckPermsAPI != null) {
message = luckperms(message, p); message = luckperms(message, p);
} }
if(configuration.isMinimessageEnabled()){ if (configuration.isMinimessageEnabled()) {
proxyServer.sendMessage(mm.deserialize(message.replaceAll("§", ""))); proxyServer.sendMessage(mm.deserialize(message.replace("§", "")));
}else{ } else {
proxyServer.sendMessage(SERIALIZER.deserialize(message)); proxyServer.sendMessage(SERIALIZER.deserialize(message));
} }
} }
@Subscribe @Subscribe
private void onChange(ServerConnectedEvent e){ private void onChange(ServerConnectedEvent e) {
if (!configuration.isChangeEnabled()&&!configuration.isJoinEnabled()) { if (!configuration.isChangeEnabled() && !configuration.isJoinEnabled()) {
return; return;
} }
Optional<RegisteredServer> server = e.getPreviousServer(); Optional<RegisteredServer> server = e.getPreviousServer();
Player p = e.getPlayer(); Player p = e.getPlayer();
RegisteredServer actual = e.getServer(); RegisteredServer actual = e.getServer();
if(server.isPresent()){ if (server.isPresent()) {
if (!configuration.isChangeEnabled()) { if (!configuration.isChangeEnabled()) {
return; return;
} }
@ -87,55 +83,58 @@ public final class Listeners {
.replace("#player#", p.getUsername()) .replace("#player#", p.getUsername())
.replace("#oldserver#", pre.getServerInfo().getName()) .replace("#oldserver#", pre.getServerInfo().getName())
.replace("#server#", actual.getServerInfo().getName()); .replace("#server#", actual.getServerInfo().getName());
if (luckPermsAPI != null){ if (luckPermsAPI != null) {
message = luckperms(message, p); message = luckperms(message, p);
} }
if(configuration.isMinimessageEnabled()){ if (configuration.isMinimessageEnabled()) {
proxyServer.sendMessage(mm.deserialize(message.replaceAll("§", ""))); proxyServer.sendMessage(mm.deserialize(message.replace("§", "")));
}else{ } else {
proxyServer.sendMessage(SERIALIZER.deserialize(message)); proxyServer.sendMessage(SERIALIZER.deserialize(message));
} }
}else{ } else {
if (!configuration.isJoinEnabled()) { if (!configuration.isJoinEnabled()) {
return; return;
} }
String message = configuration.getJoinFormat().replace("#player#", p.getUsername()); String message = configuration.getJoinFormat().replace("#player#", p.getUsername());
if (luckPermsAPI != null){ if (luckPermsAPI != null) {
message = luckperms(message, p); message = luckperms(message, p);
} }
if(configuration.isMinimessageEnabled()){ if (configuration.isMinimessageEnabled()) {
proxyServer.sendMessage(mm.deserialize(message.replaceAll("§", ""))); proxyServer.sendMessage(mm.deserialize(message.replace("§", "")));
}else{ } else {
proxyServer.sendMessage(SERIALIZER.deserialize(message)); proxyServer.sendMessage(SERIALIZER.deserialize(message));
} }
} }
} }
private String luckperms(String message, Player p){
private String luckperms(String message, Player p) {
User user = luckPermsAPI.getPlayerAdapter(Player.class).getUser(p); User user = luckPermsAPI.getPlayerAdapter(Player.class).getUser(p);
if(message.contains("#prefix#")){ if (message.contains("#prefix#")) {
message = message.replace("#prefix#", Objects.requireNonNull(user.getCachedData().getMetaData().getPrefix())); message = message.replace("#prefix#", Objects.requireNonNull(user.getCachedData().getMetaData().getPrefix()));
} }
if(message.contains("#suffix#")){ if (message.contains("#suffix#")) {
message = message.replace("#suffix#", Objects.requireNonNull(user.getCachedData().getMetaData().getSuffix())); message = message.replace("#suffix#", Objects.requireNonNull(user.getCachedData().getMetaData().getSuffix()));
} }
return message; return message;
} }
public void message(Player p, String m){
public void message(Player p, String m) {
String message = configuration.getMessageFormat() String message = configuration.getMessageFormat()
.replace("#player#", p.getUsername()) .replace("#player#", p.getUsername())
.replace("#message#", m) .replace("#message#", m)
.replace("#server#", p.getCurrentServer().orElseThrow().getServerInfo().getName()); .replace("#server#", p.getCurrentServer().orElseThrow().getServerInfo().getName());
if (luckPermsAPI != null){ if (luckPermsAPI != null) {
message = luckperms(message, p); message = luckperms(message, p);
} }
final String finalMessage = message; final Component finalMessage;
if (configuration.isMinimessageEnabled()) {
finalMessage = mm.deserialize(message.replace("§", ""));
} else {
finalMessage = SERIALIZER.deserialize(message);
}
proxyServer.getAllServers().forEach(server -> { proxyServer.getAllServers().forEach(server -> {
if (!Objects.equals(p.getCurrentServer().map(ServerConnection::getServerInfo).orElse(null), server.getServerInfo())){ if (!Objects.equals(p.getCurrentServer().map(ServerConnection::getServerInfo).orElse(null), server.getServerInfo())) {
if(configuration.isMinimessageEnabled()){ server.sendMessage(finalMessage);
server.sendMessage(mm.deserialize(finalMessage.replaceAll("§", "")));
}else{
server.sendMessage(SERIALIZER.deserialize(finalMessage));
}
} }
}); });
} }

View File

@ -1,37 +1,47 @@
package me.feusalamander.vmessage; package me.feusalamander.vmessage;
import com.velocitypowered.api.command.CommandSource; import com.velocitypowered.api.command.CommandSource;
import com.velocitypowered.api.command.SimpleCommand; import com.velocitypowered.api.command.SimpleCommand;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.TextColor; import net.kyori.adventure.text.format.NamedTextColor;
import java.nio.file.Path;
import java.util.concurrent.CompletableFuture;
import java.util.List; import java.util.List;
public final class ReloadCommand implements SimpleCommand { public final class ReloadCommand implements SimpleCommand {
final Path dataDirectory; private final Configuration config;
final Configuration config;
ReloadCommand(Path dataDirectory, Configuration config){ ReloadCommand(Configuration config) {
this.dataDirectory = dataDirectory;
this.config = config; this.config = config;
} }
@Override @Override
public void execute(final Invocation invocation) { public void execute(final Invocation invocation) {
CommandSource source = invocation.source(); final CommandSource source = invocation.source();
String[] args = invocation.arguments(); final String[] args = invocation.arguments();
if(args.length == 0){ if (args.length == 0) {
source.sendMessage(Component.text("§cUsage: /vmessage reload")); source.sendMessage(Component.text("Usage: /vmessage reload", NamedTextColor.RED));
return; return;
} }
String s = args[0]; final String s = args[0];
if(s.equalsIgnoreCase("reload")){ if (s.equalsIgnoreCase("reload")) {
if(!source.hasPermission("*")){
source.sendMessage(Component.text("§cYou don't have the permission to do that"));
return;
}
config.reload(); config.reload();
source.sendMessage(Component.text("The Vmessage's config has been succefully reloaded")); source.sendMessage(Component.text("The Vmessage's config has been succefully reloaded"));
} }
} }
@Override
public boolean hasPermission(final Invocation invocation) {
return invocation.source().hasPermission("vmessage.command");
}
private static final List<String> suggestion = List.of("reload");
@Override
public List<String> suggest(final Invocation invocation) {
final String[] args = invocation.arguments();
if (args.length == 0 || (args.length == 1 && "reload".startsWith(args[0]))) {
return suggestion;
}
return List.of();
}
} }

View File

@ -4,29 +4,30 @@ import com.velocitypowered.api.command.CommandSource;
import com.velocitypowered.api.command.SimpleCommand; import com.velocitypowered.api.command.SimpleCommand;
import com.velocitypowered.api.proxy.Player; import com.velocitypowered.api.proxy.Player;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import java.nio.file.Path;
import java.util.List;
import java.util.concurrent.CompletableFuture;
public final class SendCommand implements SimpleCommand { public final class SendCommand implements SimpleCommand {
VMessage main; private final VMessage main;
SendCommand(VMessage main){
SendCommand(VMessage main) {
this.main = main; this.main = main;
} }
@Override @Override
public void execute(final Invocation invocation) { public void execute(final Invocation invocation) {
CommandSource source = invocation.source(); final CommandSource source = invocation.source();
String[] args = invocation.arguments(); final String[] args = invocation.arguments();
if(!(source instanceof Player)){ if (args.length == 0) {
source.sendMessage(Component.text("Usage: /sendall *your message*", NamedTextColor.RED));
return; return;
} }
if(args.length == 0){ final Player p = (Player) source;
source.sendMessage(Component.text("§cUsage: /sendall *your message*")); final String s = args[0];
return;
}
Player p = (Player)source;
String s = args[0];
main.listeners.message(p, s); main.listeners.message(p, s);
} }
@Override
public boolean hasPermission(final Invocation invocation) {
return invocation.source() instanceof Player;
}
} }

View File

@ -50,7 +50,7 @@ public class VMessage {
CommandMeta commandMeta = commandManager.metaBuilder("Vmessage") CommandMeta commandMeta = commandManager.metaBuilder("Vmessage")
.plugin(this) .plugin(this)
.build(); .build();
SimpleCommand command = new ReloadCommand(dataDirectory, configuration); SimpleCommand command = new ReloadCommand(configuration);
commandManager.register(commandMeta, command); commandManager.register(commandMeta, command);
CommandMeta sendmeta = commandManager.metaBuilder("sendall") CommandMeta sendmeta = commandManager.metaBuilder("sendall")
.plugin(this) .plugin(this)