overviewer / Minecraft-Overviewer

Render high-resolution maps of a Minecraft world with a Leaflet powered interface
https://overviewer.org/
GNU General Public License v3.0
3.35k stars 481 forks source link

1.16 blocks not rendering. (e.g. Warped Nylium) #1772

Open tonymccallie opened 4 years ago

tonymccallie commented 4 years ago

I'm running iRath86's fork that hasn't been merged in yet #1759 because my server is running on snapshot 20w19a. He fixed the issue I was having with chunks not rendering, but I'm still not seeing the new 1.16 blocks like Warped Nylium. Is there a way I can add a resource pack for that?

Thanks for all you do.

(example given.. the black area should be a mix of warped nylium and crimson nylium) Screen Shot 2020-05-07 at 2 53 59 PM

crlang44 commented 4 years ago

How does your nether look?

Idk if it's just mine that's super messed up but check this out: image

iRath96 commented 4 years ago

As of writing this, there is currently no PR that introduces these blocks. However, if you really want 1.16 support, you've got some other alternatives in the meanwhile. There are two extensions to Minecraft-Overviewer (that I am aware of) which allow it to render block models and thereby support new blocks automatically.

For comparison: Original Minecraft-Overviewer (master)

Bildschirmfoto 2020-05-12 um 10 10 52

@DragonDev1906's modernGL fork

Bildschirmfoto 2020-05-12 um 17 33 14

See https://github.com/DragonDev1906/Minecraft-Overviewer/tree/modernGLRender. Has an extra dependency on modernGL which might take some effort to get running depending on your setup. It is quite efficient and the results look very good. Note, however, that some blocks are not yet supported (namely multipart blocks like fences and walls). (Also note that you will have to merge #1759 to support 1.16)

@irath96's fork (disclaimer: that's me!)

Bildschirmfoto 2020-05-13 um 21 07 22

See https://github.com/irath96/Minecraft-Overviewer/tree/block-model. Has no extra dependencies, but takes about 10–20 seconds longer than @DragonDev1906's version to generate textures. Also supports warped/crimson signs and has support for multipart blocks (fences, walls, etc). (Already has #1759 merged)

tonymccallie commented 4 years ago

I'm already on your branch (thanks EVER so much!). What's the update path? I did a git pull and ran python3 setup.py build but it didn't seem to fix anything? Do I need to remove the previous build?

iRath96 commented 4 years ago

@tonymccallie Right now it only looks for block models when a .jar file is provided in the texturepath configuration option. Did you set this option? If yes, what version did you specify?

tonymccallie commented 4 years ago

I did not set that option at all. My config file is pretty simple:


worlds["shire"] = "/Users/redacted/Library/Application Support/minecraft/saves/world"

renders["shireoverworld"] = {
    "world": "shire",
    "title": "ShireCraft",
    "rendermode": lighting,
    "dimension": "overworld",
}

outputdir = "/Users/redacted/Desktop/mc/mcmap"```
iRath96 commented 4 years ago

@tonymccallie Since you seem to be using macOS as well, this should be the correct path for you (add this line to your config file):

texturepath = "/Users/{your username here}/Library/Application Support/minecraft/versions/20w19a/20w19a.jar"

(or use any other 1.13+ Minecraft version you want)

tonymccallie commented 4 years ago

Thanks, I'm running with --forcerender now. I'll let you know when it's done in an hour or two.

iRath96 commented 4 years ago

@tonymccallie Okay, thanks 👍 By the way, you can already tell from the output at the very beginning whether things are likely going to work. It should look something like this:

…
2020-05-12 19:14:42  Generating textures...
2020-05-12 19:14:50  Rendered 1540 blocks from block models
2020-05-12 19:15:05  Preprocessing...
…

If you see that "rendered … blocks from block models" line, things are probably going to work fine.

tonymccallie commented 4 years ago

well.. dang..

2020-05-12 11:11:40  Welcome to Minecraft Overviewer!
2020-05-12 11:11:40  Forcerender mode activated. ALL tiles will be rendered.
2020-05-12 11:11:41  Generating textures...
2020-05-12 11:11:53  Preprocessing...
2020-05-12 11:12:36  Rendering 86689 total tiles.
iRath96 commented 4 years ago

@tonymccallie Are you on the correct branch? Please make sure you are on the block-model branch.

tonymccallie commented 4 years ago

ah, that was it.. building again now. Thanks for you help.

2020-05-12 11:39:07  Welcome to Minecraft Overviewer!
2020-05-12 11:39:07  Forcerender mode activated. ALL tiles will be rendered.
2020-05-12 11:39:07  Generating textures...
2020-05-12 11:39:14  Rendered 1540 blocks from block models
tonymccallie commented 4 years ago

uh-oh.. getting new errors


2020-05-12 11:39:59  Rendering 86689 total tiles.
ERROR:root:Could not render chunk 17,-19 for some reason. This is likely a render primitive option error.                                 ] 0 0.00t/s eta ------
ERROR:root:Full error was:
Traceback (most recent call last):
  File "/Users/{redacted}/Desktop/MC/dev/Minecraft-Overviewer/overviewer_core/tileset.py", line 1091, in _render_rendertile
    c_overviewer.render_loop(
RuntimeError: you must call Textures.generate()```
iRath96 commented 4 years ago

