Player Somehow Mines Air When Punching Another Block

As states the title, a player on a server for which I develop plugins. Every time the player punches a block, the server thinks it is Air and ends up crashing because Air cannot be mined.

Forge: 1.8-11.14.3.1530
SpongeForge: 1.8-1530-2.1-DEV-774

Please also note that Pixelmon 4.0.8 is used.

I’d upload the crash report but it doesn’t accept the file format extension.
So here’s a copy of the stack trace.

java.lang.IllegalArgumentException: Cannot get property PropertyEnum{name=variant, clazz=class net.minecraft.block.BlockStone$EnumType, values=[stone, granite, smooth_granite, diorite, smooth_diorite, andesite, smooth_andesite]} as it does not exist in BlockState{block=minecraft:air, properties=[]}
    at net.minecraft.block.state.BlockState$StateImplementation.func_177229_b(BlockState.java:165)
    at net.minecraft.block.BlockStone.func_176201_c(SourceFile:54)
    at net.minecraft.block.Block.getHarvestTool(Block.java:1951)
    at net.minecraftforge.common.ForgeHooks.canHarvestBlock(ForgeHooks.java:130)
    at net.minecraftforge.event.world.BlockEvent$BreakEvent.<init>(BlockEvent.java:82)
    at org.spongepowered.mod.event.SpongeForgeEventFactory.callBlockBreakEvent(SpongeForgeEventFactory.java:783)
    at org.spongepowered.mod.event.SpongeForgeEventFactory.callForgeEvent(SpongeForgeEventFactory.java:309)
    at org.spongepowered.mod.event.SpongeModEventManager.postBulk(SpongeModEventManager.java:201)
    at org.spongepowered.mod.event.SpongeModEventManager.post(SpongeModEventManager.java:239)
    at net.minecraft.world.World.handlePostTickCaptures(World.java:806)
    at net.minecraft.world.World.onCallEntityUpdate(World.java:514)
    at net.minecraft.world.World.func_72866_a(World.java:1880)
    at net.minecraft.world.WorldServer.func_72866_a(WorldServer.java:732)
    at net.minecraft.world.World.func_72870_g(World.java:1850)
    at net.minecraft.world.World.func_72939_s(World.java:1679)
    at net.minecraft.world.WorldServer.func_72939_s(WorldServer.java:571)
    at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:704)
    at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:364)
    at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:598)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:478)
    at java.lang.Thread.run(Thread.java:745)

I’ve also asked the player causing the problem to stop punching blocks, and since then the server has not crashed.

This was fixed with Sponge build #776 - please go try that build and see if the issue persists, as it seems to be the same problem as here: https://github.com/SpongePowered/SpongeCommon/issues/237

We had already tried that version but decided to downgrade because of a different crash…

java.lang.NullPointerException: Exception in server tick loop
    at co.aikar.timings.TimingHistory.lambda$null$5(TimingHistory.java:105)
    at co.aikar.timings.TimingHistory$$Lambda$181/1132240277.apply(Unknown Source)
    at co.aikar.util.JSONUtil.mapArray(JSONUtil.java:94)
    at co.aikar.timings.TimingHistory.lambda$new$6(TimingHistory.java:100)
    at co.aikar.timings.TimingHistory$$Lambda$180/511458439.apply(Unknown Source)
    at co.aikar.util.JSONUtil.mapArrayToObject(JSONUtil.java:109)
    at co.aikar.timings.TimingHistory.<init>(TimingHistory.java:99)
    at co.aikar.timings.FullServerTickHandler.stopTiming(FullServerTickHandler.java:101)
    at net.minecraft.server.MinecraftServer.onTickEnd(MinecraftServer.java:44)
    at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:643)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:478)
    at java.lang.Thread.run(Thread.java:745)

Hmm that’s an interesting crash…
Remove Pixelmon, does it still happen? (Using spongeforge 776)

It’s quite hard to reproduce because the server just crashes randomly, but I’ll try.

OK thanks. A temporary solution would be to disable the timings module. Go into config/sponge/global.conf and in the modules section set timings to false

What do I lose from disabling that?

The timings module (developed by @Aikar for Spigot) allows you to monitor where the server could be lagging by measuring the time it takes to perform different operations.