AcmeProject / WildernessTp

My WildernessTP plugin from spigot
GNU General Public License v3.0
13 stars 16 forks source link

Compatibility with custom biomes #93

Closed H3xtyy closed 3 years ago

H3xtyy commented 3 years ago

Hi, plugin is not working with custom biomes. (Made with datapacks) It's stuck on searching a safe place. image

One of new biomes: image

/version wild - 2.27-e5669bb /version - Purpur 1.16.4, Build 938

many-more-biomes-v0-2-3.zip

H3xtyy commented 3 years ago

Example how biome look's like in F3 image

Looking at the block image

RoboMWM commented 3 years ago

custom biomes show up as null in the bukkit API. Ugh. So I guess the check is failing because of a null check somewhere. What does debug output say (enable debug in config and then provide logs)

H3xtyy commented 3 years ago
[19:31:24] [Server thread/INFO]: H3xty issued server command: /rtp
[19:31:24] [Server thread/INFO]: [WildTP] Wild command called by CraftPlayer{name=H3xty}
[19:31:24] [Server thread/INFO]: [WildTP] Cooldown check requested for 23b84b2d-be3f-39c6-a8e1-8b3ea45462c3
[19:31:24] [Server thread/INFO]: [WildTP] Player has bypass perms
[19:31:24] [Server thread/INFO]: [WildTP] Wild teleport called for H3xty for world world
[19:31:24] [Server thread/INFO]: [WildTP] H3xty called /wild args 0
[19:31:24] [Server thread/INFO]: [WildTP] Cooldown check requested for 23b84b2d-be3f-39c6-a8e1-8b3ea45462c3
[19:31:24] [Server thread/INFO]: [WildTP] Player has bypass perms

That's all

RoboMWM commented 3 years ago

um, no extra messages for the retries?

RoboMWM commented 3 years ago

Oh... it just stops. And no exception?

H3xtyy commented 3 years ago

Oh... it just stops. And no exception?

Yes, no more messages after that.

RoboMWM commented 3 years ago

yea, this isn't making sense. a NPE should happen if the biome was a problem.

RoboMWM commented 3 years ago

Yea, it's stopping before it gets to the random teleport part. I'll add more debug messages, but I'm thinking it's freezing on the async chunk load.

RoboMWM commented 3 years ago

Please provide debug output with https://ci.appveyor.com/project/RoboMWM39862/wildernesstp/builds/37144464/artifacts

H3xtyy commented 3 years ago

Please provide debug output with https://ci.appveyor.com/project/RoboMWM39862/wildernesstp/builds/37144464/artifacts

[23:41:22] [Server thread/INFO]: H3xty issued server command: /rtp
[23:41:22] [Server thread/INFO]: [WildTP] Wild command called by CraftPlayer{name=H3xty}
[23:41:22] [Server thread/INFO]: [WildTP] starting cook()
[23:41:22] [Server thread/INFO]: [WildTP] Cooldown check requested for 23b84b2d-be3f-39c6-a8e1-8b3ea45462c3
[23:41:22] [Server thread/INFO]: [WildTP] Player has bypass perms
[23:41:22] [Server thread/INFO]: [WildTP] Wild teleport called for H3xty for world world
[23:41:22] [Server thread/INFO]: [WildTP] H3xty called /wild args 0
[23:41:22] [Server thread/INFO]: [WildTP] Cooldown check requested for 23b84b2d-be3f-39c6-a8e1-8b3ea45462c3
[23:41:22] [Server thread/INFO]: [WildTP] Player has bypass perms
[23:41:22] [Server thread/INFO]: [WildTP] starting getRandomeLocation()
[23:41:22] [Server thread/INFO]: [WildTP] started search with Location{world=CraftWorld{name=world},x=246.0,y=10.0,z=-661.0,pitch=0.0,yaw=0.0}
[23:41:22] [Server thread/INFO]: [WildTP] starting chekar with Location{world=CraftWorld{name=world},x=246.0,y=10.0,z=-661.0,pitch=0.0,yaw=0.0}
RoboMWM commented 3 years ago

wow, that's even more strange...

RoboMWM commented 3 years ago

I wonder if purpur is hanging now, hmm. will add a couple more debug statements.

RoboMWM commented 3 years ago

