MineTweaker is a Minecraft Forge mod that allows you to add and remove crafting recipes, furnace recipes, mod recipes, item names, ore dictionary contents and much more. Configurations are written as scripts, with MineTweaker offering a simple custom scripting language specialized for this kind of customization.
MineTweaker is always configured from the server that players connect to (in single-player instances, the server is your own Minecraft instance). For server owners, this means that they do not have to distribute their minetweaker scripts: they only need to be stored on the server and will be transferred to the client automatically upon connection. Servers can thus change their configuration without having to distribute new files. In fact, even a server restart isn't needed - scripts can be reloaded in-game and all connected players will automatically receive the new scripts and have their configuration adjusted accordingly.
Scripts can even be stored in two places - there is a global scripting directory that's applied to every world hosted on that server (mostly useful for defining default behavior in modpacks played in single-player) and a per-world scripting directory. Scripts in the world directory can override global scripts. For map makers, this means they can distribute their own scripts with their map.
For modpack builders, this functionality means that it is interesting to include MineTweaker in your modpack even if you don't have an immediate need for it - server owners may wish to customize their own instance.
MineTweaker development started about a year ago. We wanted to remove the jetpack from IC2 as well as the Quarry and other automining methods, as we found them to impact gameplay significantly. It just didn't feel Minecraft anymore. On the other hand, we wanted to at least make it possible to have a more advanced recipe for the jetpack, so if you really wanted to, you could make one - but it would be a late-game item.
There existed mods that could remove item recipes, but there was lack of a mod that could also add new ones. For that reason, I decided to try making a mod myself. The scripting language was very simple - a list of instructions. As we found that pretty useful, I added a few more types of commands to modify the ore dictionary and set item names.
I soon felt the limitations of the scripting engine I had. For instance, if I wanted to make a recipe with enchantments on it, I couldn't do that. Or if I wanted custom crafting logic, it wouldn't be possible. And support for mods machines would be nice to have, too, so there I made the first-generation MineTweaker scripting engine.
MineTweaker 2 proved successful and became integrated in quite a few modpacks. More mod support and new functions were added. But the scripting engine wasn't really made to be very scalable in terms of functionality, and adding new functions and new mods was a time-consuming task.
I came to realize that we could be doing much more with MineTweaker. In past, you'd have to write a custom mod to implement these recipes. Not everyone is programmer, and learning to use Java and Forge takes a while and the size of Minecraft can be overwhelming to newcomers. Having a scripting language makes it possible for less experienced users to still change the game to their needs.
With MineTweaker 3, a lot of things have changed internally. The scripts compile directly to Java bytecode, and now the only overhead is the overhead caused by the internal API layer used to abstract away the minecraft internals and provide a set of easy-to-use functions. For me and plugin developers, all I have to do is supply a set of annotated classes to the scripting engine.
MineTweaker is meant to be used by a wide variety of users. I am into providing more basic functionality and plan on adding a graphical interface for basic functionality. On the other side, I am into providing more scripting functionality to provide server owners with the ability to change the behavior of the server and making it possible to create bukkit-like server mods with the scripting language. The forum post has a poll to determine priorities.