toolbox4minecraft / amidst

Advanced Minecraft Interface and Data/Structure Tracking
GNU General Public License v3.0
2.14k stars 239 forks source link

Add the ability to save profiles that contain waypoints #235

Open MattSturgeon opened 8 years ago

MattSturgeon commented 8 years ago

Add the ability to save/load/delete an AMIDST profile that contains useful information, such as:

How the profile was generated: the seed or level.dat used, along with the MC profile/version used. A name/description/icon for the profile would also be handy!

Bookmarked locations: Add the ability for the user to save important coords or structures, access them from a list and see them on the map.

This could be interpreted as a replacement for #119

MattSturgeon commented 8 years ago

UX wise, instead of launching straight into the profile selector, AMIDST would open a window that has options to choose from existing amidst-saves or create a new one.

The admist-saves list would be stored in a json array, where each entry is an individual save. Each save object has basic metadata such as a name, description, seed, mc-profile used, and (optionally) the path to the level.dat. In the future it could also store an array of bookmarks/waypoints, or a reference to a file containing them.

It may make sense to store the mc version instead of the profile

Choosing to creating a new save will launch the mc-profile selector as normal. In addition to asking for a profile and seed/.dat, we should also ask for the basic save metadata (name, description). If a .dat file is used, the seed should still be saved, just in case the .dat file is later missing.

stefandollase commented 8 years ago

There are several related issues: #4 #25 #112 #119 #133

You do have lots of good points:

However, to be able to store bookmarks, we need to think about where we want to save these kind of information. If we have a level.dat, we should be able to save the coordinate bookmarks directly into the saves/<myworld>/amidst/ directory. We already create this to backup player information. This have the advantage that coordinate bookmarks can be passed around with the save game. However, this directory is not available when no level.dat is used. Thus, we need to use another storage location, which makes it inconsistent.

The alternative is to storage these information in a directory next to the Amidst jar file. We already read/write various information from/to the directory that contains the Amidst jar file. However, this did never feel like a proper concept to me. Maybe, we should make it a proper concept, which also means we can generate/read a configuration file from this directory. In this case, we should also add a hint to our installation guide that the Amidst jar file should be placed in an empty directory.

While saving and loading such bookmarks would definitely add value to Amidst, a new GUI concept should also respect that one does not always want to work with bookmarks. Sometimes, it is just sufficient to display the map for a given seed.


While I would like to improve this, I think this is currently low priority: There are currently many other issues that affect the user much more (fixing bugs and supporting new Minecraft features) that need a lot of effort.

MattSturgeon commented 8 years ago

I think it makes sense to store the data in a config directory rather than the working directory or binary directory. There may be cases where the jar is in a location without write permission.

On Linux this would be ~/.config or %APPDATA% on windows. Using the .minecraft directory is probably the easiest way, though.

For storing the kind of information i was thinking of, a single json file will likely be enough, as I can't imagine a few waypoints per save being massively data intensive. I'd propose the initial implementation just use something as simple as .minecraft/amidst_saves.json