forked from SteamWar/SteamWar
Final Hotfix of Send Command!
This commit is contained in:
@@ -127,6 +127,10 @@ HELP_BAU_LOCK_HOVER=§eLock your build server
|
||||
HELP_BAU_UNLOCK=§8/§ebuild unlock §8- §7Unlocks the buildserver for added users
|
||||
HELP_BAU_UNLOCK_HOVER=§eUnlock your build server
|
||||
|
||||
#Send Command
|
||||
SEND_MESSAGE=§e{0}§7 send you to §e{1}§8!
|
||||
SEND_MESSAGE_SELF=§eYou§7 send §e{0}§7 to §e{1}§8!
|
||||
|
||||
#Usage description of various commands
|
||||
USAGE_ALERT=§8/§7alert §8[§emessage§8]
|
||||
USAGE_IGNORE=§8/§7ignore §8[§eplayer§8]
|
||||
|
||||
@@ -112,6 +112,10 @@ HELP_BAU_LOCK_HOVER=§eSperre deinen Bau
|
||||
HELP_BAU_UNLOCK=§8/§ebau unlock §8- §7Öffne deinen Bauserver für alle hinzugefügten Spieler
|
||||
HELP_BAU_UNLOCK_HOVER=§eÖffne deinen Bau
|
||||
|
||||
#Send Command
|
||||
SEND_MESSAGE=§e{0}§7 hat dich auf §e{1}§7 gesendet§8!
|
||||
SEND_MESSAGE_SELF=§eDu§7 hast §e{0}§7 auf §e{1}§7 gesendet§8!
|
||||
|
||||
#Usage description of various commands
|
||||
USAGE_ALERT=§8/§7alert §8[§eNachricht§8]
|
||||
USAGE_IGNORE=§8/§7ignore §8[§eSpieler§8]
|
||||
|
||||
@@ -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