PaperMC / Folia

Fork of Paper which adds regionised multithreading to the dedicated server.
GNU General Public License v3.0
3.49k stars 437 forks source link

nether portal cannot load chunk centered on itself 3*3 chunks as vanilla #198

Open cgw2023 opened 7 months ago

cgw2023 commented 7 months ago

Expected behavior

nether portal under normal circumstances can be loaded centered on itself 3*3 chunks

Observed/Actual behavior

nether portal chunk loading centered on itself 3*3 chunks seems to have failed

Steps/models to reproduce

Whenever an entity is teleported through a nether portal, the chunk at the linked portal gets load ticket with load level of 30, meaning that it is fully loaded and can process entities. This load level also spreads to adjacent chunks but they get lower for each chunk. This results in 8 more fully loaded "entity ticking" chunks with gradually fewer loaded chunks further out.

These chunks remain loaded for 15 seconds but this timer gets refreshed each time the entity passes through the portal (including mobs wandering through it from either direction). This can be used to permanently load chunks, creating a "chunk loader". Permanently-loaded chunks created using chunk loaders create a considerable amount of lag.

https://youtu.be/yVc1LPf_LhY

Plugin and Datapack List

Bukkit Plugins: AnnouncerPlus, AntiPopup, Attollo, AutoTreeChop, AxInventoryRestore, AxShulkers, BetterRTP, BlockLocker, BlueMap, BungeeGuard Chunky, ChunkyBorder, CMILib, CodFrame, CoreProtect, DecentHolograms, DeluxeMenus, DiscordSRV, DragonDropElytra, Essentials EssentialsChat, EssentialsGeoIP, EssentialsProtect, EssentialsSpawn, FancyNpcs, floodgate, FoliaFlow, GreenChunk, GSit, HeadDrop Kaiivoid, LuckPerms, Matrix, PlaceholderAPI, PlayerWarps, ProtocolLib, Residence, ShulkerRespawner, spark, TAB-Bridge Vault, ViaBackwards, ViaVersion, VillagerOptimizer, zAuctionHouseV3

Folia version

This server is running Folia version git-Folia-"3843340" (MC: 1.20.2) (Implementing API version 1.20.2-R0.1-SNAPSHOT) (Git: https://github.com/PaperMC/Folia/commit/3843340cba3aac68f5ab54bd8a0cafd2670a9458 on dev/1.20.2)

Other

No response

Spottedleaf commented 6 months ago

Any mechanic that relies on precise timing of these tickets cannot work on Folia. The ticket is added before the entity is teleported, but Folia adds some number of ticks of delay before the entity arrives to the target location. This doesn't take in account the fact that regions tick in parallel and as a result there is no synchronisation in the ticks between them. Folia additionally enforces that the chunks in the entity's bounding box is loaded, which may add yet more delay after the ticket is added before the entity arrives.

I can see locally that the ticket is being added, so it is definitely not due to a lack of the ticket being added.

So if your machine relies on the ticket being there for exactly 300 ticks, it can't work. Do you know how tight the timing is on this machine?