Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

request support for pocket and bedrock edition maps #921

Open
meoso opened this issue Apr 24, 2013 · 30 comments · May be fixed by #2044
Open

request support for pocket and bedrock edition maps #921

meoso opened this issue Apr 24, 2013 · 30 comments · May be fixed by #2044

Comments

@meoso
Copy link

meoso commented Apr 24, 2013

$ overviewer.py --rendermodes=smooth-lighting "world1" ./
2013-04-24 16:29:56 Welcome to Minecraft Overviewer!
2013-04-24 16:29:56 E An error has occurred. This may be a bug. Please let us know!
See http://docs.overviewer.org/en/latest/index.html#help

This is the error that occurred:
Traceback (most recent call last):
File "/usr/bin/overviewer.py", line 532, in
ret = main()
File "/usr/bin/overviewer.py", line 413, in main
w = world.World(render['world'])
File "/usr/lib/python2.7/dist-packages/overviewer_core/world.py", line 97, in init
data = nbt.load(os.path.join(self.worlddir, "level.dat"))[1]['Data']
File "/usr/lib/python2.7/dist-packages/overviewer_core/nbt.py", line 29, in wrapper
return func(fileobj, *args)
File "/usr/lib/python2.7/dist-packages/overviewer_core/nbt.py", line 37, in load
return NBTFileReader(fileobj).read_all()
File "/usr/lib/python2.7/dist-packages/overviewer_core/nbt.py", line 181, in read_all
tagtype = ord(self._file.read(1))
File "/usr/lib/python2.7/gzip.py", line 256, in read
self._read(readsize)
File "/usr/lib/python2.7/gzip.py", line 291, in _read
self._read_gzip_header()
File "/usr/lib/python2.7/gzip.py", line 185, in _read_gzip_header
raise IOError, 'Not a gzipped file'
IOError: Not a gzipped file

@CounterPillow
Copy link
Member

(This should be marked as Feature Request)

Things we'll need to investigate for this feature

  • How do Pocket Edition world files differ from normal ones?
  • How many new blocks would we need to support? Are there ID conflicts?
  • How many users actually want this feature, and how easy is it to use it (for example, how do you easily get a map off your mobile)
  • How can we support this without having it conflict with normal worlds? (Also see first bullet point)
  • How will we get the textures? Can we distribute them ourselves without licensing issues? Can we extract them?

This sounds like an interesting project, I'd love to work on it but I don't own a smartphone. If you can provide example worlds, I could look into it this summer.

@meoso
Copy link
Author

meoso commented May 30, 2013

Thank you. I find this an interesting project also -- my reason is my 4yr old daughter has spent quite some time making "houses" in minecraft pocket edition for iPad and i'd love to see them via overviewer.py

Here is a zip of her older data (ipad) with several small worlds: http://www.mediafire.com/?rcpn1zc7nz22jid

I can rsync her recent changes (probably new worlds) at any time and post them also. Thank you again.

2 years later, my girl is making fantastic creations -- would love to render

@doapp-ryanp
Copy link

+1 for this. My son and lots of kids in our neighborhood would freak out if I could render their maps for them.

@Stormwind99
Copy link

Me too - I'd like to map my Pocket Edition in addition to my PC Edition worlds.

@eminence
Copy link
Member

eminence commented May 3, 2016

I've marked this as a Feature Request. This would be really great to have, but I'm afraid we don't have the resources to investigate this.

If someone from the community wants to help, that would be great. To start with -- how do Pocket Edition maps differ from normal maps, and are there any other renderers out there that support MCPE?

@Stormwind99
Copy link

Stormwind99 commented May 3, 2016

Possible open source code that reads Pocket Edition world files:

  1. MCEdit-Unified (Python)
  2. MConverterUltimate (Java)
  3. MCPEedit (Java)
  4. LevelDB2Anvil (Java)

@Stormwind99
Copy link

Random thought: Since MC Windows 10 Edition = Pocket Edition, using Windows 10 Edition (if you develop on a PC) might be the easiest route for testing.

