use of com.microsoft.applicationinsights.smoketest.schemav2.Data in project moreCommands by ZetaMap.
the class moreCommandsPlugin method registerClientCommands.
// register commands that player can invoke in-game
@Override
public void registerClientCommands(CommandHandler handler) {
ContentRegister.CommandsRegister commands = ContentRegister.setHandler(handler);
handler.removeCommand("t");
commands.add("t", "<message...>", "Send a message only to your teammates", false, false, (arg, data) -> {
if (PVars.tchat && data.isMuted)
util.Players.err(data.player, "You're muted, you can't speak.");
else if (!PVars.tchat && !data.player.admin)
data.player.sendMessage("[scarlet]The tchat is disabled, you can't speak!");
else
Groups.player.each(p -> p.team() == data.player.team(), p -> p.sendMessage(arg[0], data.player, "[#" + data.player.team().color.toString() + "]<T>" + data.player.name.substring(data.tag.length())));
});
handler.removeCommand("a");
commands.add("a", "<message...>", "Send a message only to admins", true, false, (arg, data) -> Groups.player.each(p -> p.admin, p -> p.sendMessage(arg[0], data.player, "[scarlet]<A>" + data.player.name.substring(data.tag.length()))));
handler.removeCommand("help");
commands.add("help", "[page|filter]", "Lists all commands", false, false, (arg, data) -> {
StringBuilder result = new StringBuilder();
FilterSearchReponse filter = ArgsFilter.hasFilter(data.player, arg);
if (arg.length == 1) {
if (data.player.admin) {
if (arg[0].equals("filter")) {
result.append("Help for all filters: ");
for (FilterType type : FilterType.values()) result.append("\n - [gold]" + type.getValue() + "[]: this filter targets [sky]" + type.desc + "[].");
data.player.sendMessage(result.toString());
return;
} else if (filter.reponse == Reponses.found) {
data.player.sendMessage("Help for filter [gold]" + filter.type.getValue() + "[]: \nThe filter targets [sky]" + filter.type.desc + "[].");
return;
} else if (filter.reponse == Reponses.notFound) {
if (!Strings.canParseInt(arg[0])) {
data.player.sendMessage("[scarlet]'page' must be a number.");
return;
}
} else {
filter.sendIfError();
return;
}
} else if (!Strings.canParseInt(arg[0])) {
data.player.sendMessage("[scarlet]'page' must be a number.");
return;
}
}
Seq<CommandHandler.Command> cList = data.player.admin ? handler.getCommandList() : handler.getCommandList().select(c -> !PVars.adminCommands.contains(c.text));
CommandHandler.Command c;
int lines = 8, page = arg.length == 1 ? Strings.parseInt(arg[0]) : 1, pages = Mathf.ceil(cList.size / lines);
if (cList.size % lines != 0)
pages++;
if (page > pages || page < 1) {
data.player.sendMessage("[scarlet]'page' must be a number between[orange] 1[] and[orange] " + pages + "[].");
return;
}
result.append(Strings.format("[orange]-- Commands Page[lightgray] @[gray]/[lightgray]@[orange] --\n", page, pages));
for (int i = (page - 1) * lines; i < lines * page; i++) {
try {
c = cList.get(i);
result.append("\n[orange] " + handler.getPrefix() + c.text + "[white] " + c.paramText + "[lightgray] - " + c.description);
} catch (IndexOutOfBoundsException e) {
break;
}
}
data.player.sendMessage(result.toString());
});
commands.add("ut", "[filter|username...]", "The name of the unit", false, false, (arg, data) -> {
TempData target = data;
if (arg.length == 1) {
FilterSearchReponse filter = ArgsFilter.hasFilter(data.player, arg);
if (filter.reponse != Reponses.notFound && filter.sendIfError())
return;
else if (filter.reponse == Reponses.found) {
filter.execute(ctx -> {
if (ctx.player == null)
data.player.sendMessage(ctx.unit.type.name + " at [accent]" + ctx.unit.tileX() + "[],[accent]" + ctx.unit.tileY());
else
data.player.sendMessage((arg.length == 1 ? "[accent]" + ctx.data.realName + "[white] is " : "You're ") + (ctx.player.unit().type == null ? "[sky]invisible ..." : "a [sky]" + ctx.player.unit().type.name) + "[white].");
});
return;
} else {
Players t = Players.findByName(arg);
if (t.found)
target = t.data;
else {
Players.errNotOnline(data.player);
return;
}
}
}
data.player.sendMessage((arg.length == 1 ? "[accent]" + target.realName + "[white] is " : "You're ") + (target.player.unit().type == null ? "[sky]invisible ..." : "a [sky]" + target.player.unit().type.name) + "[white].");
});
commands.add("msg", "<username|ID> <message...>", "Send a private message to a player", false, false, (arg, data) -> {
Players result = Players.findByNameOrID(arg);
if (result.found) {
String message = String.join(" ", result.rest);
if (!Strings.stripColors(message).isBlank()) {
result.data.msgData.setTarget(data);
Call.sendMessage(data.player.con, message, "[sky]me [gold]--> " + NetClient.colorizeName(result.player.id, result.data.realName), data.player);
Call.sendMessage(result.player.con, message, NetClient.colorizeName(data.player.id, data.realName) + " [gold]--> [sky]me", data.player);
} else
Players.err(data.player, "Please don't send an empty message.");
} else
Players.errNotOnline(data.player);
});
commands.add("r", "<message...>", "Reply to the last private message received", false, false, (arg, data) -> {
if (data.msgData.target != null) {
if (data.msgData.targetOnline) {
if (!Strings.stripColors(arg[0]).isBlank()) {
Call.sendMessage(data.player.con, arg[0], "[sky]me [gold]--> " + NetClient.colorizeName(data.msgData.target.player.id, data.msgData.target.realName), data.player);
Call.sendMessage(data.msgData.target.player.con, arg[0], NetClient.colorizeName(data.player.id, data.realName) + " [gold]--> [sky]me", data.player);
} else
Players.err(data.player, "Please don't send an empty message.");
} else
Players.err(data.player, "This player is disconnected");
} else
Players.err(data.player, "No one has sent you a private message");
});
commands.add("maps", "[page]", "List all maps on server", false, false, (arg, data) -> {
if (arg.length == 1 && !Strings.canParseInt(arg[0])) {
data.player.sendMessage("[scarlet]'page' must be a number.");
return;
}
StringBuilder builder = new StringBuilder();
Seq<Map> list = mindustry.Vars.maps.all();
Map map;
int page = arg.length == 1 ? Strings.parseInt(arg[0]) : 1, lines = 8, pages = Mathf.ceil(list.size / lines);
if (list.size % lines != 0)
pages++;
if (page > pages || page < 1) {
data.player.sendMessage("[scarlet]'page' must be a number between[orange] 1[] and [orange]" + pages + "[].");
return;
}
builder.append("\n[lightgray]Actual map: " + state.map.name() + "[white]\n[orange]---- [gold]Maps list [lightgray]" + page + "[gray]/[lightgray]" + pages + "[orange] ----");
for (int i = (page - 1) * lines; i < lines * page; i++) {
try {
map = list.get(i);
builder.append("\n[orange] - [white]" + map.name() + "[orange] | [white]" + map.width + "x" + map.height + "[orange] | [green]" + (map.custom ? "Custom" : "Builtin") + "[orange] | By: [sky]" + map.author());
} catch (IndexOutOfBoundsException e) {
break;
}
}
data.player.sendMessage(builder.toString() + "\n[orange]-----------------------");
});
commands.add("vnw", "[number]", "Vote for sending a New Wave", false, false, (arg, data) -> {
if (!PVars.canVote)
return;
if (Groups.player.size() < 2 && !data.player.admin) {
data.player.sendMessage("[scarlet]2 players are required or be an admin to start a vote.");
return;
}
if (data.votedVNW) {
data.player.sendMessage("You have Voted already." + (PVars.waveVoted != 1 ? " [lightgray](" + PVars.waveVoted + " waves)" : ""));
return;
}
if (arg.length == 1) {
if (!PVars.vnwSession.isScheduled()) {
if (data.player.admin) {
if (Strings.canParseInt(arg[0])) {
PVars.waveVoted = (short) Strings.parseInt(arg[0]);
ALog.write("VNW", "@ [@] start a vote to skip @ waves", data.stripedName, data.player.uuid(), PVars.waveVoted);
} else {
Players.err(data.player, "Please type a number");
return;
}
} else {
Players.errPermDenied(data.player);
return;
}
} else {
Players.err(data.player, "A vote to skip wave is already in progress! " + (PVars.waveVoted != 1 ? "[lightgray](" + PVars.waveVoted + " waves)" : ""));
return;
}
} else if (!PVars.vnwSession.isScheduled())
PVars.waveVoted = 1;
data.votedVNW = true;
int cur = TempData.count(p -> p.votedVNW), req = Mathf.ceil(0.6f * Groups.player.size());
Call.sendMessage(NetClient.colorizeName(data.player.id, data.realName) + "[orange] has voted to " + (PVars.waveVoted == 1 ? "send a new wave" : "skip [green]" + PVars.waveVoted + " waves") + ". [lightgray](" + (req - cur) + " votes missing)");
if (!PVars.vnwSession.isScheduled())
Timer.schedule(PVars.vnwSession, 30);
if (cur < req)
return;
TempData.setField(p -> p.votedVNW = false);
PVars.vnwSession.cancel();
Call.sendMessage("[green]Vote for " + (PVars.waveVoted == 1 ? "Sending a new wave" : "Skiping [scarlet]" + PVars.waveVoted + "[] waves") + " is Passed. New Wave will be Spawned.");
if (PVars.waveVoted > 0) {
while (PVars.waveVoted-- > 0) {
try {
state.wavetime = 0f;
Thread.sleep(30);
} catch (Exception e) {
break;
}
}
} else {
state.wave += PVars.waveVoted;
if (state.wave < 1)
state.wave = 1;
}
});
commands.add("rtv", "[mapName...]", "Rock the vote to change map", false, false, (arg, data) -> {
if (!PVars.canVote)
return;
if (Groups.player.size() < 2 && !data.player.admin) {
data.player.sendMessage("[scarlet]2 players are required or be an admin to start a vote.");
return;
}
if (data.votedRTV) {
data.player.sendMessage("You have Voted already. [lightgray](selected map:[white] " + PVars.selectedMap.name() + "[lightgray])");
return;
}
if (arg.length == 1) {
if (!PVars.rtvSession.isScheduled()) {
PVars.selectedMap = maps.all().find(map -> Strings.stripColors(map.name()).replace(' ', '_').equalsIgnoreCase(Strings.stripColors(arg[0]).replace(' ', '_')));
if (PVars.selectedMap == null) {
Players.err(data.player, "No map with name '@' found.", arg[0]);
return;
} else
maps.queueNewPreview(PVars.selectedMap);
} else {
Players.err(data.player, "A vote to change the map is already in progress! [lightgray](selected map:[white] " + PVars.selectedMap.name() + "[lightgray])");
return;
}
} else if (!PVars.rtvSession.isScheduled())
PVars.selectedMap = maps.getNextMap(Gamemode.valueOf(Core.settings.getString("lastServerMode")), state.map);
data.votedRTV = true;
int RTVsize = TempData.count(p -> p.votedRTV), req = Mathf.ceil(0.6f * Groups.player.size());
Call.sendMessage("[scarlet]RTV: [accent]" + NetClient.colorizeName(data.player.id, data.realName) + " [white]wants to change the map, [green]" + RTVsize + "[white]/[green]" + req + " []votes. [lightgray](selected map: [white]" + PVars.selectedMap.name() + "[lightgray])");
if (!PVars.rtvSession.isScheduled())
Timer.schedule(PVars.rtvSession, 60);
if (RTVsize < req)
return;
TempData.setField(p -> p.votedRTV = false);
PVars.rtvSession.cancel();
Call.sendMessage("[scarlet]RTV: [green]Vote passed, map change to [white]" + PVars.selectedMap.name() + " [green]...");
new RTV(PVars.selectedMap, Team.crux);
});
commands.add("lobby", "", "Switch to lobby server", false, true, (arg, data) -> {
if (Switcher.lobby == null)
Players.err(data.player, "Lobby server not defined");
else {
Switcher.ConnectReponse connect = Switcher.lobby.connect(data.player);
Call.infoMessage(data.player.con, (connect.failed ? "[scarlet]Error connecting to server: \n[]" : "") + connect.message);
}
});
commands.add("switch", "<list|name...>", "Switch to another server", false, true, (arg, data) -> {
if (arg[0].equals("list")) {
if (Switcher.isEmpty())
Players.err(data.player, "No server in the list");
else {
StringBuilder builder = new StringBuilder();
Switcher.each(data.player.admin, s -> {
mindustry.net.Host ping = s.ping();
builder.append("[lightgray]\n - [orange]" + s.name + " [white]| " + (ping == null ? "[scarlet]Offline" : "[green]" + ping.players + " players online" + " [lightgray](map: [accent]" + ping.mapname + "[lightgray])"));
});
data.player.sendMessage("Available servers:" + builder.toString());
}
} else {
Switcher server = Switcher.getByName(arg[0]);
if (server == null)
Players.err(data.player, "no server with name '@'", arg[0]);
else {
Switcher.ConnectReponse connect = server.connect(data.player);
Call.infoMessage(data.player.con, (connect.failed ? "[scarlet]Error connecting to server: \n[]" : "") + connect.message);
}
}
});
commands.add("info-all", "[ID|username...]", "Get all player informations", false, false, (arg, data) -> {
StringBuilder builder = new StringBuilder();
ObjectSet<PlayerInfo> infos = ObjectSet.with(data.player.getInfo());
Players test;
int i = 1;
boolean mode = true;
if (arg.length == 1) {
test = Players.findByName(arg);
if (!test.found) {
if (data.player.admin) {
test = Players.findByID(arg);
if (!test.found) {
infos = netServer.admins.searchNames(arg[0]);
if (infos.size == 0)
infos = ObjectSet.with(netServer.admins.getInfoOptional(arg[0]));
if (infos.size == 0) {
Players.err(data.player, "No player nickname containing [orange]'@'[].", arg[0]);
return;
}
} else
infos = ObjectSet.with(test.player.getInfo());
} else {
if (Players.findByID(arg).found)
Players.err(data.player, "You don't have permission to search a player by their ID!");
else
Players.errNotOnline(data.player);
return;
}
} else
infos = ObjectSet.with(test.player.getInfo());
mode = false;
}
if (data.player.admin && !mode)
data.player.sendMessage("[gold]----------------------------------------\n[scarlet]-----" + "\n[white]Players found: [gold]" + infos.size + "\n[scarlet]-----");
for (PlayerInfo pI : infos) {
if (data.player.admin && !mode)
data.player.sendMessage("[gold][" + i++ + "] [white]Trace info for player [accent]'" + pI.lastName.replaceAll("\\[", "[[") + "[accent]'[white] / ID [accent]'" + pI.id + "' ");
else
builder.append("[white]Player name [accent]'" + pI.lastName.replaceAll("\\[", "[[") + "[accent]'" + (mode ? "[white] / ID [accent]'" + pI.id + "'" : "") + "\n[gold]----------------------------------------[]\n");
test = Players.findByID(pI.id + " ");
builder.append("[white] - All names used: [accent]" + pI.names + (test.found ? "\n[white] - [green]Online" + "\n[white] - Country: [accent]" + test.player.locale : "") + (TempData.creatorID.equals(pI.id) ? "\n[white] - [sky]Creator of moreCommands [lightgray](the plugin used by this server)" : "") + (data.player.admin ? "\n[white] - IP: [accent]" + pI.lastIP + "\n[white] - All IPs used: [accent]" + pI.ips : "") + "\n[white] - Times joined: [green]" + pI.timesJoined + "\n[white] - Times kicked: [scarlet]" + pI.timesKicked + (data.player.admin ? "\n[white] - Is baned: [accent]" + pI.banned + (pI.banned ? "\n[white] - Reason: [accent]" + PVars.bansReason.get(pI.id, "<unknown>") : "") : "") + "\n[white] - Is admin: [accent]" + pI.admin + "\n[gold]----------------------------------------");
if (mode)
Call.infoMessage(data.player.con, builder.toString());
else {
data.player.sendMessage(builder.toString());
builder = new StringBuilder();
}
}
});
commands.add("rainbow", "[filter|ID|username...]", "[#ff0000]R[#ff7f00]A[#ffff00]I[#00ff00]N[#0000ff]B[#2e2b5f]O[#8B00ff]W[#ff0000]![#ff7f00]!", false, false, (arg, data) -> {
TempData target = data;
if (arg.length == 1) {
FilterSearchReponse filter = ArgsFilter.hasFilter(data.player, arg[0]);
if (filter.reponse != Reponses.notFound && filter.sendIfError())
return;
else if (filter.reponse == Reponses.found) {
if (Players.errFilterAction("Rainbow", filter, true))
return;
filter.execute(ctx -> {
if (ctx.data.spectate())
Players.err(data.player, "Can't start rainbow in vanish mode!");
else {
ctx.data.rainbowed = !ctx.data.rainbowed;
if (ctx.data.rainbowed)
ctx.data.hasEffect = false;
else
ctx.data.resetName();
data.player.sendMessage(Strings.format("[sky]Rainbow effect toggled @ @[].", ctx.data.rainbowed ? "on" : "off", " for the player [accent]" + ctx.data.realName));
ALog.write("Rainbow", "@ [@] @ the rainbow effect to @ [@]", data.stripedName, data.player.uuid(), ctx.data.rainbowed ? "start" : "remove", ctx.data.stripedName, ctx.player.uuid());
}
});
return;
} else if (data.player.admin) {
target = Players.findByNameOrID(arg).data;
if (target == null) {
Players.errNotOnline(data.player);
return;
} else
ALog.write("Rainbow", "@ [@] @ the rainbow effect to @ [@]", data.stripedName, data.player.uuid(), target.rainbowed ? "remove" : "start", target.stripedName, target.player.uuid());
} else {
Players.errPermDenied(data.player);
return;
}
}
if (target.spectate()) {
Players.err(data.player, "Can't start rainbow in vanish mode!");
return;
}
target.rainbowed = !target.rainbowed;
if (target.rainbowed)
target.hasEffect = false;
else
target.resetName();
data.player.sendMessage(Strings.format("[sky]Rainbow effect toggled @ @[].", target.rainbowed ? "on" : "off", arg.length == 1 ? " for the player [accent]" + target.realName : ""));
});
commands.add("effect", "[list|name|id] [page|ID|username...]", "Gives you a particles effect", false, false, (arg, data) -> {
Seq<Effects> effects = Effects.copy(data.player.admin, false);
Effects e;
StringBuilder builder = new StringBuilder();
TempData target = data;
if (arg.length >= 1 && arg[0].equals("list")) {
if (arg.length == 2 && !Strings.canParseInt(arg[1])) {
data.player.sendMessage("[scarlet]'page' must be a number.");
return;
}
int page = arg.length == 2 ? Strings.parseInt(arg[1]) : 1, lines = 12, pages = Mathf.ceil(effects.size / lines);
if (effects.size % lines != 0)
pages++;
if (page > pages || page < 0) {
data.player.sendMessage("[scarlet]'page' must be a number between[orange] 1[] and[orange] " + pages + "[scarlet].");
return;
}
data.player.sendMessage("\n[orange]---- [gold]Effects list [lightgray]" + page + "[gray]/[lightgray]" + pages + "[orange] ----");
for (int i = (page - 1) * lines; i < lines * page; i++) {
try {
e = effects.get(i);
builder.append(" [orange]- [lightgray]ID:[white] " + e.id + "[orange] | [lightgray]Name:[white] " + e.name + (e.forAdmin ? "[orange] | [scarlet]Admin" : "") + "\n");
} catch (Exception err) {
break;
}
}
data.player.sendMessage(builder.toString());
return;
} else if (arg.length == 0) {
if (target.hasEffect) {
target.hasEffect = false;
data.player.sendMessage("[green]Removed particles effect.");
return;
} else if (target.spectate()) {
Players.err(data.player, "Can't start effect in vanish mode!");
return;
} else {
target.rainbowed = false;
target.resetName();
target.hasEffect = true;
target.effect = effects.random();
data.player.sendMessage("Randomised effect ...");
data.player.sendMessage("[green]Start particles effect [accent]" + target.effect.id + "[scarlet] - []" + target.effect.name);
}
} else if (arg.length == 2) {
if (data.player.admin) {
target = Players.findByNameOrID(arg[1]).data;
if (target == null)
Players.errNotOnline(data.player);
else if (target.spectate()) {
Players.err(data.player, "Can't start effect in vanish mode!");
return;
} else {
if (target.hasEffect) {
target.hasEffect = false;
data.player.sendMessage("[green]Removed particles effect for [accent]" + target.realName);
} else {
if (Strings.canParseInt(arg[0]))
e = Effects.getByID(Strings.parseInt(arg[0]) - 1);
else
e = Effects.getByName(arg[0]);
if (e == null) {
Players.err(data.player, "Particle effect don't exist");
return;
} else if (e.disabled) {
Players.err(data.player, "This particle effect is disabled");
return;
} else if (e.forAdmin && !data.player.admin) {
Players.err(data.player, "This particle effect is only for admins");
return;
} else {
target.rainbowed = false;
target.resetName();
target.hasEffect = true;
target.effect = e;
data.player.sendMessage("[green]Start particles effect [accent]" + e.id + "[scarlet] - []" + e.name + "[] for [accent]" + target.realName);
}
}
ALog.write("Effect", "@ [@] @ particles effect to @ [@]", data.stripedName, data.player.uuid(), target.hasEffect ? "start" : "remove", target.stripedName, target.player.uuid());
}
} else
Players.errPermDenied(data.player);
return;
} else {
if (target.spectate()) {
Players.err(data.player, "Can't start effect in vanish mode!");
return;
}
if (Strings.canParseInt(arg[0]))
e = Effects.getByID(Strings.parseInt(arg[0]) - 1);
else
e = Effects.getByName(arg[0]);
if (e == null) {
Players.err(data.player, "Particle effect don't exist");
return;
} else if (e.disabled) {
Players.err(data.player, "This particle effect is disabled");
return;
} else if (e.forAdmin && !data.player.admin) {
Players.err(data.player, "This particle effect is only for admins");
return;
} else {
target.rainbowed = false;
target.resetName();
target.hasEffect = true;
target.effect = e;
data.player.sendMessage("[green]Start particles effect [accent]" + e.id + "[scarlet] - []" + e.name);
}
}
});
commands.add("team", "[list|teamName|vanish|~] [filter|username...]", "Change team", true, false, (args, data) -> {
StringBuilder builder = new StringBuilder();
Team ret = null;
FilterSearchReponse filter = null;
TempData target = data;
boolean noCore;
if (args.length == 2) {
filter = ArgsFilter.hasFilter(data.player, args[1]);
if (filter.reponse == Reponses.notFound) {
target = Players.findByName(args[1]).data;
if (target == null) {
Players.errNotOnline(data.player);
return;
}
} else if (filter.sendIfError())
return;
}
if (filter != null && filter.reponse == Reponses.found) {
filter.execute(ctx -> {
if (ctx.player != null) {
TempData t = TempData.get(ctx.player);
if (t.spectate()) {
t.player.sendMessage(">[orange] transferring back to last team");
t.player.team(t.spectate);
Call.setPlayerTeamEditor(t.player, t.spectate);
t.spectate = null;
t.resetName();
}
}
});
return;
} else if (target.spectate()) {
target.player.sendMessage(">[orange] transferring back to last team");
target.player.team(target.spectate);
Call.setPlayerTeamEditor(target.player, target.spectate);
target.spectate = null;
target.resetName();
return;
}
if (args.length >= 1) {
Team retTeam;
switch(args[0]) {
case "~":
retTeam = data.player.team();
break;
case "vanish":
if (filter != null && filter.reponse == Reponses.found) {
if (Players.errFilterAction("Vanish team", filter, true))
return;
int counter = filter.execute(ctx -> {
TempData t = TempData.get(ctx.player);
t.spectate = t.player.unit().team;
t.rainbowed = false;
t.hasEffect = false;
t.player.team(Team.all[8]);
Call.setPlayerTeamEditor(t.player, Team.all[8]);
t.player.unit().kill();
t.player.name = "";
t.player.sendMessage("[green]VANISH MODE[] \nuse /team to go back to player mode.");
ALog.write("Team", "@ [@] vanished @ [@]", data.stripedName, data.player.uuid(), t.stripedName, t.player.uuid());
});
data.player.sendMessage("You put [green]" + counter + "[] players in vanish mode");
} else {
target.spectate = target.player.unit().team;
target.rainbowed = false;
target.hasEffect = false;
target.player.team(Team.all[8]);
Call.setPlayerTeamEditor(target.player, Team.all[8]);
target.player.unit().kill();
target.player.name = "";
target.player.sendMessage("[green]VANISH MODE[] \nuse /team to go back to player mode.");
data.player.sendMessage("You put [accent]" + target.realName + "[white] in vanish mode");
ALog.write("Team", "@ [@] vanished @ [@]", data.stripedName, data.player.uuid(), target.stripedName, target.player.uuid());
}
return;
default:
retTeam = Players.findTeam(args[0]);
if (retTeam == null)
Players.err(data.player, "Team not found!");
else
break;
case "list":
builder.append("available teams: \n - [accent]vanish[]\n");
for (Team team : Team.baseTeams) {
builder.append(" - [accent]" + team.name + "[]");
if (!team.cores().isEmpty())
builder.append(" | [green]" + team.cores().size + "[] core(s) found");
builder.append("\n");
}
data.player.sendMessage(builder.toString());
return;
}
noCore = retTeam.cores().isEmpty();
ret = retTeam;
} else {
ret = getPosTeamLoc(target.player);
noCore = false;
}
// move team mechanic
if (ret != null || noCore) {
Team retF = ret;
if (noCore)
Players.warn(data.player, "This team has no core!");
if (filter != null && filter.reponse == Reponses.found) {
int counter = filter.execute(ctx -> {
if (ctx.player != null) {
if (!noCore)
Call.setPlayerTeamEditor(ctx.player, retF);
ctx.player.team(retF);
ctx.unit.controlling.each(u -> u.team(retF));
data.player.sendMessage("> You changed [accent]" + (args.length == 2 ? ctx.data.realName : "") + "[white] to team [sky]" + retF.name);
ALog.write("Team", "@ [@] changed @ [@] to the team @", data.stripedName, data.player.uuid(), ctx.data.stripedName, ctx.player.uuid(), retF.name);
return false;
} else {
ctx.unit.team(retF);
return true;
}
});
if (!filter.type.onlyPlayers)
data.player.sendMessage("> You changed [green]" + counter + "[] units to team [sky]" + retF.name);
} else {
if (!noCore)
Call.setPlayerTeamEditor(target.player, ret);
target.player.team(ret);
target.player.unit().controlling.each(u -> u.team(retF));
data.player.sendMessage("> You changed [accent]" + (args.length == 2 ? target.realName : "") + "[white] to team [sky]" + ret.name);
ALog.write("Team", "@ [@] changed @ [@] to the team @", data.stripedName, data.player.uuid(), target.stripedName, target.player.uuid(), retF.name);
}
} else
Players.err(data.player, "Other team has no core, can't change!");
});
commands.add("players", "<help|searchFilter> [page]", "Display the list of players", true, false, (arg, data) -> {
String message;
Seq<String> list = new Seq<>();
StringBuilder builder = new StringBuilder();
switch(arg[0]) {
case "ban":
if (netServer.admins.getBanned().isEmpty()) {
data.player.sendMessage("[green]No player banned");
return;
}
message = "\nTotal banned players : [green]" + netServer.admins.getBanned().size + ". \n[gold]-------------------------------- \n[accent]Banned Players:";
netServer.admins.getBanned().each(p -> list.add("[white] - [lightgray]Names: [accent]" + p.names + "[white] - [lightgray]ID: [accent]'" + p.id + "'" + "[white] - [lightgray]Kicks: [accent]" + p.timesKicked + (p.admin ? "[white] | [scarlet]Admin[]" : "") + "\n"));
break;
case "mute":
if (PVars.recentMutes.size == 0) {
data.player.sendMessage("[green]No player muted");
return;
}
message = "\nTotal muted players : [green]" + PVars.recentMutes.size + ". \n[gold]-------------------------------- \n[accent]Muted Players:";
PVars.recentMutes.each(p -> {
PlayerInfo pl = netServer.admins.getInfoOptional(p);
list.add("[white] - [lightgray]Names: [accent]" + pl.names + "[white] - [lightgray]ID: [accent]'" + p + "'" + (pl.admin ? "[white] | [scarlet]Admin[]" : "") + (Players.findByID(p).found ? "[white] | [green]Online" : "") + "\n");
});
break;
case "online":
message = "\nTotal online players: [green]" + Groups.player.size() + "[].\n[gold]--------------------------------[]\n[accent]List of players:";
Groups.player.each(p -> list.add(" - [lightgray]" + p.name.replaceAll("\\[", "[[") + "[] : [accent]'" + p.uuid() + "'[]" + (p.admin ? "[white] | [scarlet]Admin[]" : "") + "\n[accent]"));
break;
case "admin":
message = "\nTotal admin players: [green]" + netServer.admins.getAdmins().size + "[].\n[gold]--------------------------------[]\n[accent]Admin players:";
netServer.admins.getAdmins().each(p -> list.add("[white] - [lightgray]Names: [accent]" + p.names + "[white] - [lightgray]ID: [accent]'" + p.id + "'" + (p.banned ? "[white] | [orange]Banned" : "") + (Players.findByID(p.id).found ? "[white] | [green]Online" : "") + "\n"));
break;
case "all":
message = "\nTotal players: [green]" + netServer.admins.getWhitelisted().size + "[].\n[gold]--------------------------------[]\n[accent]List of players:";
netServer.admins.getWhitelisted().each(p -> list.add("[white] - [lightgray]Names: [accent]" + p.names + "[white] - [lightgray]ID: [accent]'" + p.id + "'" + (p.admin ? "[white] | [scarlet]Admin" : "") + (p.banned ? "[white] | [orange]Banned" : "") + (Players.findByID(p.id).found ? "[white] | [green]Online" : "") + "\n"));
break;
default:
Players.err(data.player, "Invalid arguments.");
case "help":
data.player.sendMessage("[scarlet]Available arguments: []" + "\n[lightgray] - [accent]ban[]: [white] List of banned players" + "\n[lightgray] - [accent]mute[]: [white] List of muted players" + "\n[lightgray] - [accent]online[]: [white] List of online players" + "\n[lightgray] - [accent]admin[]: [white] List of admin players" + "\n[lightgray] - [accent]all[]: [white] List of all players" + "\n[lightgray] - [accent]help[]: [white] Display this help message");
return;
}
if (arg.length == 2 && !Strings.canParseInt(arg[1])) {
data.player.sendMessage("[scarlet]'page' must be a number.");
return;
}
int lines = 15, page = arg.length == 2 ? Strings.parseInt(arg[1]) : 1, pages = Mathf.ceil(list.size / lines);
if (list.size % lines != 0)
pages++;
if (page > pages || page < 1) {
data.player.sendMessage("[scarlet]'page' must be a number between[orange] 1[] and[orange] " + pages + "[].");
return;
}
data.player.sendMessage(message + "[orange] Page [lightgray]" + page + "[gray]/[lightgray]" + pages + "[accent]:");
for (int i = (page - 1) * lines; i < lines * page; i++) {
try {
builder.append(list.get(i));
} catch (IndexOutOfBoundsException e) {
break;
}
}
data.player.sendMessage(builder.toString());
});
commands.add("kill", "[filter|username...]", "Kill a player or a unit", true, false, (arg, data) -> {
if (arg.length == 0) {
data.player.unit().kill();
data.player.sendMessage("[green]Killed yourself");
} else {
FilterSearchReponse reponse = ArgsFilter.hasFilter(data.player, arg);
if (reponse.reponse != Reponses.notFound && reponse.sendIfError())
return;
else if (reponse.reponse == Reponses.found) {
int counter = reponse.execute(ctx -> {
ctx.unit.kill();
if (ctx.type == FilterType.random || ctx.type == FilterType.randomUnit || ctx.type == FilterType.trigger) {
data.player.sendMessage(Strings.format(ctx.type.formatedDesc, "[green]Killed", ctx.type == FilterType.random ? ctx.data.realName : ctx.unit.type.name));
ALog.write("Kill", "@ [@] @", data.stripedName, data.player.uuid(), Strings.format(ctx.type.formatedDesc, "killed", ctx.type == FilterType.random ? ctx.data.stripedName : ctx.unit.type.name));
}
});
if (reponse.type != FilterType.random || reponse.type != FilterType.randomUnit || reponse.type != FilterType.trigger) {
data.player.sendMessage(Strings.format(reponse.type.formatedDesc, "[green]Killed[orange]", counter + "[]", "[accent]" + data.player.team().name));
ALog.write("Kill", "@ [@] @", data.stripedName, data.player.uuid(), Strings.format(reponse.type.formatedDesc, "killed", counter, data.player.team().name));
}
} else {
TempData other = Players.findByName(arg).data;
if (other != null) {
other.player.unit().kill();
data.player.sendMessage("[green]Killed [accent]" + data.realName);
ALog.write("Kill", "@ [@] killed @ [@]", data.stripedName, data.player.uuid(), other.stripedName, other.player.uuid());
} else
Players.errNotOnline(data.player);
}
}
});
commands.add("core", "[small|medium|big] [teamName|~]", "Build a core at your location", true, false, (arg, data) -> {
if (data.spectate()) {
Players.err(data.player, "You can't build a core in vanish mode!");
return;
}
mindustry.world.Block core = Blocks.coreShard;
Team team = data.player.team();
if (arg.length > 0) {
switch(arg[0]) {
case "small":
core = Blocks.coreShard;
break;
case "medium":
core = Blocks.coreFoundation;
break;
case "big":
core = Blocks.coreNucleus;
break;
default:
Players.err(data.player, "no core with name '@'", arg[0]);
return;
}
}
if (arg.length == 2 && !arg[1].equals("~")) {
team = Players.findTeam(arg[1]);
if (team == null) {
StringBuilder builder = new StringBuilder();
Players.err(data.player, "Team not found! []\navailable teams: ");
for (Team teamList : Team.baseTeams) builder.append(" - [accent]" + teamList.name + "[]\n");
data.player.sendMessage(builder.toString());
return;
}
}
Call.constructFinish(data.player.tileOn(), core, data.player.unit(), (byte) 0, team, false);
data.player.sendMessage("[green]Core build" + (arg.length == 2 ? "for the team [accent]" + team.name : ""));
ALog.write("Core", "@ [@] build a @ at @,@ for the team @", data.stripedName, data.player.uuid(), core.name, data.player.tileX(), data.player.tileY(), team.name);
});
commands.add("tp", "<filter|name|x,y> [~|to_name|x,y...]", "Teleport to a location or player", true, false, (arg, data) -> {
int[] co = { data.player.tileX(), data.player.tileY() };
TempData target = data;
Search result = null;
FilterSearchReponse filter = ArgsFilter.hasFilter(data.player, arg);
Seq<String> newArg = Seq.with(arg);
if (filter.reponse != Reponses.notFound && filter.sendIfError())
return;
else if (filter.reponse == Reponses.found)
newArg.remove(0);
else {
result = new Search(arg, data);
newArg = Seq.with(result.rest);
if (result.error)
return;
else if (result.XY == null)
co = new int[] { result.player.player.tileX(), result.player.player.tileY() };
else
co = result.XY;
}
if (newArg.isEmpty() && filter.reponse == Reponses.found) {
Players.err(data.player, "2 arguments are required to use filters");
return;
} else if (!newArg.isEmpty()) {
if (String.join(" ", newArg).equals("~")) {
if (result != null && result.XY != null) {
data.player.sendMessage("[scarlet]Can't teleport a coordinate to a coordinate or to a player! [lightgray]It's not logic XD.");
return;
}
} else if (filter.reponse == Reponses.found) {
result = new Search(newArg.toArray(String.class), data);
if (result.error)
return;
else if (result.XY == null)
co = new int[] { result.player.player.tileX(), result.player.player.tileY() };
else
co = result.XY;
} else {
target = result.player;
if (result.XY == null) {
result = new Search(newArg.toArray(String.class), data);
if (result.error)
return;
else if (result.XY == null)
co = new int[] { result.player.player.tileX(), result.player.player.tileY() };
else
co = result.XY;
} else {
data.player.sendMessage("[scarlet]Can't teleport a coordinate to a coordinate or to a player! [lightgray]It's not logic XD.");
return;
}
}
}
if (co[0] > world.width() || co[0] < 0 || co[1] > world.height() || co[1] < 0) {
data.player.sendMessage("[scarlet]Coordinates too large. Max: [orange]" + world.width() + "[]x[orange]" + world.height() + "[]. Min: [orange]0[]x[orange]0[].");
return;
}
int x = co[0] * 8, y = co[1] * 8;
if (filter.reponse == Reponses.found) {
int counter = filter.execute(ctx -> {
Players.tpPlayer(ctx.unit, x, y);
if (ctx.player != null) {
data.player.sendMessage("[green]You teleported [accent]" + ctx.data.realName + "[green] to [accent]" + x / 8 + "[green]x[accent]" + y / 8 + "[green].");
ALog.write("Tp", "@ [@] teleported @ [@] at @,@", data.stripedName, data.player.uuid(), ctx.data.stripedName, ctx.player.uuid(), x / 8, x / 8);
return false;
} else
return true;
});
if (!filter.type.onlyPlayers)
data.player.sendMessage("[green]You teleported [orange]" + counter + "[] units to [accent]" + co[0] + "[]x[accent]" + co[1] + "[].");
} else {
Players.tpPlayer(target.player.unit(), x, y);
if (arg.length == 2)
data.player.sendMessage("[green]You teleported [accent]" + target.realName + "[green] to [accent]" + co[0] + "[green]x[accent]" + co[1] + "[green].");
else
data.player.sendMessage("[green]You teleported to [accent]" + co[0] + "[]x[accent]" + co[1] + "[].");
ALog.write("Tp", "@ [@] teleported @ [@] at @,@", data.stripedName, data.player.uuid(), target.stripedName, target.player.uuid(), co[0], co[1]);
}
});
commands.add("spawn", "<unit> [count] [filter|x,y|username] [teamName|~...]", "Spawn a unit", true, false, (arg, data) -> {
mindustry.type.UnitType unit = content.units().find(b -> b.name.equals(arg[0]));
Player target = data.player;
Team team = target.team();
int count = 1, x = (int) target.x, y = (int) target.y;
boolean thisTeam;
Seq<String> newArg = Seq.with(arg);
newArg.remove(0);
FilterSearchReponse filter = null;
if (unit == null) {
data.player.sendMessage("[scarlet]Available units: []" + content.units().toString("[scarlet], []"));
return;
}
if (arg.length > 1) {
if (!Strings.canParseInt(newArg.get(0))) {
Players.err(data.player, "'count' must be number!");
return;
} else
count = Strings.parseInt(newArg.get(0));
newArg.remove(0);
if (!newArg.isEmpty()) {
filter = ArgsFilter.hasFilter(target, newArg.toArray(String.class));
if (filter.reponse != Reponses.notFound && filter.sendIfError())
return;
else if (filter.reponse == Reponses.found)
newArg.remove(0);
else {
Search result = new Search(newArg.toArray(String.class), data);
newArg.set(Seq.with(result.rest));
if (result.error)
return;
else
target = result.player.player;
if (result.XY == null) {
x = (int) target.x;
y = (int) target.y;
} else {
x = result.XY[0] * 8;
y = result.XY[1] * 8;
}
}
}
if (!newArg.isEmpty()) {
if (!newArg.get(0).equals("~")) {
team = Players.findTeam(newArg.get(0));
if (team == null) {
StringBuilder builder = new StringBuilder();
Players.err(data.player, "Team not found! []\navailable teams: ");
for (Team teamList : Team.baseTeams) builder.append(" - [accent]" + teamList.name + "[]\n");
data.player.sendMessage(builder.toString());
return;
}
}
newArg.remove(0);
thisTeam = true;
} else {
team = target.team();
thisTeam = false;
}
if (!newArg.isEmpty()) {
Players.err(data.player, "Too many arguments!");
return;
}
} else
thisTeam = true;
if (team.cores().isEmpty())
Players.err(data.player, "The [accent]" + team.name + "[] team has no core! Units cannot spawn");
else {
if (filter != null && filter.reponse == Reponses.found) {
Team teamF = team;
int countF = count;
filter.execute(ctx -> {
int counter = 0;
for (int i = 0; i < countF; i++) {
if (unit.spawn(thisTeam ? teamF : ctx.unit.team, ctx.unit.x, ctx.unit.y).isValid())
counter++;
}
data.player.sendMessage("[green]You are spawning [accent]" + counter + " " + unit + " []for [accent]" + teamF + " []team at [orange]" + ctx.unit.tileX() + "[white],[orange]" + ctx.unit.tileY());
ALog.write("Spawn", "@ [@] spawn @ @ at @,@", data.stripedName, data.player.uuid(), counter, unit.name, ctx.unit.tileX(), ctx.unit.tileY());
});
} else {
int counter = 0;
for (int i = 0; i < count; i++) {
if (unit.spawn(team, x, y).isValid())
counter++;
}
data.player.sendMessage("[green]You are spawning [accent]" + counter + " " + unit.name + " []for [accent]" + team + " []team at [orange]" + x / 8 + "[white],[orange]" + y / 8);
ALog.write("Spawn", "@ [@] spawn @ @ at @,@", data.stripedName, data.player.uuid(), counter, unit.name, x / 8, y / 8);
}
}
});
commands.add("godmode", "[filter|username...]", "[scarlet][God][]: [gold]I'm divine!", true, false, (arg, data) -> {
TempData target = data;
if (arg.length == 1) {
FilterSearchReponse filter = ArgsFilter.hasFilter(data.player, arg);
if (filter.reponse != Reponses.notFound && filter.sendIfError())
return;
else if (filter.reponse == Reponses.found) {
int counter = filter.execute(ctx -> {
if (ctx.player != null) {
TempData t = TempData.get(ctx.player);
t.inGodmode = !t.inGodmode;
ctx.unit.health = t.inGodmode ? Integer.MAX_VALUE : ctx.unit.maxHealth;
data.player.sendMessage("[gold]God mode is [green]" + (t.inGodmode ? "enabled" : "disabled") + "[] for [accent]" + ctx.data.realName);
ctx.player.sendMessage((t.inGodmode ? "[green]You've been put into god mode" : "[red]You have been removed from god mode") + " by [accent]" + data.realName);
ALog.write("Godmode", "@ [@] @ @ [@] to the godmode", data.stripedName, data.player.uuid(), ctx.data.inGodmode ? "put" : "remove", ctx.data.stripedName, ctx.player.uuid());
return false;
} else {
ctx.unit.health = ctx.unit.health == Integer.MAX_VALUE ? ctx.unit.maxHealth : Integer.MAX_VALUE;
return true;
}
});
if (!filter.type.onlyPlayers) {
data.player.sendMessage("[gold]God mode change for [green]" + counter + "[] units");
ALog.write("Godmode", "@ [@] change the godmode of @ units", data.stripedName, data.player.uuid(), counter);
}
return;
} else {
target = Players.findByName(arg).data;
if (target == null) {
Players.errNotOnline(data.player);
return;
}
}
}
target.inGodmode = !target.inGodmode;
target.player.unit().health = target.inGodmode ? Integer.MAX_VALUE : target.player.unit().maxHealth;
data.player.sendMessage("[gold]God mode is [green]" + (target.inGodmode ? "enabled" : "disabled") + (arg.length == 0 ? "" : "[] for [accent]" + target.realName));
if (arg.length == 1)
target.player.sendMessage((target.inGodmode ? "[green]You've been put into god mode" : "[red]You have been removed from god mode") + " by [accent]" + data.realName);
ALog.write("Godmode", "@ [@] @ @ [@] to the godmode", data.stripedName, data.player.uuid(), target.inGodmode ? "put" : "remove", target.stripedName, target.player.uuid());
});
commands.add("chat", "[on|off]", "Enabled/disabled the chat", true, false, (arg, data) -> {
if (arg.length == 1) {
if (data.spectate()) {
Players.err(data.player, "Can't change chat status in vanish mode!");
return;
} else if (Strings.choiseOn(arg[0])) {
if (PVars.tchat) {
Players.err(data.player, "Disabled first!");
return;
}
PVars.tchat = true;
} else if (Strings.choiseOff(arg[0])) {
if (!PVars.tchat) {
Players.err(data.player, "Enabled first!");
return;
}
PVars.tchat = false;
} else {
Players.err(data.player, "Invalid arguments.[] \n - The chat is currently [accent]@[].", PVars.tchat ? "enabled" : "disabled");
return;
}
Log.info("Chat @ by @.", PVars.tchat ? "enabled" : "disabled", data.realName);
Call.sendMessage("\n[gold]--------------------\n[scarlet]/!\\[orange] Chat " + (PVars.tchat ? "enabled" : "disabled") + " by " + data.realName + "[orange]! \n[gold]--------------------\n");
ALog.write("Chat", "@ [@] @ the chat", data.stripedName, data.player.uuid(), PVars.tchat ? "enabled" : "disabled");
} else
data.player.sendMessage("The chat is currently " + (PVars.tchat ? "enabled." : "disabled."));
});
commands.add("reset", "<filter|username|ID...>", "Resets a player's game data (rainbow, GodMode, muted, ...)", true, false, (arg, data) -> {
FilterSearchReponse filter = ArgsFilter.hasFilter(data.player, arg);
if (filter.reponse != Reponses.notFound && filter.sendIfError())
return;
else if (filter.reponse == Reponses.found) {
if (Players.errFilterAction("reset", filter, false))
return;
filter.execute(ctx -> {
TempData.get(ctx.player).reset();
data.player.sendMessage("[green]Success to reset data of player " + ctx.data.realName);
ALog.write("Reset", "@ [@] reset all game data of @ [@]", data.stripedName, data.player.uuid(), ctx.data.stripedName, ctx.player.uuid());
});
} else {
Players result = Players.findByNameOrID(arg);
if (result.found) {
TempData.get(result.player).reset();
data.player.sendMessage("[green]Success to reset data of player " + result.data.realName);
ALog.write("Reset", "@ [@] reset all game data of @ [@]", data.stripedName, data.player.uuid(), result.data.stripedName, result.player.uuid());
} else
Players.errNotOnline(data.player);
}
});
commands.add("mute", "<filter|username|ID> [reason...]", "Mute a person by name or ID", true, false, (arg, data) -> {
FilterSearchReponse filter = ArgsFilter.hasFilter(data.player, arg);
String reason;
if (filter.reponse != Reponses.notFound && filter.sendIfError())
return;
else if (filter.reponse == Reponses.found) {
if (Players.errFilterAction("mute", filter, false))
return;
reason = String.join(" ", filter.rest);
filter.execute(ctx -> {
TempData t = TempData.get(ctx.player);
if (!t.isMuted) {
t.isMuted = true;
PVars.recentMutes.add(ctx.player.uuid());
Call.sendMessage("\n[gold]--------------------\n[scarlet]/!\\" + NetClient.colorizeName(t.player.id, t.realName) + "[scarlet] has been muted of the server." + "\nReason: [white]" + (reason.isBlank() ? "<unknown>" : reason) + "\n[gold]--------------------\n");
Call.infoMessage(t.player.con, "You have been muted! [lightgray](by " + data.realName + "[lightgray]) \n[scarlet]Reason: []" + (arg.length == 2 && !reason.isBlank() ? reason : "<unknown>"));
ALog.write("Mute", "@ [@] muted @ [@] for the reason: @", data.stripedName, data.player.uuid(), ctx.data.stripedName, ctx.player.uuid(), reason.isBlank() ? "<unknown>" : reason);
} else
Players.err(data.player, "[white]" + t.realName + "[scarlet] is already muted!");
});
} else {
Players result = Players.findByNameOrID(arg);
if (result.found) {
if (!result.data.isMuted) {
reason = String.join(" ", result.rest);
result.data.isMuted = true;
PVars.recentMutes.add(result.player.uuid());
Call.sendMessage("\n[gold]--------------------\n[scarlet]/!\\" + NetClient.colorizeName(result.player.id, result.data.realName) + "[scarlet] has been muted of the server.\nReason: [white]" + (reason.isBlank() ? "<unknown>" : reason) + "\n[gold]--------------------\n");
Call.infoMessage(result.player.con, "You have been muted! [lightgray](by " + data.realName + "[lightgray]) \n[scarlet]Reason: []" + (reason.isBlank() ? "<unknown>" : reason));
ALog.write("Mute", "@ [@] muted @ [@] for the reason: @", data.stripedName, data.player.uuid(), result.data.stripedName, result.player.uuid(), reason.isBlank() ? "<unknown>" : reason);
} else
Players.err(data.player, "[white]" + result.data.realName + "[scarlet] is already muted!");
} else
Players.err(data.player, "Nobody with that name or ID could be found...");
}
});
commands.add("unmute", "<filter|username|ID...>", "Unmute a person by name or ID", true, false, (arg, data) -> {
FilterSearchReponse filter = ArgsFilter.hasFilter(data.player, arg);
if (filter.reponse != Reponses.notFound && filter.sendIfError())
return;
else if (filter.reponse == Reponses.found) {
if (Players.errFilterAction("unmute", filter, false))
return;
filter.execute(ctx -> {
TempData t = TempData.get(ctx.player);
if (t.isMuted) {
t.isMuted = false;
PVars.recentMutes.remove(t.player.uuid());
Call.infoMessage(t.player.con, "You have been unmuted! [lightgray](by " + data.realName + "[lightgray])");
Players.info(data.player, "Player unmuted");
ALog.write("Unmute", "@ [@] unmuted @ [@]", data.stripedName, data.player.uuid(), ctx.data.stripedName, ctx.player.uuid());
} else
Players.err(data.player, "[white]" + t.realName + "[scarlet] isn't muted!");
});
} else {
Players target = Players.findByNameOrID(arg);
if (target.found) {
if (target.data.isMuted) {
target.data.isMuted = false;
PVars.recentMutes.remove(target.player.uuid());
Call.infoMessage(target.player.con, "You have been unmuted! [lightgray](by " + data.realName + "[lightgray])");
Players.info(data.player, "Player unmuted");
ALog.write("Unmute", "@ [@] unmuted @ [@]", data.stripedName, data.player.uuid(), target.data.stripedName, target.player.uuid());
} else
Players.err(data.player, "[white]" + target.data.realName + "[scarlet] isn't muted!");
} else if (PVars.recentMutes.contains(arg[0])) {
PVars.recentMutes.remove(arg[0]);
Players.info(data.player, "Player unmuted");
ALog.write("Unmute", "@ [@] unmuted @ [@] by his ID", data.stripedName, data.player.uuid(), netServer.admins.getInfoOptional(arg[0]).lastName, arg[0]);
} else
Players.err(data.player, "Player don't exist or not connected! [lightgray]If you are sure this player is muted, use their ID, it should work.");
}
});
commands.add("kick", "<filter|username|ID> [reason...]", "Kick a person by name or ID", true, false, (arg, data) -> {
FilterSearchReponse filter = ArgsFilter.hasFilter(data.player, arg);
String reason;
if (filter.reponse != Reponses.notFound && filter.sendIfError())
return;
else if (filter.reponse == Reponses.found) {
if (Players.errFilterAction("kick", filter, false))
return;
reason = String.join(" ", filter.rest);
filter.execute(ctx -> {
Call.sendMessage("\n[gold]--------------------\n[scarlet]/!\\" + NetClient.colorizeName(ctx.player.id, ctx.data.realName) + "[scarlet] has been kicked of the server." + "\nReason: [white]" + (reason.isBlank() ? "<unknown>" : reason) + "\n[gold]--------------------\n");
ALog.write("Kick", "@ [@] kicked @ [@] for the reason: @", data.stripedName, data.player.uuid(), ctx.data.stripedName, ctx.player.uuid(), reason.isBlank() ? "<unknown>" : reason);
if (reason.isBlank())
ctx.player.kick(KickReason.kick);
else
ctx.player.kick("You have been kicked from the server!\n[scarlet]Reason: []" + reason);
});
} else {
Players result = Players.findByNameOrID(arg);
if (result.found) {
reason = String.join(" ", result.rest);
Call.sendMessage("\n[gold]--------------------\n[scarlet]/!\\" + NetClient.colorizeName(result.player.id, result.data.realName) + "[scarlet] has been kicked of the server." + "\nReason: [white]" + (reason.isBlank() ? "<unknown>" : reason) + "\n[gold]--------------------\n");
ALog.write("Kick", "@ [@] kicked @ [@] for the reason: @", data.stripedName, data.player.uuid(), result.data.stripedName, result.player.uuid(), reason.isBlank() ? "<unknown>" : reason);
if (reason.isBlank())
result.player.kick(KickReason.kick);
else
result.player.kick("You have been kicked from the server!\n[scarlet]Reason: []" + reason);
} else
Players.err(data.player, "Nobody with that name or ID could be found...");
}
});
commands.add("pardon", "<ID>", "Pardon a player by ID and allow them to join again", true, false, (arg, data) -> {
PlayerInfo info = netServer.admins.getInfoOptional(arg[0]);
if (info != null) {
info.lastKicked = 0;
Players.info(data.player, "Pardoned player: [accent]" + info.lastName);
ALog.write("Pardon", "@ [@] pardonned @ [@] by his ID", data.stripedName, data.player.uuid(), info.lastName, info.id);
} else
Players.err(data.player, "That ID can't be found.");
});
commands.add("ban", "<filter|username|ID> [reason...]", "Ban a person", true, false, (arg, data) -> {
FilterSearchReponse filter = ArgsFilter.hasFilter(data.player, arg);
String reason;
if (filter.reponse != Reponses.notFound && filter.sendIfError())
return;
else if (filter.reponse == Reponses.found) {
if (Players.errFilterAction("ban", filter, false))
return;
reason = String.join(" ", filter.rest);
filter.execute(ctx -> {
if (!ctx.player.admin) {
netServer.admins.banPlayer(ctx.player.uuid());
Call.sendMessage("\n[gold]--------------------\n[scarlet]/!\\ " + NetClient.colorizeName(ctx.player.id, ctx.data.realName) + "[scarlet] has been banned of the server." + "\nReason: [white]" + (reason.isBlank() ? "<unknown>" : reason) + "\n[gold]--------------------\n");
ALog.write("Ban", "@ [@] banned @ [@] for the reason: @", data.stripedName, data.player.uuid(), ctx.data.stripedName, ctx.player.uuid(), reason.isBlank() ? "<unknown>" : reason);
if (reason.isBlank())
ctx.player.kick(KickReason.banned);
else {
ctx.player.kick("You are banned on this server!\n[scarlet]Reason: []" + reason);
PVars.bansReason.put(ctx.player.uuid(), reason);
}
} else
Players.err(data.player, "Can't ban an admin!");
});
saveSettings();
} else {
Players result = Players.findByNameOrID(arg);
if (result.found) {
if (!result.player.admin) {
reason = String.join(" ", result.rest);
netServer.admins.banPlayer(result.player.uuid());
Call.sendMessage("\n[gold]--------------------\n[scarlet]/!\\ " + NetClient.colorizeName(result.player.id, result.data.realName) + "[scarlet] has been banned of the server.\nReason: [white]" + (reason.isBlank() ? "<unknown>" : reason) + "\n[gold]--------------------\n");
ALog.write("Ban", "@ [@] banned @ [@] for the reason: @", data.stripedName, data.player.uuid(), result.data.stripedName, result.player.uuid(), reason.isBlank() ? "<unknown>" : reason);
if (reason.isBlank())
result.player.kick(KickReason.banned);
else {
result.player.kick("You are banned on this server!\n[scarlet]Reason: []" + reason);
PVars.bansReason.put(result.player.uuid(), reason);
saveSettings();
}
} else
Players.err(data.player, "Can't ban an admin!");
} else
Players.err(data.player, "No matches found.");
}
});
commands.add("unban", "<ID>", "Unban a person", true, false, (arg, data) -> {
if (netServer.admins.unbanPlayerID(arg[0])) {
PlayerInfo info = netServer.admins.getInfoOptional(arg[0]);
Players.info(data.player, "Unbanned player: [accent]" + arg[0]);
ALog.write("Unban", "@ [@] unbaned @ [@] by his ID", data.stripedName, data.player.uuid(), info.lastName, info.id);
PVars.bansReason.remove(arg[0]);
saveSettings();
} else
Players.err(data.player, "That ID is not banned!");
});
}
use of com.microsoft.applicationinsights.smoketest.schemav2.Data in project ddf by codice.
the class KMLTransformerImpl method setExtendedData.
private void setExtendedData(Placemark placemark, Metacard metacard) {
final ExtendedData extendedData = new ExtendedData();
final Set<AttributeDescriptor> attributeDescriptors = metacard.getMetacardType().getAttributeDescriptors();
for (AttributeDescriptor attributeDescriptor : attributeDescriptors) {
final String attributeName = attributeDescriptor.getName();
final Attribute attribute = metacard.getAttribute(attributeName);
if (attribute != null) {
Serializable attributeValue = convertAttribute(attribute, attributeDescriptor);
if (attributeValue == null) {
LOGGER.debug("Attribute {} converted to null value.", attributeName);
} else {
final Data data = getData(attributeName, attributeValue.toString());
extendedData.addToData(data);
}
}
}
placemark.setExtendedData(extendedData);
}
use of com.microsoft.applicationinsights.smoketest.schemav2.Data in project ddf by codice.
the class KMLTransformerImpl method getData.
private Data getData(String attributeAlias, String attributeValue) {
final Data data = new Data(attributeValue);
data.setName(attributeAlias);
return data;
}
use of com.microsoft.applicationinsights.smoketest.schemav2.Data in project ddf by codice.
the class KMLTransformerImplTest method testPerformDefaultTransformationExtendedData.
@Test
public void testPerformDefaultTransformationExtendedData() throws CatalogTransformerException, DateTimeParseException {
MetacardImpl metacard = createMockMetacard();
metacard.setLocation(POINT_WKT);
metacard.setCreatedDate(metacardDate);
metacard.setEffectiveDate(metacardDate);
metacard.setExpirationDate(metacardDate);
metacard.setModifiedDate(metacardDate);
metacard.setTags(METACARD_TAGS);
final Set<AttributeDescriptor> attributeDescriptors = metacard.getMetacardType().getAttributeDescriptors();
Placemark placemark = kmlTransformer.performDefaultTransformation(metacard);
final List<Data> dataList = placemark.getExtendedData().getData();
int dataCount = 0;
for (AttributeDescriptor attributeDescriptor : attributeDescriptors) {
final String attributeName = attributeDescriptor.getName();
final Attribute attribute = metacard.getAttribute(attributeName);
if (attribute != null) {
dataCount++;
}
}
assertThat(dataList.size(), is(dataCount));
for (Data data : dataList) {
switch(data.getName()) {
case Core.ID:
assertThat(data.getValue(), is(METACARD_ID));
break;
case Core.TITLE:
assertThat(data.getValue(), is(METACARD_TITLE));
break;
case Core.LOCATION:
assertThat(data.getValue(), is(POINT_WKT));
break;
case Metacard.CONTENT_TYPE:
assertThat(data.getValue(), is(METACARD_TYPE));
break;
case Metacard.CONTENT_TYPE_VERSION:
assertThat(data.getValue(), is(METACARD_VERSION));
break;
case Core.METADATA:
assertThat(data.getValue(), is(METACARD_METADATA));
break;
case Core.METACARD_TAGS:
assertThat(data.getValue(), is(METACARD_TAGS.asList().get(0) + "," + METACARD_TAGS.asList().get(1)));
break;
case Core.MODIFIED:
case Metacard.EFFECTIVE:
case Core.EXPIRATION:
case Core.CREATED:
assertThat(data.getValue(), is(METACARD_DATE_STRING));
break;
default:
throw new IllegalArgumentException(String.format("Data %s was not expected", data.getName()));
}
}
}
use of com.microsoft.applicationinsights.smoketest.schemav2.Data in project fiware-cygnus by telefonicaid.
the class NotifyContextRequestNGSIv2Deserializer method deserialize.
@Override
public NotifyContextRequestNGSIv2 deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
JsonObject jsonObject = json.getAsJsonObject();
String subscriptionId = jsonObject.get("subscriptionId").getAsString();
ArrayList<Data> data = deserializeAllData(jsonObject.getAsJsonArray("data"));
NotifyContextRequestNGSIv2 ncr = new NotifyContextRequestNGSIv2();
ncr.setSubscriptionId(subscriptionId);
ncr.setData(data);
return ncr;
}
Aggregations