DevServer #227
@ -108,6 +108,7 @@ public class BungeeCore extends Plugin {
|
||||
new DenyCommand("watchcat", "wc");
|
||||
new TeamCommand();
|
||||
new ServerTeamchatCommand();
|
||||
new DevCommand();
|
||||
new EventCommand();
|
||||
new EventreloadCommand();
|
||||
new EventRescheduleCommand();
|
||||
|
97
src/de/steamwar/bungeecore/commands/DevCommand.java
Normale Datei
97
src/de/steamwar/bungeecore/commands/DevCommand.java
Normale Datei
@ -0,0 +1,97 @@
|
||||
/*
|
||||
* This file is a part of the SteamWar software.
|
||||
*
|
||||
* Copyright (C) 2020 SteamWar.de-Serverteam
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package de.steamwar.bungeecore.commands;
|
||||
|
||||
import de.steamwar.bungeecore.Message;
|
||||
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 java.io.File;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class DevCommand extends BasicCommand {
|
||||
|
||||
private final File DevServerDir = new File("/configs/DevServer");
|
||||
|
||||
public DevCommand() {
|
||||
super("dev", "");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(CommandSender sender, String[] args) {
|
||||
if (!(sender instanceof ProxiedPlayer)) {
|
||||
return;
|
||||
}
|
||||
String[] devServer = DevServerDir.list();
|
||||
YoyoNow markierte diese Unterhaltung als gelöst
Veraltet
|
||||
if (devServer == null || devServer.length == 0) {
|
||||
YoyoNow markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Warum null? Warum null?
YoyoNow
hat
Weil .list() null zurück geben kann, ich weiß auch nicht warum, SonarLint meckert dies an. Weil .list() null zurück geben kann, ich weiß auch nicht warum, SonarLint meckert dies an.
|
||||
Message.send("DEV_NO_SERVER", sender);
|
||||
} else if (devServer.length == 1) {
|
||||
String[] server = devServer[0].split("\\.");
|
||||
sendToServer((ProxiedPlayer) sender, server[0], Integer.parseInt(server[1]));
|
||||
} else {
|
||||
if (args.length == 0) {
|
||||
send(devServer, (ProxiedPlayer) sender, s -> s.equalsIgnoreCase(((ProxiedPlayer) sender).getDisplayName()), () -> Message.send("DEV_UNKNOWN_SERVER", sender));
|
||||
} else {
|
||||
send(devServer, (ProxiedPlayer) sender, args[0]::equalsIgnoreCase, () -> Message.send("DEV_NO_SERVER", sender));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void send(String[] devServer, ProxiedPlayer sender, Predicate<String> test, Runnable error) {
|
||||
for (String s : devServer) {
|
||||
String[] server = s.split("\\.");
|
||||
if (test.test(server[0])) {
|
||||
sendToServer(sender, server[0], Integer.parseInt(server[1]));
|
||||
break;
|
||||
}
|
||||
}
|
||||
error.run();
|
||||
}
|
||||
|
||||
private void sendToServer(ProxiedPlayer proxiedPlayer, String name, int port) {
|
||||
InetSocketAddress address = new InetSocketAddress("127.0.0.1", port);
|
||||
ServerInfo serverInfo = ProxyServer.getInstance().constructServerInfo("Dev-" + name, address, "SteamWar.de - Subserver", false);
|
||||
proxiedPlayer.connect(serverInfo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<String> onTabComplete(CommandSender sender, String[] args) {
|
||||
if (!(sender instanceof ProxiedPlayer)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
String[] devSever = DevServerDir.list();
|
||||
if (devSever == null) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
if (args.length > 1) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
return Arrays.stream(devSever).map(s -> s.split("\\.")).map(s -> s[0]).filter(s -> {
|
||||
if (args.length == 0) return true;
|
||||
return s.startsWith(args[0]);
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
}
|
@ -9,6 +9,9 @@ INVALID_TIME=§cUngültige Zeitangabe.
|
||||
|
||||
STEAMWAR_BRAND=§eSteam§8War.de §7({0}) §r<- §e{1} §7({2})§r
|
||||
|
||||
DEV_NO_SERVER=§cDer Server ist derzeit nicht erreichbar.
|
||||
DEV_UNKNOWN_SERVER=§cBitte gib einen DevServer an.
|
||||
|
||||
#ModLoader blocker
|
||||
MODLOADER_INSTALLED=§7Du hast §e{0} §7installiert. Daher kannst du keinen Arenen beitreten.
|
||||
MODLOADER_DENIED=§cMit Fabric, Forge und LiteLoader kannst du keinen Arenen beitreten.
|
||||
|
In neuem Issue referenzieren
Einen Benutzer sperren
devServer
Behoben