CoreProtect

CoreProtect

1M Downloads

Custom player head and mob head (from creative menu) generate a warning "Owner is null"

Athar42 opened this issue · 8 comments

commented

Hi there,

With CoreProtect-Edge 23.1, I get this "error" each time I place or break a custom player head (same message, whatever the head is, tested with, at least, Iron Golem and Ghast heads) :

[18:56:29 WARN]: java.lang.NullPointerException: Cannot invoke "String.length()" because "owner" is null
[18:56:29 WARN]:        at CoreProtect-Edge-23.1.jar//net.coreprotect.paper.Paper_v1_20.getSkullOwner(Paper_v1_20.java:37)
[18:56:29 WARN]:        at CoreProtect-Edge-23.1.jar//net.coreprotect.database.logger.SkullPlaceLogger.log(SkullPlaceLogger.java:36)
[18:56:29 WARN]:        at CoreProtect-Edge-23.1.jar//net.coreprotect.consumer.process.BlockPlaceProcess.process(BlockPlaceProcess.java:20)
[18:56:29 WARN]:        at CoreProtect-Edge-23.1.jar//net.coreprotect.consumer.process.Process.processConsumer(Process.java:148)
[18:56:29 WARN]:        at CoreProtect-Edge-23.1.jar//net.coreprotect.consumer.Consumer.run(Consumer.java:133)
[18:56:29 WARN]:        at java.base/java.lang.Thread.run(Thread.java:1583)

image

Those heads are generated by a Vanilla Tweak datapack : More mob heads

Server : PaperMC version 1.21.1-build 85 (will update to build 89, but that will not change this behavior :D )
DataPack "More Mob Heads" version 2.14.0

Best regards,

commented

Looks like when the datapack generates player heads it’s not specifying an owner…
Will have to wait for a release that fixes it

commented

It’s a fairly simple fix.
I’ll take a look at making a PR.

commented

I assume the issue is there :
https://github.com/PlayPro/CoreProtect/blob/master/src/main/java/net/coreprotect/paper/Paper_v1_20.java

Funny thing is it appear that CO seems to add the owner if none are set.
Somehow, it didn't work as it's empty :D (with "setSkullOwner")

Edit : By looking at both :
https://github.com/PlayPro/CoreProtect/blob/master/src/main/java/net/coreprotect/database/logger/SkullPlaceLogger.java
and
https://github.com/PlayPro/CoreProtect/blob/master/src/main/java/net/coreprotect/database/logger/SkullBreakLogger.java

They only refer to the "getSkullOwner" function, but they check if the item as the "hasOwner" set to true :
if (skull.hasOwner()) {

Somehow, it pass this check even if the "owner" is set to "null".
Don't have more time to have a deeper look at it, but that has something to do with those 3 files :D

commented

Yeah, it’s probably some weird stuff that the datapack does.

commented

Same problem on: Paper 1.20.1 build 196 with CoreProtect 22.4

This is not only done by datapacks, but also by give commands or plugins when the owner is not specified.

If the fix is simple as described here, why hasn't it been done yet?

commented

Just an update, as discussing this on the official Discord too, latest error log output in the console using CO 23.2-RC2

[21:41:58 WARN]: java.lang.NullPointerException: Cannot invoke "String.length()" because "owner" is null
[21:41:58 WARN]:        at CoreProtect-Edge-23.2-RC2.jar//net.coreprotect.paper.Paper_v1_20.getSkullOwner(Paper_v1_20.java:37)
[21:41:58 WARN]:        at CoreProtect-Edge-23.2-RC2.jar//net.coreprotect.database.logger.SkullPlaceLogger.log(SkullPlaceLogger.java:36)
[21:41:58 WARN]:        at CoreProtect-Edge-23.2-RC2.jar//net.coreprotect.consumer.process.BlockPlaceProcess.process(BlockPlaceProcess.java:20)
[21:41:58 WARN]:        at CoreProtect-Edge-23.2-RC2.jar//net.coreprotect.consumer.process.Process.processConsumer(Process.java:149)
[21:41:58 WARN]:        at CoreProtect-Edge-23.2-RC2.jar//net.coreprotect.consumer.Consumer.run(Consumer.java:133)
[21:41:58 WARN]:        at java.base/java.lang.Thread.run(Thread.java:1583)

[21:41:59 WARN]: java.lang.NullPointerException: Cannot invoke "String.length()" because "owner" is null
[21:41:59 WARN]:        at CoreProtect-Edge-23.2-RC2.jar//net.coreprotect.paper.Paper_v1_20.getSkullOwner(Paper_v1_20.java:37)
[21:41:59 WARN]:        at CoreProtect-Edge-23.2-RC2.jar//net.coreprotect.database.logger.SkullBreakLogger.log(SkullBreakLogger.java:34)
[21:41:59 WARN]:        at CoreProtect-Edge-23.2-RC2.jar//net.coreprotect.consumer.process.BlockBreakProcess.process(BlockBreakProcess.java:21)
[21:41:59 WARN]:        at CoreProtect-Edge-23.2-RC2.jar//net.coreprotect.consumer.process.Process.processConsumer(Process.java:146)
[21:41:59 WARN]:        at CoreProtect-Edge-23.2-RC2.jar//net.coreprotect.consumer.Consumer.run(Consumer.java:133)
[21:41:59 WARN]:        at java.base/java.lang.Thread.run(Thread.java:1583)

Also, my servers has been since updated to 1.21.3 (build 80 at that moment)

commented

I did update the title as this also happen if you use the heads you can find in the creative menu.

Still an issue in CO 23.2-RC2

commented

Getting this issue as well in CO 23.2-RC2, never had this issue before this version actually (I believe my previous version was 23.0).