summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorminenash <minenash@protonmail.com>2019-04-07 16:31:51 -0400
committerminenash <minenash@protonmail.com>2019-04-07 16:31:51 -0400
commitadbc3a595b7378962f0fed906876e7a128e1be6c (patch)
tree8449d5a35292c4ae40517a513d376bbfdf38d446
parentcecadfdaf1d337b289695483f82ceb4e7bd404ae (diff)
`/server [no args]` now shows a list of servers instead of an error.
Also made /server the command name and made the aliases, /join and /goto. The permission has been changed to `rser.command.server`.
-rw-r--r--com/redstoner/bungee/joinmessages/.gitignore1
-rw-r--r--com/redstoner/bungee/joinmessages/CommandGoto.java75
-rw-r--r--com/redstoner/bungee/joinmessages/CommandServer.java103
-rw-r--r--com/redstoner/bungee/joinmessages/JoinMessages.java57
4 files changed, 135 insertions, 101 deletions
diff --git a/com/redstoner/bungee/joinmessages/.gitignore b/com/redstoner/bungee/joinmessages/.gitignore
index 025ee5c..495a8da 100644
--- a/com/redstoner/bungee/joinmessages/.gitignore
+++ b/com/redstoner/bungee/joinmessages/.gitignore
@@ -1,2 +1,3 @@
/CommandGoto.class
/JoinMessages.class
+/CommandServer.class
diff --git a/com/redstoner/bungee/joinmessages/CommandGoto.java b/com/redstoner/bungee/joinmessages/CommandGoto.java
deleted file mode 100644
index 71e6a7d..0000000
--- a/com/redstoner/bungee/joinmessages/CommandGoto.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package com.redstoner.bungee.joinmessages;
-
-import java.util.ArrayList;
-import java.util.List;
-import net.md_5.bungee.api.ChatColor;
-import net.md_5.bungee.api.CommandSender;
-import net.md_5.bungee.api.ProxyServer;
-import net.md_5.bungee.api.config.ServerInfo;
-import net.md_5.bungee.api.connection.ProxiedPlayer;
-import net.md_5.bungee.api.connection.Server;
-import net.md_5.bungee.api.plugin.Command;
-
-public class CommandGoto
- extends Command
-{
- private String switchto = "&c&l- &7%s &o(to %s)";
- private String switchfrom = "&a&l+ &7%s &o(from %s)";
- public static List<ProxiedPlayer> justSwitched = new ArrayList();
-
- public CommandGoto()
- {
- super("goto", "rser.command.goto", new String[] { "join", "server" });
- }
-
- public void execute(CommandSender sender, String[] args)
- {
- if (args.length == 0)
- {
- sendMessage(sender, true, "Ussuage: &e/goto <server>");
- return;
- }
- if (!(sender instanceof ProxiedPlayer))
- {
- sendMessage(sender, true, "This command can only be run by players!");
- return;
- }
- ServerInfo from = ((ProxiedPlayer)sender).getServer().getInfo();
- ServerInfo target = ProxyServer.getInstance().getServerInfo(args[0]);
- if (target == null)
- {
- sendMessage(sender, true, "That server doesn't exist!");
- }
- else if (from.getName().equals(target.getName()))
- {
- sendMessage(sender, true, "You're already connected to that server!");
- }
- else
- {
- ProxiedPlayer s = (ProxiedPlayer)sender;
-
- String fromMessage = String.format(this.switchfrom, new Object[] { sender.getName(), from.getName() });
- for (ProxiedPlayer p : target.getPlayers()) {
- sendRawMessage(p, fromMessage);
- }
- String toMessage = String.format(this.switchto, new Object[] { sender.getName(), target.getName() });
- for (ProxiedPlayer p : from.getPlayers()) {
- sendRawMessage(p, toMessage);
- }
- sendMessage(sender, false, "&6Connecting you to &e" + target.getName());
- sendRawMessage(s, fromMessage);
- justSwitched.add(s);
- s.connect(target);
- }
- }
-
- private void sendMessage(CommandSender sender, boolean error, String msg)
- {
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&8[&" + (error ? "c" : "2") + "Bungee&8]&7 " + msg));
- }
-
- private void sendRawMessage(ProxiedPlayer p, String msg)
- {
- p.sendMessage(ChatColor.translateAlternateColorCodes('&', msg));
- }
-}
diff --git a/com/redstoner/bungee/joinmessages/CommandServer.java b/com/redstoner/bungee/joinmessages/CommandServer.java
new file mode 100644
index 0000000..6efdfa1
--- /dev/null
+++ b/com/redstoner/bungee/joinmessages/CommandServer.java
@@ -0,0 +1,103 @@
+package com.redstoner.bungee.joinmessages;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import net.md_5.bungee.api.ChatColor;
+import net.md_5.bungee.api.CommandSender;
+import net.md_5.bungee.api.ProxyServer;
+import net.md_5.bungee.api.chat.ClickEvent;
+import net.md_5.bungee.api.chat.ComponentBuilder;
+import net.md_5.bungee.api.chat.HoverEvent;
+import net.md_5.bungee.api.chat.TextComponent;
+import net.md_5.bungee.api.config.ServerInfo;
+import net.md_5.bungee.api.connection.ProxiedPlayer;
+import net.md_5.bungee.api.plugin.Command;
+
+public class CommandServer extends Command {
+
+ private String switchto = "&c&l- &7%s &o(to %s)";
+ private String switchfrom = "&a&l+ &7%s &o(from %s)";
+
+ public static List<ProxiedPlayer> justSwitched = new ArrayList<>();
+
+ public CommandServer() {
+ super("server", "rser.command.server", new String[] { "join", "goto" });
+ }
+
+ @SuppressWarnings("deprecation")
+ public void execute(CommandSender sender, String[] args) {
+
+ if (args.length == 0) {
+ Map<String, ServerInfo> servers = ProxyServer.getInstance().getServers();
+
+ if ((sender instanceof ProxiedPlayer)) {
+ sender.sendMessage("§8[§2Bungee§8]§7 You are currently connected to §a" + ((ProxiedPlayer)sender).getServer().getInfo().getName() );
+ }
+ ComponentBuilder serverList = new ComponentBuilder("").append(TextComponent.fromLegacyText("§8[§2Bungee§8]§7 You can connect to the following servers: "));
+ boolean first = true;
+ for (ServerInfo server : servers.values()) {
+ if (server.canAccess(sender))
+ {
+ TextComponent serverTextComponent = new TextComponent((!first?"§7, §e": "§e") + server.getName());
+ int count = server.getPlayers().size();
+ serverTextComponent.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder(count + (count == 1 ? " player" : " players") + "\n")
+
+ .append("Click to connect to the server").italic(true)
+ .create()));
+ serverTextComponent.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/server " + server.getName()));
+ serverList.append(serverTextComponent);
+
+ }
+ first = false;
+ }
+ sender.sendMessage(serverList.create());
+ return;
+ }
+
+ if (!(sender instanceof ProxiedPlayer)) {
+ sendMessage(sender, true, "You must be a player!");
+ return;
+ }
+
+ ServerInfo from = ((ProxiedPlayer)sender).getServer().getInfo();
+ ServerInfo target = ProxyServer.getInstance().getServerInfo(args[0]);
+
+ if (target == null) {
+ sendMessage(sender, true, "That server doesn't exist!");
+ }
+ else if (from.getName().equals(target.getName())) {
+ sendMessage(sender, true, "You're already connected to that server!");
+ }
+ else {
+ ProxiedPlayer s = (ProxiedPlayer)sender;
+
+ String fromMessage = String.format(this.switchfrom, new Object[] { sender.getName(), from.getName() });
+ for (ProxiedPlayer p : target.getPlayers())
+ sendRawMessage(p, fromMessage);
+
+ String toMessage = String.format(this.switchto, new Object[] { sender.getName(), target.getName() });
+ for (ProxiedPlayer p : from.getPlayers())
+ sendRawMessage(p, toMessage);
+
+ sendMessage(sender, false, "&6Connecting you to &e" + target.getName());
+ sendRawMessage(s, fromMessage);
+ justSwitched.add(s);
+ s.connect(target);
+ }
+ }
+
+ @SuppressWarnings("deprecation")
+ private void sendMessage(CommandSender sender, boolean error, String msg)
+ {
+ sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&8[&" + (error ? "c" : "2") + "Bungee&8]&7 " + msg));
+ }
+
+ @SuppressWarnings("deprecation")
+ private void sendRawMessage(ProxiedPlayer p, String msg)
+ {
+ p.sendMessage(ChatColor.translateAlternateColorCodes('&', msg));
+ }
+
+}
diff --git a/com/redstoner/bungee/joinmessages/JoinMessages.java b/com/redstoner/bungee/joinmessages/JoinMessages.java
index 21a4c66..13e6c0d 100644
--- a/com/redstoner/bungee/joinmessages/JoinMessages.java
+++ b/com/redstoner/bungee/joinmessages/JoinMessages.java
@@ -1,59 +1,64 @@
package com.redstoner.bungee.joinmessages;
-import java.util.List;
import net.md_5.bungee.api.ChatColor;
-import net.md_5.bungee.api.ProxyServer;
import net.md_5.bungee.api.config.ServerInfo;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import net.md_5.bungee.api.event.ServerConnectEvent;
import net.md_5.bungee.api.event.ServerDisconnectEvent;
import net.md_5.bungee.api.plugin.Listener;
import net.md_5.bungee.api.plugin.Plugin;
-import net.md_5.bungee.api.plugin.PluginManager;
import net.md_5.bungee.event.EventHandler;
+import net.md_5.bungee.event.EventPriority;
-public class JoinMessages
- extends Plugin
- implements Listener
-{
+public class JoinMessages extends Plugin implements Listener {
+
private String loginString = "&a&l+ &7%s";
private String logoutString = "&c&l- &7%s";
- public void onEnable()
- {
+ public void onEnable() {
getProxy().registerChannel("JoinMessage");
- getProxy().getPluginManager().registerCommand(this, new CommandGoto());
+ getProxy().getPluginManager().registerCommand(this, new CommandServer());
getProxy().getPluginManager().registerListener(this, this);
}
- @EventHandler
- public void onServerConnect(ServerConnectEvent e)
- {
+ @EventHandler(priority = EventPriority.HIGHEST)
+ @SuppressWarnings("deprecation")
+ public void onServerConnect(ServerConnectEvent e) {
+
+ if (e.isCancelled())
+ return;
+
ServerInfo target = e.getTarget();
ProxiedPlayer jp = e.getPlayer();
- if (CommandGoto.justSwitched.contains(jp)) {
+
+ if (CommandServer.justSwitched.contains(jp))
return;
- }
- String joinMessage = ChatColor.translateAlternateColorCodes('&', String.format(this.loginString, new Object[] { jp.getName() }));
- for (ProxiedPlayer p : target.getPlayers()) {
+
+ String joinMessage = ChatColor.translateAlternateColorCodes('&',
+ String.format(this.loginString, new Object[] { jp.getName() }));
+
+ for (ProxiedPlayer p : target.getPlayers())
p.sendMessage(joinMessage);
- }
+
jp.sendMessage(joinMessage);
}
@EventHandler
- public void onServerDisconnect(ServerDisconnectEvent e)
- {
+ @SuppressWarnings("deprecation")
+ public void onServerDisconnect(ServerDisconnectEvent e) {
+
ServerInfo target = e.getTarget();
ProxiedPlayer jp = e.getPlayer();
- if (CommandGoto.justSwitched.contains(jp))
- {
- CommandGoto.justSwitched.remove(jp);
+
+ if (CommandServer.justSwitched.contains(jp)) {
+ CommandServer.justSwitched.remove(jp);
return;
}
- String leaveMessage = ChatColor.translateAlternateColorCodes('&', String.format(this.logoutString, new Object[] { jp.getName() }));
- for (ProxiedPlayer p : target.getPlayers()) {
+
+ String leaveMessage = ChatColor.translateAlternateColorCodes('&',
+ String.format(this.logoutString, new Object[] { jp.getName() }));
+
+ for (ProxiedPlayer p : target.getPlayers())
p.sendMessage(leaveMessage);
- }
}
}