MehVahdJukaar / mapatlases-neoforge

GNU General Public License v3.0
22 stars 5 forks source link

map table/wall - backup atlas maps + show maps at base. #37

Open tadhgmister opened 11 months ago

tadhgmister commented 11 months ago

I have an idea for a mapping mod and realised most of it overlaps with your design goals so I will put it here as a suggestion. I want to try to implement at least part of it and may submit a pull request at some point with some of the features.

Imagine we have a block that is crafted with a planks, an item frame, and an empty map. What you get is a "map table" that is a full block and can render a map on the top (maybe side) face. when you right click on it with a filled map it will copy that map onto the block and display it, when right clicking on a table displaying a map with an empty map in hand it will make a copy of the map from the empty one. This gives essentially the same functionality you could accomplish by putting maps in item frames, but greatly streamlines the process of making copies instead of removing them from the item frames and crafting with empty map then putting one back, this makes it a useful way to keep a backup of our charted maps at our base without nearly as much map handling as it does in vanilla.

Now if we consider an item that can store many maps (the atlas) we could have the map table function where right clicking on the map table/wall will find all connected maps on the whole surface and do a 2-way copy. Any maps that are in the atlas and can be put in empty slots on the table will be copied over and any filled maps on the table that are not in the atlas can be copied to the atlas (consuming the appropriate amount of empty maps from the atlas of course).

The code necessary to figure out how to merge the maps in the table with the atlas can likely be reused to directly put 2 atlasses in the cartography table and have them intelligently merge so a map table is not necessary to share map data between 2 players (or keep backup atlas at base)

The biggest issue (in terms of how to make intuitive behaviour) is when there are multiple maps that cover the same area but aren't the same. This would be most noticeable if you crafted a new atlas from the map of the current area, added empty maps to fill from the map table, but if you are close enough to the map boundary it will create a new map of the adjacent area which now conflicts with the already explored map saved to the map table. I'm not sure how to possibly solve this as I'd like for the map tables to not have any GUI if I can help it.

Another possible issue is using map tables to show maps of other dimensions, if you use an atlas on a table that has no maps already in it then it'd make sense to just set it to the current dimension. If you put one map from another dimension manually then used the atlas it would detect the dimension and fill in appropriately, but this isn't the most intuitive workflow, there may be a better one but I haven't thought of it yet.

tadhgmister commented 11 months ago

I don't think I posted this to the right place, is this just a port of https://github.com/Pepperoni-Jabroni/MapAtlases? I should probably post this to https://github.com/Pepperoni-Jabroni/MapAtlases/issues/44

MehVahdJukaar commented 11 months ago

No this is the right place. I've tweaked a lot the original fabric version that at this point it needs to be ported back to fabric (Wil be done in due time). Anyways as for the suggestion I'm not too keen on the main premise that it would just work like an item frame but without the map cost (doesn't seem good enough of a reason and also invalidates the frames). If it wasn't for that I would think that it's a nice feature and could even be an integration with supplementaries notice boards since those pretty much are the kind of block you describe being able to display maps. Anyways feel free to make a PR if you feel like it

tadhgmister commented 11 months ago

not sure what you mean by "work like an item frame but without the map cost", my point was you would craft the block with a map to have the map cost paid up front and then all operations just copy map data around instead of having to pop out a map, make a copy, then pop it back in.

The other part I really want is to be able to have a floor covered in maps in a method that doesn't wound my soul to replace if there is an accidental water leak, notice boards might address that part at least so will have to look into them, thanks for pointing me there as I haven't tried supplimentaries.

MehVahdJukaar commented 11 months ago

I see what you mean now I thought it would copy the maps for free