kyrptonaught / customportalapi

Developer Api for creating custom portals to any dimension
MIT License
63 stars 22 forks source link

Custom Portals with Dimension set to minecraft:the_end do not generate or link up #96

Open steve-the-player opened 5 months ago

steve-the-player commented 5 months ago

I haven't tried accessing the CustomPortalAPI directly yet, and I'm instead using the Datapack Portals mod which relies on it. I have a feeling it's an issue with the API itself, but I don't have a way to verify that. As such, I'm duplicating this issue to both repositories.

When creating a custom portal in the overworld, with the dimension set to the end, it builds the portal correctly, but refuses to generate one on the other side. Manually teleporting to the same coordinates in the end and placing a custom portal frame nearby, or even at the exact same coordinates, does not help. Lighting the portal in the End gives the same result. It lights and fills the portal blocks, but stepping into it, even in Creative where you should teleport through immediately. It just plays the spiraling animation like the you have infinite portal cooldown. When I use the add-on that allows trains from the Create mod to go through datapack portals, it breaks the track and gives the message "cannot place portal track: target portal not generated yet". It does this whether both portals are built or not, and in both dimensions.

Screenshot 2024-03-27 at 12 01 28 PM

I have only been able to test this on singleplayer, but I have a suspicion that even on a multiplayer server with dedicated threads for each dimension, and players active in the portal's chunks (or even trying to enter) on both sides would not fix the "portal not generated" error. In fact, if the behavior was any different than in singleplayer, I'm guessing it would cause a server crash.

I initially believed this was due to the way the End's exit portal logic works, but further testing shows that this behavior is the same whether the dragon is alive, killed, or respawned. I'm guessing it's probably more related to how entities going into the End always arrive on the obsidian platform, and returning to the overworld places them at world spawn/their respawn point. End portals don't work the same, but it would be so incredibly useful to override that for custom portals. Also, the code from fixing this issue could also be used to allow for more flexible custom End-like dimensions with set entrance and/or exit points in new dimension mods that call CustomPortalAPI.