ok, so it isn't even getting to the claim check... so something weird is going on here if this isn't a nether world.

RoboMWM commented 3 years ago

debug from this? https://ci.appveyor.com/project/RoboMWM39862/wildernesstp/builds/37146709/artifacts

RoboMWM commented 3 years ago

also include your config, thanks.

H3xtyy commented 3 years ago

debug from this? https://ci.appveyor.com/project/RoboMWM39862/wildernesstp/builds/37146709/artifacts

[12:43:09] [Server thread/INFO]: H3xty issued server command: /rtp
[12:43:09] [Server thread/INFO]: [WildTP] Wild command called by CraftPlayer{name=H3xty}
[12:43:09] [Server thread/INFO]: [WildTP] starting cook()
[12:43:09] [Server thread/INFO]: [WildTP] Cooldown check requested for 23b84b2d-be3f-39c6-a8e1-8b3ea45462c3
[12:43:09] [Server thread/INFO]: [WildTP] Player has bypass perms
[12:43:09] [Server thread/INFO]: [WildTP] Wild teleport called for H3xty for world world
[12:43:09] [Server thread/INFO]: [WildTP] H3xty called /wild args 0
[12:43:09] [Server thread/INFO]: [WildTP] Cooldown check requested for 23b84b2d-be3f-39c6-a8e1-8b3ea45462c3
[12:43:09] [Server thread/INFO]: [WildTP] Player has bypass perms
[12:43:09] [Server thread/INFO]: [WildTP] starting getRandomeLocation()
[12:43:09] [Server thread/INFO]: [WildTP] started search with Location{world=CraftWorld{name=world},x=-846.0,y=10.0,z=-341.0,pitch=0.0,yaw=0.0}
[12:43:09] [Server thread/INFO]: [WildTP] starting chekar with Location{world=CraftWorld{name=world},x=-846.0,y=10.0,z=-341.0,pitch=0.0,yaw=0.0} first checking biome blacklist

Config: https://paste.gg/p/anonymous/43b8945c4b074da981e190c33db2eb80

RoboMWM commented 3 years ago

Ok, yea, it's hanging on the biome check. It shouldn't be, it's just a simple string check...

https://github.com/AcmeProject/WildernessTp/blob/927aff687a5c92604ee6a4765acb6e8662f6d7a4/src/main/java/net/poweredbyhate/wildtp/WildWarrantTax.java#L101-L103

RoboMWM commented 3 years ago

Now, can you check what happens when using tuinity or paper? If that's even possible...

RoboMWM commented 3 years ago

Also - is everything else still working fine? Like, you can break blocks and run other commands or is the entire server frozen after running the command?

H3xtyy commented 3 years ago

Now, can you check what happens when using tuinity or paper? If that's even possible...

Tested on tuinity aswell.

Also - is everything else still working fine? Like, you can break blocks and run other commands or is the entire server frozen after running the command?

Yes, I can "cancel" this teleporting by moving myself and server is working fine all the time

H3xtyy commented 3 years ago

Now, can you check what happens when using tuinity or paper? If that's even possible...

Tested on tuinity aswell, same problem.

Also - is everything else still working fine? Like, you can break blocks and run other commands or is the entire server frozen after running the command?

Yes, I can "cancel" this teleporting by moving myself and server is working fine all the time

H3xtyy commented 3 years ago

Btw, I tested tpr command from essentials and teleporting is working. (tpr has biom blacklist too)

RoboMWM commented 3 years ago

Hmm ok, that means operations are not being done synchronously for some reason. Also, billy did mention that biomes from datapacks are slower since they aren't natively supported in Bukkit.

RoboMWM commented 3 years ago

debug with this? https://ci.appveyor.com/project/RoboMWM39862/wildernesstp/builds/37156649/artifacts

H3xtyy commented 3 years ago

biomes from datapacks are slower

What does that mean? This biomes will slow down my server?

RoboMWM commented 3 years ago

any bukkit plugins that interact with custom biomes will have issues yea. But that's according to billy. I personally don't know as I have not touched datapacks.

I'd like to verify if it's due to asynchronous access though, if you could try the latest debug version I posted please, thanks!

H3xtyy commented 3 years ago

