[Folia] Console errors occur when players move to a different region thread.
Server Version: Folia 1.21.4-DEV-dev/hard-fork
I installed the Bolt plugin on a server running Folia. The plugin works correctly when the player is within the region thread at coordinates (0, 0). However, when the player moves to a different region thread, a large number of console errors are thrown, as shown below:
[17:08:56] [Region Scheduler Thread #0/ERROR]: [ca.spottedleaf.moonrise.common.util.TickThread] Thread failed main thread check: Async chunk retrieval, context=[thread=Region Scheduler Thread #0,class=io.papermc.paper.threadedregions.TickRegionScheduler$TickThreadRunner,region={center=[187, 187],world=world}], world=world, chunk_pos=[-1, -1]
java.lang.Throwable: null
at ca.spottedleaf.moonrise.common.util.TickThread.ensureTickThread(TickThread.java:88) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at org.bukkit.craftbukkit.CraftWorld.getChunkAt(CraftWorld.java:368) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at Bolt-1.1.52.jar/org.popcraft.bolt.util.FoliaUtil.getNearbyEntities(FoliaUtil.java:37) ~[Bolt-1.1.52.jar:?]
at Bolt-1.1.52.jar/org.popcraft.bolt.matcher.block.ItemFrameMatcher.findMatch(ItemFrameMatcher.java:35) ~[Bolt-1.1.52.jar:?]
at Bolt-1.1.52.jar/org.popcraft.bolt.matcher.block.ItemFrameMatcher.findMatch(ItemFrameMatcher.java:14) ~[Bolt-1.1.52.jar:?]
at Bolt-1.1.52.jar/org.popcraft.bolt.BoltPlugin.matchProtection(BoltPlugin.java:859) ~[Bolt-1.1.52.jar:?]
at Bolt-1.1.52.jar/org.popcraft.bolt.BoltPlugin.findProtection(BoltPlugin.java:697) ~[Bolt-1.1.52.jar:?]
at Bolt-1.1.52.jar/org.popcraft.bolt.BoltPlugin.isProtected(BoltPlugin.java:626) ~[Bolt-1.1.52.jar:?]
at Bolt-1.1.52.jar/org.popcraft.bolt.listeners.BlockListener.onBlockFromTo(BlockListener.java:322) ~[Bolt-1.1.52.jar:?]
at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80) ~[folia-api-1.21.4-R0.1-SNAPSHOT.jar:?]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[folia-api-1.21.4-R0.1-SNAPSHOT.jar:?]
at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:54) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:131) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:628) ~[folia-api-1.21.4-R0.1-SNAPSHOT.jar:?]
at net.minecraft.world.level.material.FlowingFluid.spreadToSides(FlowingFluid.java:205) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at net.minecraft.world.level.material.FlowingFluid.spread(FlowingFluid.java:182) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at net.minecraft.world.level.material.FlowingFluid.tick(FlowingFluid.java:507) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at net.minecraft.world.level.material.FluidState.tick(FluidState.java:97) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at net.minecraft.server.level.ServerLevel.tickFluid(ServerLevel.java:1293) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at net.minecraft.world.ticks.LevelTicks.runCollectedTicks(LevelTicks.java:263) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at net.minecraft.world.ticks.LevelTicks.tick(LevelTicks.java:156) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at net.minecraft.server.level.ServerLevel.tick(ServerLevel.java:761) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1833) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1668) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at io.papermc.paper.threadedregions.TickRegions$ConcreteRegionTickHandle.tickRegion(TickRegions.java:407) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at io.papermc.paper.threadedregions.TickRegionScheduler$RegionScheduleHandle.runTick(TickRegionScheduler.java:418) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at ca.spottedleaf.concurrentutil.scheduler.SchedulerThreadPool$TickThreadRunner.run(SchedulerThreadPool.java:546) ~[concurrentutil-0.0.3.jar:?]
at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?]
[17:08:56] [Region Scheduler Thread #0/ERROR]: Could not pass event BlockFromToEvent to Bolt v1.1.52
java.lang.IllegalStateException: Thread failed main thread check: Async chunk retrieval, context=[thread=Region Scheduler Thread #0,class=io.papermc.paper.threadedregions.TickRegionScheduler$TickThreadRunner,region={center=[187, 187],world=world}], world=world, chunk_pos=[-1, -1]
at ca.spottedleaf.moonrise.common.util.TickThread.ensureTickThread(TickThread.java:89) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at org.bukkit.craftbukkit.CraftWorld.getChunkAt(CraftWorld.java:368) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at Bolt-1.1.52.jar/org.popcraft.bolt.util.FoliaUtil.getNearbyEntities(FoliaUtil.java:37) ~[Bolt-1.1.52.jar:?]
at Bolt-1.1.52.jar/org.popcraft.bolt.matcher.block.ItemFrameMatcher.findMatch(ItemFrameMatcher.java:35) ~[Bolt-1.1.52.jar:?]
at Bolt-1.1.52.jar/org.popcraft.bolt.matcher.block.ItemFrameMatcher.findMatch(ItemFrameMatcher.java:14) ~[Bolt-1.1.52.jar:?]
at Bolt-1.1.52.jar/org.popcraft.bolt.BoltPlugin.matchProtection(BoltPlugin.java:859) ~[Bolt-1.1.52.jar:?]
at Bolt-1.1.52.jar/org.popcraft.bolt.BoltPlugin.findProtection(BoltPlugin.java:697) ~[Bolt-1.1.52.jar:?]
at Bolt-1.1.52.jar/org.popcraft.bolt.BoltPlugin.isProtected(BoltPlugin.java:626) ~[Bolt-1.1.52.jar:?]
at Bolt-1.1.52.jar/org.popcraft.bolt.listeners.BlockListener.onBlockFromTo(BlockListener.java:322) ~[Bolt-1.1.52.jar:?]
at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80) ~[folia-api-1.21.4-R0.1-SNAPSHOT.jar:?]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[folia-api-1.21.4-R0.1-SNAPSHOT.jar:?]
at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:54) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:131) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:628) ~[folia-api-1.21.4-R0.1-SNAPSHOT.jar:?]
at net.minecraft.world.level.material.FlowingFluid.spreadToSides(FlowingFluid.java:205) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at net.minecraft.world.level.material.FlowingFluid.spread(FlowingFluid.java:182) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at net.minecraft.world.level.material.FlowingFluid.tick(FlowingFluid.java:507) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at net.minecraft.world.level.material.FluidState.tick(FluidState.java:97) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at net.minecraft.server.level.ServerLevel.tickFluid(ServerLevel.java:1293) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at net.minecraft.world.ticks.LevelTicks.runCollectedTicks(LevelTicks.java:263) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at net.minecraft.world.ticks.LevelTicks.tick(LevelTicks.java:156) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at net.minecraft.server.level.ServerLevel.tick(ServerLevel.java:761) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1833) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1668) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at io.papermc.paper.threadedregions.TickRegions$ConcreteRegionTickHandle.tickRegion(TickRegions.java:407) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at io.papermc.paper.threadedregions.TickRegionScheduler$RegionScheduleHandle.runTick(TickRegionScheduler.java:418) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at ca.spottedleaf.concurrentutil.scheduler.SchedulerThreadPool$TickThreadRunner.run(SchedulerThreadPool.java:546) ~[concurrentutil-0.0.3.jar:?]
at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?]
[17:08:56] [Region Scheduler Thread #1/ERROR]: [ca.spottedleaf.moonrise.common.util.TickThread] Thread failed main thread check: Async chunk retrieval, context=[thread=Region Scheduler Thread #1,class=io.papermc.paper.threadedregions.TickRegionScheduler$TickThreadRunner,region={center=[187, 187],world=world}], world=world, chunk_pos=[-1, -1]
java.lang.Throwable: null
at ca.spottedleaf.moonrise.common.util.TickThread.ensureTickThread(TickThread.java:88) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at org.bukkit.craftbukkit.CraftWorld.getChunkAt(CraftWorld.java:368) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at Bolt-1.1.52.jar/org.popcraft.bolt.util.FoliaUtil.getNearbyEntities(FoliaUtil.java:37) ~[Bolt-1.1.52.jar:?]
at Bolt-1.1.52.jar/org.popcraft.bolt.matcher.block.ItemFrameMatcher.findMatch(ItemFrameMatcher.java:35) ~[Bolt-1.1.52.jar:?]
at Bolt-1.1.52.jar/org.popcraft.bolt.matcher.block.ItemFrameMatcher.findMatch(ItemFrameMatcher.java:14) ~[Bolt-1.1.52.jar:?]
at Bolt-1.1.52.jar/org.popcraft.bolt.BoltPlugin.matchProtection(BoltPlugin.java:859) ~[Bolt-1.1.52.jar:?]
at Bolt-1.1.52.jar/org.popcraft.bolt.BoltPlugin.findProtection(BoltPlugin.java:697) ~[Bolt-1.1.52.jar:?]
at Bolt-1.1.52.jar/org.popcraft.bolt.BoltPlugin.isProtected(BoltPlugin.java:626) ~[Bolt-1.1.52.jar:?]
at Bolt-1.1.52.jar/org.popcraft.bolt.listeners.BlockListener.onBlockSpread(BlockListener.java:411) ~[Bolt-1.1.52.jar:?]
at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80) ~[folia-api-1.21.4-R0.1-SNAPSHOT.jar:?]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[folia-api-1.21.4-R0.1-SNAPSHOT.jar:?]
at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:54) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:131) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:628) ~[folia-api-1.21.4-R0.1-SNAPSHOT.jar:?]
at org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockSpreadEvent(CraftEventFactory.java:967) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockSpreadEvent(CraftEventFactory.java:951) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at net.minecraft.world.level.block.GrowingPlantHeadBlock.randomTick(GrowingPlantHeadBlock.java:62) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at net.minecraft.world.level.block.state.BlockBehaviour$BlockStateBase.randomTick(BlockBehaviour.java:882) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at net.minecraft.server.level.ServerLevel.optimiseRandomTick(ServerLevel.java:972) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at net.minecraft.server.level.ServerLevel.tickChunk(ServerLevel.java:1032) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at net.minecraft.server.level.ServerChunkCache.tickChunks(ServerChunkCache.java:647) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at net.minecraft.server.level.ServerChunkCache.tickChunks(ServerChunkCache.java:533) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at net.minecraft.server.level.ServerChunkCache.tick(ServerChunkCache.java:500) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at net.minecraft.server.level.ServerLevel.tick(ServerLevel.java:775) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1833) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1668) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at io.papermc.paper.threadedregions.TickRegions$ConcreteRegionTickHandle.tickRegion(TickRegions.java:407) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at io.papermc.paper.threadedregions.TickRegionScheduler$RegionScheduleHandle.runTick(TickRegionScheduler.java:418) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at ca.spottedleaf.concurrentutil.scheduler.SchedulerThreadPool$TickThreadRunner.run(SchedulerThreadPool.java:546) ~[concurrentutil-0.0.3.jar:?]
at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?]
[17:08:56] [Region Scheduler Thread #1/ERROR]: Could not pass event BlockSpreadEvent to Bolt v1.1.52
java.lang.IllegalStateException: Thread failed main thread check: Async chunk retrieval, context=[thread=Region Scheduler Thread #1,class=io.papermc.paper.threadedregions.TickRegionScheduler$TickThreadRunner,region={center=[187, 187],world=world}], world=world, chunk_pos=[-1, -1]
at ca.spottedleaf.moonrise.common.util.TickThread.ensureTickThread(TickThread.java:89) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at org.bukkit.craftbukkit.CraftWorld.getChunkAt(CraftWorld.java:368) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at Bolt-1.1.52.jar/org.popcraft.bolt.util.FoliaUtil.getNearbyEntities(FoliaUtil.java:37) ~[Bolt-1.1.52.jar:?]
at Bolt-1.1.52.jar/org.popcraft.bolt.matcher.block.ItemFrameMatcher.findMatch(ItemFrameMatcher.java:35) ~[Bolt-1.1.52.jar:?]
at Bolt-1.1.52.jar/org.popcraft.bolt.matcher.block.ItemFrameMatcher.findMatch(ItemFrameMatcher.java:14) ~[Bolt-1.1.52.jar:?]
at Bolt-1.1.52.jar/org.popcraft.bolt.BoltPlugin.matchProtection(BoltPlugin.java:859) ~[Bolt-1.1.52.jar:?]
at Bolt-1.1.52.jar/org.popcraft.bolt.BoltPlugin.findProtection(BoltPlugin.java:697) ~[Bolt-1.1.52.jar:?]
at Bolt-1.1.52.jar/org.popcraft.bolt.BoltPlugin.isProtected(BoltPlugin.java:626) ~[Bolt-1.1.52.jar:?]
at Bolt-1.1.52.jar/org.popcraft.bolt.listeners.BlockListener.onBlockSpread(BlockListener.java:411) ~[Bolt-1.1.52.jar:?]
at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80) ~[folia-api-1.21.4-R0.1-SNAPSHOT.jar:?]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[folia-api-1.21.4-R0.1-SNAPSHOT.jar:?]
at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:54) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:131) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:628) ~[folia-api-1.21.4-R0.1-SNAPSHOT.jar:?]
at org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockSpreadEvent(CraftEventFactory.java:967) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockSpreadEvent(CraftEventFactory.java:951) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at net.minecraft.world.level.block.GrowingPlantHeadBlock.randomTick(GrowingPlantHeadBlock.java:62) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at net.minecraft.world.level.block.state.BlockBehaviour$BlockStateBase.randomTick(BlockBehaviour.java:882) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at net.minecraft.server.level.ServerLevel.optimiseRandomTick(ServerLevel.java:972) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at net.minecraft.server.level.ServerLevel.tickChunk(ServerLevel.java:1032) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at net.minecraft.server.level.ServerChunkCache.tickChunks(ServerChunkCache.java:647) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at net.minecraft.server.level.ServerChunkCache.tickChunks(ServerChunkCache.java:533) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at net.minecraft.server.level.ServerChunkCache.tick(ServerChunkCache.java:500) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at net.minecraft.server.level.ServerLevel.tick(ServerLevel.java:775) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1833) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1668) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at io.papermc.paper.threadedregions.TickRegions$ConcreteRegionTickHandle.tickRegion(TickRegions.java:407) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at io.papermc.paper.threadedregions.TickRegionScheduler$RegionScheduleHandle.runTick(TickRegionScheduler.java:418) ~[folia-1.21.4.jar:1.21.4-DEV-2986741]
at ca.spottedleaf.concurrentutil.scheduler.SchedulerThreadPool$TickThreadRunner.run(SchedulerThreadPool.java:546) ~[concurrentutil-0.0.3.jar:?]
at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?]
I am experiencing the same issue. I hope this gets fixed soon as this plugin is essential for my server. 私も同じ問題に遭遇しています。 私のサーバーにとってこのプラグインは必須なので、早めに修正されることを願っています。
I will try to take a look when I get a chance. In the meanwhile, consider disabling item frame protections in the config which should stop running these matchers. Existing item frames should still be protected.
I set ItemFrame to false, but the error does not stop.
entities:
armor_stand:
autoProtect: private
item_frame:
autoProtect: false
glow_item_frame:
autoProtect: false
painting:
autoProtect: private
leash_knot:
autoProtect: private
Environment:
- Plugin Version: Tested versions v1.2(Compiled from Github) and v1.1.78(Downloaded from Modrinth Platform: Folia Version: 1.21.8)
- Server Software: Folia
- Server Version: version 1.21.8-6-ver/1.21.8@612d9bd (2025-09-30T14:11:15Z) (Implementing API version 1.21.8-R0.1-SNAPSHOT) LATEST
- CPU: Ryzen 7950x utilizing all 16 cores. (Required for proper Folia Setup)
Expected Behavior: Plugin should function with no errors generated in console
Actual Behavior: Plugin functions as expected while within the 0,0 regions of the Overworld, Nether, and End. When a player loads an additional region beyond the 0,0 regions while within the Overworld or Nether the console will be flooded with the error. The issue has not been observed when loading additional regions in the End. Despite the errors generated in the console the plugin appears to maintain full functionality in regions 0,0 in all worlds and additional regions.
Steps to Reproduce:
CRITICAL: This bug only occurs on Folia. Frequency: Always in regions outside of 0,0 in the Overworld and Nether
- First join in a 0,0 region (Overworld or Nether)
- Travel (Walk/Fly/Teleport) outside of region 0,0. x2000 z2000 and beyond should work.
- Once there, no other action directly with the plugin is required.
- Check console.
Additional Information:
- Console logs: https://mclo.gs/PWR5Q6F#L91
- Screenshots: https://imgur.com/a/xYbWycs
Thanks for the further details. I was now able to reproduce the issue - which was made harder from the fact that the spawn chunk radius is default 0 in newer versions, so I actually had to change this first before I saw any errors.
Fixed in b66713dd96d555dc90150760cefec2deb50b3917.