public void uimsg(String msg, Object... args) {
        if (msg == "set") {
            synchronized (ui) {
                int i = 0, o = 0;
                while (i < equed.size()) {
                    if (equed.get(i) != null)
                        equed.get(i).unlink();
                    int res = (Integer) args[o++];
                    if (res >= 0) {
                        int q = (Integer) args[o++];
                        Item ni = new Item(Coord.z, res, q, epoints.get(i), null);
                        equed.set(i++, ni);
                        if ((o < args.length) && (args[o] instanceof String))
                            ni.settip((String) args[o++]);
                    } else {
                        equed.set(i++, null);
                    }
                }
            }
            calcAC();
        } else if (msg == "setres") {
            int i = (Integer) args[0];
            Indir<Resource> res = ui.sess.getres((Integer) args[1]);
            equed.get(i).chres(res, (Integer) args[2]);
            calcAC();
        } else if (msg == "settt") {
            int i = (Integer) args[0];
            String tt = (String) args[1];
            equed.get(i).settip(tt);
            calcAC();
        } else if (msg == "ava") {
            avagob = (Integer) args[0];
        }
    }