private void drop(Item item){
        ArrayList<Point> candidates = new ArrayList<Point>();
        candidates.add(new Point(x,y));

        int tries = 0;
        while (candidates.size() > 0 && tries++ < 25){
            Point dest = candidates.remove(0);

            boolean occupied = false;
            for (Item other : world.items){
                if (other.x == dest.x && other.y == dest.y && !other.equipped) {
                    occupied = true;
                    break;
                }
            }

            if (!occupied && canBeAt(dest.x, dest.y)){
                item.x = dest.x;
                item.y = dest.y;
                item.equipped = false;
                break;
            } else {
                candidates.addAll(dest.getNeighbors(world));
            }
        }
    }