SettleScape / server

The configuration for SettleScape™, a high-quality, community-minded Minecraft server.
https://SettleScape.org
Other
5 stars 2 forks source link

Make Dynmap only show chunks that are in the Jobs exploration database #124

Open MilesBHuff opened 2 years ago

MilesBHuff commented 2 years ago

The Jobs plugin has a database of chunks that players have visited. It uses this to figure out how much to pay Explorers. Each chunk has to be visited 4 times before it ceases to pay new Explorers.

Dynmap generates every existing chunk, no matter whether it has actually been visited. This means a couple things: (1) pre-generating the world would remove the fog of war, and (2) exploring new chunks takes longer than it otherwise might (as they must be generated). This situation has been fine thus far; however: since 1.18 is changing the world generation quite significantly (and removing LARGE_BIOMES support), we will need to enact our world-change contingency plan: pre-generate up to the current world border (#179), and then either expand the world border (accepting an abrupt change in world generation at that point) or add support for secondary worlds (#183). Pre-generating the map will ruin the fog of war that has for so long given our players a sense of wonder and accomplishment.

In order to maintain the fog of war in 1.18 and above without spaghettifying the terrain generation, we will have to create a plugin that mixes Dynmap chunks with the background color according to the Jobs exploration database. Specifically: 100% mixed if not explored, 75% mixed if one explorer, 50% mixed if two explorers, 25% mixed if three explorers, and 0% mixed if fully explored.

MilesBHuff commented 2 years ago

If implemented, this solution would actually mask (but not fix) a long-standing bug in Dynmap: https://github.com/webbukkit/dynmap/issues/3021.

MilesBHuff commented 1 month ago

This should more-or-less mask #196; the only ways in which it wouldn't, are for those chunks traversed by players before a world border was set.