@tonymccallie Have you run python setup.py build on the new branch already?

tonymccallie commented 4 years ago

python3, yes

tonymccallie commented 4 years ago

no errors there

tonymccallie commented 4 years ago

ok, so I re-cloned and pulled that branch from your fork. Rebuilt. Same errors.

crlang44 commented 4 years ago

I also tried and am getting the same RuntimeError Btw thank you! :D

iRath96 commented 4 years ago

@tonymccallie @crlang44 Thanks for your feedback -- it seems like this is due to Minecraft-Overviewer's weird multi-threading system (blocks are rendered once on the mainthread and then again on each worker thread). I've just pushed a commit that should work around this, please let me know whether you're still getting the RuntimeError.

tonymccallie commented 4 years ago
2020-05-12 12:21:46  Welcome to Minecraft Overviewer!
2020-05-12 12:21:46  Forcerender mode activated. ALL tiles will be rendered.
2020-05-12 12:21:46  Generating textures...
2020-05-12 12:21:53  Rendered 1540 blocks from block models
2020-05-12 12:22:05  Preprocessing...
2020-05-12 12:22:53  Rendering 86689 total tiles.
  0% [                                                        ] 210 4.39t/s eta 05h 28m 02s

Looks promising! Didn't get this far before error last time.

Thanks so much for working on this!

crlang44 commented 4 years ago

Seems like it can work well with the new blocks. However I'm still having issues with the nether render. Looks like glowstone and some other blocks cause these column artifacts.

image

This is a more zoomed out image: image

Anybody else have an issue with nether renders?

tonymccallie commented 4 years ago

@iRath96 Mine finally finished running. Unfortunately, it still didn't get the warped nylium or other new blocks.. the only new one I see is the twisting vines and the shroom lights. Strange that it would only pick up on some of the new ones?

@crlang44 I haven't tried the nether yet.

Screen Shot 2020-05-12 at 2 58 30 PM

iRath96 commented 4 years ago

@tonymccallie Thanks for letting me know. Can you give me some more background on your setup? In particular, which python version and OS version are you using? What version of Minecraft are you using for texturepath? What version of Minecraft is your world? Are you using any resource packs?

tonymccallie commented 4 years ago

@iRath96 sure thing! macOS 10.15.4

$ python3 -V
Python 3.8.2

my config

worlds["shire"] = "/Users/{redacted}/Library/Application Support/minecraft/saves/world"

renders["shireoverworld"] = {
    "world": "shire",
    "title": "ShireCraft",
    "rendermode": lighting,
    "dimension": "overworld",
}
outputdir = "/Users/{redacted}/Desktop/mc/mcmap"
texturepath = "/Users/{redacted}/Library/Application Support/minecraft/versions/20w19a/20w19a.jar"

My world is running 20w19a on a server. I'm downloading the world directory into my local folder to process it (and for backup)

My local client uses resource packs, but I didn't think Overviewer picked up on those unless specified?

iRath96 commented 4 years ago

