Search in sources :

Example 6 with Data

use of org.geotoolkit.wps.xml.v200.Data in project ApplicationInsights-Java by microsoft.

the class MockedAppInsightsIngestionServer method getMessageDataInRequest.

public <T extends Domain> List<T> getMessageDataInRequest() {
    List<Envelope> items = getItemsEnvelopeDataType("MessageData");
    List<T> dataItems = new ArrayList<>();
    for (Envelope e : items) {
        String message = ((MessageData) ((Data<?>) e.getData()).getBaseData()).getMessage();
        if (e.getTags().containsKey("ai.operation.id") && !ignoreMessageData(message)) {
            Data<T> dt = (Data<T>) e.getData();
            dataItems.add(dt.getBaseData());
        }
    }
    return dataItems;
}
Also used : MessageData(com.microsoft.applicationinsights.smoketest.schemav2.MessageData) ArrayList(java.util.ArrayList) MessageData(com.microsoft.applicationinsights.smoketest.schemav2.MessageData) Data(com.microsoft.applicationinsights.smoketest.schemav2.Data) Envelope(com.microsoft.applicationinsights.smoketest.schemav2.Envelope)

Example 7 with Data

use of org.geotoolkit.wps.xml.v200.Data in project ApplicationInsights-Java by microsoft.

the class SpringBootTest method testResultCodeWhenRestControllerThrows.

@Test
@TargetUri("/throwsException")
public void testResultCodeWhenRestControllerThrows() throws Exception {
    List<Envelope> rdList = mockedIngestion.waitForItems("RequestData", 1);
    Envelope rdEnvelope = rdList.get(0);
    String operationId = rdEnvelope.getTags().get("ai.operation.id");
    List<Envelope> edList = mockedIngestion.waitForItems(new Predicate<Envelope>() {

        @Override
        public boolean test(Envelope input) {
            if (!"ExceptionData".equals(input.getData().getBaseType())) {
                return false;
            }
            if (!operationId.equals(input.getTags().get("ai.operation.id"))) {
                return false;
            }
            // lastly, filter out ExceptionData captured from tomcat logger
            ExceptionData data = (ExceptionData) ((Data<?>) input.getData()).getBaseData();
            return !data.getProperties().containsKey("LoggerName");
        }
    }, 1, 10, TimeUnit.SECONDS);
    assertEquals(0, mockedIngestion.getCountForType("EventData"));
    Envelope edEnvelope1 = edList.get(0);
    RequestData rd = getTelemetryDataForType(0, "RequestData");
    assertEquals("GET /SpringBootTest/throwsException", rd.getName());
    assertEquals("500", rd.getResponseCode());
    assertTrue(rd.getProperties().isEmpty());
    assertFalse(rd.getSuccess());
    assertParentChild(rd, rdEnvelope, edEnvelope1, "GET /SpringBootTest/throwsException");
}
Also used : RequestData(com.microsoft.applicationinsights.smoketest.schemav2.RequestData) ExceptionData(com.microsoft.applicationinsights.smoketest.schemav2.ExceptionData) RemoteDependencyData(com.microsoft.applicationinsights.smoketest.schemav2.RemoteDependencyData) RequestData(com.microsoft.applicationinsights.smoketest.schemav2.RequestData) EventData(com.microsoft.applicationinsights.smoketest.schemav2.EventData) ExceptionData(com.microsoft.applicationinsights.smoketest.schemav2.ExceptionData) Data(com.microsoft.applicationinsights.smoketest.schemav2.Data) Envelope(com.microsoft.applicationinsights.smoketest.schemav2.Envelope) Test(org.junit.Test)

Example 8 with Data

use of org.geotoolkit.wps.xml.v200.Data in project ApplicationInsights-Java by microsoft.

the class MicrometerTest method doMostBasicTest.

@Test
@TargetUri("/test")
public void doMostBasicTest() throws Exception {
    Telemetry telemetry = getTelemetry(0);
    assertEquals("GET /test", telemetry.rd.getName());
    assertTrue(telemetry.rd.getUrl().matches("http://localhost:[0-9]+/test"));
    assertEquals("200", telemetry.rd.getResponseCode());
    assertTrue(telemetry.rd.getSuccess());
    assertNull(telemetry.rd.getSource());
    assertTrue(telemetry.rd.getProperties().isEmpty());
    assertTrue(telemetry.rd.getMeasurements().isEmpty());
    // sleep a bit and make sure that the excluded metric is not reported
    Thread.sleep(10000);
    List<Envelope> metricItems = mockedIngestion.getItemsEnvelopeDataType("MetricData").stream().filter(e -> {
        MetricData data = (MetricData) ((Data<?>) e.getData()).getBaseData();
        List<DataPoint> points = data.getMetrics();
        DataPoint point = points.get(0);
        return point.getValue() == 1;
    }).collect(Collectors.toList());
    MetricData data = (MetricData) ((Data<?>) metricItems.get(0).getData()).getBaseData();
    List<DataPoint> points = data.getMetrics();
    assertEquals(1, points.size());
    DataPoint point = points.get(0);
    assertEquals(DataPointType.Measurement, point.getKind());
    // (this was verified above in Predicate also)
    assertEquals(1, point.getValue(), 0);
    assertEquals("test_counter", point.getName());
    assertNull("getCount was non-null", point.getCount());
    assertNull("getMin was non-null", point.getMin());
    assertNull("getMax was non-null", point.getMax());
    assertNull("getStdDev was non-null", point.getStdDev());
    assertEquals(1, data.getProperties().size());
    assertEquals("value1", data.getProperties().get("tag1"));
}
Also used : List(java.util.List) Assert.assertNull(org.junit.Assert.assertNull) MetricData(com.microsoft.applicationinsights.smoketest.schemav2.MetricData) Assert.assertTrue(org.junit.Assert.assertTrue) Envelope(com.microsoft.applicationinsights.smoketest.schemav2.Envelope) Test(org.junit.Test) Data(com.microsoft.applicationinsights.smoketest.schemav2.Data) DataPoint(com.microsoft.applicationinsights.smoketest.schemav2.DataPoint) Collectors(java.util.stream.Collectors) Assert.assertEquals(org.junit.Assert.assertEquals) DataPointType(com.microsoft.applicationinsights.smoketest.schemav2.DataPointType) DataPoint(com.microsoft.applicationinsights.smoketest.schemav2.DataPoint) MetricData(com.microsoft.applicationinsights.smoketest.schemav2.MetricData) Data(com.microsoft.applicationinsights.smoketest.schemav2.Data) List(java.util.List) Envelope(com.microsoft.applicationinsights.smoketest.schemav2.Envelope) MetricData(com.microsoft.applicationinsights.smoketest.schemav2.MetricData) Test(org.junit.Test)

