PrismLauncher icon indicating copy to clipboard operation
PrismLauncher copied to clipboard

[Enhancement] Allow users to selectively allow instances in a group to share a single data directory.

Open akemin-dayo opened this issue 2 years ago • 9 comments

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 and mmc-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…

akemin-dayo avatar Nov 08 '22 11:11 akemin-dayo

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

OvercastWarmth avatar Nov 08 '22 11:11 OvercastWarmth

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.

akemin-dayo avatar Nov 08 '22 11:11 akemin-dayo

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

OvercastWarmth avatar Nov 08 '22 12:11 OvercastWarmth

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.).

akemin-dayo avatar Nov 08 '22 12:11 akemin-dayo

Building onto that, @Ringlings, things like worlds, texture packs, shaders, etc etc can also be shared by multiple instances which is highly convenient sometimes.

ghost avatar Nov 08 '22 18:11 ghost

potential clone of https://github.com/PrismLauncher/PrismLauncher/issues/38

Inconn avatar Nov 09 '22 05:11 Inconn

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.

Inconn avatar Nov 09 '22 05:11 Inconn

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.).

akemin-dayo avatar Nov 09 '22 06:11 akemin-dayo

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

Inconn avatar Nov 10 '22 10:11 Inconn