fabric-carpet icon indicating copy to clipboard operation
fabric-carpet copied to clipboard

spawnChunkSize = 0 deletes non-player entities travelling from End to Overworld

Open clarfonthey opened this issue 2 years ago • 3 comments

I need to do some more testing, but at least on 1.18.2 and 1.4.69, this is the case. You can see this if you place a piece of gravel over the central End portal and let it fall through: with spawnChunkSize = 1 or any other positive value, the gravel will show up in the overworld, but with spawnChunkSize = 0, it will not. Players entering the portal without a spawn point will still work as expected.

Falling blocks and really any entity just won't show up, presumably because the chunks aren't expected to be unloaded, and there needs to be extra chunk-loading logic if spawn chunks are disabled. It would probably be adequate to simply re-enable spawn chunks for a short delay after anything enters a portal, similarly to how nether portals load chunks.

Alternatively, maybe having spawnChunkSize = 0 is probably a bad idea, since I'm assuming that there's not any proper logic for automatically loading them. Although maybe it wouldn't be too hard considering how the nether portal logic already exists.

clarfonthey avatar Apr 25 '22 06:04 clarfonthey

Yeah, the behaviour is the same for 1.18.2 and 22w15a. Set up clean instances on a new world with just Fabric and Carpet, then messed around with the spawnChunkSize setting. I just went into creative mode, teleported to the end, killed the dragon with a command, and tried alternatively setting the size of the spawn chunks and dropping different colours of concrete powder into the portal.

To get reasonable behaviour you basically need spawnChunksSize = 2 at minimum, since spawnChunksSize = 1 drops a single piece of sand and pops off the remainder as items, instead of stacking them.

Also as a side note, if you happen to be inside the spawn chunks and try to change the spawnChunksSize rule, it'll error with no helpful message. You have to go somewhere else to actually change it, or in my case, I went to the end.

clarfonthey avatar Apr 25 '22 07:04 clarfonthey

In other words, if carpet spawnChunksSize is less than 2, whenever an entity enters the exit end portal, the spawn chunks are loaded as if carpet spawnChunksSize was 2 for 15 seconds afterwards (same as if an entity enters a nether portal).

Do note many worlds in 1.18 and up place the world spawn point at the exact origin if there is suitable land there. If this happens (i.e. the world spawn X and Z coordinates are both congruent to 0 mod 16), the entity-processing-chunk range may need to be bumped up from a square of side-length 3 to side-length 4.

James103 avatar Jul 21 '22 14:07 James103

Yeah, I would say it's fair to break the expectation of what Nether portals do if it's needed to be safe, since this isn't vanilla behaviour anyway. Bumping up to 4 just to be safe should work.

FWIW, the tests I did were on a flat world on 1.18, so, that probably did have the spawn at exactly (0, 0), and setting the size to 2 seemed to work fine. The original world I discovered this on was generated on 1.17 though, and spawn was offset a few hundred blocks.

clarfonthey avatar Jul 22 '22 15:07 clarfonthey

Closing this since spawn chunk size is a vanilla feature now, and vanilla has resolved this issue.

clarfonthey avatar May 26 '24 06:05 clarfonthey