static MobRuleList$MobRuleEntry load(Properties properties, int index, int limit) {
    String skinList = properties.getProperty("skins." + index, "").trim().toLowerCase();
    int[] skins;
    int chooser;

    if (!skinList.equals("*") && !skinList.equals("all") && !skinList.equals("any")) {
      skins = MCPatcherUtils.parseIntegerList(skinList, 1, limit);

      if (skins.length <= 0) {
        return null;
      }

      for (chooser = 0; chooser < skins.length; ++chooser) {
        --skins[chooser];
      }
    } else {
      skins = new int[limit];

      for (chooser = 0; chooser < skins.length; skins[chooser] = chooser++) {;
      }
    }

    WeightedIndex var11 =
        WeightedIndex.create(skins.length, properties.getProperty("weights." + index, ""));

    if (var11 == null) {
      return null;
    } else {
      String biomeList = MCPatcherUtils.getStringProperty(properties, "biomes." + index, "");
      BitSet biomes;

      if (biomeList.isEmpty()) {
        biomes = null;
      } else {
        biomes = new BitSet();

        if (MobRuleList.access$000() != null) {
          try {
            MobRuleList.access$000().invoke((Object) null, new Object[] {biomeList, biomes});
          } catch (Throwable var10) {
            var10.printStackTrace();
            MobRuleList.access$002((Method) null);
          }
        }
      }

      int minHeight = MCPatcherUtils.getIntProperty(properties, "minHeight." + index, -1);
      int maxHeight =
          MCPatcherUtils.getIntProperty(properties, "maxHeight." + index, Integer.MAX_VALUE);

      if (minHeight < 0 || minHeight > maxHeight) {
        minHeight = -1;
        maxHeight = Integer.MAX_VALUE;
      }

      return new MobRuleList$MobRuleEntry(skins, var11, biomes, minHeight, maxHeight);
    }
  }