diff --git a/pom.xml b/pom.xml index 3793bf1..9ec0e9d 100644 --- a/pom.xml +++ b/pom.xml @@ -157,7 +157,7 @@ com.velocitypowered velocity-api - 3.1.1 + 3.1.2-SNAPSHOT provided @@ -166,10 +166,5 @@ 5.4 provided - - net.kyori - adventure-text-minimessage - 4.12.0 - diff --git a/src/main/java/me/feusalamander/vmessage/Configuration.java b/src/main/java/me/feusalamander/vmessage/Configuration.java index ade23a7..7b72f5a 100644 --- a/src/main/java/me/feusalamander/vmessage/Configuration.java +++ b/src/main/java/me/feusalamander/vmessage/Configuration.java @@ -1,10 +1,6 @@ package me.feusalamander.vmessage; 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.InputStream; diff --git a/src/main/java/me/feusalamander/vmessage/Listeners.java b/src/main/java/me/feusalamander/vmessage/Listeners.java index 6be8f9a..fa8bb9d 100644 --- a/src/main/java/me/feusalamander/vmessage/Listeners.java +++ b/src/main/java/me/feusalamander/vmessage/Listeners.java @@ -2,24 +2,19 @@ package me.feusalamander.vmessage; import com.velocitypowered.api.event.Subscribe; 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.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.ProxyServer; import com.velocitypowered.api.proxy.ServerConnection; 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.serializer.legacy.LegacyComponentSerializer; import net.luckperms.api.LuckPerms; import net.luckperms.api.LuckPermsProvider; import net.luckperms.api.model.user.User; -import java.text.SimpleDateFormat; -import java.time.LocalDateTime; import java.util.Objects; import java.util.Optional; @@ -34,7 +29,7 @@ public final class Listeners { private final ProxyServer proxyServer; Listeners(ProxyServer proxyServer, Configuration configuration) { - if (proxyServer.getPluginManager().getPlugin("luckperms").isPresent()){ + if (proxyServer.getPluginManager().getPlugin("luckperms").isPresent()) { this.luckPermsAPI = LuckPermsProvider.get(); } this.configuration = configuration; @@ -42,43 +37,44 @@ public final class Listeners { } @Subscribe - private void onMessage(PlayerChatEvent e){ + private void onMessage(PlayerChatEvent e) { if (!configuration.isMessageEnabled()) { return; } message(e.getPlayer(), e.getMessage()); } + @Subscribe - private void onLeave(DisconnectEvent e){ + private void onLeave(DisconnectEvent e) { if (!configuration.isLeaveEnabled()) { return; } Player p = e.getPlayer(); - if(p.getCurrentServer().isEmpty()){ + if (p.getCurrentServer().isEmpty()) { return; } String message = configuration.getLeaveFormat() .replace("#player#", p.getUsername()); - if (luckPermsAPI != null){ + if (luckPermsAPI != null) { message = luckperms(message, p); } - if(configuration.isMinimessageEnabled()){ - proxyServer.sendMessage(mm.deserialize(message.replaceAll("§", ""))); - }else{ + if (configuration.isMinimessageEnabled()) { + proxyServer.sendMessage(mm.deserialize(message.replace("§", ""))); + } else { proxyServer.sendMessage(SERIALIZER.deserialize(message)); } } @Subscribe - private void onChange(ServerConnectedEvent e){ - if (!configuration.isChangeEnabled()&&!configuration.isJoinEnabled()) { + private void onChange(ServerConnectedEvent e) { + if (!configuration.isChangeEnabled() && !configuration.isJoinEnabled()) { return; } Optional server = e.getPreviousServer(); Player p = e.getPlayer(); RegisteredServer actual = e.getServer(); - if(server.isPresent()){ + if (server.isPresent()) { if (!configuration.isChangeEnabled()) { return; } @@ -87,55 +83,58 @@ public final class Listeners { .replace("#player#", p.getUsername()) .replace("#oldserver#", pre.getServerInfo().getName()) .replace("#server#", actual.getServerInfo().getName()); - if (luckPermsAPI != null){ + if (luckPermsAPI != null) { message = luckperms(message, p); } - if(configuration.isMinimessageEnabled()){ - proxyServer.sendMessage(mm.deserialize(message.replaceAll("§", ""))); - }else{ + if (configuration.isMinimessageEnabled()) { + proxyServer.sendMessage(mm.deserialize(message.replace("§", ""))); + } else { proxyServer.sendMessage(SERIALIZER.deserialize(message)); } - }else{ + } else { if (!configuration.isJoinEnabled()) { return; } String message = configuration.getJoinFormat().replace("#player#", p.getUsername()); - if (luckPermsAPI != null){ + if (luckPermsAPI != null) { message = luckperms(message, p); } - if(configuration.isMinimessageEnabled()){ - proxyServer.sendMessage(mm.deserialize(message.replaceAll("§", ""))); - }else{ + if (configuration.isMinimessageEnabled()) { + proxyServer.sendMessage(mm.deserialize(message.replace("§", ""))); + } else { 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); - if(message.contains("#prefix#")){ + if (message.contains("#prefix#")) { 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())); } return message; } - public void message(Player p, String m){ + + public void message(Player p, String m) { String message = configuration.getMessageFormat() .replace("#player#", p.getUsername()) .replace("#message#", m) .replace("#server#", p.getCurrentServer().orElseThrow().getServerInfo().getName()); - if (luckPermsAPI != null){ + if (luckPermsAPI != null) { 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 -> { - if (!Objects.equals(p.getCurrentServer().map(ServerConnection::getServerInfo).orElse(null), server.getServerInfo())){ - if(configuration.isMinimessageEnabled()){ - server.sendMessage(mm.deserialize(finalMessage.replaceAll("§", ""))); - }else{ - server.sendMessage(SERIALIZER.deserialize(finalMessage)); - } + if (!Objects.equals(p.getCurrentServer().map(ServerConnection::getServerInfo).orElse(null), server.getServerInfo())) { + server.sendMessage(finalMessage); } }); } diff --git a/src/main/java/me/feusalamander/vmessage/ReloadCommand.java b/src/main/java/me/feusalamander/vmessage/ReloadCommand.java index 2349ffc..28ccab2 100644 --- a/src/main/java/me/feusalamander/vmessage/ReloadCommand.java +++ b/src/main/java/me/feusalamander/vmessage/ReloadCommand.java @@ -1,37 +1,47 @@ package me.feusalamander.vmessage; + import com.velocitypowered.api.command.CommandSource; import com.velocitypowered.api.command.SimpleCommand; 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; public final class ReloadCommand implements SimpleCommand { - final Path dataDirectory; - final Configuration config; - ReloadCommand(Path dataDirectory, Configuration config){ - this.dataDirectory = dataDirectory; + private final Configuration config; + + ReloadCommand(Configuration config) { this.config = config; } @Override public void execute(final Invocation invocation) { - CommandSource source = invocation.source(); - String[] args = invocation.arguments(); - if(args.length == 0){ - source.sendMessage(Component.text("§cUsage: /vmessage reload")); + final CommandSource source = invocation.source(); + final String[] args = invocation.arguments(); + if (args.length == 0) { + source.sendMessage(Component.text("Usage: /vmessage reload", NamedTextColor.RED)); return; } - String s = args[0]; - if(s.equalsIgnoreCase("reload")){ - if(!source.hasPermission("*")){ - source.sendMessage(Component.text("§cYou don't have the permission to do that")); - return; - } + final String s = args[0]; + if (s.equalsIgnoreCase("reload")) { config.reload(); 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 suggestion = List.of("reload"); + + @Override + public List 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(); + } } diff --git a/src/main/java/me/feusalamander/vmessage/SendCommand.java b/src/main/java/me/feusalamander/vmessage/SendCommand.java index 58019a9..b4ff4f1 100644 --- a/src/main/java/me/feusalamander/vmessage/SendCommand.java +++ b/src/main/java/me/feusalamander/vmessage/SendCommand.java @@ -4,29 +4,30 @@ 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.nio.file.Path; -import java.util.List; -import java.util.concurrent.CompletableFuture; +import net.kyori.adventure.text.format.NamedTextColor; public final class SendCommand implements SimpleCommand { - VMessage main; - SendCommand(VMessage main){ + private final VMessage main; + + SendCommand(VMessage main) { this.main = main; } + @Override public void execute(final Invocation invocation) { - CommandSource source = invocation.source(); - String[] args = invocation.arguments(); - if(!(source instanceof Player)){ + final CommandSource source = invocation.source(); + final String[] args = invocation.arguments(); + if (args.length == 0) { + source.sendMessage(Component.text("Usage: /sendall *your message*", NamedTextColor.RED)); return; } - if(args.length == 0){ - source.sendMessage(Component.text("§cUsage: /sendall *your message*")); - return; - } - Player p = (Player)source; - String s = args[0]; + final Player p = (Player) source; + final String s = args[0]; main.listeners.message(p, s); } + + @Override + public boolean hasPermission(final Invocation invocation) { + return invocation.source() instanceof Player; + } } diff --git a/src/main/java/me/feusalamander/vmessage/VMessage.java b/src/main/java/me/feusalamander/vmessage/VMessage.java index 51b5e10..4f4657b 100644 --- a/src/main/java/me/feusalamander/vmessage/VMessage.java +++ b/src/main/java/me/feusalamander/vmessage/VMessage.java @@ -50,7 +50,7 @@ public class VMessage { CommandMeta commandMeta = commandManager.metaBuilder("Vmessage") .plugin(this) .build(); - SimpleCommand command = new ReloadCommand(dataDirectory, configuration); + SimpleCommand command = new ReloadCommand(configuration); commandManager.register(commandMeta, command); CommandMeta sendmeta = commandManager.metaBuilder("sendall") .plugin(this)