maruohon / justenoughdimensions

A simple Minecraft mod to register custom dimensions to the game
GNU General Public License v3.0
12 stars 7 forks source link

Players do not spawn in bed when their bed is not in the overworld #44

Open CplPibald opened 5 years ago

CplPibald commented 5 years ago

Using justenoughdimensions-1.12.2-1.6.0-dev.20190505.222902 with Forge 14.23.5.2838

1) Place a bed in dim 11 and sleep in it. 2) Die in overworld 3) Respawn at overworld spawn

Expected: 3) Respawn in bed in dim 11


Here is the dimensions.json in question

{
  "config_version": {
    "id": "__default",
    "version": 0
  },
  "dimensions": [
    {
      "dim": 11,
      "dimensiontype": {
        "id": 11,
        "name": "name",
        "suffix": "_dim11",
        "keeploaded": false,
        "worldprovider": "WorldProviderSurfaceJED"
      },
      "worldinfo_onetime": {
        "generatorName": "botania-skyblock",
        "RandomSeed": "0"
      }
    }
  ]
}

I looked through the config options but the only relevant one I could find was canRespawnHere, but it says it already defaults to true for this world provider. Is there a config or command that I'm missing?

maruohon commented 5 years ago

No, at least currently I believe you will always respawn in the same dimension where you die, if that dimension allows respawning, unless the dimension config specifically sets another respawn dimension.

Allowing better/"more expected" respawn behaviour like you described has been on my TODO list, but if I remember right it's not completely straightforward and clean to implement that, due to how the respawn code works. I will possibly have to teleport the player after their first "normal" respawn, if that respawn is in the "wrong" dimension. But even tracking the last slept in bed will probably be annoying, and will probably need a player interaction event handler and checking if they click on a bed. Unless there was a sleeping event in Forge...