any bukkit plugins that interact with custom biomes will have issues yea. But that's according to billy. I personally don't know as I have not touched datapacks.

I'd like to verify if it's due to asynchronous access though, if you could try the latest debug version I posted please, thanks!

[19:34:13] [Server thread/INFO]: H3xty issued server command: /rtp
[19:34:13] [Server thread/INFO]: [WildTP] Wild command called by CraftPlayer{name=H3xty}
[19:34:13] [Server thread/INFO]: [WildTP] starting cook()
[19:34:13] [Server thread/INFO]: [WildTP] Cooldown check requested for 23b84b2d-be3f-39c6-a8e1-8b3ea45462c3
[19:34:13] [Server thread/INFO]: [WildTP] Player has bypass perms
[19:34:13] [Server thread/INFO]: [WildTP] Wild teleport called for H3xty for world world
[19:34:13] [Server thread/INFO]: [WildTP] H3xty called /wild args 0
[19:34:13] [Server thread/INFO]: [WildTP] Cooldown check requested for 23b84b2d-be3f-39c6-a8e1-8b3ea45462c3
[19:34:13] [Server thread/INFO]: [WildTP] Player has bypass perms
[19:34:13] [Server thread/INFO]: [WildTP] starting getRandomeLocation()
[19:34:13] [Server thread/INFO]: [WildTP] started search with Location{world=CraftWorld{name=world},x=494.0,y=10.0,z=-369.0,pitch=0.0,yaw=0.0}
[19:34:13] [Server thread/INFO]: [WildTP] primary thread? true
[19:34:13] [Server thread/INFO]: [WildTP] starting chekar with Location{world=CraftWorld{name=world},x=494.0,y=10.0,z=-369.0,pitch=0.0,yaw=0.0} first checking biome blacklist
[19:34:13] [Server thread/INFO]: [WildTP] primary thread? true
RoboMWM commented 3 years ago

that's... strange.... if it was actually frozen on the main thread as this debug log indicates, then you wouldn't be able to move and cancel it... something else is going on.

RoboMWM commented 3 years ago

alright... hopefully this debug build should pinpoint what and where the issue is occurring... https://ci.appveyor.com/project/RoboMWM39862/wildernesstp/builds/37160989/artifacts

H3xtyy commented 3 years ago

alright... hopefully this debug build should pinpoint what and where the issue is occurring... https://ci.appveyor.com/project/RoboMWM39862/wildernesstp/builds/37160989/artifacts

