PrismLauncher
PrismLauncher copied to clipboard
[Enhancement] Allow users to selectively allow instances in a group to share a single data directory.
Issue template stuff
- Role: I would like to selectively allow multiple Minecraft instances to share a single data directory.
- Suggestion: Allow users to selectively allow instances in a group to share a single data directory.
- Benefit: This is a major feature that is preventing me from moving away from the official Mojang launcher (and I don't want to use hacky workarounds like manually symlinking across instance directories).
This suggestion is unique.
- [X] I have searched the issue tracker and did not find an issue describing my suggestion, especially not one that has been rejected.
Terminology
First off, let's define some terminology so this doesn't get confusing.
-
Instance directory: The directory containing Prism instance definitions, such as
instance.cfg
andmmc-pack.json
. - Data directory: The working/root directory of the Minecraft client. Referred to by Mojang in the official Mojang Launcher as the "game directory" or sometimes as the "profile directory".
Description
The official Mojang launcher allows you to share a single full data directory across multiple Minecraft instances.
This is a feature that is sorely lacking from Prism and is pretty much the single remaining blocker that is preventing me (and many others that I know) from switching away from the Mojang launcher.
This would also bring Prism one step closer in reaching parity with the official Mojang launcher, as well as making migrating from the official Mojang launcher far easier.
That being said, this change would require quite a bit of refactoring (based on when I last took a cursory glance at the code of… PolyMC many months ago anyway), as Prism would need to start supporting the concept of having a data directory that is not inside the instance directory.
Proposed behaviour
I think the best way to achieve this from a UX standpoint would be to add a "Use a shared data directory" option when right-clicking on a group in Prism.
If disabled ❌: ${PRISM_ROOT_DIR}/instances/${INSTANCE_NAME}/.minecraft
is treated as the game's data directory.
If enabled ✅: ${PRISM_ROOT_DIR}/groups/${GROUP_NAME}/.minecraft
is treated as the game's data directory.
※ NOTE: This was previously filed by someone else as PolyMC/PolyMC#73, but PolyMC kind of imploded, so…
How would the launcher handle multiple different sets of mods in this case? Or would the instances just share their mods.. because the second option seems somewhat of a step backwards from the problem that prism and predecessors were trying to solve
The instances would share the full data directory, including the mods — same behaviour as the Mojang launcher.
I think it's good to have options — the default Prism behaviour (where each instance gets its own corresponding data directory) makes sense for when you need to keep things separate (especially good for modpacks and such, which I don't personally use). Just to clarify, I am not proposing that goes away or anything like that.
At that point.. what’s the benefit of having multiple instances? Just have a single instance and it will work pretty similarly Not angry, just genuinely curious as to what proposed benefits this method would have
Testing different mod loader versions, or sometimes even different mod loaders entirely (namely between Fabric and Forge, each of which ignores the others' mods, so it is useful for multiplatform client-side-only QoL/optimisation mods that share the same configs, etc.).
Building onto that, @Ringlings, things like worlds, texture packs, shaders, etc etc can also be shared by multiple instances which is highly convenient sometimes.
potential clone of https://github.com/PrismLauncher/PrismLauncher/issues/38
i think this would be a good idea if it shared resource packs and shader packs, etc, but once you share mods n' stuff there's, not really any point to having multiple instances. the entire point of instances is that they are separate (with the proposition of sharing resource folders) and sharing the mods folders and stuff would make different instances have no point.
I'd say there's still merit in just flat-out sharing the full data directory between instances for the reasons I stated above. (It's my current use case on the Mojang launcher, after all — a few other people over on the Quilt Discord also have the same use case as I do, as well.)
It's also far easier to achieve from an implementation standpoint, because selectively sharing only a few subdirectories from the data directory doesn't really seem possible to me without using symlinks, and that's pretty much not a tenable solution if you want to reasonably support Windows which doesn't have good symlink support.
(It'd also make it slightly more difficult to share a single Prism configuration between OSes due to aforementioned symlink deficiencies, which is another thing I currently do with my Mojang launcher configuration with a few simple scripts that use sed
to rewrite paths where needed.)
If selectively sharing subdirectories is somehow possible in a maintainable/cross-platform way and full data directory sharing is something that the Prism team absolutely does not want to implement, then perhaps at least consider allowing users to arbitrarily pick which directories/files to share between instances (example: config/
, options.txt
, optionsof.txt
, etc.).
I think I'm starting to understand what you mean. I think this would be better if it was a feature of instances to have the ability to hotswap modloaders, not to have instances have the same data directories. But that's just me throwing out a quickly made idea