It has been pretty clear that I haven't been active on this project for at least a month or two. The short of it is that I've lost interest in playing Minecraft, and because of that I haven't been motivated to tinker with MCEdit.
I've been treating MCEdit as a personal project so far. There's no official issue tracker, wiki, or discussion forums; I've been keeping it low key, running the entire project out of my inbox and this one forum thread. When I work on the code, I tend to work on whatever I think would be fun.
There's a point when it stops being fun. That point is when I feel obligated to solve people's issues or add new features on request, when those people (probably) haven't done me any favors and at a time when I really need to be looking for paid work rather than fooling around with an add-on for a video game.
For the first year of development (starting July 2010), I spent 30-40 hours a week on MCEdit. In addition to writing code for viewing and editing the level files, I also spent time experimenting with Minecraft and investigating issues that users took the time to describe. One memorable exchange is with a user who kept trying to fill an area with wood, but in game the wood was lined with grooves all running in one direction. After denying it a few times, it turned out that he was in fact filling the area with Wooden Stairs and not Wood. Another user reported a ton of lag after filling an area with dirt, but after downloading his save it turned out he was filling the area with Grass instead. I coded in an extra step that turns buried Grass into Dirt before saving the level.
I spent some time on a feature that probably wasn't important to many people: file formats. MCEdit can read, write, and export from very old versions of Minecraft. Classic Singleplayer (.mine) and Multiplayer (.dat) files are partially supported with filename assistance for nonstandard sizes. (Full support would use a helper application made in Java.) Indev files (.mclevel) are fully supported as are world folders from Minecraft Infdev, Alpha, Beta, Release and Pocket Edition. In addition, the export format (.schematic) includes a field that tells MCEdit which version it came from. MCEdit uses this field to eliminate blocks that aren't available in older versions, and to "translate" block IDs for blocks that appear in different editions of Minecraft with different block IDs - colored wool, notably.
That may have been a bad decision and the time would have been better spent making a list of the known defects in the application. Or applying for work.
"Yeah yeah, but can you release the source code so someone can keep working on it?" That's the topic I was getting to. MCEdit and its source code reflect the work I've done on it over the past year and a half. For a lot of that time I had no primary occupation so MCEdit became my full-time job. I was sagely advised to keep all of the source code private. However, I felt a bit obliged to the OSS community for all of the tools I was (and am still) using, so I shared the level-loading code on github under the name pymclevel.
I intend to share MCEdit's source code, but I also intend to get paid for my work. Here is the deal. We'll raise a modest sum through a crowd-funding site like Kickstarter. Once the money is raised, I'll upload MCEdit's full source code to github, licensed under the GPL. If the project is overfunded at all, the surplus will go toward paying my salary for another year of development on MCEdit. I think I will set the price of the source code at $10,000.
The source code isn't pretty. It's by no means the work of a master programmer - I consider myself below average at best. The LevelEditor class is bloated, the MCEdit class has unclear responsibilities, and the Brush tool still doesn't have a plugin system. If you read the code for pymclevel
, you will have a good idea of what quality of code to expect. When you get down to it though, the code works for many of its intended purposes and also embodies solutions to problems or hangups that I fixed and later forgot.
I will update the OP with a big fat link to the crowd-funding site as soon as I get it set up.
I'll end this announcement with a big thank-you
to everyone who downloaded and used MCEdit. Thanks for coming along with me, it has been a blast getting to know my users and you've given me a taste of what professional software dev can be like. An additional thank-you goes to everyone who has donated any amount of money. Your donations haven't been forgotten
and will be counted toward the fundraising goal
. A final shout-out goes to everyone who sent in a feature request along with your donation and saw it implemented: the command-line "dumpchests" feature in mce.py, the "Classic Water Flood" filter, and the "Paste" brush (and a few more I'm forgetting) were all added at the requests of donators.
(And a big high-five to dudecon for porting all of his scripts to MCEdit's filter system. What a beast!)