[14:32:39] [Server thread/INFO]: H3xty issued server command: /rtp
[14:32:39] [Server thread/INFO]: [WildTP] Wild command called by CraftPlayer{name=H3xty}
[14:32:39] [Server thread/INFO]: [WildTP] starting cook()
[14:32:39] [Server thread/INFO]: [WildTP] Cooldown check requested for 23b84b2d-be3f-39c6-a8e1-8b3ea45462c3
[14:32:39] [Server thread/INFO]: [WildTP] Player has bypass perms
[14:32:39] [Server thread/INFO]: [WildTP] Wild teleport called for H3xty for world world
[14:32:39] [Server thread/INFO]: [WildTP] H3xty called /wild args 0
[14:32:39] [Server thread/INFO]: [WildTP] Cooldown check requested for 23b84b2d-be3f-39c6-a8e1-8b3ea45462c3
[14:32:39] [Server thread/INFO]: [WildTP] Player has bypass perms
[14:32:39] [Server thread/INFO]: [WildTP] starting getRandomeLocation()
[14:32:39] [Server thread/INFO]: [WildTP] started search with Location{world=CraftWorld{name=world},x=59.0,y=10.0,z=-918.0,pitch=0.0,yaw=0.0}
[14:32:39] [Server thread/INFO]: [WildTP] primary thread? true
[14:32:39] [Server thread/INFO]: [WildTP] starting chekar with Location{world=CraftWorld{name=world},x=59.0,y=10.0,z=-918.0,pitch=0.0,yaw=0.0} first checking biome blacklist
[14:32:39] [Server thread/INFO]: [WildTP] primary thread? true
[14:32:39] [Server thread/INFO]: [WildTP] java.base/java.lang.Thread.getStackTrace(Thread.java:1607)
[14:32:39] [Server thread/INFO]: [WildTP] net.poweredbyhate.wildtp.WildWarrantTax.chekar(WildWarrantTax.java:104)
[14:32:39] [Server thread/INFO]: [WildTP] net.poweredbyhate.wildtp.WildWarrantTax.lambda$search$0(WildWarrantTax.java:71)
[14:32:39] [Server thread/INFO]: [WildTP] java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:642)
[14:32:39] [Server thread/INFO]: [WildTP] java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
[14:32:39] [Server thread/INFO]: [WildTP] java.base/java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:610)
[14:32:39] [Server thread/INFO]: [WildTP] java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1085)
[14:32:39] [Server thread/INFO]: [WildTP] java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:478)
[14:32:39] [Server thread/INFO]: [WildTP] net.minecraft.server.v1_16_R3.IAsyncTaskHandler.execute(IAsyncTaskHandler.java:89)
[14:32:39] [Server thread/INFO]: [WildTP] java.base/java.util.concurrent.CompletableFuture$UniCompletion.claim(CompletableFuture.java:568)
[14:32:39] [Server thread/INFO]: [WildTP] java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1069)
[14:32:39] [Server thread/INFO]: [WildTP] java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
[14:32:39] [Server thread/INFO]: [WildTP] java.base/java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:610)
[14:32:39] [Server thread/INFO]: [WildTP] java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1085)
[14:32:39] [Server thread/INFO]: [WildTP] java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:478)
[14:32:39] [Server thread/INFO]: [WildTP] net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeTask(IAsyncTaskHandler.java:136)
[14:32:39] [Server thread/INFO]: [WildTP] net.minecraft.server.v1_16_R3.ChunkProviderServer$a.executeTask(ChunkProviderServer.java:1210)
[14:32:39] [Server thread/INFO]: [WildTP] net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeNext(IAsyncTaskHandler.java:109)
[14:32:39] [Server thread/INFO]: [WildTP] net.minecraft.server.v1_16_R3.ChunkProviderServer$a.executeNext(ChunkProviderServer.java:1224)
[14:32:39] [Server thread/INFO]: [WildTP] net.minecraft.server.v1_16_R3.ChunkProviderServer.runTasks(ChunkProviderServer.java:814)
[14:32:39] [Server thread/INFO]: [WildTP] net.minecraft.server.v1_16_R3.MinecraftServer.bb(MinecraftServer.java:1212)
[14:32:39] [Server thread/INFO]: [WildTP] net.minecraft.server.v1_16_R3.MinecraftServer.executeNext(MinecraftServer.java:1195)
[14:32:39] [Server thread/INFO]: [WildTP] net.minecraft.server.v1_16_R3.IAsyncTaskHandler.awaitTasks(IAsyncTaskHandler.java:119)
[14:32:39] [Server thread/INFO]: [WildTP] net.minecraft.server.v1_16_R3.MinecraftServer.sleepForTick(MinecraftServer.java:1171)
[14:32:39] [Server thread/INFO]: [WildTP] net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:1015)
[14:32:39] [Server thread/INFO]: [WildTP] net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:175)
[14:32:39] [Server thread/INFO]: [WildTP] java.base/java.lang.Thread.run(Thread.java:834)
RoboMWM commented 3 years ago

and nothing else after the stacktrace?

If so, then that narrows it down straight to location.getBlock().getBiome().toString()

I guess I could do one more debug to isolate exactly which method causes this "freeze." I wonder if it has something to do with the chunk perhaps being queued for unload, or the chunk really isn't being loaded... idk, these are guesses.

Ok, so one more debug attempt: first, debug as you did normally with this new build: https://ci.appveyor.com/project/RoboMWM39862/wildernesstp/builds/37173483/artifacts After getting that and its log, I want you to perform another attempt, but when it freezes, use another player to teleport to the location it's trying to check (so the chunk is loaded by the other player) and see if that "unfreezes" the check (and provide log of entire thing).

Btw I didn't miss your comment about essentials rtp, I've seen their class before but I'll take another look to see if they're doing anything different. Update: just checked, and they do the same thing but they don't do a "toString". So the debug output will be helpful to determine if that's really what's going on...

