webbukkit / DynmapBlockScan

Tool to scan post-1.8 MC blocks and JSON model data to automatically generate Dynmap models
63 stars 30 forks source link

Universal Renderer #40

Closed lhns closed 2 years ago

lhns commented 5 years ago

Hello! I recently experimented with dynmap for minecraft forge and wanted it to render the models of all installed mods. I hat limited success with DynmapBlockScan because many mods don't have resource files that can be used to extract their model and texture information. Because of this limitation I tried to extract the model information from the BakedModels directly.

It works pretty well allthough it has its own limitations. Below are two screenshots to better demonstrate the functionality. In these screenshots I generated all models (including all minecraft models) directly from their BakedModels. dynmap-renderer

The original world looked like this: dynmap-renderer-original

As you can see there are some problems rendering the top of grass, stairs and some other blocks that cannot be differentiated only by their metadata and that would need their own renderer. Maybe a feature where the full blockstate can be specified in the model files could overcome this. Also water seems to render invisible. But for the most part this renderer gets many models right. It exports all the possible blockstates for stairs for example but because they are all linked to the same metadata, dynmap only picks the last one. Also I don't know where these black spots are coming from. Maybe the renderer thinks that the block next to it is a full cube? I was suprised to see that even levers, pistons and other non-cube models render fine.

I just wanted to share my experiments with you all because this method could drastically improve mod compatibility.

Here is a screenshot showing a few blocks from chisel and a few others: image

Fureniku commented 5 years ago

I hope this gets merged in, Chisel not showing is the one thing that really annoys me with Dynmap. Does it by any chance show Dynamic Trees too?

Also, any chance of you sharing a build of this? Even if it's unsupported, I'd love to be able to use it while we wait for the merge :)

lhns commented 5 years ago

Yes I actually have a test buld right here: https://github.com/LolHens/DynmapBlockScan/releases/tag/universal-renderer-test3

This pr probably isn't in a state where it can just be merged since it is not integrated very well into the rest of the code. It really is more of a Proof of Concept showing an alternative way of extracting the models. But feel free to try out the build and experiment with the code!

Fureniku commented 5 years ago

Hmm, how exactly are you using this? I tried installing it to the server at first as you would with a normal blockscan jar, but it crashed due to clientside references. I then generated the files client-side and uploaded them to the server in dynmap/renderdata/modsupport, but they all get deleted when the mod is loaded. Do I need to place them somewhere else so they're not deleted?

lhns commented 5 years ago

I already provided further information in this issue: https://github.com/webbukkit/dynmap/issues/2534

Hope this helps!

mikeprimm commented 4 years ago

The client classes are not usable in forge headless servers, unless something radical has changed: have you tested this in pure servers, versus clients running local mode server?

lhns commented 4 years ago

Nope still the case. This only works on the client.

mikeprimm commented 4 years ago

OK - I'll give this a look, and might produce a build particular to client/standalone use, but it will not be able to be incorporated into the base plugin, as the dominant use of the plugin is on multiplayer servers. Other possibility is as a plugin to extract the model/texture definitions, which could then be manually dropped on the server :)

lhns commented 4 years ago

Okay that's fine. But isn't that also the purpose of this plugin?

mikeprimm commented 4 years ago

Nah - its meant to be just dropped on a server and used : no client side code involved.

71vl17 commented 3 years ago

Is it for 1.12.2 only?

mikeprimm-triva commented 3 years ago

There are builds up to 1.15.2 right now - http://dynmap.us/builds/DynmapBlockScan/ - haven't done formal release in a long while, and still need to do a 1.16.x version

KonohanaSakuya2680 commented 3 years ago

Is there a way to get it to work on the server? Even if I put the generated txt in the custom folder, it doesn't work. Also, The txt generated by this will not work at all.

I'm using Google Translate