"sans-serif">Greetings fellow mine crafters. I’m in an Open Source Software development class at Portland State. For my terms project I’ve chosen to develop a mod for Mine Craft.
"sans-serif">Let me introduce you to MC-Gallimaufry. Gallimaufry started out as an idea to add more structures into the mine craft world via modloader. During the early stages it became apparent that I would need to create a scripting that would allow me to insert structures, which is what this version of Gallimaufry is. It will allow users to script buildings into maps that are added into the world generator and built dynamically and consistently like all other mine craft buildings.
"sans-serif">This means, you can contribute to this project by creating maps in the Gallimaufry scripting language and send them to me, or just add them to your personal mine craft for you and your friends to enjoy.
"sans-serif">Here are the basics of MC-Gallimaufry:
"sans-serif">
"sans-serif">The first line of every file is ignored. This is the space for the header and any kind of comment. There is currently no method of commenting a map or script after the first line. Each additional line is scanned for tokens typically of the form X(#,@) where X is any excepted block type, # is the thing to place, and @ is the extra or metadata for it.
"sans-serif">Example:
"sans-serif">// This is an example
"sans-serif">H:90
"sans-serif">B(1,0) B(1,0) B(1,0) B(1,0) B(1,0)
"sans-serif">B(1,0) B(1,0) B(1,0) B(1,0) B(1,0)
"sans-serif">B(1,0) B(1,0) B(1,0) B(1,0) B(1,0)
"sans-serif">B(1,0) B(1,0) B(1,0) B(1,0) B(1,0)
"sans-serif">B(1,0) B(1,0) B(1,0) B(1,0) B(1,0)
"sans-serif">U
"sans-serif">B(0,0) B(0,0) B(0,0) B(0,0) B(0,0)
"sans-serif">B(0,0) B(0,0) S(0,0) B(0,0) B(0,0)
"sans-serif">B(0,0) S(0,0) E(Vi,0) S(0,0) B(0,0)
"sans-serif">B(0,0) B(0,0) S(0,0) B(0,0) B(0,0)
"sans-serif">B(0,0) B(0,0) B(0,0) B(0,0) B(0,0)
"sans-serif">:End Example
"sans-serif">The above example will create a 5 by 5 block of dirt at height 90 and spawn a villager on top of it. Let’s explain each of the tokens.
"sans-serif">H:90 Any time the Token is lead by an ‘H’ Gallimaufry will look for a colon and then use the number after to become the current value for the yplane(height). This is expected to be only at the beginning of the map but clever use may see it otherwise.
"sans-serif">B(1,0) This is the most expected token for Gallimaufry. The lead ‘B’ means place a normal block. The first value is the Block id and the second is the meta data. MC-Gallimaufry currently starts building in the center of the chuck then increases the xplane value as it reads each token on the line. When it reaches the end of the line it increases the zplane value and starts again.
"sans-serif">U This token is used to start the next level of the map. Then next level will start in the exact same spot as the one below it(the upper left corner of the map).
"sans-serif">E(Vi,0) This is used to spawn an entity. The lead character ‘E’ is used to spawn any entity. Each is spawned by making the first value be the first 2 characters of the mobs name. I.E. Zombie = E(Zo,0); Enderman = E(En,0); Magma Cube = E(Ma,0); Cavespider = E(Ca,0); Boat = (Bo,0)
"sans-serif">The only break in this pattern is PigZombie which is Pz since Pi is taken by pig. Currently the second value is not used. In the future it is intended to be similar to meta data. It will be used to set village occupation or slime size for example.
"sans-serif">S(0,0) The lead character ‘S’ means skip this token. MC-Gallimaufry will leave whatever was there unchanged. It is unnecessary in the example and B(0,0) places an explicit air block in the location ensuring it is empty.
"sans-serif">There is no support for tile entities currently. It is what I am currently working on it will be of the form T(stuff{stuff}). You could add a T(anything) to your map as a place holder and the map will still load correctly.
"sans-serif">Once you’ve completed your map to these specifications there is one more step to integrating it into mine craft. You need to add it to a line in the structlist.txt file. The entry will look like this:
"sans-serif">Youmapfile.txt rarity# FoundinBiome
"sans-serif">Replace yourmapfile.txt with the name of your file. Obviously it needs to not be the name of a file currently existing.
"sans-serif">Rarity# is expected to be a positive integer value. This will approximately equal how many chunks of the biome type will be needed to find one of these structures. Other limiting factors, if another site has a higher rarity value and was selected to be created instead sites with lower rarity will not appear in the same chuck, and there is a know bug that prevents sites from building intermittently.
"sans-serif">The FoundinBiome field tells MC-Gallimaufry what biomes are suitable for your site. If it should be built in any use the All biome. Otherwise put the capitalized name of the biome for a boat use Ocean for a Pyramid use Desert, for example.
"sans-serif">If you come up with a fantastic site and wish it to be included in an update to the main files please just send me an email and I’ll review your submission.
"sans-serif">
"sans-serif">Currently in development are the following features: tileentities, a method to find the ground level and start there, and how to set items in containers.
"sans-serif">
"sans-serif">So there are the details of MC-Gallimaufry download and enjoy.
"sans-serif">
"sans-serif">In order to Download and install MC_Gallimaufry you will need to have mod loader already installed.
"sans-serif">As per normal mods, place the class files into the minecraft jar, but I don't suggest using the Mod_plains.class. It is out of date. You will also need to move the things folder and all it's contents into the .mincraft folder(it should be at the same level as your saves folder).
"sans-serif">
"sans-serif">Lastly a few tips.
"sans-serif">
"sans-serif">I start creating buildings by building them in minecraft. Then I translate a layer at a time to the map. Then I load a new world and observe how the map is being built. I suggest do this iteratively until your building is complete with the entry in structList set to your.txt 1 All. This will mean one of your maps is built per chuck. It will take a bit to load, but you won't have to hunt for it.
"sans-serif">
"sans-serif">Any questions, comments, or code improvements pm me here or on github.
Using "G: offset" will find the ground and then start building the site from the offset. If you want a site to build from the ground up use G:0. If it has a 3 block high basement use G:-3, for example.
Using “T(#,@)” tells gallimaufry you intend to place a Tile Entity. Current tile entities supported are chest, piston(+ sticky), and dispenser. Along with that there is now a way to create the contents of a chest or dispenser. Use “C({item#, amount},{ item#, amount},{ item#, amount})” on any line before your container. The next container will have these contents added to it. To create a buried chest with a stack of 2 diamonds and a stack of 3 emeralds in it you would.
// This is Buried treasure.
G:-5
C({264,2},{388,3})
T(54,0)
Last new feature is “P(blockID,metadata)” This is used to make torched and other Items that hang on others load correctly. It postpones the creation of any block give in P() to the end of building. If you find torches aren’t behaving correctly or you’re building redstone things, I recommend using P for a lot of the fiddly parts.
1 new place.
Added to the list of sites generated is the “Pearl”. It’s an underwater base with working lights. It still need to be populated with items, but the structure is complete. It has been added to the most recent version of structList.txt.
Things in the pipe:
Now that the ground it found I need to work out the tree bug. Also, I need to work on a way to fill any gap created underneath the site.
More tile entities are coming, next up furnace.
More content. Now that MC-Gallimaufry is getting more mature, it’s time to start bulking out the content. I’ll be adding a new site with each update.
3 new features.
Using "G: offset" will find the ground and then start building the site from the offset. If you want a site to build from the ground up use G:0. If it has a 3 block high basement use G:-3, for example.
Using “T(#,@)” tells gallimaufry you intend to place a Tile Entity. Current tile entities supported are chest, piston(+ sticky), and dispenser. Along with that there is now a way to create the contents of a chest or dispenser. Use “C({item#, amount},{ item#, amount},{ item#, amount})” on any line before your container. The next container will have these contents added to it. To create a buried chest with a stack of 2 diamonds and a stack of 3 emeralds in it you would.
// This is Buried treasure.
G:-5
C({264,2},{388,3})
T(54,0)
Last new feature is “P(blockID,metadata)” This is used to make torched and other Items that hang on others load correctly. It postpones the creation of any block give in P() to the end of building. If you find torches aren’t behaving correctly or you’re building redstone things, I recommend using P for a lot of the fiddly parts.
1 new place.
Added to the list of sites generated is the “Pearl”. It’s an underwater base with working lights. It still need to be populated with items, but the structure is complete. It has been added to the most recent version of structList.txt.
Things in the pipe:
Now that the ground it found I need to work out the tree bug. Also, I need to work on a way to fill any gap created underneath the site.
More tile entities are coming, next up furnace.
More content. Now that MC-Gallimaufry is getting more mature, it’s time to start bulking out the content. I’ll be adding a new site with each update.