H3xtyy commented 3 years ago
[16:43:48] [Server thread/INFO]: H3xty issued server command: /rtp
[16:43:48] [Server thread/INFO]: [WildTP] Wild command called by CraftPlayer{name=H3xty}
[16:43:48] [Server thread/INFO]: [WildTP] starting cook()
[16:43:48] [Server thread/INFO]: [WildTP] Cooldown check requested for 23b84b2d-be3f-39c6-a8e1-8b3ea45462c3
[16:43:48] [Server thread/INFO]: [WildTP] Player has bypass perms
[16:43:48] [Server thread/INFO]: [WildTP] Wild teleport called for H3xty for world world
[16:43:48] [Server thread/INFO]: [WildTP] H3xty called /wild args 0
[16:43:48] [Server thread/INFO]: [WildTP] Cooldown check requested for 23b84b2d-be3f-39c6-a8e1-8b3ea45462c3
[16:43:48] [Server thread/INFO]: [WildTP] Player has bypass perms
[16:43:48] [Server thread/INFO]: [WildTP] starting getRandomeLocation()
[16:43:48] [Server thread/INFO]: [WildTP] started search with Location{world=CraftWorld{name=world},x=997.0,y=10.0,z=-748.0,pitch=0.0,yaw=0.0}
[16:43:48] [Server thread/INFO]: [WildTP] primary thread? true
[16:43:48] [Server thread/INFO]: [WildTP] starting chekar with Location{world=CraftWorld{name=world},x=997.0,y=10.0,z=-748.0,pitch=0.0,yaw=0.0} first checking biome blacklist
[16:43:48] [Server thread/INFO]: [WildTP] primary thread? true
[16:43:48] [Server thread/INFO]: [WildTP] java.base/java.lang.Thread.getStackTrace(Thread.java:1607)
[16:43:48] [Server thread/INFO]: [WildTP] net.poweredbyhate.wildtp.WildWarrantTax.chekar(WildWarrantTax.java:104)
[16:43:48] [Server thread/INFO]: [WildTP] net.poweredbyhate.wildtp.WildWarrantTax.lambda$search$0(WildWarrantTax.java:71)
[16:43:48] [Server thread/INFO]: [WildTP] java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:642)
[16:43:48] [Server thread/INFO]: [WildTP] java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
[16:43:48] [Server thread/INFO]: [WildTP] java.base/java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:610)
[16:43:48] [Server thread/INFO]: [WildTP] java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1085)
[16:43:48] [Server thread/INFO]: [WildTP] java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:478)
[16:43:48] [Server thread/INFO]: [WildTP] net.minecraft.server.v1_16_R3.IAsyncTaskHandler.execute(IAsyncTaskHandler.java:89)
[16:43:48] [Server thread/INFO]: [WildTP] java.base/java.util.concurrent.CompletableFuture$UniCompletion.claim(CompletableFuture.java:568)
[16:43:48] [Server thread/INFO]: [WildTP] java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1069)
[16:43:48] [Server thread/INFO]: [WildTP] java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
[16:43:48] [Server thread/INFO]: [WildTP] java.base/java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:610)
[16:43:48] [Server thread/INFO]: [WildTP] java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1085)
[16:43:48] [Server thread/INFO]: [WildTP] java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:478)
[16:43:48] [Server thread/INFO]: [WildTP] net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeTask(IAsyncTaskHandler.java:136)
[16:43:48] [Server thread/INFO]: [WildTP] net.minecraft.server.v1_16_R3.ChunkProviderServer$a.executeTask(ChunkProviderServer.java:1210)
[16:43:48] [Server thread/INFO]: [WildTP] net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeNext(IAsyncTaskHandler.java:109)
[16:43:48] [Server thread/INFO]: [WildTP] net.minecraft.server.v1_16_R3.ChunkProviderServer$a.executeNext(ChunkProviderServer.java:1224)
[16:43:48] [Server thread/INFO]: [WildTP] net.minecraft.server.v1_16_R3.ChunkProviderServer.runTasks(ChunkProviderServer.java:814)
[16:43:48] [Server thread/INFO]: [WildTP] net.minecraft.server.v1_16_R3.MinecraftServer.bb(MinecraftServer.java:1212)
[16:43:48] [Server thread/INFO]: [WildTP] net.minecraft.server.v1_16_R3.MinecraftServer.executeNext(MinecraftServer.java:1195)
[16:43:48] [Server thread/INFO]: [WildTP] net.minecraft.server.v1_16_R3.IAsyncTaskHandler.awaitTasks(IAsyncTaskHandler.java:119)
[16:43:48] [Server thread/INFO]: [WildTP] net.minecraft.server.v1_16_R3.MinecraftServer.sleepForTick(MinecraftServer.java:1171)
[16:43:48] [Server thread/INFO]: [WildTP] net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:1015)
[16:43:48] [Server thread/INFO]: [WildTP] net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:175)
[16:43:48] [Server thread/INFO]: [WildTP] java.base/java.lang.Thread.run(Thread.java:834)
[16:43:48] [Server thread/INFO]: [WildTP] block: CraftBlock{pos=BlockPosition{x=997, y=10, z=-748},type=STONE,data=Block{minecraft:stone},fluid=net.minecraft.server.v1_16_R3.FluidTypeEmpty@9d7ccfe}
[16:43:48] [Server thread/INFO]: [WildTP] biome: null

