ClassiCube / MCGalaxy

A Minecraft Classic / ClassiCube server software
GNU General Public License v3.0
168 stars 79 forks source link

Make /reload place the spawnpoint at the world spawnpoint instead of where the player was. #696

Open forkiesassds opened 2 years ago

Goodlyay commented 2 years ago

Why?

Edit: I believe the reason the spawnpoint is changed is so that you can respawn in the world where you were before the reload happened. I originally thought that you wanted the player to be returned to the spawnpoint when reload occurs, which would have been a downgrade in my opinion.

Maybe a fix would be that after a reload happens, your spawn isn't changed, you're just teleported back to where you were.

rdebath commented 2 years ago

I'd noticed this too and yes, the issue is that after a /reload (or any other reload from drawing etc) the r key in Classicube returns to the position you were at the last reload, not to the level spawn point.

To me it's unclear whether this is a MCGalaxy issue or a Classicube issue due to the complexity required to support SetSpawnpoint and Entity packets (or their absence). I suspect that MCGalaxy should 'just' send the SetSpawnpoint packet after the current map reload if it's allowed.

Goodlyay commented 2 years ago

It's an MCGalaxy issue. Using SetSpawnpoint to reset the spawn to the real map's spawn sounds like a good solution. If the client doesn't support it, then they could instead still start at normal spawn then get teleported to where they were before.

Joining another world through a specific portal exit could also receive similar treatment, since right now there can be a noticeable delay before you teleport from spawn to the portal exit.

forkiesassds commented 2 years ago

Same also applies for /restore