@tonymccallie It's hard to say what's going on here. I am running the same Python version, same OS, but all blocks render correctly for me. Could you give my test map a try (https://downloads.sind.besonders.cool/testblocks.zip) and see if all blocks render correctly there? (use the same configuration you're already using) If they do not render correctly, could you try without the "rendermode": lighting line?

iRath96 commented 4 years ago

@crlang44 I've added minecraft:nether_gold_ore and minecraft:ancient_debris to the list of skipped blocks in the nether renderer now, which reduces these columns by quite a bit. This means you will have to re-run python setup.py build.

Before:

Bildschirmfoto 2020-05-13 um 00 06 53

After:

Bildschirmfoto 2020-05-13 um 00 09 33

Notice, however, that we cannot get rid of all obstructions. Since the nether has caves now, the nether renderer cannot always determine what the correct ground level should be. This would require a rewrite of the nether renderer.

tonymccallie commented 4 years ago

With "rendermode": lighting Screen Shot 2020-05-12 at 4 11 29 PM

Without: Screen Shot 2020-05-12 at 4 14 13 PM

iRath96 commented 4 years ago

Nevermind, actually it seems to be a problem with the lighting model. I'll take a look at this tomorrow.

tonymccallie commented 4 years ago

spawn.zip Actually.. 0,-1 had more of those blocks in it, so I'm uploading that one.

iRath96 commented 4 years ago

Was simpler than I though. Just pushed a fix.

Bildschirmfoto 2020-05-13 um 00 40 12

(Nice map by the way 👍 )

tonymccallie commented 4 years ago

I just ran the testblocks with lighting and it looked great!

Running my full map.

It will be here when it's complete in about 1.5-2 hours. ShireCraft Map

Thanks so much for all your help!

Fiuse commented 4 years ago

Been trying for the last few hours to compile iRath96's code for windows but keep running into issues. If anyone has the version precompiled and could send it to me that would be fantastic!

kiel814 commented 4 years ago

Newbie question: The main download page of overviewer includes the overviewer.exe file. But iRath96's branch is only code. How do I use it? I'm running Win10. I googled it and I get to a lot of pages saying that I should install a buch of things. What is the correct way?

kiel814 commented 4 years ago

Update: I installed python 3.8.3 and just tried using "python overviewer.py" instead of "overviewer.exe" and I got the following:

C:\Users\Ezequiel\Documents\Minecraft\Minecraft-Overviewer-block-model>python overviewer.py --config=cfg_test.txt You need to compile the c_overviewer module to run Minecraft Overviewer. Run 'python setup.py build', or see the README for details.

C:\Users\Ezequiel\Documents\Minecraft\Minecraft-Overviewer-block-model>python setup.py build Traceback (most recent call last): File "setup.py", line 28, in <module> import numpy ModuleNotFoundError: No module named 'numpy'

CounterPillow commented 4 years ago

@kiel814 building the overviewer from source is documented here http://docs.overviewer.org/en/latest/building/#windows-build-instructions

kiel814 commented 4 years ago

I got stuck at the prerequisites, where it says: The extensions can be installed via: c:\python37\python.exe -m pip -U numpy pillow

I get the following error: C:\Python38-32>python.exe -m pip -U numpy pillow Usage: C:\Python38-32\python.exe -m pip <command> [options] no such option: -U

I tried to move on without that but when I use the developer command prompt: C:\....\Minecraft-Overviewer-block-model>python setup.py build Traceback (most recent call last): File "setup.py", line 28, in <module> import numpy ModuleNotFoundError: No module named 'numpy'

There is a second set of instructions but those require me to go to another page and following other previous instructions and install more stuff.

I really appreciate people working on this tool so other people like me can use it. But I wish you would just include the executable in the download as is the case with the main branch.

DragonDev1906 commented 4 years ago

I haven't tried it, but python.exe -m pip install numpy pillow should work.

kiel814 commented 4 years ago

Thanks... I got a few steps ahead. I was able to install numpy through: C:\Python38-32>python.exe -m pip install numpy pillow

Then, from the Developer Command Prompt for VS 2019, I was able to compile the code, after copying an additional library that was not mentioned in the steps (ImagingUtils.h from the pillow sources). Here are the last lines of the compilation result: LINK : warning LNK4044: unrecognized option '/DWINVER=0x060'; ignored LINK : warning LNK4044: unrecognized option '/D_WIN32_WINNT=0x060'; ignored Creating library build\temp.win32-3.8\Release\overviewer_core/src\c_overviewer.cp38-win32.lib and object build\temp.win32-3.8\Release\overviewer_core/src\c_overviewer.cp38-win32.exp Generating code Finished generating code running build_scripts creating build\scripts-3.8 copying and adjusting overviewer.py -> build\scripts-3.8 Build Complete

According to the instructions, there should be a file named "c_overviewer.pyd" in the current working directory. But there is not. There are only 2 identical pyd files and they are located in: overviewer_core\c_overviewer.cp38-win32.pyd build\lib.win32-3.8\overviewer_core\c_overviewer.cp38-win32.pyd

So what now? How do I use them. I did a quick google search, and PYD files are not executables, they are like DLLs.

Any help? Thanks!

kiel814 commented 4 years ago

Qa'pla! ... I mean... I figured it out! I had to download Python 3.7 instead of 3.8. I also downloaded version x86 of both Python and Overviewer. After compiling, I took the file from: overviewer_core\c_overviewer.cp38-win32.pyd And replaced the file with the same name in the _overviewercore folder within the downloaded version of overviewer. Whew! Thanks for all the help.