Skip to content

[Savestates] Rewrite Savestate-Indexer#270

Merged
ScribbleTAS merged 19 commits intoMinecraftTAS:developfrom
ScribbleTAS:rewrite/savestate-indexer
Oct 17, 2025
Merged

[Savestates] Rewrite Savestate-Indexer#270
ScribbleTAS merged 19 commits intoMinecraftTAS:developfrom
ScribbleTAS:rewrite/savestate-indexer

Conversation

@ScribbleTAS
Copy link
Member

@ScribbleTAS ScribbleTAS commented Sep 30, 2025

Splits the indexing portion of the SavestateHandlerServer into it's own file.

The implementation is the same as LoTAS-Light with a few improvements.

All advantages of this system are outlined in my proposal to LoTAS,
which aims to unify all different indexing systems into one.

Differences to LoTAS-Light

  • /savestate with no savestates shows a help text on how to get started
  • Added a warning when the tickrate was set to 0 during a savestate, so people know that you have to unpause the game with F8
  • /folder savestates will try to open the current savestate folder for the world that the player is in: saves/savestates/<worldname>-Savestates/

API changes

Upgrading

To use old savestates from the previous format, simply move all savestates in their own folder:

savestates/
├── Worldname-Savestate1
├── Worldname-Savestate2
├── Worldname-Savestate3
└── Worldname-info.txt

should be moved to

savestates/
└── Worlname-Savestates
    ├── Worldname-Savestate1
    ├── Worldname-Savestate2
    ├── Worldname-Savestate3
    └── Worldname-info.txt

Then ingame, load the Worldname-world (or type /savestate reload) and all savestates are converted to the new format

Caution

When doing this, you can't downgrade the savestates to the old format

TODO

  • Readd trackerfile
  • Add no savestate message
  • Add tickrate 0 warning

Reimplements AbstractExtendStorage into SavestateStorageExtensions

- Add JsonUtils for quickly storing Objects to json
- Rename SavestateMotionStorage to ClientMotionStorage
- Hide saveXML & saveJson and exclusively use save/load as public functions
- Add comment to first line in json format
- [Config] Switch to json format
This indexer came originally from LoTAS-Light as a way to seperate the indexing portion from the technical side of savestating.
This reduces the complexity of the, at this point, massive SavestateHandlerServer.

This indexer also has the following advantages for the player:
- Able to store names of savestates
- New savestate folder structure, seperating the saves by worlds
- Able to save the date of creation
@ScribbleTAS ScribbleTAS added this to the Beta1.2 milestone Sep 30, 2025
@ScribbleTAS ScribbleTAS added the Savestates Issue is related to savestates label Sep 30, 2025
@ScribbleTAS ScribbleTAS self-assigned this Sep 30, 2025
@github-project-automation github-project-automation bot moved this to Todo in TASmod Sep 30, 2025
@ScribbleTAS ScribbleTAS moved this from Todo to In Progress in TASmod Sep 30, 2025
@ScribbleTAS ScribbleTAS modified the milestones: Beta1.2, Beta2.0 Sep 30, 2025
@ScribbleTAS ScribbleTAS force-pushed the rewrite/savestate-indexer branch from 5a104df to 90e7c43 Compare October 16, 2025 16:20
- Add command help if no savestates are available and running /savestate
- Change registering of keybinds
- Fix error some error messages
@ScribbleTAS ScribbleTAS marked this pull request as ready for review October 17, 2025 18:31
@ScribbleTAS ScribbleTAS merged commit 87016dd into MinecraftTAS:develop Oct 17, 2025
2 checks passed
@github-project-automation github-project-automation bot moved this from In Progress to Done in TASmod Oct 17, 2025
@ScribbleTAS ScribbleTAS deleted the rewrite/savestate-indexer branch October 17, 2025 21:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Savestates Issue is related to savestates

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

2 participants