Host your Minecraft server on BisectHosting - get 25% off your first month with code MODRINTH.

Dimensional Inventories

A Minecraft Fabric mod for keeping separate inventories across pools of dimensions. Originally developed to add a separate creative world to a survival server using a custom dimension datapack (example datapack attached to releases on GitHub).

Basic Functionality

The mod operates with dimension pools. A dimension pool can contain any number of dimensions, but a dimension can only be present in one dimension pool. A player's inventory (including the regular inventory, armour, offhand, ender chest, experience, score, food, saturation, exhaustion and health) and gamemode is the same within the same dimension pool.

When a player travels to a dimension in a different dimension pool, the player's inventory is saved to a file corresponding to the origin dimension pool. The player's inventory and status effects are then cleared, their inventory is loaded from their file in the destination dimension pool (if present), and their gamemode is switched to the dimension pool's gamemode. On the other hand, when a non-player entity travels from one dimension pool to another, it is simply deleted.

Advancement progress can be enabled or disabled for a dimension pool. Players can view their advancements in any dimension pool, but only when in a pool with advancement progress enabled will they be able to progress or complete advancements, as well as unlock recipes. A separate setting also applies this principle to statistics.

Dimension pools are loaded from and saved to a JSON file. If the file is not found, a pool named default will be created containing the dimensions minecraft:overworld, minecraft:the_nether and minecraft:the_end with the gamemode set to survival, and with advancement progress and incrementation of statistics enabled. Thus, the mod will have no effect out of the box in a regular survival world.

If the origin or destination dimension is not assigned to a dimension pool, the player's inventory and gamemode will be unaffected. This means a player can preserve their inventory while travelling across dimension pools if they travel to an unassigned dimension in between.

Usage

The mod is used via commands starting with diminv. The most basic command simply shows the mod version and is accessible to anyone:

diminv

All other commands require permission level 4 (operator).

Managing Dimension Pools

List all dimension pools, their gamemodes and the dimensions they contain:

diminv list

List a specific dimension pool, its gamemode and the dimensions it contains:

diminv pool <pool_name> list

Create a new dimension pool:

diminv pool <pool_name> create

Remove an existing dimension pool:

diminv pool <pool_name> remove

Assign a dimension to a dimension pool (also removing it from all other pools):

diminv pool <pool_name> dimension <dimension_name> assign

Remove a dimension from a dimension pool:

diminv pool <pool_name> dimension <dimension_name> remove

Set the gamemode for a dimension pool:

diminv pool <pool_name> gamemode <gamemode>

Enable or disable advancement progress for a dimension pool:

diminv pool <pool_name> progressAdvancements <boolean>

Enable or disable incrementation of statistics for a dimension pool:

diminv pool <pool_name> incrementStatistics <boolean>

Tips

Custom dimensions do not support travel via portals, so to actually get to one, a teleport of some sort is required. One way is to use the vanilla teleport command in conjunction with the execute command:

execute in <dimension_name> run teleport <coordinates>

Accessing custom dimensions can be made easier with mods that provide warps, homes and other such teleports. For more convenient dimension hopping, players can also be allowed to teleport to their previous location - typically implemented with a /back command. An example of a mod that provides such functionality is Essential Commands.

On a survival server with a creative dimension, the creative dimension could be accessed with a warp. Players could then set a home in the creative dimension for easy access to their current project there, and they could quickly return to the survival world using a /back command. With this, players could easily design their builds in creative and use them as a reference when building them in survival.

To manage access to these and other commands, it can be useful to assign permissions for different dimensions independently. This can be achieved with a permissions mod such as LuckPerms - see their wiki entry for contexts. Expanding on the teleport example, the essentialcommands.warp.tp and essentialcommands.home.tp permissions could be granted globally, while the essentialcommands.home.set and essentialcommands.back permission could be granted only in the creative dimension.

Use of Vanilla Permissions or Universal Perms to expose additional permission nodes may also be useful in this context.

Adding portal support to custom dimensions using another mod alongside Dimensional Inventories may be of interest. An example of such a mod could be Dimension Portal Linker.


Project members

Thomilist

Owner


Technical information

License
MIT
Client side
unsupported
Server side
required
Project ID