https://www.microsoft.com/en-us/store/apps/minecraft-windows-10-edition-beta/9nblggh2jhxj

@Stormwind99
Copy link

Stormwind99 commented May 3, 2016

Also found that MCPE world data is in the LevelDB-mcpe format.

From MCEdit-Unified readme https://github.com/Khroki/MCEdit-Unified :

INSTALLING leveldb_mcpe:

MCPE support requires a special library. MCEdit will run without it, but to have MCPE support you need to build it yourself. For mac and/or windows users: This requires a boost.python installation. Get boost: http://www.boost.org/ and make sure to build the python libs.

Next step is to get leveldb-mcpe from Mojang: https://github.com/Mojang/leveldb-mcpe

Build the thing using something like cmake, and copy the created leveldb-mcpe.lib to ./leveldb_mcpe

After those steps, you should be able to build the required .pyx: ' > cd ./leveldb_mcpe' python setup.py build Head into the build folder and look for the folder containing the .pyx. Copy it to ./leveldb_mcpe, and test: ' > python test.py'

If no errors occured, move the .pyx to ../pymclevel, and you should be good to go.

For linux users: Navigate to the leveldb_mcpe folder '> python setup.py build' '> python test.py' And you should be good to go.

@PeteBoyRocket
Copy link

I get this same error when trying to render a map downloaded from Minecraft Realms, is it the same issue as this?

@CounterPillow
Copy link
Member

If you're using the bedrock edition or whatever, then yes. If you're using the Java edition, then no.

@ginkeltjes
Copy link

Any news on when this will get implemented? Im running the Bedrock Dedicated server (Alpha) on Debian and playing on it with the Windows 10 version. Would love to get my map visible with Overviewer.

@clvrk
Copy link

clvrk commented Mar 6, 2019

Any news on when this will get implemented? Im running the Bedrock Dedicated server (Alpha) on Debian and playing on it with the Windows 10 version. Would love to get my map visible with Overviewer.

Me too!
The way I do it in the meantime is converting the map from Bedrock LevelDB to Java Anvil with a tool called "MCC Tool Chest PE" (not affiliated with it in any kind though), then flying around the world in creative mode on the Java Edition to places where I know that people have built there (otherwise Overviewer will render the chunks, but they are completely dark) to kind of "pre-cache" the chunks of the converted map. Then I let overviewer do it's job. It kind of works, but it's very time consuming and not very practical.

I would second adding Bedrock support for Overviewer, though I pretty much believe that this is a very hard and time consuming task to do.

@DIYglenn
Copy link

DIYglenn commented Jul 8, 2019

Bedrock dedicated server support would be awesome.
We’re switching our server to Bedrock to support iOS and Xbox (through a LAN-hack) so it’s easier to play Minecraft wherever you want.

I loved Overviewer for Java Edition!

@CounterPillow
Copy link
Member

Not to advertise but [proceeds to advertise]

@clvrk
Copy link

clvrk commented Jul 9, 2019

@CounterPillow Sorry, I'll remove my previous comment. I thought it might be useful but I don't want to get off-topic.

@CounterPillow CounterPillow changed the title request support for pocket edition maps request support for pocket and bedrock edition maps Nov 23, 2019
@ghost
Copy link

ghost commented Dec 28, 2019

I've heard that help is needed on this. Whom can I discuss this with?

@CounterPillow
Copy link
Member

With us right in here, ideally.

@ghost
Copy link

ghost commented Dec 28, 2019

Somehow has posted a task on a freelance website regarding this issue. I came from there. Are we on the same page? If yes, let's discuss it.

@CounterPillow
Copy link
Member

I don't know who posted that task, you should probably contact them through whatever freelance website that is though.

@ghost
Copy link

ghost commented Dec 28, 2019

And you should probably come to realize that if I posted my question here here and not at that freelance website, there must be a reason.

@agrif
Copy link
Member

agrif commented Dec 28, 2019