Example 9 with Data

use of org.geotoolkit.wps.xml.v200.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!");
    });
}
Also used : Vars.maps(mindustry.Vars.maps) data(data) Map(mindustry.maps.Map) Groups(mindustry.gen.Groups) Blocks(mindustry.content.Blocks) Call(mindustry.gen.Call) Seq(arc.struct.Seq) Fi(arc.files.Fi) Timer(arc.util.Timer) Log(arc.util.Log) Vars.netServer(mindustry.Vars.netServer) Gamemode(mindustry.game.Gamemode) PlayerInfo(mindustry.net.Administration.PlayerInfo) Player(mindustry.gen.Player) manager(manager) Team(mindustry.game.Team) Reponses(filter.FilterType.Reponses) KickReason(mindustry.net.Packets.KickReason) ObjectMap(arc.struct.ObjectMap) Core(arc.Core) CommandHandler(arc.util.CommandHandler) Mathf(arc.math.Mathf) ObjectSet(arc.struct.ObjectSet) Vars.world(mindustry.Vars.world) filter(filter) NetClient(mindustry.core.NetClient) util(util) Vars.content(mindustry.Vars.content) Vars.state(mindustry.Vars.state) CommandHandler(arc.util.CommandHandler) Vars.world(mindustry.Vars.world) Team(mindustry.game.Team) Player(mindustry.gen.Player) PlayerInfo(mindustry.net.Administration.PlayerInfo) Map(mindustry.maps.Map) ObjectMap(arc.struct.ObjectMap) Seq(arc.struct.Seq)

Example 10 with Data

use of org.geotoolkit.wps.xml.v200.Data in project geotoolkit by Geomatys.

the class LiteralAdaptorTest method stringWPS2.

@Test
public void stringWPS2() {
    final DomainMetadataType metaType = new DomainMetadataType("String", "http://www.w3.org/TR/xmlschema-2/#string");
    final LiteralDataDomain domain = new LiteralDataDomain();
    domain.setDataType(metaType);
    final LiteralAdaptor adaptor = LiteralAdaptor.create(domain);
    assertEquals(String.class, adaptor.getValueClass());
    final DataOutput output = new DataOutput();
    final LiteralValue lit = new LiteralValue();
    lit.setValue("hello world");
    final Data data = new Data(lit);
    output.setData(data);
    final Object result = adaptor.fromWPS2Input(output);
    assertEquals("hello world", result);
}
Also used : DomainMetadataType(org.geotoolkit.ows.xml.v200.DomainMetadataType) DataOutput(org.geotoolkit.wps.xml.v200.DataOutput) LiteralValue(org.geotoolkit.wps.xml.v200.LiteralValue) Data(org.geotoolkit.wps.xml.v200.Data) LiteralDataDomain(org.geotoolkit.wps.xml.v200.LiteralDataDomain) Test(org.junit.Test)

Aggregations

Data (org.geotoolkit.wps.xml.v200.Data)42 UnconvertibleObjectException (org.apache.sis.util.UnconvertibleObjectException)33 IOException (java.io.IOException)25 Test (org.junit.Test)19 Reference (org.geotoolkit.wps.xml.v200.Reference)16 Path (java.nio.file.Path)15 DataInput (org.geotoolkit.wps.xml.v200.DataInput)15 Format (org.geotoolkit.wps.xml.v200.Format)14 DataStoreException (org.apache.sis.storage.DataStoreException)12 HashMap (java.util.HashMap)11 ComplexData (org.geotoolkit.wps.xml.v200.ComplexData)11 JAXBException (javax.xml.bind.JAXBException)9 ReferenceProxy (org.geotoolkit.wps.xml.ReferenceProxy)9 Data (com.microsoft.applicationinsights.smoketest.schemav2.Data)8 Envelope (com.microsoft.applicationinsights.smoketest.schemav2.Envelope)8 Feature (org.opengis.feature.Feature)8 ByteArrayOutputStream (java.io.ByteArrayOutputStream)7 LiteralValue (org.geotoolkit.wps.xml.v200.LiteralValue)7 Geometry (org.locationtech.jts.geom.Geometry)7 DataOutput (org.geotoolkit.wps.xml.v200.DataOutput)6