Luohuayu / CatServer

高性能和高兼容性的1.12.2/1.16.5/1.18.2版本Forge+Bukkit+Spigot服务端 (A high performance and high compatibility 1.12.2/1.16.5/1.18.2 version Forge+Bukkit+Spigot server)
https://catmc.org
GNU Lesser General Public License v3.0
1.98k stars 211 forks source link

Click Machine Compatibility #387

Closed Charles445 closed 2 years ago

Charles445 commented 2 years ago

Click Machine crashes when used

[19:27:44] [Server thread/ERROR] [net.minecraft.server.MinecraftServer]: Encountered an unexpected exception net.minecraft.util.ReportedException: Ticking block entity at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:971) ~[MinecraftServer.class:?] at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:474) ~[nz.class:?] at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:826) ~[MinecraftServer.class:?] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:685) [MinecraftServer.class:?] at java.lang.Thread.run(Unknown Source) [?:1.8.0_151] Caused by: java.lang.NullPointerException at net.minecraft.network.NetHandlerPlayServer.(NetHandlerPlayServer.java:239) ~[pa.class:?] at shadows.click.util.NetHandlerSpaghettiServer.(NetHandlerSpaghettiServer.java:46) ~[NetHandlerSpaghettiServer.class:?] at shadows.click.util.FakePlayerUtil.lambda$getPlayer$0(FakePlayerUtil.java:78) ~[FakePlayerUtil.class:?] at java.util.HashMap.computeIfAbsent(Unknown Source) ~[?:1.8.0_151] at shadows.click.util.FakePlayerUtil.getPlayer(FakePlayerUtil.java:76) ~[FakePlayerUtil.class:?] at shadows.click.block.TileAutoClick.func_73660_a(TileAutoClick.java:52) ~[TileAutoClick.class:?] at net.minecraft.world.World.func_72939_s(World.java:2122) ~[amu.class:?] at net.minecraft.world.WorldServer.func_72939_s(WorldServer.java:742) ~[oo.class:?] at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:964) ~[MinecraftServer.class:?] ... 4 more

This happens because Click Machine creates NetHandlerSpaghettiServer which constructs with a null MinecraftServer. https://github.com/Shadows-of-Fire/ClickMachine/blob/master/src/main/java/shadows/click/util/NetHandlerSpaghettiServer.java#L46

Because of this, serverController is null https://github.com/Luohuayu/CatServer/blob/1.12.2/patches/net/minecraft/network/NetHandlerPlayServer.java.patch#L158

I think simply checking for null will fix this this.server = serverController == null ? null : serverController.server