Well, we don't know who posted that task, but development here is usually coordinated in github issues.

@CounterPillow
Copy link
Member

I believe figuring out what your freelance task involves and helping you to achieve this is not the job of volunteer contributors who don't even know who posted it and what they wanted it to entail, so fuck right off with your attitude.

@barrett777
Copy link

barrett777 commented Dec 28, 2019

Sorry about the drama, I posted the freelance job. I haven't used python much so I'm looking for help, and this issue is pretty old and I want to add motivation. If anyone here would be interested to help, please do email me :) My email is my username at gmail.

Here's what I have so far:

Here's a simple python project that can access chunks and blocks in 'Bedrock'. I've tested it and it does work. It doesn't have functions for checking if a chunk/block exists, so I was having trouble finding the bounds of the map using it. I'm also not sure about chunk timestamps.
https://github.com/BluCodeGH/bedrock

Here's a C# project that can actually generate a map for a 'Bedrock' map: https://github.com/mjungnickel18/papyruscs

It's a lot simpler than Overviewer (which is why I'm here), but there's probably code there that can help see how they find map bounds and such, for example https://github.com/mjungnickel18/papyruscs/blob/master/Maploader/World/World.cs#L187-L199

As you probably know, the code that probably needs changing in Overviewer is the MCRFileReader here https://github.com/overviewer/Minecraft-Overviewer/blob/master/overviewer_core/nbt.py, and World and RegionSet (https://github.com/overviewer/Minecraft-Overviewer/blob/master/overviewer_core/world.py)

If someone can help me with the hard part of reading blocks from Bedrock and preferably generating some kind of map, I can probably do the rest, for example if blocks need some kind of mapping between Bedrock data and Anvil data, or documentation and compatibility with other command line options.

Here's a new world in Bedrock: https://drive.google.com/open?id=1HX-mFZFm1N0jKIQA3s8NMqbRa9kZe1yJ

@barrett777
Copy link

I'm working on this issue and am stuck with a rendering problem. If anyone can help please let me know here: #1707

@centuryx476
Copy link

centuryx476 commented May 1, 2020

Hows the progress of this feature request ?
I have a 10K and growing block bedrock server and would love to see it beautifully rendered.

@barrett777
Copy link

barrett777 commented May 1, 2020

Alas I've moved on at this point. Feel free to take my pull request though and finish coding it

@joshhunt
Copy link

@CounterPillow I'm thinking of possibly diving into this some time. What's the appetite to have this in Overviewer? Do you have any ideas for a general approach, or about what prerequestites Overviewer might need to enable work on this?

@barrett777
Copy link

@joshhunt I got started on this with this PR, feel free to take parts of it if you want: #1707

You can see more details in that PR. There are a couple libraries I bring in, and you can also use https://github.com/mjungnickel18/papyruscs as reference.

I don't think it should be too hard to do, but then again I wasn't able to do it :) If you can get this to a point where it actually outputs some kind of map, I can help further with that. I got stuck because I thought I was reading blocks correctly, but I couldn't get anything output other than a black screen.

@av-romann
Copy link

+1 for papyruscs as a render pipeline reference. I would also recommend referring to vellum, which can run schedule renders using papyruscs. most critically, vellum does the automatic hold of a world to avoid corruption during a render/backup cycle. It doesn't make sense to reinvent the wheel or be spawning bugs where fixes are already known.

I only just now realised after setting up an initial config that overviewer doesn't do bedrock (gzip error).

I'm happy to alpha/beta test on a functioning BDS world that's running vellum and papyruscs for comparative testing on windows.

@CounterPillow
Copy link
Member

@CounterPillow I'm thinking of possibly diving into this some time. What's the appetite to have this in Overviewer? Do you have any ideas for a general approach, or about what prerequestites Overviewer might need to enable work on this?

Needs a rewrite of our ID stuff first, dynamically assigning them instead of doing static assignments. Preferably we can also do block models at the same time, but that's strictly speaking not required.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet