Initial commit
This commit is contained in:
commit
94efd2e228
9 changed files with 338 additions and 0 deletions
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
|
@ -0,0 +1,4 @@
|
|||
.idea/
|
||||
out/
|
||||
target/
|
||||
*.iml
|
11
README.md
Normal file
11
README.md
Normal file
|
@ -0,0 +1,11 @@
|
|||
# VTools
|
||||
Tools for Velocity proxy server.
|
||||
|
||||
## Commands
|
||||
|Command|What is does?|Permission|
|
||||
|-------|-------------|----------|
|
||||
|/broadcast|Broadcast a message to all servers|vtools.broadcast|
|
||||
|/find|See on which server a user is|vtools.find and vtools.find.autocomplete|
|
||||
|/send|Send a user to a different server|vtools.send|
|
||||
|/sendall|Send all users to a specific server|vtools.sendall|
|
||||
|/staffchat|Chat over multiple servers in a staff only chat|vtools.staffchat|
|
39
pom.xml
Normal file
39
pom.xml
Normal file
|
@ -0,0 +1,39 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>de.strifel.VTools</groupId>
|
||||
<artifactId>VTools</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<configuration>
|
||||
<source>8</source>
|
||||
<target>8</target>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>velocity</id>
|
||||
<url>https://repo.velocitypowered.com/snapshots/</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.velocitypowered</groupId>
|
||||
<artifactId>velocity-api</artifactId>
|
||||
<version>1.0.0-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
31
src/main/java/de/strifel/VTools/VTools.java
Normal file
31
src/main/java/de/strifel/VTools/VTools.java
Normal file
|
@ -0,0 +1,31 @@
|
|||
package de.strifel.VTools;
|
||||
|
||||
import com.velocitypowered.api.event.Subscribe;
|
||||
import com.velocitypowered.api.event.proxy.ProxyInitializeEvent;
|
||||
import com.velocitypowered.api.plugin.Plugin;
|
||||
import com.velocitypowered.api.proxy.ProxyServer;
|
||||
import de.strifel.VTools.commands.*;
|
||||
import org.slf4j.Logger;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
@Plugin(id = "vtools", name="VTools", version="1.0-SNAPSHOT", description="Some commands!")
|
||||
public class VTools {
|
||||
private final ProxyServer server;
|
||||
|
||||
@Inject
|
||||
public VTools(ProxyServer server, Logger logger) {
|
||||
this.server = server;
|
||||
}
|
||||
|
||||
|
||||
@Subscribe
|
||||
public void onProxyInitialization(ProxyInitializeEvent event) {
|
||||
server.getCommandManager().register(new CommandSend(server), "send", "tps");
|
||||
server.getCommandManager().register(new CommandSendall(server), "sendall");
|
||||
server.getCommandManager().register(new CommandBroadcast(server), "broadcast", "bc", "alert");
|
||||
server.getCommandManager().register(new CommandFind(server), "find", "search");
|
||||
server.getCommandManager().register(new CommandStaffChat(server), "staffchat", "sc");
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,42 @@
|
|||
package de.strifel.VTools.commands;
|
||||
|
||||
import com.velocitypowered.api.command.Command;
|
||||
import com.velocitypowered.api.command.CommandSource;
|
||||
import com.velocitypowered.api.proxy.Player;
|
||||
import com.velocitypowered.api.proxy.ProxyServer;
|
||||
import net.kyori.text.TextComponent;
|
||||
import net.kyori.text.format.TextColor;
|
||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class CommandBroadcast implements Command {
|
||||
private final ProxyServer server;
|
||||
|
||||
public CommandBroadcast(ProxyServer server) {
|
||||
this.server = server;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(CommandSource commandSource, @NonNull String[] strings) {
|
||||
if (strings.length > 0) {
|
||||
String message = String.join(" ", strings).replace("&", "§");
|
||||
for (Player player : server.getAllPlayers()) {
|
||||
player.sendMessage(TextComponent.of(message));
|
||||
}
|
||||
} else {
|
||||
commandSource.sendMessage(TextComponent.of("Usage: /broadcast <message>").color(TextColor.RED));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> suggest(CommandSource source, @NonNull String[] currentArgs) {
|
||||
return new ArrayList<String>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasPermission(CommandSource source, @NonNull String[] args) {
|
||||
return source.hasPermission("vtools.broadcast");
|
||||
}
|
||||
}
|
52
src/main/java/de/strifel/VTools/commands/CommandFind.java
Normal file
52
src/main/java/de/strifel/VTools/commands/CommandFind.java
Normal file
|
@ -0,0 +1,52 @@
|
|||
package de.strifel.VTools.commands;
|
||||
|
||||
import com.velocitypowered.api.command.Command;
|
||||
import com.velocitypowered.api.command.CommandSource;
|
||||
import com.velocitypowered.api.proxy.Player;
|
||||
import com.velocitypowered.api.proxy.ProxyServer;
|
||||
import net.kyori.text.TextComponent;
|
||||
import net.kyori.text.format.TextColor;
|
||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
public class CommandFind implements Command {
|
||||
private final ProxyServer server;
|
||||
|
||||
public CommandFind(ProxyServer server) {
|
||||
this.server = server;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void execute(CommandSource commandSource, @NonNull String[] strings) {
|
||||
if (strings.length == 1) {
|
||||
Optional<Player> player = server.getPlayer(strings[0]);
|
||||
if (player.isPresent() && player.get().getCurrentServer().isPresent()) {
|
||||
commandSource.sendMessage(TextComponent.of("Player " + strings[0] + " is on " + player.get().getCurrentServer().get().getServerInfo().getName() + "!").color(TextColor.YELLOW));
|
||||
} else {
|
||||
commandSource.sendMessage(TextComponent.of("The player is not online!").color(TextColor.YELLOW));
|
||||
}
|
||||
} else {
|
||||
commandSource.sendMessage(TextComponent.of("Usage: /find <username>").color(TextColor.RED));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> suggest(CommandSource source, @NonNull String[] currentArgs) {
|
||||
List<String> arg = new ArrayList<>();
|
||||
if (currentArgs.length == 1 && source.hasPermission("vtools.find.autocomplete")) {
|
||||
for (Player player : server.getAllPlayers()) {
|
||||
arg.add(player.getUsername());
|
||||
}
|
||||
}
|
||||
return arg;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasPermission(CommandSource source, @NonNull String[] args) {
|
||||
return source.hasPermission("vtools.find");
|
||||
}
|
||||
}
|
59
src/main/java/de/strifel/VTools/commands/CommandSend.java
Normal file
59
src/main/java/de/strifel/VTools/commands/CommandSend.java
Normal file
|
@ -0,0 +1,59 @@
|
|||
package de.strifel.VTools.commands;
|
||||
|
||||
import com.velocitypowered.api.command.Command;
|
||||
import com.velocitypowered.api.command.CommandSource;
|
||||
import com.velocitypowered.api.proxy.Player;
|
||||
import com.velocitypowered.api.proxy.ProxyServer;
|
||||
import com.velocitypowered.api.proxy.server.RegisteredServer;
|
||||
import net.kyori.text.TextComponent;
|
||||
import net.kyori.text.format.TextColor;
|
||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
public class CommandSend implements Command {
|
||||
private final ProxyServer server;
|
||||
|
||||
public CommandSend(ProxyServer server) {
|
||||
this.server = server;
|
||||
}
|
||||
|
||||
public void execute(CommandSource commandSource, @NonNull String[] strings) {
|
||||
if (strings.length == 2) {
|
||||
Optional<Player> oPlayer = server.getPlayer(strings[0]);
|
||||
Optional<RegisteredServer> oServer = server.getServer(strings[1]);
|
||||
if (oPlayer.isPresent() && oServer.isPresent()) {
|
||||
Player player = oPlayer.get();
|
||||
RegisteredServer server = oServer.get();
|
||||
player.createConnectionRequest(server).connect();
|
||||
commandSource.sendMessage(TextComponent.of("You send " + player.getUsername() + " to " + server.getServerInfo().getName()).color(TextColor.YELLOW));
|
||||
commandSource.sendMessage(TextComponent.of("You got send to " + server.getServerInfo().getName()).color(TextColor.YELLOW));
|
||||
} else {
|
||||
commandSource.sendMessage(TextComponent.of("The server or user does not exists!").color(TextColor.RED));
|
||||
}
|
||||
} else {
|
||||
commandSource.sendMessage(TextComponent.of("Usage: /send <username> <server>").color(TextColor.RED));
|
||||
}
|
||||
}
|
||||
|
||||
public List<String> suggest(CommandSource source, @NonNull String[] currentArgs) {
|
||||
List<String> arg = new ArrayList<String>();
|
||||
if (currentArgs.length == 1) {
|
||||
for (Player player : server.getAllPlayers()) {
|
||||
arg.add(player.getUsername());
|
||||
}
|
||||
return arg;
|
||||
} else if (currentArgs.length == 2) {
|
||||
for (RegisteredServer server : server.getAllServers()) {
|
||||
arg.add(server.getServerInfo().getName());
|
||||
}
|
||||
}
|
||||
return arg;
|
||||
}
|
||||
|
||||
public boolean hasPermission(CommandSource source, @NonNull String[] args) {
|
||||
return source.hasPermission("vtools.send");
|
||||
}
|
||||
}
|
55
src/main/java/de/strifel/VTools/commands/CommandSendall.java
Normal file
55
src/main/java/de/strifel/VTools/commands/CommandSendall.java
Normal file
|
@ -0,0 +1,55 @@
|
|||
package de.strifel.VTools.commands;
|
||||
|
||||
import com.velocitypowered.api.command.Command;
|
||||
import com.velocitypowered.api.command.CommandSource;
|
||||
import com.velocitypowered.api.proxy.Player;
|
||||
import com.velocitypowered.api.proxy.ProxyServer;
|
||||
import com.velocitypowered.api.proxy.server.RegisteredServer;
|
||||
import net.kyori.text.TextComponent;
|
||||
import net.kyori.text.format.TextColor;
|
||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
public class CommandSendall implements Command {
|
||||
private final ProxyServer server;
|
||||
|
||||
public CommandSendall(ProxyServer server) {
|
||||
this.server = server;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(CommandSource commandSource, @NonNull String[] strings) {
|
||||
if (strings.length == 1) {
|
||||
Optional<RegisteredServer> oServer = server.getServer(strings[0]);
|
||||
if (oServer.isPresent()) {
|
||||
for (Player player : server.getAllPlayers()) {
|
||||
player.createConnectionRequest(oServer.get()).connect();
|
||||
player.sendMessage(TextComponent.of("You are being sent to " + strings[0]).color(TextColor.YELLOW));
|
||||
}
|
||||
} else {
|
||||
commandSource.sendMessage(TextComponent.of("The server does not exists!").color(TextColor.RED));
|
||||
}
|
||||
} else {
|
||||
commandSource.sendMessage(TextComponent.of("Usage: /sendall <server>").color(TextColor.RED));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> suggest(CommandSource source, @NonNull String[] currentArgs) {
|
||||
List<String> arg = new ArrayList<String>();
|
||||
if (currentArgs.length == 1) {
|
||||
for (RegisteredServer server : server.getAllServers()) {
|
||||
arg.add(server.getServerInfo().getName());
|
||||
}
|
||||
}
|
||||
return arg;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasPermission(CommandSource source, @NonNull String[] args) {
|
||||
return source.hasPermission("vtools.sendall");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,45 @@
|
|||
package de.strifel.VTools.commands;
|
||||
|
||||
import com.velocitypowered.api.command.Command;
|
||||
import com.velocitypowered.api.command.CommandSource;
|
||||
import com.velocitypowered.api.proxy.Player;
|
||||
import com.velocitypowered.api.proxy.ProxyServer;
|
||||
import net.kyori.text.TextComponent;
|
||||
import net.kyori.text.format.TextColor;
|
||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class CommandStaffChat implements Command {
|
||||
private final ProxyServer server;
|
||||
|
||||
public CommandStaffChat(ProxyServer server) {
|
||||
this.server = server;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void execute(CommandSource commandSource, @NonNull String[] strings) {
|
||||
if (strings.length > 0) {
|
||||
String message = "§4[Staff]§r " + (commandSource instanceof Player ? ((Player) commandSource).getUsername() : "Console") + " > " + String.join(" ", strings).replace("&", "§");
|
||||
for (Player player : server.getAllPlayers()) {
|
||||
if (player.hasPermission("vtools.staffchat")) {
|
||||
player.sendMessage(TextComponent.of(message));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
commandSource.sendMessage(TextComponent.of("Usage: /broadcast <message>").color(TextColor.RED));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> suggest(CommandSource source, @NonNull String[] currentArgs) {
|
||||
return new ArrayList<String>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasPermission(CommandSource source, @NonNull String[] args) {
|
||||
return source.hasPermission("vtools.staffchat");
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue