Implement world parallel dimension system #6655
Labels
Category: Gameplay
Related to Minecraft gameplay experience
Type: Enhancement
Contributes features or other improvements to PocketMine-MP
Problem description
This was slated for addition since 2015, but it got lost by the wayside because core improvements have taken priority for years.
I'm not planning to work on this, but I figured it would be best to write up an overview of the problems that need to be solved in case someone else wants to take a crack at this.
There are a few obstacles to this:
Proposed solution
World
s are already effectively dimensions. This means that most of the hard work is already done, as all the core code is aware of multi-world.However,
World
s currently have no capacity to synchronize metadata. They also have no way to change the sky color or world height (nether is 128, end is 256). This will need to be solved.Something like the following:
World
enum DimensionType{ OVERWORLD, NETHER, THE_END }
(although we may also want to consider allowing custom dimensions?)World->getParallelDimensions() : array<Dimension, World>
World->getDimensionType() : enum DimensionType
World->getParallelDimension(DimensionType $dimension) : ?World
- returns the linked overworld, nether or end dimension for this world if it's loadedWorld->loadParallelDimension(DimensionType $dimension) : World
Portals will then use
World->loadParallelDimension($targetDimension)
to get the destination for their transit.Probably we'll need some shared object structure to encapsulate the dimension array so changes to it can be reflected in all linked worlds.
Alternative solutions or workarounds
No response
The text was updated successfully, but these errors were encountered: