BlueMap-Minecraft / BlueMap

A Minecraft mapping tool that creates 3D models of your Minecraft worlds and displays them in a web viewer.
https://bluecolo.red/bluemap
MIT License
1.9k stars 130 forks source link

Render sign text #146

Open ChloeDawn opened 3 years ago

ChloeDawn commented 3 years ago

Is your feature request related to a problem? Please describe. Signs are rendered on the map but are always blank

Describe the solution you'd like Either a baked sprite using Minecraft's font glyphs, or web font renderer that allows for displaying the text of the sign. The latter is probably easier (but harder to get the right font I believe?)

TBlueF commented 3 years ago

Adding text to signs is definitely planned, somewhere on the TODO. The problems with this are, that currently each map-tile is currently just saved as one big ThreeJS-BufferGeometry-json which means the textures have to be pre-defined and can not be pre-rendered and included in that file. Same with metadata like text, to be able to procedurally generate a text-texture. The first would work by just adding a font-atlas texture, but also for things like banner-patterns and custom player-head textures a way is needed anyways to store textures in those tiles. Additionally the chunk-loaders will need to be extended to be able to read tile-entity data :) So there is quite a lot of work to be done until this is possible but i am sure it will be eventually =)

DreiMu commented 3 years ago

I'll try to add thism but I have to completly change the data sent to the webapp by adding sending block for block with the nbt data which is then used to create the threejs objects on the clientside and proabily add per text a new object. Please let me know if there is a better way.

TBlueF commented 3 years ago

If i understood you correctly, what you are proposing is literally "changing everything". That's like making BlueMap from scratch :D

DreiMu commented 3 years ago

then I try to find another method (e.g just get the nbt afterwards or putting it in the files sent to the client but as own objects...) :D