IceCream Bukkit

This is a hopefully-temporarly page until I can get around to making a prettier one, but it should carry most of the needed information. If anyone wants to prototype a better-looking version, feel free. :)
Info for users:
IceCream does the following:
  1. Provides a list of supported Bukkit versions.
  2. Builds and displays a sorted list of mods for this version, from various authors.
  3. Automatically adds any dependencies for mods you select.
  4. Downloads the selected CraftBukkit .jar from bukkit.org
  5. Downloads the selected mods from their authors' sites.
  6. Assembles a CraftBukkit .jar containing all the selected mods.
Downloads:
For Windows: IceCream 0.6 (Simple UI)
For everything else: GitHub
 
To compile, it requires libcurl, libzip, yaml-cpp, and optionally ncurses or something similar for the fancier UI. My distro (Fedora 16) had binary packages of all of them, yours may too.
Info for modders:
Making mods for IceCream is designed to be pretty simple.
  • The mod itself has to be packaged in a .zip file such that the base folder you see when you first open it matches the base folder of the CraftBukkit .jar file, and if the contents were to be dragged straight into a CraftBukkit .jar, the files would end up in the right spots.
  • The mod .zip file has to be hosted somewhere with a direct link. MediaFire won't work, since you have to go through a web page to get to the download. Github and DropBox will work fine. FTP sites will also work fine, it doesn't have to be HTTP.
  • You'll have to make a mod list and put it somewhere with a direct link. It's possible to use a script to generate the list (PHP, ASP, whatever), but just using a static file created by hand works too.
  • When all this is ready, send me the URL of your list and I'll add it to the meta-list so IceCream clients can find it.

 

Mod lists are in the familiar YAML format, and are fairly simple. The file looks like this:
author: Whoever
1.0.1-R1:
  - mod: MinimalMod
    name: MinimalMod 0.1
    desc: "Some description of MinimalMod, release notes, whatever."
    url: http://www.example.com/something.zip

  - mod: OptionalStuffMod
    name: OptionalStuffMod 1.2.3
    desc: "Showing extra stuff."
    url:
      - ftp://ftp.example.com/somethingmore!.zip
      - ftps://ftp2.example.com/mirrors/somethingmoremirror.zip
    filename: somethingmore.zip
    author: Someone
    depends:
      - MinecraftForge
      - MinimalMod
    protect:
      - "optionalmod/api/"
  • 1.0.1-R1: (required) is the Bukkit release to which the following mods apply. The special tag "mods:" can also be used, in which case the mods are assumed to work for any version.
  • mod: (required) is used to distingush mods; all versions of the same mod should have the same name.
  • name: (required) is what shows up in the IceCream client's mod selection list to describe the mod.
  • desc: (required) is displayed on the details pane in the curses UI version.
  • url: (required) is single or list of full, static, global URLs to the zip file. Anything cURL can fetch works fine. If a list is provided, they will be tried in order.
  • filename: (optional) sets a filename. If not set, IceCream uses the URL after the last slash.
  • author: (optional) sets the author. If set on a mod, IceCream displays that; if not, it uses the global author field.
  • depends: (optional) contains a list of mods (by their mod: field) on which this mod depends. When this mod is selected, IceCream will also add any needed dependencies, if found.
  • protect: (optional) contains a list of path prefixes to protect from further modification by other mods. Use this for APIs which may be bundled with other mods to make sure the right version is present.
For a functional example, you can see my list.