Quick-Start Guide
This is a brief guide to getting an EnderChest set up and linking. It covers the most important command-line operations and how to make best use of shulker boxes.
Locating Your Minecraft Instances
Before setting up an EnderChest, it's a good idea to take a minute and figure out where all of your Minecraft data is actually stored. This will vary based on your operating system and the launchers you use. This document, for example, tells you how to find the official launcher data. MultiMC-derived programs like PrismLauncher will often have a "Folder" button that will take you to the location of each instance, which is especially helpful for the Flatpak distribution.
Selecting a "Minecraft Root"
Once you have the lay of the land, the next thing you'll want to do is decide
where you want your EnderChest folder to live. This could be your home folder
(~
or C:\Users\yourusername\
, in the folder containing your MultiMC
instances
directory, or anywhere that's convenient for you.
Go to that directory in your terminal.
Tip
You can run any EnderChest command from any location by explicitly specifying the Minecraft root, e.g.
Tip
You can also specify your Minecraft root by using an enviroment variable.
Creating an EnderChest
When ready, run the command:
to begin the guided setup process. This process will ask you about directories
to look for Minecraft installations inside. Note that these will be the
folders containing .minecraft
, not the .minecraft
folders themselves.
You'll also be prompted for the address of another EnderChest installation you want to sync with. For now, I'll assume that this is your first EnderChest, so leave that answer blank. When you're ready to create another EnderChest on another machine, the Managing Remotes section will have you covered.
Once the installer finishes, you'll end up with a new folder inside your
current directory (or Minecraft root) named EnderChest along with a file inside
that folder named enderchest.cfg
. Feel free to open up that file in your
favorite text editor and take a look. It's designed to be easily edited to make
it easy to, for example, manually add a tag to an instance.
Info
When a given entry can have multiple values, you can separate those values by commas, e.g.
or by putting each entry on its own (indented) line, e.g.PSA for Flatpak users
If you're using a launcher installed via Flatpak, make sure to give it permission to read from and write to your EnderChest folder, if not your entire Minecraft root. Use of Flatseal is highly recommended.
Registering Additional Instances
Once you have an EnderChest installed, you can register additional instances
at any time by using the gather
action. Running:
will recursively search the provided directory for folders named .minecraft
and attempt to register them.
Tip
You can control how much information gets displayed when running EnderChest
commands by using the --verbose
(-v
) and --quiet
(-q
) flags.
Creating Shulker Boxes
Once you've populated your EnderChest configuration with all the Minecraft instances you want to manage, it's time to start crafting shulker boxes.
Running:
will take you through a guided setup that will let to control how your shulker
box will know which instances will link to it along with what other remote
EnderChest installations will use it. At the conclusion of the process you'll
end up with a folder within your EnderChest that's pre-populated so as to
mirror what you'd see in a .minecraft
folder.
Moving Files into Your Shulker Box
If you have existing Minecraft installations, now is the time to start moving
the assets from those instances into your shulker box. Just put them in the
exact same place inside the shulker box that they'd be inside of .minecraft
(so resource packs go in resourcepacks
, worlds go in saves
, etc.)
Linking Entire Folders
During the shulker box creation process, you were prompted to select any folders that you wanted to symlink whole-hog. This is useful for things like screenshots or logs where files will be generated by the instance and not just accessed or updated.
Important!
By default, for the purposes of linking EnderChest treats any folder
that's not at the top level (e.g. saves/my world
) as a file that's
symlinked in its entirety. You can change this behavior by setting the
max-link-depth
parameter in the shulker box config, but doing so should
be considered highly experimental.
Linking Your Instances
Once everything is set up, to actually link up all of your instances, you just need to run:
Important!!
Starting with Minecraft 1.20, Mojang by default no longer allows worlds to load if they are or if they contain symbolic links. Obviously this will be a problem if you're using EnderChest to centralize and organize your world saves.
By default, EnderChest will offer to create an allowed_symlinks.txt
folder
inside any 1.20+ instance that doesn't have one already and update the file to
blanket-allow symbolic links into your EnderChest.
If you would prefer to do this by hand or not at all, you can edit your
enderchest.cfg
and change the value for offer-to-update-symlink-allowlist
to False
.
EnderChest will never create any file or symlink without your consent and will
never place a symlink pointing directly to a place outside of your EnderChest.
If you would like to get a full report of all symlinks EnderChest places, you can run:
to get a full audit.As EnderChest places all your links, it will stop if at any point there's already a file or a non-empty folder at that location. Sometimes that happens because you forgot to clean out an existing instance. Other times, your shulker box configurations might be conflicting with each other. Regardless, rather than just overwriting your data, EnderChest will ask you how you want to proceed. And once you've fixed the issue, you can just run
again--running place
multiple times is completely safe (and is something you
should do regularly! and particularly after any shulker box modification or file
sync!).
Managing Remotes
Once you've finished setting up an EnderChest on a given computer, the next
thing to consider is setting it up on another one. To do that, you'll need
to set up some form of file transfer. EnderChest's preferred transfer protocol
is rsync
, an extremely efficient
open source tool for performing backups and generally moving files between
two locations. Most Linux distributions (including SteamOS) come with a
sufficiently recent version of rsync
preinstalled (EnderChest requires rsync
3.2 or newer),
and Mac users can upgrade their rsync
easily via
homebrew,
MacPorts or
conda.
Windows users may be able to get EnderChest working with rsync
via Cygwin or
WSL, but
this is not currently supported,
and Windows users may be better off using
a different protocol.
To register a remote with your EnderChest, you just need to run the following command:
where <remote>
is the URI to the remote chest.
Understanding URIs
A Uniform Resource Identifier, or URI, is a way of referencing files or folders--oftentimes on other computers-- in a standard way. URLs, like you're familiar with from web browsers, are a type of URI. The format of a URI typically follows the following schema:
The important bits right now are:
- the protocol must be one that's supported by both EnderChest and by your machine
- the host can be the local IP of your remote machine, but most home routers support
connecting to machines via their hostname. This is much better for users whose
routers don't assign machines statis IP addresses.
- the path must be URL encoded to transform special
characters (especially spaces) into a single unambiguous string
- the path must be absolute, (and in the URI syntax must start with a /
),
starting from the computer or service's root directory (hence the /
for
macOS and Linux users)
- the path does not point to an EnderChest, but to the folder containing the
EnderChest.
As an example, let's say I have an EnderChest installed on my Steam Deck
(hostname: "steamdeck") directly inside my home directory (so ~/EnderChest
).
If I'm setting up an EnderChest on my couch gaming laptop and want to sync
with my Deck, the URI for it will be: rsync://deck@steamdeck/home/deck
Tip
You can use this website to encode any file name or POSIX path as a URI. You can also get the URI to your current directory in Python by running the following code:
While that will give you thefile://
protocol,
URI you can then just replace the file://
part (make sure not to grab
the third slash!) and replace it with the protocol://[user@]hostname[:port]
of your choice.
Syncing
Once you have some remote EnderChests set up, the way you sync with them is via
the close
and open
actions:
will push your local changes to all registered remote chests
will pull changes from your other EnderChests while
Info
Where you have multiple remotes specified, enderchest open
will only
pull changes from one, prioritizing them in the order that they're listed,
and stopping once it manages to sync successfully.
In contrast, enderchest close
will push changes to all registered
remotes.
This is useful for when you have EnderChests running on laptops or handhelds that are not always on, or not always on the same network as the other devices, but it means you need to be careful that the first remote listed in your config is the one most likely to be up-to-date.
Sync operations are destructive and won't hesitate to wipe out all the files
in an EnderChest if you have your remote mis-configured. That's why all sync
operations support the --dry-run
flag, which lets you preview the operations
that will be performed before they're actually run.
In fact, by default, all sync operations will perform a dry run first and give you five seconds to review the dry run log and interrupt the sync if things are about to go sideways (documentation for overriding this behavior is available in the CLI docs).
Bonus
Starting with v0.1.3, after a successful enderchest open
, EnderChest will
automatically update all of your instances' symlinks, saving you from needing
to remember to run:
(this behavior can be disabled by editing the place-after-open
setting in
your enderchest.cfg
file).
Uninstalling
Info
Even if you uninstall the EnderChest package, the symbolic links it created will continue working until you replace them or move your EnderChest / Minecraft folders.
If you ever decide that the symlink life isn't for you, run the command:
This will go through all of your instance folders, replacing any symlinks that point into the EnderChest folder with hard copies of those resources.
Note
If your EnderChest itself contained links pointing to outside the
EnderChest (say, EnderChest/global/screenshots
→ ~/Pictures/Screenshots
),
then after breaking, your instances will simply contain direct links to
those files and folders.
After that completes, you can remove the package via your Python package manager, e.g.
and safely delete your EnderChest folder
Danger
Make sure before you delete your EnderChest folder to move or preserve
any files or folders you've been
manually synchronizing for non-Minecraft games or applications,
as those links are not automatically replaced by the break
command.