InventivetalentDev / MapManager

MIT License
54 stars 20 forks source link

Wrong NMS field name on 1.18 #86

Closed stijnb1234 closed 2 years ago

stijnb1234 commented 2 years ago

Describe the bug The latest build fixes a lot of issues for 1.18, but I'm still getting an error. This issue is based on #84. I'm running v1.8.6-SNAPSHOT of MapManager.

To Reproduce

  1. Update a map with MapManager.
  2. See the error in the console.

Expected behavior It should not give me an error.

Additional context

[11:02:09 WARN]: [MapManager] Task #7376 for MapManager v1.8.6-SNAPSHOT generated an exception
java.lang.RuntimeException: java.lang.RuntimeException: java.lang.NullPointerException: Cannot invoke "java.lang.reflect.Field.get(Object)" because "this.field" is null
at org.inventivetalent.mapmanager.DefaultMapWrapper.sendItemFramePacket(DefaultMapWrapper.java:447) ~[MapManager_v1.8.6-SNAPSHOT.jar:?]
at org.inventivetalent.mapmanager.DefaultMapWrapper$1.lambda$showInFrame$0(DefaultMapWrapper.java:252) ~[MapManager_v1.8.6-SNAPSHOT.jar:?]
at org.bukkit.craftbukkit.v1_18_R1.scheduler.CraftTask.run(CraftTask.java:101) ~[paper-1.18.1.jar:git-Paper-173]
at org.bukkit.craftbukkit.v1_18_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:483) ~[paper-1.18.1.jar:git-Paper-173]
at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1547) ~[paper-1.18.1.jar:git-Paper-173]
at net.minecraft.server.dedicated.DedicatedServer.tickChildren(DedicatedServer.java:480) ~[paper-1.18.1.jar:git-Paper-173]
at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1470) ~[paper-1.18.1.jar:git-Paper-173]
at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1264) ~[paper-1.18.1.jar:git-Paper-173]
at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:317) ~[paper-1.18.1.jar:git-Paper-173]
at java.lang.Thread.run(Thread.java:833) ~[?:?]
Caused by: java.lang.RuntimeException: java.lang.NullPointerException: Cannot invoke "java.lang.reflect.Field.get(Object)" because "this.field" is null
at org.inventivetalent.reflection.accessor.FieldAccessor.get(FieldAccessor.java:43) ~[MapManager_v1.8.6-SNAPSHOT.jar:?]
at org.inventivetalent.mapmanager.DefaultMapWrapper.sendItemFramePacket(DefaultMapWrapper.java:422) ~[MapManager_v1.8.6-SNAPSHOT.jar:?]
... 9 more
Caused by: java.lang.NullPointerException: Cannot invoke "java.lang.reflect.Field.get(Object)" because "this.field" is null
at org.inventivetalent.reflection.accessor.FieldAccessor.get(FieldAccessor.java:41) ~[MapManager_v1.8.6-SNAPSHOT.jar:?]
at org.inventivetalent.mapmanager.DefaultMapWrapper.sendItemFramePacket(DefaultMapWrapper.java:422) ~[MapManager_v1.8.6-SNAPSHOT.jar:?]
... 9 more
stijnb1234 commented 2 years ago

It's caused by this code: https://github.com/InventivetalentDev/MapManager/blob/6bbc4438ead7e9cc989e2b9258bbde65101c8958/src/org/inventivetalent/mapmanager/DefaultMapWrapper.java#L420-L427

I think the function is renamed on 1.18 (because of the obfuscation of NMS).

InventivetalentDev commented 2 years ago

seems to have the same field name still, not sure what's causing it

stijnb1234 commented 2 years ago

In v1_18_R1 and v1_18_R2?

InventivetalentDev commented 2 years ago

nvm it does have a different name just in R1, back to the old one in R2 🙃

stijnb1234 commented 2 years ago

Fixed in c8e04fbbb5267c70f4696cabdff2122760dbbdfb

stijnb1234 commented 2 years ago

Sadly it's not fixed.

[17:29:49] [Server thread/WARN]: [MapManager] Task #4165 for MapManager v1.8.7-SNAPSHOT generated an exception
java.lang.RuntimeException: java.lang.RuntimeException: java.lang.NullPointerException: Cannot invoke "java.lang.reflect.Field.get(Object)" because "this.field" is null
    at org.inventivetalent.mapmanager.DefaultMapWrapper.sendItemFramePacket(DefaultMapWrapper.java:451) ~[MapManager_v1.8.7-SNAPSHOT.jar:?]
    at org.inventivetalent.mapmanager.DefaultMapWrapper$1.lambda$showInFrame$0(DefaultMapWrapper.java:252) ~[MapManager_v1.8.7-SNAPSHOT.jar:?]
    at org.bukkit.craftbukkit.v1_18_R1.scheduler.CraftTask.run(CraftTask.java:101) ~[paper-1.18.1.jar:git-Paper-77]
    at org.bukkit.craftbukkit.v1_18_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:483) ~[paper-1.18.1.jar:git-Paper-77]
    at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1547) ~[paper-1.18.1.jar:git-Paper-77]
    at net.minecraft.server.dedicated.DedicatedServer.tickChildren(DedicatedServer.java:480) ~[paper-1.18.1.jar:git-Paper-77]
    at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1470) ~[paper-1.18.1.jar:git-Paper-77]
    at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1264) ~[paper-1.18.1.jar:git-Paper-77]
    at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:317) ~[paper-1.18.1.jar:git-Paper-77]
    at java.lang.Thread.run(Thread.java:833) ~[?:?]
