[Mod] Converter Minecraft world to Minetest world

dgm5555
Member
 
Posts: 244
Joined: Tue Apr 08, 2014 19:45

[Mod] Converter Minecraft world to Minetest world

by dgm5555 » Tue Feb 03, 2015 23:01

EDIT: Nore has made an undocumented, but fully functional python Minecraft to Minetest converter at https://github.com/Novatux/mcimport.
It takes an entire world save folder from minecraft and imports it into minetest with the only restriction being the +/-31k node limit in each direction of minetest (and I haven't found any worlds that big)
Please note this is not the same as the identically named mcimport at: https://forum.minetest.net/viewtopic.php?f=9&t=4445, which is a lua script for running within a pre-generated world, and is limited to classic minecraft maps and a small import size due to apparent lua memory management glitches.

Since mcimport isn't documented elsewhere, here are some notes:-
mcimport is run from the command line with:-
Your phone or window isn't wide enough to display the code box. If it's a phone, try rotating it to landscape mode.
Code: Select all
python3 mcimport.py ~/.minecraft/saves/mcImportName ~/.minetest/worlds/mtOutputName

The minecraft world can be saved anywhere (eg ~/.minetest/worlds/mcworlds)
NB 'blocks saved' progress refers to sections/chunks of 16x16x16 (= 4096) nodes...

I have created a mod (WIP) which will display all the blocks and will hopefully largely duplicate the function of minecraft blocks. For further documention on this (which supersedes much of the following), see:-
https://forum.minetest.net/viewtopic.php?f=9&t=11448
Alternatively if you want to use native minetest mods the following will provide a start (but the conversion with this is by no means completed). This mod also includes a generateCommandLine.py script which will (with a little editing on your part) generate the command lines required to automatically convert and copy the converted world.

(Or if you prefer doing it manually and want to convert multiple worlds (eg overnight) on linux put a semi-colon (;) after the command and then repeat it with edits for the next world.)

You will need to manually create the output directory before running the script
You will need to copy the file
world.mt, which contains the text:-
Your phone or window isn't wide enough to display the code box. If it's a phone, try rotating it to landscape mode.
Code: Select all
gameid = minetest
backend = sqlite3
load_mod_moretrees = true
load_mod_nether = true
load_mod_quartz = true
load_mod_plants_lib = true
load_mod_bushes_classic = true
load_mod_flowers_plus = true
load_mod_junglegrass = true
load_mod_poisonivy = true
load_mod_moreblocks = true



The conversion works better if the following mods are enabled:
moretrees (depends: plantlife), nether, quartz
MoreTrees: https://forum.minetest.net/viewtopic.php?f=11&t=4394&hilit=moretrees; https://github.com/VanessaE/moretrees
PlantLife: https://forum.minetest.net/viewtopic.php?f=11&t=3898; https://github.com/VanessaE/plantlife_modpack

Nether: https://forum.minetest.net/viewtopic.php?id=5790; https://github.com/PilzAdam/nether
Quartz: https://forum.minetest.net/viewtopic.php?id=5682; https://github.com/4Evergreen4/quartz

Other minetest_game mods should be enabled automatically: default, farming, flowers, stairs, wool

There are amazing minecraft worlds to be downloaded from many sites, but for starters you could try
http://www.planetminecraft.com/resources/projects/
http://www.minecraftworldmap.com/browse


This is not part of the core code, but if you want to quickly create a batch script to convert a number of worlds, you can use the following script to generate the command lines to do it (it deletes any old conversion, makes the new folder, copies player priviledges and world settings, then converts and copies the conversion to the main directory (leaving the original as a backup), then repeats for all minecraft worlds in the directory):-
Your phone or window isn't wide enough to display the code box. If it's a phone, try rotating it to landscape mode.
Code: Select all
import os
srcDir='/home/david/.minetest/worlds/mcw'
for x in os.listdir(srcDir):
    if os.path.isfile(x): pass
    else:
        if not(x.find('.zip')>0 or x.find('.rar')>0 or x.find('.txt')>0 or x.find('.mt')>0 or x.find('mcw/convert')>0):
            print('rm -r \"/home/david/.minetest/worlds/mcw/convert/' + x + '\"')
            print('mkdir \"/home/david/.minetest/worlds/mcw/convert/' + x + '\"')
            print('cp \"/home/david/.minetest/worlds/mcw/world.mt\" \"/home/david/.minetest/worlds/mcw/convert/' + x + '\"')
            print('cp \"/home/david/.minetest/worlds/mcw/auth.txt\" \"/home/david/.minetest/worlds/mcw/convert/' + x + '\"')
            print('python3 mcimport.py \"/home/david/.minetest/worlds/mcw/' + x + '\" \"/home/david/.minetest/worlds/mcw/convert/' + x + '\"')
            print('cp -r \"/home/david/.minetest/worlds/mcw/convert/' + x + '\" \"/home/david/.minetest/worlds/' + x + '\"')
            print('')



As mcimport is much better than my attempt, I'm unlikely to work more on the mineblend conversion, but will leave it available for curiosity of others, so...
IGNORE THE FOLLOWING IT IS OUTDATED:-
This is the first stage of a python3 -based minecraft to minetest map converter.
STAGE 1 WORKING: Takes a map from minecraft and produces a list of all the blocks in the map
Because I've basically crippled a blender tool the code is a total mess.
The code is on github, and you would be extremely welcome to work on it. Most of the files are totally unnecessary, but I thought I'd aim to make it available as it is.
https://github.com/dgm3333/mc2mt
https://github.com/dgm3333/mc2mt/archive/master.zip
See my next post below for instructions.
I think you will need to install the demo version of minecraft (I don't know why, but it seems to be necessary)
I'm running it from Liclipse (as below), but you can run the code more simply with
Your phone or window isn't wide enough to display the code box. If it's a phone, try rotating it to landscape mode.
Code: Select all
python3 __init__.py


TODO:-
STAGE 2: convert from minecraft to minetest node type
Based around conversion code from https://forum.minetest.net/viewtopic.php?f=12&t=6007

STAGE 3: mash data into a minetest map format.
Breakdown here https://forum.minetest.net/viewtopic.php?f=47&t=11157


Image
Last edited by dgm5555 on Tue Mar 10, 2015 21:16, edited 21 times in total.
 

dgm5555
Member
 
Posts: 244
Joined: Tue Apr 08, 2014 19:45

Re: Convert Minecraft worlds to Minetest worlds directly

by dgm5555 » Tue Feb 03, 2015 23:56

There are various python scripts to convert minecraft worlds to be available to other programs.
One simple one is mineblend, a minecraft - blender conversion, which can read the modern minecraft anvil format and inport it into Blender: http://randomsamples.info/project/mineblend/. The license is GNU GENERAL PUBLIC LICENSE.
With this code already available could someone bootstrap it to create a minetest format world directly from a minecraft world.

Then you could have a simple text-based lookup table to convert from a minecraft block to a minetest one (just as tomtsschem.py https://forum.minetest.net/viewtopic.php?f=12&t=6007does) and resort the blocks into chunks for minetest.

Finally put it directly into a minetest world sqlite file with any header code.

Even if it took all night for a world to convert it would be worth it as it give minetest users access to the thousands of amazing worlds and objects built by minecraft users...
But the mineblend script can import a reasonable sized world in only a minute or so, which would save a lot of agony compared with mucking around with worldedit.


I think it requires minecraft to be installed, but the free demo version works fine.
To test the conversion under blender.
I registered for and installed the demo version of minecraft
Installed the mineblend script in /home/david/programs/blender-2.72b-linux-glibc211-x86_64/2.72/scripts/addons/io_import_minecraft (only because I don't formally install blender, just extract it to a standalone directory)
Copied a random minecraft map I downloaded from the internet, and extracted the save game directory to /home/david/.minecraft/saves
(the correct directory to have in saves is the one with level.dat and the data subdir in it)
The world wasn't recognised by mineblend until I also copied the "playerdata" folder into that folder from the minecraft demo world (just having the "players" subdir means the world isn't recognised).
I increased the loadradius to 20.
A few seconds later, I have a decent portion of a minetest world imported into blender (admittedly somewhere randomly off screen, so it took me a little while to realise it was there).

Worldedit is totally unstable attempting to import any large volumes. The python version of Minetestmapper-numpy can read an entire minetest world in seconds (or worst case minutes). Apparently the c version is even faster, but python is so much easier for most of us to code and we don't have to recompile for every different computer. tomtsschem.py is so incredibly slow (presumably because it's relying on mcedit to access the file, but also possibly because it doesn't follow the minecraft block order, so extraction is very inefficient.
I'm thinking it would be far better to just bypass mcedit entirely.
 

dgm5555
Member
 
Posts: 244
Joined: Tue Apr 08, 2014 19:45

Re: Converter Minecraft map to Minetest map [mod]

by dgm5555 » Sat Feb 07, 2015 21:18

Here is my initial quick thoughts on which files do what (NB I might well be totally incorrect)
__init__.py, mineregion.py, mcanvilreader.py and nbtreader.py seem the most likely to be useful

Probably one very simple way to start testing would be a minor edit of __init__.py to disable the scene generation in blender and just export all nodes and properties to a text file, or to a minetest .sqlite file. Then use blender as the python interpreter.

blockbuild.py - seems to create the meshes in blender to represent minetest blocks
__init__.py - is 'main()' it defines the main variables, and calls the various functions. From our pov, it's rather cluttered with code defining blender specific functions (eg menus and generation of the scene)
javarandom.py - An implementation of the Java SE 6 random number generator
LICENSE.txt - the GNU license
mcanvilreader.py - Anvil is the current Minecraft 1.x file format http://minecraft.gamepedia.com/Anvil_file_format
mcregionreader.py - mcRegion was the older file format http://minecraft.gamepedia.com/Region_file_format
mineregion.py - seems to do a lot of the grunt work, and contains amonst other things, information about each type of minecraft block
nbtreader.py - the tree/tag structure minecraft store info in http://minecraft.gamepedia.com/NBT_Format
slimes.py - "Javarandom slime Python-version test harness" - huh?
sysutil.py - defines file paths dependent on OS
writeNoodleBuilder.py - I think this creates a 'tree' of objects within a Blender file
 

dgm5555
Member
 
Posts: 244
Joined: Tue Apr 08, 2014 19:45

Re: [Mod] Converter Minecraft world to Minetest world

by dgm5555 » Sat Feb 14, 2015 09:13

As above the reader based on mineblend works well and does a basic 'proof of concept' conversion from MC to MT blocks.

This is my current code for converting a minecraft map to a minetest map.
At the moment my notes for conversion are within the output section, but I am considering keeping it relatively separate so the writer is able to be used for other projects where people which to generate their own maps (eg converting from bumpmaps, etc).
It's not finished, but any comments, suggestions or additions would be gratefully appreciated...

Your phone or window isn't wide enough to display the code box. If it's a phone, try rotating it to landscape mode.
Code: Select all
import zlib
import sqlite3
import numpy

zlibCompressLevel = 6
rootDir = '~/user/.minetest/worlds/'

def int64(u):
    while u >= 2**63:
        u -= 2**64
    while u <= -2**63:
        u += 2**64
    return u

def generateMTDB(worldname):
#    mkdir rootDir + worldname

    #create the database file
    db = sqlite3.connect(rootDir + worldname + '/map.sqlite')

    #create the table within the database
    cursor = db.cursor()
    cursor.execute('CREATE TABLE blocks (pos INT NOT NULL PRIMARY KEY,data BLOB)')
    db.commit()
    return db

def saveSectionToMTDB(db,chunkZ,chunkY,chunkX,MCSectionXYZ,secNameIDDic):
    cursor = db.cursor()

    # calculate the primary key ID
    # NB due to variations in MC vs MC axes, this will need to be converted (see below under param0)
    pos = int64(chunkZ*16777216 + chunkY*4096 + chunkX)

    # Generate the map header information
    mapFormatVersion = numpy.uint8(24)

    is_underground = 0x01
    day_night_differs = 0x02
    lighting_expired = 0x04
    generated = 0x08
    flags = numpy.uint8(is_underground | day_night_differs | lighting_expired | generated)


    content_width = numpy.uint8(2)    # Number of bytes in the content (param0) fields of nodes
    params_width = numpy.uint8(2)     # Number of bytes used for parameters per node

    # now convert the node data within the section from MC array to MT array then serialise and compress it
    param0 =  numpy.zeros((16,16,16), dtype=numpy.uint16)
    # In Minecraft, West is +Z (max=∞) and East is -Z (min=-∞), North is -X (min=-∞) and South is +X (max=∞), Up is +Y (max=256) and Down is -Y (min=0), ground level is 63
    # In Minetest,  -X (west) <--- 0 ----> +X (east),           North is +Z and South is -Z,                  Up is +Y and Down is -Y (min=0),           ground level is 0
    #    Minetest dimensions are max 30928 nodes (=1933 chunks) in any direction from origin of 0

    #need to fill the array here
    # Ignore nodes >30928 or <-30928 or ignore chunks >1933 or <-1933

    #Switch axes around
    # NB both
    #    MT  -X   +X   -Z   +Z   Y
    #    MC  +Z   -Z   +X   -X   Y-63


    # serialise and compress data
    p0zlib = zlib.compress(numpy.reshape(param0, 4096), zlibCompressLevel)



    # convert the MC blockdata to MT param1 node data
    param1 =  numpy.zeros((16,16,16), dtype=numpy.uint8)
    #need to fill the array here
    p1zlib = zlib.compress(numpy.reshape(param1, 4096), zlibCompressLevel)



    # I don't think MC has a param2, so just create a dummy array full of zeros
    param2 =  numpy.zeros((16,16,16), dtype=numpy.uint8)
    p2zlib = zlib.compress(numpy.reshape(param2, 4096), zlibCompressLevel)



    #zlib-compressed node metadata list
    metaVersion = numpy.uint16(1)
    metaCount = numpy.uint16(0)

    #Node timers (assume none)
    timerVersion = numpy.uint8(0)

    #Static Objects (assume none - not even sure what they are)
    staticObjVersion = numpy.uint8(0)
    staticObjCount = numpy.uint8(0)

    #Timestamp (mark as invalid/unknown timestamp)
    timeStamp  = numpy.uint32(0xffffffff)

    # Name<->ID Mapping
    NameIDMapVersion = numpy.uint8(0)
    NameIDMapCount = numpy.uint16(len(secNameIDDic))    # fileformat say u16 num_name_id_mappings, but this is located to be a count, and https://github.com/minetest/minetest/blob/master/src/nameidmapping.cpp saves a size
    nameIDs = NameIDMapVersion + NameIDMapCount

    for curNameID in secNameIDDic:
        NameIDMapID = numpy.uint16(curNameID.id)
        NameIDMapLen = numpy.uint16(len(curNameID.name))
        NameIDMapName = numpy.uint8(curNameID.name)
        nameIDs = nameIDs + NameIDMapID + NameIDMapLen + NameIDMapName


    # concatenate the data header
    data = mapFormatVersion + flags + content_width + params_width
    # concatenate the node data
    data = data + p0zlib + p1zlib + p2zlib
    # concatenate the meta data (NB not sure what this is for)
    data = data + metaVersion + metaCount
    # concatenate node timers (NB assuming timers not being converted
    data = data + timerVersion
    # concatenate static objects
    data = data + staticObjVersion + staticObjCount
    # concatenate timeStamp
    data = data + timeStamp
    # concatenate timeStamp
    data = data + nameIDs


    # now write to the database
    cursor.execute('INSERT INTO blocks(pos, data) VALUES(?,?)', (pos,data))
    db.commit()
 

Nore
Member
 
Posts: 468
Joined: Wed Nov 28, 2012 11:35
GitHub: Ekdohibs

Re: [Mod] Converter Minecraft world to Minetest world

by Nore » Sun Feb 15, 2015 11:30

I already had a MC -> MT converter here: https://github.com/Novatux/mcimport. It looks similar to yours, but maybe you can improve them with what you're doing (sorry, I have no time to improve mine right now).
 

User avatar
Calinou
Member
 
Posts: 3124
Joined: Mon Aug 01, 2011 14:26
GitHub: Calinou
IRC: Calinou
In-game: Calinou

Re: [Mod] Converter Minecraft world to Minetest world

by Calinou » Sun Feb 15, 2015 12:01

By the way, I've been thinking of creating a mc_compatibility mod. This mod would have two aims:

  • Provide nodes, craftitems and tools with behaviour similar to Minecraft's (eg. mc_compatibility:melon_slice),
  • Provide textures and sounds for these (not taken from Minecraft).
 

dgm5555
Member
 
Posts: 244
Joined: Tue Apr 08, 2014 19:45

Re: [Mod] Converter Minecraft world to Minetest world

by dgm5555 » Sun Feb 15, 2015 17:09

That sounds like a great idea, currently I've just got a dictionary to convert between blocks, so anything can be plugged in, but it's likely to get unwieldy with lots of mods, so a compatible mod would make life much easier.
 

dgm5555
Member
 
Posts: 244
Joined: Tue Apr 08, 2014 19:45

Re: [Mod] Converter Minecraft world to Minetest world

by dgm5555 » Sun Feb 15, 2015 17:35

Nore wrote:I already had a MC -> MT converter here: https://github.com/Novatux/mcimport. It looks similar to yours, but maybe you can improve them with what you're doing (sorry, I have no time to improve mine right now).

Why on earth would you not have previously put that somewhere on the forum!! Or at least a readme on git that might be indexed so a google search picked it up!! This would have saved me about 3 weeks and something over 30 hours (and a lot of money if I'd done something more productive). I accept it do with some (very slight) tweaking, but I could have spent that time figuring out something which was made for purpose. And you've had it sitting there for a year since your last edit! AAARRGH!!!
Unfortunately I've now only got today to work on it as I've got to return to all the work I've been putting off, and yours is already better than mine. What a waste (but thanks for telling me, if I get more time, I'll work with yours instead).

EDIT: OK I take it back, I doubt I could do much to optomise it - my python is nowhere near yours...

The tweaks would be to set up the world with the other files and mods enabled, and possibly a little more documentation of the running of the script.
 

Nore
Member
 
Posts: 468
Joined: Wed Nov 28, 2012 11:35
GitHub: Ekdohibs

Re: [Mod] Converter Minecraft world to Minetest world

by Nore » Sun Feb 15, 2015 18:45

There are a few more things that could be done, such as converting inventories, converting entities, preserving trunk facedir, etc., and adding more nodes & items (maybe including some from mc mods), but some mod like Calinou suggested would probably be best (even a mod that would just add those items, whose effects would then be added by other mods) could be nice. Also, since it is old, farming, tnt, etc are not converted either.
Oh, and sorry for not having made a forum topic (I just remember RBA mentionned it once in a thread in maps, for a map he had converted that way).
 

dgm5555
Member
 
Posts: 244
Joined: Tue Apr 08, 2014 19:45

Re: [Mod] Converter Minecraft world to Minetest world

by dgm5555 » Sun Feb 15, 2015 19:46

Your phone or window isn't wide enough to display the code box. If it's a phone, try rotating it to landscape mode.
I'm just making notes in this post for things to look at should/when I get back to it:
Set default input and output root directory,
Make output directory if doesn't exist
Enhance progress display (% progress and time estimate). If this is too slow to check in advance, perhaps a rough estimate could be made by the number of region files. Ideally this could be directed to std-error so it doesn't scroll.
Display a list of the bounds of world import when finished (in case you can't find them).
Have a 'convert all worlds in dir' which autogenerates names to default output root.
Option to block chunk generation above any chunks of the import (?up to MC y=256) and set them to air
Option to increase y-height of world (so it doesn't subsequently have land generated around it)
Improve block conversion
Print list of unrecognised blocks and data associated with it (there's a very common plant/tree missing from the conversion, and a ?brick (used in house/structures)). for extra marks: Convert this as a special 'unrecognised' block which could be punched to get the minecraft stats on it.
Have a special non-spreading lava and fire, as these seem to cause significant damage when converting as the default minetest versions. (and possibly water)
I wonder if theres a way to stop power off/suspend while the script is running
Move spawn point to the minecraft one
Check error:
Your phone or window isn't wide enough to display the code box. If it's a phone, try rotating it to landscape mode.
Code: Select all
david@zaiqLin:~/Documents/LiClipse Workspace/mcimport$ python3 mcimport.py "/home/david/.minetest/worlds/mcw/StargateAtlantis-Gearmage" "/home/david/.minetest/worlds/mcw/convert/StargateAtlantis-Gearmage"
Saved 0 blocks
Saved 50 blocks
Saved 100 blocks
Traceback (most recent call last):
  File "mcimport.py", line 9, in <module>
    mtmap.save()
  File "/home/david/Documents/LiClipse Workspace/mcimport/block.py", line 306, in save
    for block in self.blocks:
  File "/home/david/Documents/LiClipse Workspace/mcimport/block.py", line 292, in fromMCMapBlocksIterator
    mtblock.fromMCBlock(mcblock, conversion_table)
  File "/home/david/Documents/LiClipse Workspace/mcimport/block.py", line 177, in fromMCBlock
    content[i], param2[i] = conversion_table[blocks[i]][data[i]]
IndexError: list index out of range

Is it using the old MC maxblock of 256? (nope range goes up to 4096). Looks like it might derive back to the table generated from map_content.txt by content.read_content. The error still occurs with a try/except clause.


Also check it wont try to import chunk >1933 or <-1933?

This are some import glitches:
https://dl.dropboxusercontent.com/u/21225632/Screenshot%20from%202015-02-15%2022%3A06%3A58.png
https://dl.dropboxusercontent.com/u/21225632/Screenshot%20from%202015-02-15%2022%3A14%3A37.png


Having said that, this is an awesome script. Here's an example which took approx 10mins to convert:-
Image
Last edited by dgm5555 on Mon Feb 16, 2015 07:48, edited 1 time in total.
 

User avatar
ExeterDad
Member
 
Posts: 1121
Joined: Sun Jun 01, 2014 20:00
In-game: ExeterDad

Re: [Mod] Converter Minecraft world to Minetest world

by ExeterDad » Mon Feb 16, 2015 00:47

Whoa! That is very cool!
٩(̾●̮̮̃̾•̃̾)۶

Kibbie and I have a beautiful public server now! HOMETOWN
 

twoelk
Member
 
Posts: 1092
Joined: Fri Apr 19, 2013 16:19

Re: [Mod] Converter Minecraft world to Minetest world

by twoelk » Mon Feb 16, 2015 03:30

Oh dear, I desperately need time to get this running on my windows machine ;-P
somehow

regarding the time you invested on this subject, do not consider it wasted. With the insight you have gained you could be able to tweak and add to the code more than most others.

Although I have been fiddling with converting Minecraft map content to Minetest for quite a while I have sadly missed most of youre progress. Maybe too late for this round I do have suggestions for your next burst of activity though.

  • A basic request is to not hardcode absolute paths into the tool. Both my Minecraft and my Minetest installations are portable run-in-place versions that are slightly tweaked and do not use the file paths of normal installations. So consider that the worlds may reside in some remote and portable places and need not be anywhere near a client or server installation.

As these tools of both of you can write to a minetest database they could be usefull for more things than oneway map translations.

  • For one consider there are several mc-map versions so making reading the map source a modular plugin system might be usefull. Besides mc there are also for example maps of minetest forks such as Freeminer and Voxelands (Minetestclassic) that could make use of a converter (more or less). Others could supply more input filters for maybe Terasology or whatever else is related enough.

  • If you include the current Minetest format as input and support all database backends your programm might become usefull to convert between database backends without having to run minetest itself.

  • This might be also usefull for other map manipulations directly in the database. For example one could supply an input file with node names which the programm could replace or delete.
    This could be used for example to delete unknown node relicts from uninstalled mods.
    It could also be used to delete certain regions of an existing map. like deleting everything below a certain depth or outside a defined area. I think OldCoder among others was working on a script to achieve that.

  • Maybe the code could be also used to import content into an existing map like combining two maps (VanessaE and Sokomine worked on a bash script that did that) This would also have to include a possability to move content around like shifting an existing region a defined amount to one side so that the content of both maps is somewhat appart.

  • It might also be usefull to be able load the different versions of schematic files, including those from mc
Last edited by twoelk on Mon Feb 16, 2015 10:08, edited 1 time in total.
 

Nore
Member
 
Posts: 468
Joined: Wed Nov 28, 2012 11:35
GitHub: Ekdohibs

Re: [Mod] Converter Minecraft world to Minetest world

by Nore » Mon Feb 16, 2015 07:29

dgm5555 wrote:
Your phone or window isn't wide enough to display the code box. If it's a phone, try rotating it to landscape mode.
Code: Select all
david@zaiqLin:~/Documents/LiClipse Workspace/mcimport$ python3 mcimport.py "/home/david/.minetest/worlds/mcw/StargateAtlantis-Gearmage" "/home/david/.minetest/worlds/mcw/convert/StargateAtlantis-Gearmage"
Saved 0 blocks
Saved 50 blocks
Saved 100 blocks
Traceback (most recent call last):
  File "mcimport.py", line 9, in <module>
    mtmap.save()
  File "/home/david/Documents/LiClipse Workspace/mcimport/block.py", line 306, in save
    for block in self.blocks:
  File "/home/david/Documents/LiClipse Workspace/mcimport/block.py", line 292, in fromMCMapBlocksIterator
    mtblock.fromMCBlock(mcblock, conversion_table)
  File "/home/david/Documents/LiClipse Workspace/mcimport/block.py", line 177, in fromMCBlock
    content[i], param2[i] = conversion_table[blocks[i]][data[i]]
IndexError: list index out of range

Is it using the old MC maxblock of 256? (nope range goes up to 4096). Looks like it might derive back to the table generated from map_content.txt by content.read_content. The error still occurs with a try/except clause.

I reckon I found out where the bug was: did you use a world with a block id that was > to all known blocks ids? I have made a commit that will hopefully fix this, could you check?

About the import glitches, it looks like a bug in the conversion table; you can look at the table in map_content.txt to check that. Also, you don't *need* moretrees, quartz and nether: in the main script, just remove those you don't want from the list.
 

dgm5555
Member
 
Posts: 244
Joined: Tue Apr 08, 2014 19:45

Re: [Mod] Converter Minecraft world to Minetest world

by dgm5555 » Mon Feb 16, 2015 23:42

Nore wrote:I reckon I found out where the bug was: did you use a world with a block id that was > to all known blocks ids? I have made a commit that will hopefully fix this, could you check?

Brilliant no more glitch.

twoelk wrote:Oh dear, I desperately need time to get this running on my windows machine ;-P

You just need to install python even on Win it should only take 5mins...
The major libs are sqlite and zlib which are pythonic defaults. It doesn't even need numpy.
[It doesn't require minecraft or minetest to be installed]

Paths aren't hardcoded (that was just my little bolt-on batch generation script which generates the command lines to convert a bunch of worlds sequentially)

Your ideas are good, I was wondering about extending that idea with a simple mod within minetest to locate your desired point for import then insert it with mcimport. No more tempramental world-edit. If I understand minetest's handling of the db correctly it should be possible to do this while playing the game.
 

dgm5555
Member
 
Posts: 244
Joined: Tue Apr 08, 2014 19:45

Re: [Mod] Converter Minecraft world to Minetest world

by dgm5555 » Tue Feb 17, 2015 22:24

Nore: Would it be difficult to stop generation of land above an imported area (eg by marking it as generated and filled with air) and/or be able to set the y- import height via command (so a smaller world can be matched to height of land around it)? Having the map generated over/around the import is ruining a significant number of my trialed worlds.


The following node types are converted but not recognised (and I'm not sure if they are an error, or if they were in an old version of the mod):
stairs:stair_nether_brick --------- however in nether mod is ------ replace("stairs:stair_cobble", "nether:brick")
stairs:slab_nether_brick --------- not sure where this might come from...
wool:purple -------------------------- however wool has ---------------- wool:violet
(BTW the plant faults in previous post were due to me not including all of the plant_lib mods)
Unrecognised nodes are currently converted to air

The following mod could be used to stop fire and lava setting fire to things:
https://dl.dropboxusercontent.com/u/21225632/mcsafe.zip

change in mcimport.py:
Your phone or window isn't wide enough to display the code box. If it's a phone, try rotating it to landscape mode.
Code: Select all
nimap, ct = content.read_content(["MORETREES", "NETHER", "QUARTZ", "MCSAFE"])

change in map_content.txt
Your phone or window isn't wide enough to display the code box. If it's a phone, try rotating it to landscape mode.
Code: Select all
#if MCSAFE
   8   mcsafe:water_flowing
   9   mcsafe:water_source
   10   mcsafe:lava_flowing
   11   mcsafe:lava_source
#else
   8   default:water_flowing
   9   default:water_source
   10   default:lava_flowing
   11   default:lava_source
#endif

#if MCSAFE
   51   mcsafe:basic_flame
#else
   51   fire:basic_flame
#endif



I'm not sure if its a related problem, but there seem to be a number of holes in things (walls/posts/etc) (but with trees sprouting everywhere and random hills it's a bit difficult to be sure.
Last edited by dgm5555 on Fri Feb 20, 2015 07:24, edited 1 time in total.
 

User avatar
Inocudom
Member
 
Posts: 2889
Joined: Sat Sep 29, 2012 01:14
IRC: Inocudom
In-game: Inocudom

Re: [Mod] Converter Minecraft world to Minetest world

by Inocudom » Wed Feb 18, 2015 04:09

Impressive work you have done here. Would you be interested in making a script that exports maps to the Cube 2/Tesseract engines? It might be an interesting experiment.
 

dgm5555
Member
 
Posts: 244
Joined: Tue Apr 08, 2014 19:45

Re: [Mod] Converter Minecraft world to Minetest world

by dgm5555 » Wed Feb 18, 2015 07:11

y-height is easy to manipulate if you are willing to accept chuck sized steps (ie 16 nodes). At least then mapgen doesn't get in the way...
just edit
block.py line 167 with a new YOFFSET
def fromMCBlock(self, mcblock, conversion_table):
self.pos = (mcblock.pos[0], mcblock.pos[1]-4+YOFFSET, mcblock.pos[2])

Also just wondering if it would be easier to modify the mapgen code to adjust it's height in smaller increments (to get finer height control). Obviously this would vary with seed, so anyone wanting to do this could find this was a bit fiddly, but would be easy to write a script to trial height changes and repeatedly overwrite the map.sqlite db file until it was right (overwriting db is equivalent to deleting all the mapgen changes)
 

dgm5555
Member
 
Posts: 244
Joined: Tue Apr 08, 2014 19:45

Re: [Mod] Converter Minecraft world to Minetest world

by dgm5555 » Wed Feb 18, 2015 21:33

Actually thinking a bit more about moving the import around. It would make more sense to convert it first, without moving it, then copy to a backup, then do the move with a very simple sqlite query like the following (which only takes a few seconds). This means you can quickly tweak the settings and change the import location as you wish.

[EDIT]: THIS SCRIPT MOVES THE ENTIRE WORLD AROUND
Your phone or window isn't wide enough to display the code box. If it's a phone, try rotating it to landscape mode.
Code: Select all
import sqlite3
# set the number of blocks you want to move the world (each block is 16 nodes)
xOffset = 0
yOffset = 0
zOffset = 1

zyxOffset = int(zOffset * 16777216 + yOffset * 4096 + xOffset)
db = sqlite3.connect('/home/david/.minetest/worlds/testWorld/map.sqlite')
cur = db.cursor()

# move the pos values far away, then back so there are never any duplicate pos values
cur.execute('UPDATE blocks SET pos = pos + {xyz}'.format(xyz=zyxOffset+160000))
cur.execute('UPDATE blocks SET pos = pos - 160000')
db.commit()
db.close()



Another possible task would be to merge multiple worlds together:-
http://nahitworkplace.blogspot.co.uk/2013/07/sqlite3-and-python-how-to-join-two.html
Your phone or window isn't wide enough to display the code box. If it's a phone, try rotating it to landscape mode.
Code: Select all
 import sqlite3 as lite 
 import sys 
   
 def join_database(database1Name, database2Name, database3Name): 
  ''' Join two database 'database1Name' and 'database2Name' into database 'database3Name' ''' 
   
  con1 = lite.connect(database1Name)      # Connect to Database1 
  con2 = lite.connect(database2Name)      # Connect to Database2 
  con3 = lite.connect(database3Name)      # Connect to Database3 
   
  con1.row_factory = lite.Row         # For reading column names from Database1 
  con2.row_factory = lite.Row         # For reading column names from Database2 
   
  con1_new = lite.connect(database1Name)    # Create new connection with Database1 for reading data 
  con2_new = lite.connect(database2Name)    # Create new connection with Database2 for reading data 
   
  with con1, con2, con3, con1_new, con2_new: 
   cur1 = con1.cursor()            # Get cursor from connection 1 (con1) 
   cur2 = con2.cursor()            # Get cursor from connection 2 (con2) 
   cur3 = con3.cursor()            # Get cursor from connection 3 (con2) 
   
   cur1_new = con1_new.cursor()        # Get connection from connection 1_new (con1_new) 
   cur2_new = con2_new.cursor()        # Get connection from connection 2_new (con2_new) 
     
   cur1.execute("SELECT * FROM your_table_name")  # Select all column names from table your_table_name in Database1 (Why column names see line no. 11) 
   cur2.execute("SELECT * FROM your_table_name")  # Select all column names from table your_table_name in Database2 (Why column names see line no. 12) 
   
   row_1 = cur1.fetchone()      # Fetch column names from database1 table 
   row_2 = cur2.fetchone()      # Fetch column names from database2 table 
   
   columnNames = row_1.keys()    # Read column names from Database1 
     
   for item in row_2.keys():     # Append column names from Database1 with Database2, including duplicate column names only once (See description) 
    if item not in row_1.keys(): 
     columnNames.append(item) 
   
   cur3.execute("CREATE TABLE IF NOT EXISTS your_table_name(Id INTEGER PRIMARY KEY, Date TEXT(10), Time TEXT(8))")  # You can change this line according to your needs 
     
   for col in columnNames[3:]: 
    cur3.execute("ALTER TABLE your_table_name ADD {} DOUBLE".format(col)) # You can change the data type(here it is DOUBLE) according to your needs 
   
   cur1_new.execute("SELECT * FROM your_table_name")  # Select complete data at once from table your_table_name in database1 
   cur2_new.execute("SELECT * FROM your_table_name")  # Select complete data at once from table your_table_name in database2 
   
   rows1 = cur1_new.fetchall()   # Read all rows from Database1 
   rows2 = cur2_new.fetchall()   # Read all rows from Database2 
   
   rows1 = [r[1:] for r in rows1]  # Except first row in rows1 read all rows 
   rows2 = [r[3:] for r in rows2]  # Except first three rows in rows2 read all rows 
   
   rows = [r1 + r2 for r1, r2 in zip(rows1, rows2)] #Combine each rows in rows1 and rows2 element wise 
   
   ques = []            # Use by sqlite for inserting into table 
     
   ques = ["?"]*len(columnNames[1:])  # Generate list [?, ?, ?, ?,........till length equals length of columnNames[1:] 
   ques = ",".join(ques)        # Generate string "?,?,?,?,?........" 
     
   columnNames = ",".join(columnNames[1:]) # Generate string "col1, col2, col3............" 
     
   for item in rows:        # Insert combined data into new Database3 
    cur3.execute("INSERT INTO your_table_name({0}) VALUES ({1})".format(columnNames, ques), item) 
     
 if __name__ == '__main__': 
  pass 
Last edited by dgm5555 on Thu Feb 19, 2015 22:02, edited 4 times in total.
 

dgm5555
Member
 
Posts: 244
Joined: Tue Apr 08, 2014 19:45

Re: [Mod] Converter Minecraft world to Minetest world

by dgm5555 » Wed Feb 18, 2015 21:49

I'm just wondering if it would be possible to create code which took an imported world, and blended the edges to match the mapgen. I've PMed one of the mapgen experts:-
I'm wondering (as you're a mapgen expert) if you would have time and inclination to create a script to smoothly blend the edges of an import into the mapgen landscape so as to avoid the massive cliffs, straight lines, biome jumps, and other texture disparities that usually occur with imports. I'm thinking it would also be useful for you more generally as a landscape smoother at the edges of villages/flats/etc.
 

twoelk
Member
 
Posts: 1092
Joined: Fri Apr 19, 2013 16:19

Re: [Mod] Converter Minecraft world to Minetest world

by twoelk » Thu Feb 19, 2015 01:15

regarding moving parts of the map around and merging maps you may find this bash script from VanessaE and Sokomine interesting.
There was a discussion here about the problem of deleting parts of an existing map to make a transfer to a new server easier.
OldCoder did in the end succeed to delete the lower layers of the landrush map but I can"t remember him publishing how exactly he did it.

lag01/AndrejIT wrote this Map unexplore python script that might also include code of interest for you.

About merging map edges there was some discussion about that here: looping/wraparound/spherical/tiling world and the dev with the most experience in this matter is probably indeed paramat. I think there was more talk about merging edges elsewhere with some snippets of example code but I can't remember where, may have been on IRC.
 

dgm5555
Member
 
Posts: 244
Joined: Tue Apr 08, 2014 19:45

Re: [Mod] Converter Minecraft world to Minetest world

by dgm5555 » Thu Feb 19, 2015 22:50

Thanks for the thoughts a very simple way to clear portions of worlds would be to create extra x, y, and z columns from pos, then use a delete clause on the appropriate column (essentially I'm duplicating the minetest pos -> x,y,z code in SQL). PS This could be done considerably more efficiently, but it's reasonably quick as it is, and it's clearer to debug:
[PS DON'T TRUST THESE I HAVEN'T TEST THEM]
'ALTER TABLE blocks ADD COLUMN xPos INT NOT NULL'
'ALTER TABLE blocks ADD COLUMN yPos INT NOT NULL'
'ALTER TABLE blocks ADD COLUMN zPos INT NOT NULL'
'ALTER TABLE blocks ADD COLUMN iPos INT NOT NULL'
'UPDATE blocks SET xPos = (pos % 4096)'
'UPDATE blocks SET xPos = (CASE WHEN xPos < 2048 THEN xPos ELSE xPos-4096)'
'UPDATE blocks SET iPos = int((pos - xPos) / 4096))'
'UPDATE blocks SET yPos = (iPos % 4096)'
'UPDATE blocks SET yPos = (CASE WHEN yPos < 2048 THEN yPos ELSE yPos-4096)'
'UPDATE blocks SET iPos = int((iPos - yPos) / 4096))'
'UPDATE blocks SET zPos = (iPos % 4096)'
'UPDATE blocks SET zPos = (CASE WHEN zPos < 2048 THEN zPos ELSE zPos-4096)'
'DELETE FROM blocks WHERE yPos <-20'
 

dgm5555
Member
 
Posts: 244
Joined: Tue Apr 08, 2014 19:45

Re: [Mod] Converter Minecraft world to Minetest world

by dgm5555 » Fri Feb 20, 2015 07:35

To reveal unknown blocks as the typical minetest unknown node, change line 40 in content.py
Your phone or window isn't wide enough to display the code box. If it's a phone, try rotating it to landscape mode.
Code: Select all
#    name_id_mapping = ["air"]
    name_id_mapping = ["unknown"]

and add to the top of map_content.txt
Your phone or window isn't wide enough to display the code box. If it's a phone, try rotating it to landscape mode.
Code: Select all
0   air

This gives you the following effect
Image
Image


There also seems to be a glitch where content is imported correctly, but immediately deleted by the engine. It seems to always happen in the same locations, so is presumably related to the chunk not been correctly recognised as already generated.
eg the following series were taken at approx 1 second intervals.
Image
Image
Image
Last edited by dgm5555 on Fri Feb 20, 2015 07:54, edited 1 time in total.
 

Nore
Member
 
Posts: 468
Joined: Wed Nov 28, 2012 11:35
GitHub: Ekdohibs

Re: [Mod] Converter Minecraft world to Minetest world

by Nore » Fri Feb 20, 2015 07:38

That last bug is due to cavegen, you could try disabling caves in the mapgen flags.
 

dgm5555
Member
 
Posts: 244
Joined: Tue Apr 08, 2014 19:45

Re: [Mod] Converter Minecraft world to Minetest world

by dgm5555 » Fri Feb 20, 2015 22:05

Why does flagging the sections as 'generated' not work. I would have thought this should stop mapgen from modifying them (but it doesn't)
in block.py:-
Your phone or window isn't wide enough to display the code box. If it's a phone, try rotating it to landscape mode.
Code: Select all
...
        #flags
        flags = 0x00
        if self.pos[1] < -1:
            flags |= 0x01       #is_underground
        flags |= 0x02           #day_night_differs
        flags |= 0x04           #lighting_expired
        flags |= 0x08           #generated
        writeU8(os, flags)
...


And deleting caves from map_meta.txt doesn't work either. According to http://dev.minetest.net/Mapgen_Parameters, I should be able to edit it, but minetest ignores any setting I save in the file and adds the flag back in. The file does say hardcoded preceeds all others, but that makes no sense that would mean you could never set any flags...
mg_flags = trees, **caves**, nodungeons, noflat, light
 

Nore
Member
 
Posts: 468
Joined: Wed Nov 28, 2012 11:35
GitHub: Ekdohibs

Re: [Mod] Converter Minecraft world to Minetest world

by Nore » Fri Feb 20, 2015 22:18

Try to modify that in a mod, with the function that alters mapgen params then... You should also add no_mudflow or something like that. Also, it may be necessary to completely generate the *chunks* to avoid mapgen regenerating them.
 

twoelk
Member
 
Posts: 1092
Joined: Fri Apr 19, 2013 16:19

Re: [Mod] Converter Minecraft world to Minetest world

by twoelk » Sat Feb 21, 2015 01:08

Cavegen where it shouldn't be is an old and long lasting problem. Study this thread among others and view the interesting pictures like this at http://i.imgur.com/ZU3F75t.png where RealBadAngel replaced air with water to make the activities of cafegen in the sky visible.

When placing large schematics it seems advisable to load all the blocks that the structure extends to before loading the schematic file. So you may have to fly around a little before typing the WE commands.
 

dgm5555
Member
 
Posts: 244
Joined: Tue Apr 08, 2014 19:45

Re: [Mod] Converter Minecraft world to Minetest world

by dgm5555 » Sat Feb 21, 2015 07:54

twoelk wrote:When placing large schematics it seems advisable to load all the blocks that the structure extends to before loading the schematic file. So you may have to fly around a little before typing the WE commands.

Except with mcimport you never load scematic files or use world edit - the world is fully loaded into the sqlite db before you ever enter it, so also no chance of flying around (and i,ve converted a number of worlds which are over 3000 nodes square so that would be unfeasible anyway)
 

twoelk
Member
 
Posts: 1092
Joined: Fri Apr 19, 2013 16:19

Re: [Mod] Converter Minecraft world to Minetest world

by twoelk » Sat Feb 21, 2015 09:29

could be related to the issues #1559, #1397, #1274 and googling for "minetest cavegen griefing grieving" will show even more examples.
As I said this annoying bug has been around for a while and whenever it was pronounced fixed it would arise at yet another place and configuration. Maybe some informative pictures or test files to reproduce the effect might be of help for the devs to hunt down this rouge cavegen bug in all it's variations and disguises.

It might be interesting to create a giant solid block of glass in mc and import that into mt to study cavegen and see if it changes at different hights or listens to orders given in the config at all.
Do you do the initiall imports into a singlenode world?

With large WE imports I often had cavegen grieving in the sky and had mudflow add chocolate toppings of mud as well as some icing of sand.

Have a look at what happened to the "justtest" server lately to see massive examples of a mapgen unleashed over and in allready created terrain including cavegen destroying buildings, locked chests and protector blocks.

A way to flag places as not to be touched again and have every part of any mapgen respect that is certainly needed but seems difficult to achieve.

For now using singlenode as mapgen and dissabling cavegen and mudflow is the best we have. Also dissabling liquidflow at import time seems advisable until one has fixed issues that might arise from uncontroled lavaflows, accidental fires and the such.

But then one does want to enable some mapgen in the end and there the gambling begins again. Welcome to the dance with the mighty ever mind changing mapgen.
Last edited by twoelk on Sat Feb 21, 2015 09:49, edited 1 time in total.
 

dgm5555
Member
 
Posts: 244
Joined: Tue Apr 08, 2014 19:45

Re: [Mod] Converter Minecraft world to Minetest world

by dgm5555 » Sat Feb 21, 2015 09:46

actually it's quite easy to import all the air as water instead (literally 5 secs to make a change in the conversion blocks). I'll try over the next few days. (I've never played minecraft, and I don't own a copy of it, so I couldn't do your glass suggestion). Can't do currently as computer is in the middle of a 62000 block (~16million nodes) conversion which will take half an hour or so. Nore's code is awesomely fast!!!
I would have thought the 'generated' flag should have stopped mapgen from griefing, but I guess not...
 

dgm5555
Member
 
Posts: 244
Joined: Tue Apr 08, 2014 19:45

Re: [Mod] Converter Minecraft world to Minetest world

by dgm5555 » Sat Feb 21, 2015 09:50

Here are some more node definitions which expand the conversion.
I've currently thrown in MCxxx blocks when there is no known converstion, so it will be possible to identify them in an import - I haven't yet figured out how to do this direct in the mcimport code.

The new imports make use of the riesenpilz mod (mushrooms), and mesecons
I'll also add more from the minecraftinfo list when I get a moment
http://www.minecraftinfo.com/idlist.htm

PS Nore: I haven't offered any git pushes yet, as my edits are pretty basic and I'm not sure which are stable, when I'm happy I'll push.

Your phone or window isn't wide enough to display the code box. If it's a phone, try rotating it to landscape mode.
Code: Select all
19   mcsafe:Sponge
21   default:stone_with_copper
22   default:copperblock
23   mcsafe:Dispenser
24   default:sandstonebrick
24   default:sandstone
25   mesecons_noteblock:noteblock
26   mcsafe:Bed
29   mesecons_pistons:piston_sticky_off
30   mcsafe:Cobweb
31   0   default:dry_shrub
31   1   default:grass_4
31   2   default:grass_3
31   99   default:grass_1
33   mesecons_pistons:piston_normal_off
34   mcsafe:PistonHead
36   mcsafe:MC36
39   riesenpilz:brown
40   riesenpilz:red
41   default:goldblock
42   default:steelblock
46   mcsafe:TNT
52   mcsafe:MonsterSpawner
55   mesecons:wire_00000000_off
58   mcsafe:CraftingTbl
64   doors:door_wood_t_1
69   mesecons_walllever:wall_lever_off
70   mesecons_pressureplates:pressure_plate_stone_off
71   doors:door_steel_t_1
72   mesecons_pressureplates:pressure_plate_wood_off
73   default:stone_with_mese
75   mesecons_torch:torch_off
76   mesecons_torch:torch_on
77   mesecons_button:button_off
84   mcsafe:Jukebox
86   mcsafe:Pumpkin
91   mcsafe:JackOLantern
92   mcsafe:Cake
93   mesecons_delayer:delayer_off_1
94   mesecons_delayer:delayer_on_1
95   mcsafe:LockedChest
95   mcsafe:StainedGlass
96   mcsafe:Trapdoor
97   mcsafe:HiddenSilverFish
98   mcsafe:MC98
99   riesenpilz:head_brown
100   riesenpilz:head_brown
101   mcsafe:IronBars
103   mcsafe:Melon
104   mcsafe:PumpkinStem
105   mcsafe:MelonStem
106   mcsafe:Vines
107   mcsafe:FenceGate
111   mcsafe:LilyPad
112   mcsafe:NethrBrick
113   mcsafe:NethrBrickFence
115   mcsafe:NethrWart
116   mcsafe:EnchantTab
117   mcsafe:BrewStnd
118   mcsafe:Cauldron
119   mcsafe:EndPortal
120   mcsafe:EndPortalFrame
121   mcsafe:EndStone
122   mcsafe:DragonEgg
123   mesecons_lightstone_red_off
124   mesecons_lightstone_red_on
125   default:junglewood
125   default:wood
126   stairs:slab_junglewood
126   stairs:slab_wood
127   mcsafe:MC127
128   stairs:stair_sandstone
129   default:stone_with_mese
130   mcsafe:MC130
131   mcsafe:MC131
132   mcsafe:MC132
133   default:mese
134   stairs:stair_wood
135   stairs:stair_wood
136   stairs:stair_junglewood
137   mesecons_commandblock:commandblock_off
138   mcsafe:Beacon
151   mesecons_solarpanel:solar_panel_off
152   default:mese
153   mcsafe:NetherQuartzOre
159   mcsafe:StainedClay
162   mcsafe:Acacia
168   mcsafe:Prismarine
169   mcsafe:SeaLantern
170   mcsafe:HayBale
172   mcsafe:HardenedClay
173   mcsafe:BlockOfCoal
174   mcsafe:PackedIce
179   mcsafe:RedSandstone

139 mcsafe:MC139
140 mcsafe:MC140
141 mcsafe:MC141
142 mcsafe:MC142
143 mcsafe:MC143
144 mcsafe:MC144
145 mcsafe:MC145
146 mcsafe:MC146
147 mcsafe:MC147
148 mcsafe:MC148
149 mcsafe:MC149
150 mcsafe:MC150
154 mcsafe:MC154
155 mcsafe:MC155
156 mcsafe:MC156
157 mcsafe:MC157
158 mcsafe:MC158
160 mcsafe:MC160
161 mcsafe:MC161
163 mcsafe:MC163
164 mcsafe:MC164
165 mcsafe:MC165
166 mcsafe:MC166
167 mcsafe:MC167
171 mcsafe:MC171
175 mcsafe:MC175
176 mcsafe:MC176
177 mcsafe:MC177
178 mcsafe:MC178
180 mcsafe:MC180
181 mcsafe:MC181
182 mcsafe:MC182
183 mcsafe:MC183
184 mcsafe:MC184
185 mcsafe:MC185
186 mcsafe:MC186
187 mcsafe:MC187
188 mcsafe:MC188
189 mcsafe:MC189
190 mcsafe:MC190
191 mcsafe:MC191
192 mcsafe:MC192
193 mcsafe:MC193
194 mcsafe:MC194
195 mcsafe:MC195
196 mcsafe:MC196
197 mcsafe:MC197
198 mcsafe:MC198
199 mcsafe:MC199
200 mcsafe:MC200
201 mcsafe:MC201
202 mcsafe:MC202
203 mcsafe:MC203
204 mcsafe:MC204
205 mcsafe:MC205
206 mcsafe:MC206
207 mcsafe:MC207
208 mcsafe:MC208
209 mcsafe:MC209
210 mcsafe:MC210
211 mcsafe:MC211
212 mcsafe:MC212
213 mcsafe:MC213
214 mcsafe:MC214
215 mcsafe:MC215
216 mcsafe:MC216
217 mcsafe:MC217
218 mcsafe:MC218
219 mcsafe:MC219
220 mcsafe:MC220
221 mcsafe:MC221
222 mcsafe:MC222
223 mcsafe:MC223
224 mcsafe:MC224
225 mcsafe:MC225
226 mcsafe:MC226
227 mcsafe:MC227
228 mcsafe:MC228
229 mcsafe:MC229
230 mcsafe:MC230
231 mcsafe:MC231
232 mcsafe:MC232
233 mcsafe:MC233
234 mcsafe:MC234
235 mcsafe:MC235
236 mcsafe:MC236
237 mcsafe:MC237
238 mcsafe:MC238
239 mcsafe:MC239
240 mcsafe:MC240
241 mcsafe:MC241
242 mcsafe:MC242
243 mcsafe:MC243
244 mcsafe:MC244
245 mcsafe:MC245
246 mcsafe:MC246
247 mcsafe:MC247
248 mcsafe:MC248
249 mcsafe:MC249
250 mcsafe:MC250
251 mcsafe:MC251
252 mcsafe:MC252
253 mcsafe:MC253
254 mcsafe:MC254
255 mcsafe:MC255
256 mcsafe:MC256


This is a list of all MC blocks (without any conversions)
Your phone or window isn't wide enough to display the code box. If it's a phone, try rotating it to landscape mode.
Code: Select all
#if NOTUSED
    0   mcblock:Air
    1   mcblock:Stone
    1   1   mcblock:Granite
    1   2   mcblock:PolishedGranite
    1   3   mcblock:Diorite
    1   4   mcblock:PolishedDiorite
    1   5   mcblock:Andesite
    1   6   mcblock:PolishedAndesite
    2   mcblock:Grass
    3   mcblock:Dirt
    3   1   mcblock:CoarseDirt
    3   2   mcblock:Podzol
    4   mcblock:Cobblestone
    5   mcblock:WoodenPlank_Oak
    5   1   mcblock:WoodenPlank_Spruce
    5   2   mcblock:WoodenPlank_Birch
    5   3   mcblock:WoodenPlank_Jungle
    5   4   mcblock:WoodenPlank_Acacia
    5   5   mcblock:WoodenPlank_DarkOak
    6   mcblock:Sapling_Oak
    6   1   mcblock:Sapling_Spruce
    6   2   mcblock:Sapling_Birch
    6   3   mcblock:Sapling_Jungle
    6   4   mcblock:Sapling_Acacia
    6   5   mcblock:Sapling_DarkOak
    7   mcblock:Bedrock
    8   mcblock:Water
    9   mcblock:Water_NoSpread
    10  mcblock:Lava
    11  mcblock:Lava_NoSpread
    12  mcblock:Sand
    12  1   mcblock:RedSand
    13  mcblock:Gravel
    14  mcblock:GoldOre
    15  mcblock:IronOre
    16  mcblock:CoalOre
    17  mcblock:Wood_Oak
    17  1   mcblock:Wood_Spruce
    17  2   mcblock:Wood_Birch
    17  3   mcblock:Wood_Jungle
    17  4   mcblock:Wood_Oak4
    17  5   mcblock:Wood_Oak5
    18  mcblock:Leaves_Oak
    18  1   mcblock:Leaves_Spruce
    18  2   mcblock:Leaves_Birch
    18  3   mcblock:Leaves_Jungle
    19  mcblock:Sponge
    19  1   mcblock:WetSponge
    20  mcblock:Glass
    21  mcblock:LapisLazuliOre
    22  mcblock:LapisLazuliBlock
    23  mcblock:Dispenser
    24  mcblock:Sandstone
    24  1   mcblock:Sandstone_Chiseled
    24  2   mcblock:Sandstone_Smooth
    25  mcblock:NoteBlock
    26  mcblock:Bed_Block
    27  mcblock:Rail_Powered
    28  mcblock:Rail_Detector
    29  mcblock:StickyPiston
    30  mcblock:Cobweb
    31  mcblock:TallGrass_DeadShrub
    31  1   mcblock:TallGrass
    31  2   mcblock:TallGrass_Fern
    32  mcblock:DeadShrub
    33  mcblock:Piston
    34  mcblock:Piston_Head
    35  mcblock:Wool
    35  1   mcblock:OrangeWool
    35  2   mcblock:MagentaWool
    35  3   mcblock:LightBlueWool
    35  4   mcblock:YellowWool
    35  5   mcblock:LimeWool
    35  6   mcblock:PinkWool
    35  7   mcblock:GrayWool
    35  8   mcblock:LightGrayWool
    35  9   mcblock:CyanWool
    35  10  mcblock:PurpleWool
    35  11  mcblock:BlueWool
    35  12  mcblock:BrownWool
    35  13  mcblock:GreenWool
    35  14  mcblock:RedWool
    35  15  mcblock:BlackWool
    36  mcblock:Piston_Moving
    37  mcblock:Dandelion
    38  mcblock:Poppy
    38  1   mcblock:BlueOrchid
    38  2   mcblock:Allium
    38  3   mcblock:AzureBluet
    38  4   mcblock:RedTulip
    38  5   mcblock:OrangeTulip
    38  6   mcblock:WhiteTulip
    38  7   mcblock:PinkTulip
    38  8   mcblock:OxeyeDaisy
    39  mcblock:BrownMushroom
    40  mcblock:RedMushroom
    41  mcblock:BlockofGold
    42  mcblock:BlockofIron
    43  mcblock:StoneSlab_Double
    43  1   mcblock:SandstoneSlab_Double
    43  2   mcblock:WoodenSlab_Double
    43  3   mcblock:CobblestoneSlab_Double
    43  4   mcblock:BrickSlab_Double
    43  5   mcblock:StoneBrickSlab_Double
    43  6   mcblock:NetherBrickSlab_Double
    43  7   mcblock:QuartzSlab_Double
    43  8   mcblock:SmoothStoneSlab_Double
    43  9   mcblock:SmoothSandstoneSlab_Double
    44  mcblock:StoneSlab
    44  1   mcblock:SandstoneSlab
    44  2   mcblock:WoodenSlab
    44  3   mcblock:CobblestoneSlab
    44  4   mcblock:BrickSlab
    44  5   mcblock:StoneBrickSlab
    44  6   mcblock:NetherBrickSlab
    44  7   mcblock:QuartzSlab
    45  mcblock:Brick
    46  mcblock:TNT
    47  mcblock:Bookshelf
    48  mcblock:MossStone
    49  mcblock:Obsidian
    50  mcblock:Torch
    51  mcblock:Fire
    52  mcblock:MobSpawner
    53  mcblock:WoodenStairs_Oak
    54  mcblock:Chest
    55  mcblock:RedstoneWire
    56  mcblock:DiamondOre
    57  mcblock:BlockofDiamond
    58  mcblock:Workbench
    59  mcblock:Wheat_Crop
    60  mcblock:Farmland
    61  mcblock:Furnace
    62  mcblock:Furnace_Smelting
    63  mcblock:Sign_Block
    64  mcblock:WoodDoor_Block
    65  mcblock:Ladder
    66  mcblock:Rail
    67  mcblock:CobblestoneStairs
    68  mcblock:Sign_WallBlock
    69  mcblock:Lever
    70  mcblock:StonePressurePlate
    71  mcblock:IronDoor_Block
    72  mcblock:WoodenPressurePlate
    73  mcblock:RedstoneOre
    74  mcblock:RedstoneOre_Glowing
    75  mcblock:RedstoneTorch_Off
    76  mcblock:RedstoneTorch
    77  mcblock:Button_Stone
    78  mcblock:Snow
    79  mcblock:Ice
    80  mcblock:SnowBlock
    81  mcblock:Cactus
    82  mcblock:ClayBlock
    83  mcblock:SugarCane_Block
    84  mcblock:Jukebox
    85  mcblock:Fence_Oak
    86  mcblock:Pumpkin
    87  mcblock:Netherrack
    88  mcblock:SoulSand
    89  mcblock:Glowstone
    90  mcblock:Portal
    91  mcblock:Jack-O-Lantern
    92  mcblock:Cake_Block
    93  mcblock:RedstoneRepeater_BlockOff
    94  mcblock:RedstoneRepeater_BlockOn
    95  mcblock:StainedGlass_White
    95  1   mcblock:StainedGlass_Orange
    95  2   mcblock:StainedGlass_Magenta
    95  3   mcblock:StainedGlass_LightBlue
    95  4   mcblock:StainedGlass_Yellow
    95  5   mcblock:StainedGlass_Lime
    95  6   mcblock:StainedGlass_Pink
    95  7   mcblock:StainedGlass_Gray
    95  8   mcblock:StainedGlass_LightGrey
    95  9   mcblock:StainedGlass_Cyan
    95  10  mcblock:StainedGlass_Purple
    95  11  mcblock:StainedGlass_Blue
    95  12  mcblock:StainedGlass_Brown
    95  13  mcblock:StainedGlass_Green
    95  14  mcblock:StainedGlass_Red
    95  15  mcblock:StainedGlass_Black
    96  mcblock:Trapdoor
    97  mcblock:MonsterEgg_Stone
    97  1   mcblock:MonsterEgg_Cobblestone
    97  2   mcblock:MonsterEgg_StoneBrick
    97  3   mcblock:MonsterEgg_MossyStoneBrick
    97  4   mcblock:MonsterEgg_CrackedStone
    97  5   mcblock:MonsterEgg_ChiseledStone
    98  mcblock:StoneBricks
    98  1   mcblock:MossyStoneBricks
    98  2   mcblock:CrackedStoneBricks
    98  3   mcblock:ChiseledStoneBrick
    99  mcblock:BrownMushroom_Block
    100 mcblock:RedMushroom_Block
    101 mcblock:IronBars
    102 mcblock:GlassPane
    103 mcblock:Melon_Block
    104 mcblock:PumpkinVine
    105 mcblock:MelonVine
    106 mcblock:Vines
    107 mcblock:FenceGate_Oak
    108 mcblock:BrickStairs
    109 mcblock:StoneBrickStairs
    110 mcblock:Mycelium
    111 mcblock:LilyPad
    112 mcblock:NetherBrick
    113 mcblock:NetherBrickFence
    114 mcblock:NetherBrickStairs
    115 mcblock:NetherWart
    116 mcblock:EnchantmentTable
    117 mcblock:BrewingStand_Block
    118 mcblock:Cauldron_Block
    119 mcblock:EndPortal
    120 mcblock:EndPortalFrame
    121 mcblock:EndStone
    122 mcblock:DragonEgg
    123 mcblock:RedstoneLamp
    124 mcblock:RedstoneLamp_On
    125 mcblock:Oak-WoodSlab_Double
    125 1   mcblock:Spruce-WoodSlab_Double
    125 2   mcblock:Birch-WoodSlab_Double
    125 3   mcblock:Jungle-WoodSlab_Double
    125 4   mcblock:AcaciaWoodSlab_Double
    125 5   mcblock:DarkOakWoodSlab_Double
    126 mcblock:Oak-WoodSlab
    126 1   mcblock:Spruce-WoodSlab
    126 2   mcblock:Birch-WoodSlab
    126 3   mcblock:Jungle-WoodSlab
    126 4   mcblock:AcaciaWoodSlab
    126 5   mcblock:DarkOakWoodSlab
    127 mcblock:CocoaPlant
    128 mcblock:SandstoneStairs
    129 mcblock:EmeraldOre
    130 mcblock:EnderChest
    131 mcblock:TripwireHook
    132 mcblock:Tripwire
    133 mcblock:BlockofEmerald
    134 mcblock:WoodenStairs_Spruce
    135 mcblock:WoodenStairs_Birch
    136 mcblock:WoodenStairs_Jungle
    137 mcblock:CommandBlock
    138 mcblock:Beacon
    139 mcblock:CobblestoneWall
    139 1   mcblock:MossyCobblestoneWall
    140 mcblock:FlowerPot_Block
    141 mcblock:Carrot_Crop
    142 mcblock:Potatoes_Crop
    143 mcblock:Button_Wood
    144 mcblock:HeadBlock_Skeleton
    144 1   mcblock:HeadBlock_Wither
    144 2   mcblock:HeadBlock_Zombie
    144 3   mcblock:HeadBlock_Steve
    144 4   mcblock:HeadBlock_Creeper
    145 mcblock:Anvil
    145 1   mcblock:Anvil_SlightlyDamaged
    145 2   mcblock:Anvil_VeryDamaged
    146 mcblock:TrappedChest
    147 mcblock:WeightedPressurePlate_Light
    148 mcblock:WeightedPressurePlate_Heavy
    149 mcblock:RedstoneComparator_Off
    150 mcblock:RedstoneComparator_On
    151 mcblock:DaylightSensor
    152 mcblock:BlockofRedstone
    153 mcblock:NetherQuartzOre
    154 mcblock:Hopper
    155 mcblock:QuartzBlock
    155 1   mcblock:ChiseledQuartzBlock
    155 2   mcblock:PillarQuartzBlock
    156 mcblock:QuartzStairs
    157 mcblock:Rail_Activator
    158 mcblock:Dropper
    159 mcblock:StainedClay_White
    159 1   mcblock:StainedClay_Orange
    159 2   mcblock:StainedClay_Magenta
    159 3   mcblock:StainedClay_LightBlue
    159 4   mcblock:StainedClay_Yellow
    159 5   mcblock:StainedClay_Lime
    159 6   mcblock:StainedClay_Pink
    159 7   mcblock:StainedClay_Gray
    159 8   mcblock:StainedClay_LightGray
    159 9   mcblock:StainedClay_Cyan
    159 10  mcblock:StainedClay_Purple
    159 11  mcblock:StainedClay_Blue
    159 12  mcblock:StainedClay_Brown
    159 13  mcblock:StainedClay_Green
    159 14  mcblock:StainedClay_Red
    159 15  mcblock:StainedClay_Black
    160 mcblock:StainedGlassPane_White
    160 1   mcblock:StainedGlassPane_Orange
    160 2   mcblock:StainedGlassPane_Magenta
    160 3   mcblock:StainedGlassPane_LightBlue
    160 4   mcblock:StainedGlassPane_Yellow
    160 5   mcblock:StainedGlassPane_Lime
    160 6   mcblock:StainedGlassPane_Pink
    160 7   mcblock:StainedGlassPane_Gray
    160 8   mcblock:StainedGlassPane_LightGray
    160 9   mcblock:StainedGlassPane_Cyan
    160 10  mcblock:StainedGlassPane_Purple
    160 11  mcblock:StainedGlassPane_Blue
    160 12  mcblock:StainedGlassPane_Brown
    160 13  mcblock:StainedGlassPane_Green
    160 14  mcblock:StainedGlassPane_Red
    160 15  mcblock:StainedGlassPane_Black
    161 mcblock:Leaves_Acacia
    161 1   mcblock:Leaves_DarkOak
    162 mcblock:Wood_AcaciaOak
    162 1   mcblock:Wood_DarkOak
    163 mcblock:WoodenStairs_Acacia
    164 mcblock:WoodenStairs_DarkOak
    165 mcblock:SlimeBlock
    166 mcblock:Barrier
    167 mcblock:IronTrapdoor
    168 mcblock:Prismarine
    168 1   mcblock:PrismarineBricks
    168 2   mcblock:DarkPrismarine
    169 mcblock:SeaLantern
    170 mcblock:HayBale
    171 mcblock:Carpet_White
    171 1   mcblock:Carpet_Orange
    171 2   mcblock:Carpet_Magenta
    171 3   mcblock:Carpet_LightBlue
    171 4   mcblock:Carpet_Yellow
    171 5   mcblock:Carpet_Lime
    171 6   mcblock:Carpet_Pink
    171 7   mcblock:Carpet_Grey
    171 8   mcblock:Carpet_LightGray
    171 9   mcblock:Carpet_Cyan
    171 10  mcblock:Carpet_Purple
    171 11  mcblock:Carpet_Blue
    171 12  mcblock:Carpet_Brown
    171 13  mcblock:Carpet_Green
    171 14  mcblock:Carpet_Red
    171 15  mcblock:Carpet_Black
    172 mcblock:HardenedClay
    173 mcblock:BlockofCoal
    174 mcblock:PackedIce
    175 mcblock:Sunflower
    175 1   mcblock:Lilac
    175 2   mcblock:DoubleTallgrass
    175 3   mcblock:LargeFern
    175 4   mcblock:RoseBush
    175 5   mcblock:Peony
    176 mcblock:StandingBanner_Block
    177 mcblock:WallBanner_Block
    178 mcblock:InvertedDaylightSensor
    179 mcblock:RedSandstone
    179 1   mcblock:RedSandstone_Chiseled
    179 2   mcblock:RedSandstone_Smooth
    180 mcblock:RedSandstoneStairs
    181 mcblock:RedSandstoneSlab_Double
    182 mcblock:RedSandstoneSlab
    183 mcblock:FenceGate_Spruce
    184 mcblock:FenceGate_Birch
    185 mcblock:FenceGate_Jungle
    186 mcblock:FenceGate_DarkOak
    187 mcblock:FenceGate_Acacia
    188 mcblock:Fence_Spruce
    189 mcblock:Fence_Birch
    190 mcblock:Fence_Jungle
    191 mcblock:Fence_DarkOak
    192 mcblock:Fence_Acacia
    193 mcblock:WoodenDoorBlock_Spruce
    194 mcblock:WoodenDoorBlock_Birch
    195 mcblock:WoodenDoorBlock_Jungle
    196 mcblock:WoodenDoorBlock_Acacia
    197 mcblock:WoodenDoorBlock_DarkOak
    256 mcblock:IronShovel
    257 mcblock:IronPickaxe
    258 mcblock:IronAxe
    259 mcblock:FlintandSteel
    260 mcblock:Apple
    261 mcblock:Bow
    262 mcblock:Arrow
    263 mcblock:Coal
    263 1   mcblock:Charcoal
    264 mcblock:DiamondGem
    265 mcblock:IronIngot
    266 mcblock:GoldIngot
    267 mcblock:IronSword
    268 mcblock:WoodenSword
    269 mcblock:WoodenShovel
    270 mcblock:WoodenPickaxe
    271 mcblock:WoodenAxe
    272 mcblock:StoneSword
    273 mcblock:StoneShovel
    274 mcblock:StonePickaxe
    275 mcblock:StoneAxe
    276 mcblock:DiamondSword
    277 mcblock:DiamondShovel
    278 mcblock:DiamondPickaxe
    279 mcblock:DiamondAxe
    280 mcblock:Stick
    281 mcblock:Bowl
    282 mcblock:MushroomStew
    283 mcblock:GoldSword
    284 mcblock:GoldShovel
    285 mcblock:GoldPickaxe
    286 mcblock:GoldAxe
    287 mcblock:String
    288 mcblock:Feather
    289 mcblock:Gunpowder
    290 mcblock:WoodenHoe
    291 mcblock:StoneHoe
    292 mcblock:IronHoe
    293 mcblock:DiamondHoe
    294 mcblock:GoldHoe
    295 mcblock:WheatSeeds
    296 mcblock:Wheat
    297 mcblock:Bread
    298 mcblock:LeatherHelmet
    299 mcblock:LeatherChestplate
    300 mcblock:LeatherLeggings
    301 mcblock:LeatherBoots
    302 mcblock:ChainmailHelmet
    303 mcblock:ChainmailChestplate
    304 mcblock:ChainmailLeggings
    305 mcblock:ChainmailBoots
    306 mcblock:IronHelmet
    307 mcblock:IronChestplate
    308 mcblock:IronLeggings
    309 mcblock:IronBoots
    310 mcblock:DiamondHelmet
    311 mcblock:DiamondChestplate
    312 mcblock:DiamondLeggings
    313 mcblock:DiamondBoots
    314 mcblock:GoldHelmet
    315 mcblock:GoldChestplate
    316 mcblock:GoldLeggings
    317 mcblock:GoldBoots
    318 mcblock:Flint
    319 mcblock:RawPorkchop
    320 mcblock:CookedPorkchop
    321 mcblock:Painting
    322 mcblock:GoldenApple
    322 1   mcblock:EnchantedGoldenApple
    323 mcblock:Sign
    324 mcblock:WoodenDoor
    325 mcblock:Bucket
    326 mcblock:Bucket_Water
    327 mcblock:Bucket_Lava
    328 mcblock:Minecart
    329 mcblock:Saddle
    330 mcblock:IronDoor
    331 mcblock:RedstoneDust
    332 mcblock:Snowball
    333 mcblock:Boat
    334 mcblock:Leather
    335 mcblock:Bucket_Milk
    336 mcblock:ClayBrick
    337 mcblock:Clay
    338 mcblock:SugarCane
    339 mcblock:Paper
    340 mcblock:Book
    341 mcblock:SlimeBall
    342 mcblock:Minecart_Storage
    343 mcblock:Minecart_Powered
    344 mcblock:Egg
    345 mcblock:Compass
    346 mcblock:FishingRod
    347 mcblock:Watch
    348 mcblock:GlowstoneDust
    349 mcblock:RawFish
    349 1   mcblock:RawSalmon
    349 2   mcblock:Clownfish
    349 3   mcblock:Pufferfish
    350 mcblock:CookedFish
    350 1   mcblock:CookedSalmon
    350 2   mcblock:Clownfish
    350 3   mcblock:Pufferfish
    351 mcblock:InkSack
    351 1   mcblock:RoseRedDye
    351 2   mcblock:CactusGreenDye
    351 3   mcblock:CocoaBean
    351 4   mcblock:LapisLazuli
    351 5   mcblock:PurpleDye
    351 6   mcblock:CyanDye
    351 7   mcblock:LightGrayDye
    351 8   mcblock:GrayDye
    351 9   mcblock:PinkDye
    351 10  mcblock:LimeDye
    351 11  mcblock:DandelionYellowDye
    351 12  mcblock:LightBlueDye
    351 13  mcblock:MagentaDye
    351 14  mcblock:OrangeDye
    351 15  mcblock:BoneMeal
    352 mcblock:Bone
    353 mcblock:Sugar
    354 mcblock:Cake
    355 mcblock:Bed
    356 mcblock:RedstoneRepeater
    357 mcblock:Cookie
    358 mcblock:Map
    359 mcblock:Shears
    360 mcblock:Melon_Slice
    361 mcblock:PumpkinSeeds
    362 mcblock:MelonSeeds
    363 mcblock:RawBeef
    364 mcblock:Steak
    365 mcblock:RawChicken
    366 mcblock:CookedChicken
    367 mcblock:RottenFlesh
    368 mcblock:EnderPearl
    369 mcblock:BlazeRod
    370 mcblock:GhastTear
    371 mcblock:GoldNugget
    372 mcblock:NetherWartSeeds
    373 mcblock:WaterBottle
    373 16  mcblock:AwkwardPotion
    373 32  mcblock:ThickPotion
    373 64  mcblock:MundanePotion
    373 8193    mcblock:RegenerationPotion_0
    373 8194    mcblock:SwiftnessPotion_3
    373 8195    mcblock:FireResistancePotion_3
    373 8196    mcblock:PoisonPotion_0
    373 8197    mcblock:HealingPotion
    373 8198    mcblock:NightVisionPotion_3
    373 8200    mcblock:WeaknessPotion_1
    373 8201    mcblock:StrengthPotion_3
    373 8202    mcblock:SlownessPotion_1
    373 8204    mcblock:HarmingPotion
    373 8205    mcblock:WaterBreathingPotion_3
    373 8206    mcblock:InvisibilityPotion_3
    373 8225    mcblock:RegenerationPotionII_0
    373 8226    mcblock:SwiftnessPotionII_1
    373 8228    mcblock:PoisonPotionII_0
    373 8229    mcblock:HealingPotionII
    373 8233    mcblock:StrengthPotionII_1
    373 8235    mcblock:LeapingPotionII_1
    373 8236    mcblock:HarmingPotionII
    373 8257    mcblock:RegenerationPotion_2
    373 8258    mcblock:SwiftnessPotion_8
    373 8259    mcblock:FireResistancePotion_8
    373 8260    mcblock:PoisonPotion_2
    373 8262    mcblock:NightVisionPotion_8
    373 8264    mcblock:WeaknessPotion_4
    373 8265    mcblock:StrengthPotion_8
    373 8266    mcblock:SlownessPotion_4
    373 8267    mcblock:LeapingPotion_3
    373 8269    mcblock:WaterBreathingPotion_8
    373 8270    mcblock:InvisibilityPotion_8
    373 8289    mcblock:RegenerationPotionII_1
    373 8290    mcblock:SwiftnessPotionII_4
    373 8292    mcblock:PoisonPotionII_1
    373 8297    mcblock:StrengthPotionII_4
    373 16385   mcblock:RegenerationSplash_0
    373 16386   mcblock:SwiftnessSplash_2
    373 16387   mcblock:FireResistanceSplash_2
    373 16388   mcblock:PoisonSplash_0
    373 16389   mcblock:HealingSplash
    373 16390   mcblock:NightVisionSplash_2
    373 16392   mcblock:WeaknessSplash_1
    373 16393   mcblock:StrengthSplash_2
    373 16394   mcblock:SlownessSplash_1
    373 16396   mcblock:HarmingSplash
    373 16397   mcblock:BreathingSplash_2
    373 16398   mcblock:InvisibilitySplash_2
    373 16417   mcblock:RegenerationSplashII_0
    373 16418   mcblock:SwiftnessSplashII_1
    373 16420   mcblock:PoisonSplashII_0
    373 16421   mcblock:HealingSplashII
    373 16425   mcblock:StrengthSplashII_1
    373 16427   mcblock:LeapingSplashII_1
    373 16428   mcblock:HarmingSplashII
    373 16449   mcblock:RegenerationSplash_1
    373 16450   mcblock:SwiftnessSplash_6
    373 16451   mcblock:FireResistanceSplash_6
    373 16452   mcblock:PoisonSplash_1
    373 16454   mcblock:NightVisionSplash_6
    373 16456   mcblock:WeaknessSplash_3
    373 16457   mcblock:StrengthSplash_6
    373 16458   mcblock:SlownessSplash_3
    373 16459   mcblock:LeapingSplash_2
    373 16461   mcblock:BreathingSplash_6
    373 16462   mcblock:InvisibilitySplash_6
    373 16481   mcblock:RegenerationSplashII_0
    373 16482   mcblock:SwiftnessSplashII_3
    373 16484   mcblock:PoisonSplashII_0
    373 16489   mcblock:StrengthSplashII_3
    374 mcblock:GlassBottle
    375 mcblock:SpiderEye
    376 mcblock:FermentedSpiderEye
    377 mcblock:BlazePowder
    378 mcblock:MagmaCream
    379 mcblock:BrewingStand
    380 mcblock:Cauldron
    381 mcblock:EyeofEnder
    382 mcblock:GlisteringMelon_Slice
    383 50  mcblock:SpawnEgg_Creeper
    383 51  mcblock:SpawnEgg_Skeleton
    383 52  mcblock:SpawnEgg_Spider
    383 54  mcblock:SpawnEgg_Zombie
    383 55  mcblock:SpawnEgg_Slime
    383 56  mcblock:SpawnEgg_Ghast
    383 57  mcblock:SpawnEgg_ZombiePigmen
    383 58  mcblock:SpawnEgg_Endermen
    383 59  mcblock:SpawnEgg_CaveSpider
    383 60  mcblock:SpawnEgg_Silverfish
    383 61  mcblock:SpawnEgg_Blaze
    383 62  mcblock:SpawnEgg_MagmaCube
    383 65  mcblock:SpawnEgg_Bat
    383 66  mcblock:SpawnEgg_Witch
    383 67  mcblock:SpawnEgg_Endermite
    383 68  mcblock:SpawnEgg_Guardian
    383 90  mcblock:SpawnEgg_Pig
    383 91  mcblock:SpawnEgg_Sheep
    383 92  mcblock:SpawnEgg_Cow
    383 93  mcblock:SpawnEgg_Chicken
    383 94  mcblock:SpawnEgg_Squid
    383 95  mcblock:SpawnEgg_Wolf
    383 96  mcblock:SpawnEgg_Mooshroom
    383 98  mcblock:SpawnEgg_Ocelot
    383 100 mcblock:SpawnEgg_Horse
    383 101 mcblock:SpawnEgg_Rabbit
    383 120 mcblock:SpawnEgg_Villager
    384 mcblock:BottleofEnchanting
    385 mcblock:FireCharge
    386 mcblock:BookandQuill
    387 mcblock:WrittenBook
    388 mcblock:Emerald
    389 mcblock:ItemFrame
    390 mcblock:FlowerPot
    391 mcblock:Carrot
    392 mcblock:Potato
    393 mcblock:BakedPotato
    394 mcblock:PoisonousPotato
    395 mcblock:EmptyMap
    396 mcblock:GoldenCarrot
    397 mcblock:Head_Skeleton
    397 1   mcblock:Head_Wither
    397 2   mcblock:Head_Zombie
    397 3   mcblock:Head_Steve
    397 4   mcblock:Head_Creeper
    398 mcblock:CarrotonaStick
    399 mcblock:NetherStar
    400 mcblock:PumpkinPie
    401 mcblock:FireworkRocket
    402 mcblock:FireworkStar
    403 mcblock:EnchantedBook
    404 mcblock:RedstoneComparator
    405 mcblock:NetherBrick_Item
    406 mcblock:NetherQuartz
    407 mcblock:Minecart_TNT
    408 mcblock:Minecart_Hopper
    409 mcblock:PrismarineShard
    410 mcblock:PrismarineCrystals
    411 mcblock:RawRabbit
    412 mcblock:CookedRabbit
    413 mcblock:RabbitStew
    414 mcblock:Rabbit'sFoot
    415 mcblock:RabbitHide
    416 mcblock:ArmorStand
    417 mcblock:IronHorseArmor
    418 mcblock:GoldHorseArmor
    419 mcblock:DiamondHorseArmor
    420 mcblock:Lead
    421 mcblock:NameTag
    422 mcblock:Minecart_CommandBlock
    423 mcblock:RawMutton
    424 mcblock:CookedMutton
    425 mcblock:Banner_Black
    425 1   mcblock:Banner_Red
    425 2   mcblock:Banner_Green
    425 3   mcblock:Banner_Brown
    425 4   mcblock:Banner_Blue
    425 5   mcblock:Banner_Purple
    425 6   mcblock:Banner_Cyan
    425 7   mcblock:Banner_LightGray
    425 8   mcblock:Banner_Gray
    425 9   mcblock:Banner_Pink
    425 10  mcblock:Banner_Lime
    425 11  mcblock:Banner_Yellow
    425 12  mcblock:Banner_LightBlue
    425 13  mcblock:Banner_Magenta
    425 14  mcblock:Banner_Orange
    425 15  mcblock:Banner_White
    427 mcblock:WoodenDoor_Spruce
    428 mcblock:WoodenDoor_Birch
    429 mcblock:WoodenDoor_Jungle
    430 mcblock:WoodenDoor_Acacia
    431 mcblock:WoodenDoor_DarkOak
    2256    mcblock:MusicDisk_13
    2257    mcblock:MusicDisk_Cat
    2258    mcblock:MusicDisk_Blocks
    2259    mcblock:MusicDisk_Chirp
    2260    mcblock:MusicDisk_Far
    2261    mcblock:MusicDisk_Mall
    2262    mcblock:MusicDisk_Mellohi
    2263    mcblock:MusicDisk_Stal
    2264    mcblock:MusicDisk_Strad
    2265    mcblock:MusicDisk_Ward
    2266    mcblock:MusicDisk_11
    2267    mcblock:MusicDisk_Wait
#endif
   

You'll also need to add the following to your world.mt file:
Your phone or window isn't wide enough to display the code box. If it's a phone, try rotating it to landscape mode.
Code: Select all
load_mod_mesecons = true
load_mod_mesecons_alias = true
load_mod_mesecons_blinkyplant = true
load_mod_mesecons_button = true
load_mod_mesecons_commandblock = true
load_mod_mesecons_delayer = true
load_mod_mesecons_detector = true
load_mod_mesecons_extrawires = true
load_mod_mesecons_gates = true
load_mod_mesecons_hydroturbine = true
load_mod_mesecons_insulated = true
load_mod_mesecons_lamp = true
load_mod_mesecons_lightstone = true
load_mod_mesecons_luacontroller = true
load_mod_mesecons_materials = true
load_mod_mesecons_microcontroller = true
load_mod_mesecons_movestones = true
load_mod_mesecons_mvps = true
load_mod_mesecons_noteblock = true
load_mod_mesecons_pistons = true
load_mod_mesecons_powerplant = true
load_mod_mesecons_pressureplates = true
load_mod_mesecons_random = true
load_mod_mesecons_receiver = true
load_mod_mesecons_solarpanel = true
load_mod_mesecons_switch = true
load_mod_mesecons_torch = true
load_mod_mesecons_walllever = true

Last edited by dgm5555 on Sat Feb 21, 2015 21:05, edited 1 time in total.
 

Next

Return to Minetest Features

Who is online

Users browsing this forum: No registered users and 4 guests

cron