public void monthlyProc() {
    _log.info("城镇系统:开始处理每月事项");
    L1World.getInstance().setProcessingContributionTotal(true);
    final Collection<L1PcInstance> players = L1World.getInstance().getAllPlayers();
    for (final L1PcInstance pc : players) {
      try {
        // 储存所有线上玩家的资讯
        pc.save();
      } catch (final Exception e) {
        _log.log(Level.SEVERE, e.getLocalizedMessage(), e);
      }
    }

    for (int townId = 1; townId <= 10; townId++) {
      final String leaderName = totalContribution(townId);
      if (leaderName != null) {
        final S_PacketBox packet = new S_PacketBox(S_PacketBox.MSG_TOWN_LEADER, leaderName);
        for (final L1PcInstance pc : players) {
          if (pc.getHomeTownId() == townId) {
            pc.setContribution(0);
            pc.sendPackets(packet);
          }
        }
      }
    }
    TownTable.getInstance().load();

    for (final L1PcInstance pc : players) {
      if (pc.getHomeTownId() == -1) {
        pc.setHomeTownId(0);
      }
      pc.setContribution(0);
      try {
        // 储存所有线上玩家的资讯
        pc.save();
      } catch (final Exception e) {
        _log.log(Level.SEVERE, e.getLocalizedMessage(), e);
      }
    }
    clearHomeTownID();
    L1World.getInstance().setProcessingContributionTotal(false);
  }