-
Notifications
You must be signed in to change notification settings - Fork 84
Description
Describe the bug
When a player crosses a Residence boundary, an exception is thrown indicating that InventoryCloseEvent is being triggered asynchronously.
Paper/Purpur strictly enforces that InventoryCloseEvent (and HumanEntity#closeInventory()) must only be called from the main server thread, but Residence currently calls it from an async task, causing the event to be rejected.
This does not crash the server, but it breaks Residence logic (fly/special flag handling) and continuously spams ERROR logs.
To Reproduce
1.Start a Paper / Purpur server (1.21.11)
2.Install the following plugins:
Residence 6.0.1.2
CMILib 1.5.8.2
3.Create at least two adjacent Residence regions with different flags
(for example, regions that affect flying or other special player states)
4.Have a player open any inventory GUI
(e.g. chest, ender chest, or plugin GUI)
5.While the inventory is still open, move across the Residence boundary
6.Observe the server console
Error / Stack Trace
[ERROR]: Could not pass event ResidenceChangedEvent to Residence v6.0.1.2
java.lang.IllegalStateException: InventoryCloseEvent may only be triggered synchronously.
at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:42)
at org.bukkit.craftbukkit.event.CraftEventFactory.handleInventoryCloseEvent(CraftEventFactory.java:1605)
at net.minecraft.server.level.ServerPlayer.closeContainer(ServerPlayer.java:1979)
at org.bukkit.craftbukkit.entity.CraftHumanEntity.closeInventory(CraftHumanEntity.java:597)
at org.bukkit.entity.HumanEntity.closeInventory(HumanEntity.java:309)
at com.bekvon.bukkit.residence.listeners.ResidencePlayerListener.fly(ResidencePlayerListener.java:2154)
at com.bekvon.bukkit.residence.listeners.ResidencePlayerListener.checkSpecialFlags(ResidencePlayerListener.java:2211)
at com.bekvon.bukkit.residence.listeners.ResidencePlayerListener.onResidenceChange(ResidencePlayerListener.java:2189)
at com.bekvon.bukkit.residence.event.ResidenceEvent.lambda$0(ResidenceEvent.java:61)
at net.Zrips.CMILib.Version.Schedulers.CMIBukkitImpl.lambda$runTaskAsynchronously$1(CMIBukkitImpl.java:48)
Server version:
[11:11:02 INFO]: Residence version: 6.0.1.2
[11:11:02 INFO]: CMILib version: 1.5.8.2
[11:11:02 INFO]: Server version: Purpur(2545)
[11:11:02 INFO]: Java version: 21.0.9