AntMCDev / MCSkyblock

The Official MCSkyblock repository
MIT License
6 stars 2 forks source link

[Feature Request] Multiplayer Support(?) #70

Closed Laifsyn closed 1 year ago

Laifsyn commented 1 year ago

Wondering if something could be done to support multiplayer instead of having everyone spawning in the same island

AntMCDev commented 1 year ago

Yeah, this is something we can look into. We're currently working on porting to Forge, but we might be able to squeeze this onto the same version (along with a multi-island config property)

JosephMillsAtWork commented 1 year ago

@Laifsyn Where would you suggest that they spawn ?

AntMCDev commented 1 year ago

@JosephMillsAtWork I would suggest that we just use the randomized vanilla spawn locations (or even randomize our own if we need them spaced out even more). Then hook into our base island NBT using the player UUID as the key to ensure that they only generate once per-player

JosephMillsAtWork commented 1 year ago

@AntMCDev I'm okay with using vanilla spawn and saving the data.

My concern is more about making sure the players spawn on something and that it doesn't mess with the algorithm for outer islands and that there is not 20 or more spawn islands.

AntMCDev commented 1 year ago

I think base the outer islands off of the world origin (0,0,0) like it is at the moment. Then player islands can be up to 128 blocks (or a configurable amount) out. Ultimately, the server manager can set that distance from property, so it's up to them if they want it closer/further. With regards to the max number of starting islands - can also make that a configurable property (after which, just start spawning people on the origin island)

JosephMillsAtWork commented 1 year ago

I agree. maybe we can sneak all this in after the forge port is done ? or do you think that we should work on this now ?

AntMCDev commented 1 year ago

We'll get Forge done first

AntMCDev commented 1 year ago

This is now a feature as of 3.1.0 @Laifsyn. Still an experimental feature - but if you set the new MAIN_ISLAND_COUNT property, that will increase the maximum number of islands. The 1st island will spawn at the world origin of 0,0,0 and proceeding islands will spawn in a circle (of radius SUB_ISLAND_DISTANCE) around the origin whenever new players join (and only once per-player). Islands check collision before spawning and won't generate if there is a non-air block in the way, it will just attempt to spawn in the next location until it reaches the cap. If a new player enters the world and an island doesn't spawn for them (either because the cap is hit, or there's blocks in the way stopping islands from spawning), it will just put them at the world origin.