KingContaria / seedqueue

Minecraft mod that generates multiple worlds concurrently and lets players reset them on an ingame wall screen.
MIT License
30 stars 17 forks source link

Add "village wall" functionality #53

Closed Avzes1 closed 2 weeks ago

Avzes1 commented 1 month ago

example of this in action: https://youtu.be/6LKsm9Z0gTU

allows you to spot village pauses after they've happened by freezing the chunkmap after a certain time

Any help is appreciated!! I don't know much about the seedqueue code base but I got this to work. But there of course needs to a setting to activate this mode and you also need to be able to configure after how long time the chunkmap should freeze

KingContaria commented 1 month ago

The idea of freezing the worldgentracker instead of freezing the image of the chunkmap is very clever!

The current implementation has some issues:

However, the freezing logic could potentially just be fully moved into the WorldGenerationProgressTracker itself. The starttime could just be the time at instance creation, avoiding any inaccuracy caused by doing it from another thread. Everytime WorldGenerationProgressTracker#setChunkStatus is called, it could do a check against that time to see if should freeze. And instead of actually freezing the tracker, it could store its state when frozen. This could for example be done by storing another instance of WorldGenerationProgressTracker in the original tracker, which is stopped after the freezing time.

This would require a mixin somewhere into the rendering of loading squares, however that would even allow for things like only showing the frozen tracker when in the main grid and instead rendering the normal one after locking.

Thank you for the PR, let me know if you are interested in trying to implement my proposed changes and if you need any help don't hesitate to ask in the #dev-discussion channel in the discord! :)

DuncanRuns commented 4 weeks ago

👮‍♂️👮‍♂️👮‍♂️

Be careful with this implementation; make sure this stays timing based as to replicate what could be done with OBS freeze filtering. Freezing depending on how many chunks load could be considered as the wall knowing "too much" information and can border on breaching the randomness of RSG.

KingContaria commented 2 weeks ago

Thank you for your initial idea it was super helpful in getting this to work in the first place! :) Im going to close this pr now that Duncans is approved