
Error translating block mappings when using Polymer mods with Geyser
eclipseisoffline opened this issue ยท 3 comments
Hello, I'm using a Polymer mod (Universal Shops) on a private server with Geyser. This mod uses player heads to represent custom blocks, which seem a bit buggy when on Bedrock, especially when trying to break them.
Notably, when starting to break a block in survival mode (on a Bedrock client), this error pops up in the server logs:
[12:26:27] [Geyser player thread-5-1/ERROR]: Could not translate packet PlayerActionPacket
java.lang.NullPointerException: Cannot invoke "org.geysermc.geyser.registry.type.BlockMapping.getJavaBlockId()" because "blockMapping" is null
at org.geysermc.geyser.session.cache.TagCache.isShearsEffective(TagCache.java:195) ~[Geyser-Fabric.jar:?]
at org.geysermc.geyser.util.BlockUtils.getBreakTime(BlockUtils.java:138) ~[Geyser-Fabric.jar:?]
at org.geysermc.geyser.util.BlockUtils.getSessionBreakTime(BlockUtils.java:180) ~[Geyser-Fabric.jar:?]
at org.geysermc.geyser.translator.protocol.bedrock.entity.player.BedrockActionTranslator.translate(BedrockActionTranslator.java:166) ~[Geyser-Fabric.jar:?]
at org.geysermc.geyser.translator.protocol.bedrock.entity.player.BedrockActionTranslator.translate(BedrockActionTranslator.java:61) ~[Geyser-Fabric.jar:?]
at org.geysermc.geyser.registry.PacketTranslatorRegistry.translate0(PacketTranslatorRegistry.java:89) ~[Geyser-Fabric.jar:?]
at org.geysermc.geyser.registry.PacketTranslatorRegistry.lambda$translate$0(PacketTranslatorRegistry.java:69) ~[Geyser-Fabric.jar:?]
at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174) ~[netty-common-4.1.97.Final.jar:?]
at io.netty.channel.DefaultEventLoop.run(DefaultEventLoop.java:54) ~[netty-transport-4.1.97.Final.jar:?]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[netty-common-4.1.97.Final.jar:?]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.97.Final.jar:?]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.97.Final.jar:?]
at java.lang.Thread.run(Thread.java:833) ~[?:?]
And another error pops up when finishing breaking a block:
[12:26:27] [Geyser player thread-5-1/ERROR]: Could not translate packet ClientboundBlockDestructionPacket
java.lang.NullPointerException: Cannot invoke "org.geysermc.geyser.registry.type.BlockMapping.getJavaBlockId()" because "blockMapping" is null
at org.geysermc.geyser.session.cache.TagCache.isShearsEffective(TagCache.java:195) ~[Geyser-Fabric.jar:?]
at org.geysermc.geyser.util.BlockUtils.getBreakTime(BlockUtils.java:138) ~[Geyser-Fabric.jar:?]
at org.geysermc.geyser.translator.protocol.java.level.JavaBlockDestructionTranslator.translate(JavaBlockDestructionTranslator.java:45) ~[Geyser-Fabric.jar:?]
at org.geysermc.geyser.translator.protocol.java.level.JavaBlockDestructionTranslator.translate(JavaBlockDestructionTranslator.java:39) ~[Geyser-Fabric.jar:?]
at org.geysermc.geyser.registry.PacketTranslatorRegistry.translate0(PacketTranslatorRegistry.java:89) ~[Geyser-Fabric.jar:?]
at org.geysermc.geyser.registry.PacketTranslatorRegistry.lambda$translate$0(PacketTranslatorRegistry.java:69) ~[Geyser-Fabric.jar:?]
at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174) ~[netty-common-4.1.97.Final.jar:?]
at io.netty.channel.DefaultEventLoop.run(DefaultEventLoop.java:54) ~[netty-transport-4.1.97.Final.jar:?]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[netty-common-4.1.97.Final.jar:?]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.97.Final.jar:?]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.97.Final.jar:?]
at java.lang.Thread.run(Thread.java:833) ~[?:?]
In the end, Bedrock players are unable to destroy these blocks in survival mode (it leads to a desync). Notably, Bedrock players in creative mode can destroy them fine with no errors popping up in the logs.
I have tried setting the Geyser use-direct-connection
to false
to fix the issue, but with no success.
How should I fix this issue? Should I set any config option or create custom block mappings? Or should I report the issue to Geyser?
This issue was fixed as Geyser merged #4557 into master. Block breaking now works on Bedrock, although the breaking speed can deviate sometimes. To give the custom head blocks a better appearance, add the profile textures to custom-skulls.yml
.