mojira.dev
MC-309403

Having an item with the `block_transformer` component with a `rule_based_state_provider` locks the player out of that world

Input this command in a command block and execute it:

give @p minecraft:poisonous_potato[minecraft:block_transformer=[{ "block_state_provider": { "type": "minecraft:rule_based_state_provider", "rules": [ { "if_true": { "type": "minecraft:matching_blocks", "blocks": "minecraft:oak_wood" }, "then": { "type": "minecraft:copy_properties_provider", "source_block_state_provider": { "type": "minecraft:simple_state_provider", "state": { "Name": "minecraft:stripped_oak_wood", "Properties": { "axis": "y" } } } } } ] }, "item_damage_per_use": 1, "sound": "minecraft:item.axe.strip" }]]

You will be immediately kicked with 3 exceptions (too long to put in the report), here’s the first one:

17:05:41.068
net.minecraft.network.PacketEncoder
Netty Local IO #2
Error sending packet clientbound/minecraft:set_entity_data
io.netty.handler.codec.EncoderException: Failed to encode packet 'clientbound/minecraft:set_entity_data'
	at net.minecraft.network.codec.IdDispatchCodec.encode(IdDispatchCodec.java:61)
	at net.minecraft.network.codec.IdDispatchCodec.encode(IdDispatchCodec.java:14)
	at net.minecraft.network.PacketEncoder.encode(PacketEncoder.java:26)
	at net.minecraft.network.PacketEncoder.encode(PacketEncoder.java:12)
	at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:107)
	at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:800)
	at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:737)
	at io.netty.handler.codec.MessageToMessageEncoder.writeVoidPromise(MessageToMessageEncoder.java:133)
	at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:118)
	at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:800)
	at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:737)
	at io.netty.channel.ChannelOutboundHandlerAdapter.write(ChannelOutboundHandlerAdapter.java:113)
	at net.minecraft.network.Connection$2.write(Connection.java:487)
	at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:800)
	at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:737)
	at io.netty.channel.DefaultChannelPipeline.write(DefaultChannelPipeline.java:1036)
	at io.netty.channel.Channel.write(Channel.java:267)
	at net.minecraft.network.Connection.doSendPacket(Connection.java:329)
	at net.minecraft.network.Connection.lambda$sendPacket$0(Connection.java:317)
	at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:148)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:141)
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:535)
	at io.netty.channel.SingleThreadIoEventLoop.run(SingleThreadIoEventLoop.java:201)
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:1195)
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
	at java.base/java.lang.Thread.run(Thread.java:1474)
Caused by: io.netty.handler.codec.EncoderException: Failed to encode: Can't access registry ResourceKey[minecraft:root / minecraft:block] net.minecraft.world.level.levelgen.feature.stateproviders.RuleBasedStateProvider@6b077f19
	at net.minecraft.network.codec.ByteBufCodecs$17.lambda$encode$0(ByteBufCodecs.java:317)
	at com.mojang.serialization.DataResult$Error.getOrThrow(DataResult.java:287)
	at net.minecraft.network.codec.ByteBufCodecs$17.encode(ByteBufCodecs.java:317)
	at net.minecraft.network.codec.ByteBufCodecs$17.encode(ByteBufCodecs.java:308)
	at net.minecraft.network.codec.StreamCodec$15.encode(StreamCodec.java:384)
	at net.minecraft.network.codec.ByteBufCodecs$24.encode(ByteBufCodecs.java:459)
	at net.minecraft.network.codec.ByteBufCodecs$24.encode(ByteBufCodecs.java:444)
	at net.minecraft.network.codec.StreamCodec$7.encode(StreamCodec.java:140)
	at net.minecraft.core.component.DataComponentPatch$3.encodeComponent(DataComponentPatch.java:147)
	at net.minecraft.core.component.DataComponentPatch$3.encode(DataComponentPatch.java:133)
	at net.minecraft.core.component.DataComponentPatch$3.encode(DataComponentPatch.java:83)
	at net.minecraft.world.item.ItemStack$1.encode(ItemStack.java:165)
	at net.minecraft.world.item.ItemStack$1.encode(ItemStack.java:143)
	at net.minecraft.network.syncher.SynchedEntityData$DataValue.write(SynchedEntityData.java:142)
	at net.minecraft.network.protocol.game.ClientboundSetEntityDataPacket.pack(ClientboundSetEntityDataPacket.java:26)
	at net.minecraft.network.protocol.game.ClientboundSetEntityDataPacket.write(ClientboundSetEntityDataPacket.java:44)
	at net.minecraft.network.codec.StreamCodec$2.encode(StreamCodec.java:46)
	at net.minecraft.network.codec.StreamCodec$5.encode(StreamCodec.java:101)
	at net.minecraft.network.codec.StreamCodec$5.encode(StreamCodec.java:91)
	at net.minecraft.network.codec.IdDispatchCodec.encode(IdDispatchCodec.java:56)
	... 25 more



You will be kicked again upon trying to rejoin the world.

Linked issues

Comments 4

Cannot reproduce. Can the command be fixed to reproduce?

Oh, my bad, I didn’t copy it properly first time. Can confirm now, I didn’t copy the command first time. I retract my previous comment on this report.

Can also confirm, I coped the default component from a Hoe onto another item and that caused a crash. Interesting that hoes/axes themselves don’t cause any issues - there seems to be a mismatch between block_transformer as a default component vs when it’s applied manually.

This only happens when type of the block predicate is matching_blocks.

Pepe20129

b

Confirmed

Platform EC

Important

Items

26.3 Snapshot 2

26.3 Snapshot 3

Retrieved