forked from SteamWar/SteamWar
Final Hotfix of Send Command!
This commit is contained in:
@@ -27,6 +27,7 @@ import de.steamwar.command.PreviousArguments;
|
||||
import de.steamwar.command.SWCommand;
|
||||
import de.steamwar.command.TypeMapper;
|
||||
import de.steamwar.messages.Chatter;
|
||||
import de.steamwar.messages.Message;
|
||||
import de.steamwar.persistent.Subserver;
|
||||
import de.steamwar.sql.SteamwarUser;
|
||||
import de.steamwar.sql.UserPerm;
|
||||
@@ -47,24 +48,27 @@ public class SendCommand extends SWCommand {
|
||||
|
||||
@Register("to")
|
||||
public void sendCommand(Chatter sender, RegisteredServer toServer, Player... players) {
|
||||
String serverName = toServer.getServerInfo().getName();
|
||||
for (Player player : players) {
|
||||
player.createConnectionRequest(toServer).fireAndForget();
|
||||
Chatter.of(player).send(true, null, null, new Message("SEND_MESSAGE", sender.user().getUserName(), serverName));
|
||||
}
|
||||
sender.send(true, null, null, new Message("SEND_MESSAGE_SELF", players.length, serverName));
|
||||
}
|
||||
|
||||
private boolean check(SteamwarUser user, RegisteredServer registeredServer) {
|
||||
if (registeredServer == null) return false;
|
||||
ServerInfo serverInfo = registeredServer.getServerInfo();
|
||||
String name = serverInfo.getName();
|
||||
if (name.contains(" ")) return false;
|
||||
|
||||
Subserver subserver = Subserver.getSubserver(serverInfo);
|
||||
return subserver == null || Subserver.isArena(subserver) || (Subserver.isBuilder(subserver) && user.hasPerm(UserPerm.BUILD));
|
||||
}
|
||||
|
||||
@ClassMapper(value = RegisteredServer.class, local = true)
|
||||
public TypeMapper<RegisteredServer> subserverTypeMapper() {
|
||||
return new TypeMapper<>() {
|
||||
private boolean check(SteamwarUser user, RegisteredServer registeredServer) {
|
||||
if (registeredServer == null) return false;
|
||||
ServerInfo serverInfo = registeredServer.getServerInfo();
|
||||
String name = serverInfo.getName();
|
||||
if (name.contains(" ")) return false;
|
||||
|
||||
Subserver subserver = Subserver.getSubserver(serverInfo);
|
||||
return subserver == null || Subserver.isArena(subserver) || (Subserver.isBuilder(subserver) && user.hasPerm(UserPerm.BUILD));
|
||||
}
|
||||
|
||||
@Override
|
||||
public RegisteredServer map(Chatter sender, PreviousArguments previousArguments, String s) {
|
||||
SteamwarUser user = sender.user();
|
||||
@@ -115,12 +119,26 @@ public class SendCommand extends SWCommand {
|
||||
return VelocityCore.getProxy().getPlayer(s).orElse(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean validate(Chatter sender, Player value, MessageSender messageSender) {
|
||||
SteamwarUser user = sender.user();
|
||||
if (user.hasPerm(UserPerm.ADMINISTRATION)) return true;
|
||||
return check(user, value.getCurrentServer().map(ServerConnection::getServer).orElse(null));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<String> tabCompletes(Chatter sender, PreviousArguments previousArguments, String s) {
|
||||
List<RegisteredServer> previous = previousArguments.getAll(RegisteredServer.class);
|
||||
if (previous.isEmpty()) return null;
|
||||
SteamwarUser user = sender.user();
|
||||
Collection<Player> players = previous.get(0).getPlayersConnected();
|
||||
return VelocityCore.getProxy().getAllPlayers().stream().filter(player -> !players.contains(player)).map(Player::getUsername).collect(Collectors.toList());
|
||||
return VelocityCore.getProxy()
|
||||
.getAllPlayers()
|
||||
.stream()
|
||||
.filter(player -> !players.contains(player))
|
||||
.filter(player -> user.hasPerm(UserPerm.ADMINISTRATION) || check(user, player.getCurrentServer().map(ServerConnection::getServer).orElse(null)))
|
||||
.map(Player::getUsername)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user