Tamed Animals cause LuckPerms error in regions with Group Owners/Members
Technofied opened this issue ยท 7 comments
WorldEdit Version
7.2.10
WorldGuard Version
7.0.7
Platform Version
git-Paper-283 (MC: 1.18.2)
Confirmations
- I am using the most recent Minecraft release.
- I am using a version of WorldEdit compatible with my Minecraft version.
- I am using a version of WorldGuard compatible with my Minecraft version.
- I am using the latest or recommended version of my platform software.
- I am NOT using a hybrid server, e.g. a server that combines Bukkit and Forge. Examples include Arclight, Mohist, and Cardboard.
- I am NOT using a fork of WorldEdit, such as FastAsyncWorldEdit (FAWE) or AsyncWorldEdit (AWE)
Bug Description
If a tameable animal such as a wolf is on a pressure plate in a claim with a group owner or member g:, and the owner goes offline, the Cause code picks up the TameableOwner, which is an OfflinePlayer. The region code tries to check their LuckPerms group on the main thread, giving this error repeatedly.
[13:12:14 WARN]: me.lucko.luckperms.bukkit.vault.ServerThreadLookupException: A Vault API request has been made on the main server thread that LuckPerms cannot safely respond to.
[13:12:14 WARN]: This is NOT a bug - please do not report it to LuckPerms.
[13:12:14 WARN]: Instead, please carefully read the information given below.
[13:12:14 WARN]:
[13:12:14 WARN]: LuckPerms cannot respond to the request because to do so:
[13:12:14 WARN]: - it needs to lookup user data for 'd76d7e45-00fb-49d7-a145-baf355c4b958' (an offline player) from the database
[13:12:14 WARN]:
[13:12:14 WARN]: Performing this lookup on the main server thread would cause your server to lag.
[13:12:14 WARN]: There are two solutions to this problem:
[13:12:14 WARN]: a) Ask the author of the plugin making the request to perform Vault calls for
[13:12:14 WARN]: offline players "asynchronously" (using the scheduler). Additionally, prefer
[13:12:14 WARN]: using the methods that accept 'Player' or 'OfflinePlayer' instead of usernames.
[13:12:14 WARN]: You should be able to identify the plugin making the request in the trace below.
[13:12:14 WARN]: b) As a server admin, you can disable this exception by setting 'vault-unsafe-lookups'
[13:12:14 WARN]: to true in the LuckPerms configuration file. However, please use this only as
[13:12:14 WARN]: a last resort.
[13:12:14 WARN]: at me.lucko.luckperms.bukkit.vault.LuckPermsVaultPermission.lookupUser(LuckPermsVaultPermission.java:155)
[13:12:14 WARN]: at me.lucko.luckperms.bukkit.vault.LuckPermsVaultPermission.userInGroup(LuckPermsVaultPermission.java:233)
[13:12:14 WARN]: at me.lucko.luckperms.bukkit.vault.AbstractVaultPermission.playerInGroup(AbstractVaultPermission.java:333)
[13:12:14 WARN]: at worldedit-bukkit-7.2.10.jar//com.sk89q.wepif.VaultResolver.inGroup(VaultResolver.java:107)
[13:12:14 WARN]: at worldedit-bukkit-7.2.10.jar//com.sk89q.wepif.PermissionsResolverManager.inGroup(PermissionsResolverManager.java:175)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.bukkit.WorldGuardPlugin.inGroup(WorldGuardPlugin.java:318)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.bukkit.BukkitOfflinePlayer.hasGroup(BukkitOfflinePlayer.java:63)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.domains.GroupDomain.contains(GroupDomain.java:96)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.domains.DefaultDomain.contains(DefaultDomain.java:245)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.protection.regions.ProtectedRegion.isOwner(ProtectedRegion.java:285)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.LocalPlayer.getAssociation(LocalPlayer.java:61)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.protection.FlagValueCalculator.getMembership(FlagValueCalculator.java:138)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.protection.FlagValueCalculator.queryAllValues(FlagValueCalculator.java:434)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.protection.FlagValueCalculator.queryValue(FlagValueCalculator.java:227)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.protection.FlagValueCalculator.queryState(FlagValueCalculator.java:174)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.protection.RegionResultSet.queryState(RegionResultSet.java:103)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.protection.regions.RegionQuery.queryState(RegionQuery.java:342)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.protection.regions.RegionQuery.testBuild(RegionQuery.java:201)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.bukkit.listener.RegionProtectionListener.lambda$onUseBlock$2(RegionProtectionListener.java:292)
[13:12:14 WARN]: at com.google.common.base.Predicate.test(Predicate.java:81)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.bukkit.event.block.AbstractBlockEvent.filterInternal(AbstractBlockEvent.java:132)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.bukkit.event.block.AbstractBlockEvent.filter(AbstractBlockEvent.java:124)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.bukkit.event.block.UseBlockEvent.filter(UseBlockEvent.java:39)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.bukkit.event.block.AbstractBlockEvent.filter(AbstractBlockEvent.java:160)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.bukkit.event.block.UseBlockEvent.filter(UseBlockEvent.java:39)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.bukkit.listener.RegionProtectionListener.onUseBlock(RegionProtectionListener.java:251)
[13:12:14 WARN]: at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor92.execute(Unknown Source)
[13:12:14 WARN]: at org.bukkit.plugin.EventExecutor.lambda$create$1(EventExecutor.java:75)
[13:12:14 WARN]: at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80)
[13:12:14 WARN]: at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70)
[13:12:14 WARN]: at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:629)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.bukkit.util.Events.fireAndTestCancel(Events.java:60)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.bukkit.listener.debounce.legacy.AbstractEventDebounce.debounce(AbstractEventDebounce.java:56)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.bukkit.listener.debounce.legacy.BlockEntityEventDebounce.debounce(BlockEntityEventDebounce.java:36)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.bukkit.listener.EventAbstractionListener.onEntityInteract(EventAbstractionListener.java:583)
[13:12:14 WARN]: at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor144.execute(Unknown Source)
[13:12:14 WARN]: at org.bukkit.plugin.EventExecutor.lambda$create$1(EventExecutor.java:75)
[13:12:14 WARN]: at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80)
[13:12:14 WARN]: at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70)
[13:12:14 WARN]: at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:629)
[13:12:14 WARN]: at net.minecraft.world.level.block.BlockPressurePlateWeighted.b(BlockPressurePlateWeighted.java:45)
[13:12:14 WARN]: at net.minecraft.world.level.block.BlockPressurePlateAbstract.a(BlockPressurePlateAbstract.java:82)
[13:12:14 WARN]: at net.minecraft.world.level.block.BlockPressurePlateAbstract.a(BlockPressurePlateAbstract.java:75)
[13:12:14 WARN]: at net.minecraft.world.level.block.state.BlockBase$BlockData.a(BlockBase.java:1003)
[13:12:14 WARN]: at net.minecraft.world.entity.Entity.aI(Entity.java:1432)
[13:12:14 WARN]: at net.minecraft.world.entity.Entity.ax(Entity.java:1168)
[13:12:14 WARN]: at net.minecraft.world.entity.Entity.a(Entity.java:1095)
[13:12:14 WARN]: at net.minecraft.world.entity.EntityLiving.a(EntityLiving.java:2814)
[13:12:14 WARN]: at net.minecraft.world.entity.EntityLiving.h(EntityLiving.java:2769)
[13:12:14 WARN]: at net.minecraft.world.entity.EntityLiving.w_(EntityLiving.java:3307)
[13:12:14 WARN]: at net.minecraft.world.entity.EntityInsentient.w_(EntityInsentient.java:628)
[13:12:14 WARN]: at net.minecraft.world.entity.EntityAgeable.w_(EntityAgeable.java:154)
[13:12:14 WARN]: at net.minecraft.world.entity.animal.EntityAnimal.w_(EntityAnimal.java:62)
[13:12:14 WARN]: at net.minecraft.world.entity.animal.EntityWolf.w_(EntityWolf.java:203)
[13:12:14 WARN]: at net.minecraft.world.entity.EntityLiving.k(EntityLiving.java:2917)
[13:12:14 WARN]: at net.minecraft.world.entity.EntityInsentient.k(EntityInsentient.java:396)
[13:12:14 WARN]: at net.minecraft.world.entity.animal.EntityWolf.k(EntityWolf.java:219)
[13:12:14 WARN]: at net.minecraft.server.level.WorldServer.a(WorldServer.java:1134)
[13:12:14 WARN]: at net.minecraft.world.level.World.a(World.java:936)
[13:12:14 WARN]: at net.minecraft.server.level.WorldServer.lambda$tick$5(WorldServer.java:673)
[13:12:14 WARN]: at net.minecraft.world.level.entity.EntityTickList.a(EntityTickList.java:43)
[13:12:14 WARN]: at net.minecraft.server.level.WorldServer.a(WorldServer.java:653)
[13:12:14 WARN]: at net.minecraft.server.MinecraftServer.b(MinecraftServer.java:1591)
[13:12:14 WARN]: at net.minecraft.server.dedicated.DedicatedServer.b(DedicatedServer.java:483)
[13:12:14 WARN]: at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:1455)
[13:12:14 WARN]: at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:1225)
[13:12:14 WARN]: at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:315)
[13:12:14 WARN]: at java.base/java.lang.Thread.run(Thread.java:833)
[13:12:14 WARN]: me.lucko.luckperms.bukkit.vault.ServerThreadLookupException: A Vault API request has been made on the main server thread that LuckPerms cannot safely respond to.
[13:12:14 WARN]: This is NOT a bug - please do not report it to LuckPerms.
[13:12:14 WARN]: Instead, please carefully read the information given below.
[13:12:14 WARN]:
[13:12:14 WARN]: LuckPerms cannot respond to the request because to do so:
[13:12:14 WARN]: - it needs to lookup user data for 'd76d7e45-00fb-49d7-a145-baf355c4b958' (an offline player) from the database
[13:12:14 WARN]:
[13:12:14 WARN]: Performing this lookup on the main server thread would cause your server to lag.
[13:12:14 WARN]: There are two solutions to this problem:
[13:12:14 WARN]: a) Ask the author of the plugin making the request to perform Vault calls for
[13:12:14 WARN]: offline players "asynchronously" (using the scheduler). Additionally, prefer
[13:12:14 WARN]: using the methods that accept 'Player' or 'OfflinePlayer' instead of usernames.
[13:12:14 WARN]: You should be able to identify the plugin making the request in the trace below.
[13:12:14 WARN]: b) As a server admin, you can disable this exception by setting 'vault-unsafe-lookups'
[13:12:14 WARN]: to true in the LuckPerms configuration file. However, please use this only as
[13:12:14 WARN]: a last resort.
[13:12:14 WARN]: at me.lucko.luckperms.bukkit.vault.LuckPermsVaultPermission.lookupUser(LuckPermsVaultPermission.java:155)
[13:12:14 WARN]: at me.lucko.luckperms.bukkit.vault.LuckPermsVaultPermission.userInGroup(LuckPermsVaultPermission.java:233)
[13:12:14 WARN]: at me.lucko.luckperms.bukkit.vault.AbstractVaultPermission.playerInGroup(AbstractVaultPermission.java:333)
[13:12:14 WARN]: at worldedit-bukkit-7.2.10.jar//com.sk89q.wepif.VaultResolver.inGroup(VaultResolver.java:107)
[13:12:14 WARN]: at worldedit-bukkit-7.2.10.jar//com.sk89q.wepif.PermissionsResolverManager.inGroup(PermissionsResolverManager.java:175)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.bukkit.WorldGuardPlugin.inGroup(WorldGuardPlugin.java:318)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.bukkit.BukkitOfflinePlayer.hasGroup(BukkitOfflinePlayer.java:63)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.domains.GroupDomain.contains(GroupDomain.java:96)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.domains.DefaultDomain.contains(DefaultDomain.java:245)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.protection.regions.ProtectedRegion.isOwner(ProtectedRegion.java:285)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.protection.regions.ProtectedRegion.isMember(ProtectedRegion.java:338)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.LocalPlayer.getAssociation(LocalPlayer.java:63)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.protection.FlagValueCalculator.getMembership(FlagValueCalculator.java:138)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.protection.FlagValueCalculator.queryAllValues(FlagValueCalculator.java:434)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.protection.FlagValueCalculator.queryValue(FlagValueCalculator.java:227)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.protection.FlagValueCalculator.queryState(FlagValueCalculator.java:174)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.protection.RegionResultSet.queryState(RegionResultSet.java:103)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.protection.regions.RegionQuery.queryState(RegionQuery.java:342)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.protection.regions.RegionQuery.testBuild(RegionQuery.java:201)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.bukkit.listener.RegionProtectionListener.lambda$onUseBlock$2(RegionProtectionListener.java:292)
[13:12:14 WARN]: at com.google.common.base.Predicate.test(Predicate.java:81)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.bukkit.event.block.AbstractBlockEvent.filterInternal(AbstractBlockEvent.java:132)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.bukkit.event.block.AbstractBlockEvent.filter(AbstractBlockEvent.java:124)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.bukkit.event.block.UseBlockEvent.filter(UseBlockEvent.java:39)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.bukkit.event.block.AbstractBlockEvent.filter(AbstractBlockEvent.java:160)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.bukkit.event.block.UseBlockEvent.filter(UseBlockEvent.java:39)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.bukkit.listener.RegionProtectionListener.onUseBlock(RegionProtectionListener.java:251)
[13:12:14 WARN]: at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor92.execute(Unknown Source)
[13:12:14 WARN]: at org.bukkit.plugin.EventExecutor.lambda$create$1(EventExecutor.java:75)
[13:12:14 WARN]: at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80)
[13:12:14 WARN]: at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70)
[13:12:14 WARN]: at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:629)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.bukkit.util.Events.fireAndTestCancel(Events.java:60)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.bukkit.listener.debounce.legacy.AbstractEventDebounce.debounce(AbstractEventDebounce.java:56)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.bukkit.listener.debounce.legacy.BlockEntityEventDebounce.debounce(BlockEntityEventDebounce.java:36)
[13:12:14 WARN]: at worldguard-bukkit-7.0.7-dist.jar//com.sk89q.worldguard.bukkit.listener.EventAbstractionListener.onEntityInteract(EventAbstractionListener.java:583)
[13:12:14 WARN]: at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor144.execute(Unknown Source)
[13:12:14 WARN]: at org.bukkit.plugin.EventExecutor.lambda$create$1(EventExecutor.java:75)
[13:12:14 WARN]: at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80)
[13:12:14 WARN]: at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70)
[13:12:14 WARN]: at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:629)
[13:12:14 WARN]: at net.minecraft.world.level.block.BlockPressurePlateWeighted.b(BlockPressurePlateWeighted.java:45)
[13:12:14 WARN]: at net.minecraft.world.level.block.BlockPressurePlateAbstract.a(BlockPressurePlateAbstract.java:82)
[13:12:14 WARN]: at net.minecraft.world.level.block.BlockPressurePlateAbstract.a(BlockPressurePlateAbstract.java:75)
[13:12:14 WARN]: at net.minecraft.world.level.block.state.BlockBase$BlockData.a(BlockBase.java:1003)
[13:12:14 WARN]: at net.minecraft.world.entity.Entity.aI(Entity.java:1432)
[13:12:14 WARN]: at net.minecraft.world.entity.Entity.ax(Entity.java:1168)
[13:12:14 WARN]: at net.minecraft.world.entity.Entity.a(Entity.java:1095)
[13:12:14 WARN]: at net.minecraft.world.entity.EntityLiving.a(EntityLiving.java:2814)
[13:12:14 WARN]: at net.minecraft.world.entity.EntityLiving.h(EntityLiving.java:2769)
[13:12:14 WARN]: at net.minecraft.world.entity.EntityLiving.w_(EntityLiving.java:3307)
[13:12:14 WARN]: at net.minecraft.world.entity.EntityInsentient.w_(EntityInsentient.java:628)
[13:12:14 WARN]: at net.minecraft.world.entity.EntityAgeable.w_(EntityAgeable.java:154)
[13:12:14 WARN]: at net.minecraft.world.entity.animal.EntityAnimal.w_(EntityAnimal.java:62)
[13:12:14 WARN]: at net.minecraft.world.entity.animal.EntityWolf.w_(EntityWolf.java:203)
[13:12:14 WARN]: at net.minecraft.world.entity.EntityLiving.k(EntityLiving.java:2917)
[13:12:14 WARN]: at net.minecraft.world.entity.EntityInsentient.k(EntityInsentient.java:396)
[13:12:14 WARN]: at net.minecraft.world.entity.animal.EntityWolf.k(EntityWolf.java:219)
[13:12:14 WARN]: at net.minecraft.server.level.WorldServer.a(WorldServer.java:1134)
[13:12:14 WARN]: at net.minecraft.world.level.World.a(World.java:936)
[13:12:14 WARN]: at net.minecraft.server.level.WorldServer.lambda$tick$5(WorldServer.java:673)
[13:12:14 WARN]: at net.minecraft.world.level.entity.EntityTickList.a(EntityTickList.java:43)
[13:12:14 WARN]: at net.minecraft.server.level.WorldServer.a(WorldServer.java:653)
[13:12:14 WARN]: at net.minecraft.server.MinecraftServer.b(MinecraftServer.java:1591)
[13:12:14 WARN]: at net.minecraft.server.dedicated.DedicatedServer.b(DedicatedServer.java:483)
[13:12:14 WARN]: at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:1455)
[13:12:14 WARN]: at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:1225)
[13:12:14 WARN]: at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:315)
[13:12:14 WARN]: at java.base/java.lang.Thread.run(Thread.java:833)
[13:12:24 WARN]: me.lucko.luckperms.bukkit.vault.ServerThreadLookupException: A Vault API request has been made on the main serv
Expected Behavior
No such errors should be occurring.
Reproduction Steps
- Add Worldedit, WorldGuard, LuckPerms and Vault
- Create a region i.e. /rg define test
- Set the Owner OR Member of said region to any group i.e. /rg addowner test g:default
- Tame a wolf and put the wolf on a weighted pressure plate inside the said region
- Owner of the wolf logs off, non-player joins (or stays online) and goes to said wolf
Optional WorldGuard-Report
No response
Anything Else?
In my instance of testing it, a restart was required before the 5th step outlined above.
Yes, but exactly that's the problem? Getting the owner from a dog with a offline owner is not time consuming.
Loading sync permissions is. Therefore we should avoid sync permission checks. Doesn't matter if it's LuckPerms or another permissions plugin.
no way to avoid this in spigot. even if we avoid the perms check, simply getting the owner of a tameable will cause a lookup on spigot's end.
yes, but we could avoid the permission lookup and only allow those lookups for online players. Add a config option for that (either deny, allow or make a permission query for indirect actions with offline players)
i was under the impression that simply doing getOwner loads the player's .dat file if they're not online?
Yes, you're correct. Paper added Tameable$getOwnerUniqueId()
which will avoid the loading from OfflinePlayers.
i'm aware, which is why my initial statement was "on spigot". we can get the uuid + check online for free on paper, if the player is offline treat the cause as unknown, otherwise proceed as normal.
on spigot this isn't possible - simply checking the owner will cause some lookup. we can of course check if the offlineplayer is offline and then treat the cause as unknown, but then we are back to still having caused an offlineplayer load.