I want you to perform another attempt, but when it freezes, use another player to teleport to the location it's trying to check (so the chunk is loaded by the other player) and see if that "unfreezes" the check (and provide log of entire thing).

It didn't unfreeze, no more logs after teleporting second player.

RoboMWM commented 3 years ago

Ok, yup, it's "freezing" on the NPE when calling toString. But it should print an exception. Not just... "freeze." Thank you. Will try to figure out what to do from here...

RoboMWM commented 3 years ago

I'm sure it's throwing an exception, but I don't see any try catch anywhere at all that would silence this exception from happening. I'm not sure what is swallowing the error. So I've just put a try-catch in there for NPE just to see if this assumption is right.

This is another debug build, but if my assumption is correct, this will also be a working build. Working or not, debug logs please. Thank you! https://ci.appveyor.com/project/RoboMWM39862/wildernesstp/builds/37185210/artifacts

H3xtyy commented 3 years ago
[11:04:34] [Server thread/INFO]: H3xty issued server command: /rtp
[11:04:34] [Server thread/INFO]: [WildTP] Wild command called by CraftPlayer{name=H3xty}
[11:04:34] [Server thread/INFO]: [WildTP] starting cook()
[11:04:34] [Server thread/INFO]: [WildTP] Cooldown check requested for 23b84b2d-be3f-39c6-a8e1-8b3ea45462c3
[11:04:34] [Server thread/INFO]: [WildTP] Player has bypass perms
[11:04:34] [Server thread/INFO]: [WildTP] Wild teleport called for H3xty for world world
[11:04:34] [Server thread/INFO]: [WildTP] H3xty called /wild args 0
[11:04:35] [Server thread/INFO]: [WildTP] Cooldown check requested for 23b84b2d-be3f-39c6-a8e1-8b3ea45462c3
[11:04:35] [Server thread/INFO]: [WildTP] Player has bypass perms
[11:04:35] [Server thread/INFO]: [WildTP] starting getRandomeLocation()
[11:04:35] [Server thread/INFO]: [WildTP] started search with Location{world=CraftWorld{name=world},x=-187.0,y=10.0,z=-418.0,pitch=0.0,yaw=0.0}
[11:04:35] [Server thread/INFO]: [WildTP] primary thread? true
[11:04:35] [Server thread/INFO]: [WildTP] starting chekar with Location{world=CraftWorld{name=world},x=-187.0,y=10.0,z=-418.0,pitch=0.0,yaw=0.0} first checking biome blacklist
[11:04:35] [Server thread/INFO]: [WildTP] primary thread? true
[11:04:35] [Server thread/WARN]: java.lang.Exception: Stack trace
[11:04:35] [Server thread/WARN]:    at java.base/java.lang.Thread.dumpStack(Thread.java:1388)
[11:04:35] [Server thread/WARN]:    at net.poweredbyhate.wildtp.WildWarrantTax.chekar(WildWarrantTax.java:104)
[11:04:35] [Server thread/WARN]:    at net.poweredbyhate.wildtp.WildWarrantTax.lambda$search$0(WildWarrantTax.java:71)
[11:04:35] [Server thread/WARN]:    at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:642)
[11:04:35] [Server thread/WARN]:    at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
[11:04:35] [Server thread/WARN]:    at java.base/java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:610)
[11:04:35] [Server thread/WARN]:    at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1085)
[11:04:35] [Server thread/WARN]:    at java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:478)
[11:04:35] [Server thread/WARN]:    at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.execute(IAsyncTaskHandler.java:89)
[11:04:35] [Server thread/WARN]:    at java.base/java.util.concurrent.CompletableFuture$UniCompletion.claim(CompletableFuture.java:568)
[11:04:35] [Server thread/WARN]:    at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1069)
[11:04:35] [Server thread/WARN]:    at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
[11:04:35] [Server thread/WARN]:    at java.base/java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:610)
[11:04:35] [Server thread/WARN]:    at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1085)
[11:04:35] [Server thread/WARN]:    at java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:478)
[11:04:35] [Server thread/WARN]:    at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeTask(IAsyncTaskHandler.java:136)
[11:04:35] [Server thread/WARN]:    at net.minecraft.server.v1_16_R3.ChunkProviderServer$a.executeTask(ChunkProviderServer.java:1210)
[11:04:35] [Server thread/WARN]:    at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeNext(IAsyncTaskHandler.java:109)
[11:04:35] [Server thread/WARN]:    at net.minecraft.server.v1_16_R3.ChunkProviderServer$a.executeNext(ChunkProviderServer.java:1224)
[11:04:35] [Server thread/WARN]:    at net.minecraft.server.v1_16_R3.ChunkProviderServer.runTasks(ChunkProviderServer.java:814)
[11:04:35] [Server thread/WARN]:    at net.minecraft.server.v1_16_R3.MinecraftServer.bb(MinecraftServer.java:1212)
[11:04:35] [Server thread/WARN]:    at net.minecraft.server.v1_16_R3.MinecraftServer.executeNext(MinecraftServer.java:1195)
[11:04:35] [Server thread/WARN]:    at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.awaitTasks(IAsyncTaskHandler.java:119)
[11:04:35] [Server thread/WARN]:    at net.minecraft.server.v1_16_R3.MinecraftServer.sleepForTick(MinecraftServer.java:1171)
[11:04:35] [Server thread/WARN]:    at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:1015)
[11:04:35] [Server thread/WARN]:    at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:175)
[11:04:35] [Server thread/WARN]:    at java.base/java.lang.Thread.run(Thread.java:834)
[11:04:35] [Server thread/INFO]: [WildTP] block: CraftBlock{pos=BlockPosition{x=-187, y=10, z=-418},type=LAVA,data=Block{minecraft:lava}[level=0],fluid=net.minecraft.server.v1_16_R3.FluidTypeLava$b@73a19967[falling=false]}
[11:04:35] [Server thread/INFO]: [WildTP] biome: null
[11:04:35] [Server thread/INFO]: [WildTP] well, something was indeed null and threw an exception.
[11:04:35] [Server thread/WARN]: java.lang.NullPointerException
[11:04:35] [Server thread/WARN]:    at net.poweredbyhate.wildtp.WildWarrantTax.chekar(WildWarrantTax.java:110)
[11:04:35] [Server thread/WARN]:    at net.poweredbyhate.wildtp.WildWarrantTax.lambda$search$0(WildWarrantTax.java:71)
[11:04:35] [Server thread/WARN]:    at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:642)
[11:04:35] [Server thread/WARN]:    at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
[11:04:35] [Server thread/WARN]:    at java.base/java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:610)
[11:04:35] [Server thread/WARN]:    at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1085)
[11:04:35] [Server thread/WARN]:    at java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:478)
[11:04:35] [Server thread/WARN]:    at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.execute(IAsyncTaskHandler.java:89)
[11:04:35] [Server thread/WARN]:    at java.base/java.util.concurrent.CompletableFuture$UniCompletion.claim(CompletableFuture.java:568)
[11:04:35] [Server thread/WARN]:    at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1069)
[11:04:35] [Server thread/WARN]:    at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
[11:04:35] [Server thread/WARN]:    at java.base/java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:610)
[11:04:35] [Server thread/WARN]:    at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1085)
[11:04:35] [Server thread/WARN]:    at java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:478)
[11:04:35] [Server thread/WARN]:    at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeTask(IAsyncTaskHandler.java:136)
[11:04:35] [Server thread/WARN]:    at net.minecraft.server.v1_16_R3.ChunkProviderServer$a.executeTask(ChunkProviderServer.java:1210)
[11:04:35] [Server thread/WARN]:    at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeNext(IAsyncTaskHandler.java:109)
[11:04:35] [Server thread/WARN]:    at net.minecraft.server.v1_16_R3.ChunkProviderServer$a.executeNext(ChunkProviderServer.java:1224)
[11:04:35] [Server thread/WARN]:    at net.minecraft.server.v1_16_R3.ChunkProviderServer.runTasks(ChunkProviderServer.java:814)
[11:04:35] [Server thread/WARN]:    at net.minecraft.server.v1_16_R3.MinecraftServer.bb(MinecraftServer.java:1212)
[11:04:35] [Server thread/WARN]:    at net.minecraft.server.v1_16_R3.MinecraftServer.executeNext(MinecraftServer.java:1195)
[11:04:35] [Server thread/WARN]:    at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.awaitTasks(IAsyncTaskHandler.java:119)
[11:04:35] [Server thread/WARN]:    at net.minecraft.server.v1_16_R3.MinecraftServer.sleepForTick(MinecraftServer.java:1171)
[11:04:35] [Server thread/WARN]:    at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:1015)
[11:04:35] [Server thread/WARN]:    at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:175)
[11:04:35] [Server thread/WARN]:    at java.base/java.lang.Thread.run(Thread.java:834)
[11:04:35] [Server thread/INFO]: [WildTP] Biome not banned, now set y (also checks if this is a vanilla (or doubleheight) nether.
[11:04:35] [Server thread/INFO]: [WildTP] world is not vanilla/doubleheight nether, find highest y block with a totally reliable and never constantly changing Bukkit method
[11:04:35] [Server thread/INFO]: [WildTP] am chekinLocation{world=CraftWorld{name=world},x=-187.0,y=68.0,z=-418.0,pitch=0.0,yaw=0.0}
[11:04:35] [Server thread/INFO]: [WildTP] Calling preTeleportEvent
[11:04:35] [Server thread/INFO]: [WildTP] Called preWildTeleportEvent
[11:04:35] [Server thread/INFO]: [WildTP] preping 2 port 2 Location{world=CraftWorld{name=world},x=-187.0,y=69.0,z=-418.0,pitch=0.0,yaw=0.0}
[11:04:35] [Server thread/INFO]: [WildTP] Teleporting H3xtyLocation{world=CraftWorld{name=world},x=-187.0,y=69.0,z=-418.0,pitch=0.0,yaw=0.0}
[11:04:35] [Server thread/INFO]: [WildTP] H3xty Teleported to Location{world=CraftWorld{name=world},x=-186.5,y=69.5,z=-417.5,pitch=0.0,yaw=65.69619}

Plugin is not freezing anymore

RoboMWM commented 3 years ago

Ok, thanks. Somehow the NullPointerException is being thrown, but it's being caught somewhere and silenced. Are you using any other plugins?

Hmm, I wonder if it's because of the @NotNull annotation on Block#getBiome. https://hub.spigotmc.org/javadocs/spigot/org/bukkit/block/Block.html#getBiome() Not sure if Java would silence a stacktrace cuz of an annotation though...

RoboMWM commented 3 years ago

Ok, this is interesting. I found another issue related to biomes that was reported to a different project a few months ago: https://github.com/MLG-Fortress/ExtraHardMode/issues/243

As you can see there, it does throw a NPE, but it's within craftbukkit (spigot). So... I wonder if Purpur does something different where getBiome is allowed to return null, but in spigot it just throws an NPE within CB instead. Still doesn't explain the lack of a NPE being thrown when toString is called on it tho.

RoboMWM commented 3 years ago

Alright, so it's not Purpur, it's spigot. If BiomeBase is null he'll return null https://hub.spigotmc.org/stash/projects/SPIGOT/repos/craftbukkit/browse/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java#497 thus invalidating his annotation. So he should fix Block#getBiome Bukkit annotation to @Nullable due to this...

RoboMWM commented 3 years ago

in the meantime, I'll stick a null check in there.