public void uimsg(String msg, Object... args) {
        if (msg == "move") {
            move((Coord) args[0]);
            if (cam != null)
                cam.moved(this);
        } else if (msg == "flashol") {
            unflashol();
            olflash = (Integer) args[0];
            for (int i = 0; i < visol.length; i++) {
                if ((olflash & (1 << i)) != 0)
                    visol[i]++;
            }
            olftimer = System.currentTimeMillis() + (Integer) args[1];
        } else if (msg == "place") {
            Collection<Gob> plob = this.plob;
            if (plob != null) {
                this.plob = null;
                glob.oc.lrem(plob);
            }
            plob = new LinkedList<Gob>();
            plontile = (Integer) args[2] != 0;
            Gob gob = new Gob(glob, plontile ? tilify(mousepos) : mousepos);
            Resource res = Resource.load((String) args[0], (Integer) args[1]);
            gob.setattr(new ResDrawable(gob, res));
            plob.add(gob);
            glob.oc.ladd(plob);
            if (args.length > 3) {
                plrad = (Integer) args[3];
                radiuses.put(res.name, plrad);
                if (res.name.equals("gfx/terobjs/bhive"))
                    radiuses.put("gfx/terobjs/bhived", plrad);
            }
            this.plob = plob;
        } else if (msg == "unplace") {
            if (plob != null)
                glob.oc.lrem(plob);
            plob = null;
            plrad = 0;
        } else if (msg == "polowner") {
            String o = ((String) args[0]).intern();
            APXUtils.onVillageChanged(o);
            if (o != polowner) {
                if (o.length() == 0) {
                    if (this.polowner != null)
                        this.polownert = polownertf.render("Leaving "
                                + this.polowner);
                    this.polowner = null;
                } else {
                    this.polowner = o;
                    this.polownert = polownertf.render("Entering " + o);
                }
                this.polchtm = System.currentTimeMillis();
            }
        } else {
            super.uimsg(msg, args);
        }
    }