Caused by: java.lang.RuntimeException: java.lang.NullPointerException: Cannot invoke "java.lang.reflect.Field.get(Object)" because "this.field" is null
    at org.inventivetalent.reflection.accessor.FieldAccessor.get(FieldAccessor.java:43) ~[MapManager_v1.8.7-SNAPSHOT.jar:?]
    at org.inventivetalent.mapmanager.DefaultMapWrapper.sendItemFramePacket(DefaultMapWrapper.java:425) ~[MapManager_v1.8.7-SNAPSHOT.jar:?]
    ... 9 more
Caused by: java.lang.NullPointerException: Cannot invoke "java.lang.reflect.Field.get(Object)" because "this.field" is null
    at org.inventivetalent.reflection.accessor.FieldAccessor.get(FieldAccessor.java:41) ~[MapManager_v1.8.7-SNAPSHOT.jar:?]
    at org.inventivetalent.mapmanager.DefaultMapWrapper.sendItemFramePacket(DefaultMapWrapper.java:425) ~[MapManager_v1.8.7-SNAPSHOT.jar:?]
    ... 9 more

@InventivetalentDev

stijnb1234 commented 2 years ago

Sadly it's not fixed.

[17:29:49] [Server thread/WARN]: [MapManager] Task #4165 for MapManager v1.8.7-SNAPSHOT generated an exception
java.lang.RuntimeException: java.lang.RuntimeException: java.lang.NullPointerException: Cannot invoke "java.lang.reflect.Field.get(Object)" because "this.field" is null
  at org.inventivetalent.mapmanager.DefaultMapWrapper.sendItemFramePacket(DefaultMapWrapper.java:451) ~[MapManager_v1.8.7-SNAPSHOT.jar:?]
  at org.inventivetalent.mapmanager.DefaultMapWrapper$1.lambda$showInFrame$0(DefaultMapWrapper.java:252) ~[MapManager_v1.8.7-SNAPSHOT.jar:?]
  at org.bukkit.craftbukkit.v1_18_R1.scheduler.CraftTask.run(CraftTask.java:101) ~[paper-1.18.1.jar:git-Paper-77]
  at org.bukkit.craftbukkit.v1_18_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:483) ~[paper-1.18.1.jar:git-Paper-77]
  at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1547) ~[paper-1.18.1.jar:git-Paper-77]
  at net.minecraft.server.dedicated.DedicatedServer.tickChildren(DedicatedServer.java:480) ~[paper-1.18.1.jar:git-Paper-77]
  at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1470) ~[paper-1.18.1.jar:git-Paper-77]
  at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1264) ~[paper-1.18.1.jar:git-Paper-77]
  at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:317) ~[paper-1.18.1.jar:git-Paper-77]
  at java.lang.Thread.run(Thread.java:833) ~[?:?]
Caused by: java.lang.RuntimeException: java.lang.NullPointerException: Cannot invoke "java.lang.reflect.Field.get(Object)" because "this.field" is null
  at org.inventivetalent.reflection.accessor.FieldAccessor.get(FieldAccessor.java:43) ~[MapManager_v1.8.7-SNAPSHOT.jar:?]
  at org.inventivetalent.mapmanager.DefaultMapWrapper.sendItemFramePacket(DefaultMapWrapper.java:425) ~[MapManager_v1.8.7-SNAPSHOT.jar:?]
  ... 9 more
Caused by: java.lang.NullPointerException: Cannot invoke "java.lang.reflect.Field.get(Object)" because "this.field" is null
  at org.inventivetalent.reflection.accessor.FieldAccessor.get(FieldAccessor.java:41) ~[MapManager_v1.8.7-SNAPSHOT.jar:?]
  at org.inventivetalent.mapmanager.DefaultMapWrapper.sendItemFramePacket(DefaultMapWrapper.java:425) ~[MapManager_v1.8.7-SNAPSHOT.jar:?]
  ... 9 more

@InventivetalentDev

So, as you can see, if (MinecraftVersion.VERSION.equal(Minecraft.Version.v1_18_R1)) { is false, but I'm on v1_18_R1.