Sign json with nonexistent entity score selectors cause random nearby tile entities to become invisible
The bug
Having a sign displaying a score of a nonexistent entity will cause the sign to corrupt random nearby tile entities and make them invisible when the user exits and reenters the world.
How to reproduce
- Place multiple signs with text on them, and other various tile entities
- Run the following command on any sign:
/blockdata X Y Z {Text3:"{\"score\":{\"objective\":\"a\",\"name\":\"@e[name=Error]\"}}"}1.13: /data merge block X Y Z {Text3:"{\"score\":{\"objective\":\"a\",\"name\":\"@e[name=Error]\"}}"} - Exit and reenter the world to see multiple tile entities have become invisible
Code analysis
Based on 1.11.2 decompiled using MCP 9.35 rc1
The problem is that the client tries to process the score component by calling the method net.minecraft.util.text.TextComponentUtils.processComponent(ICommandSender, ITextComponent, Entity). This method should only be called by the server because the client has no access to the scoreboard or all entities.
This could also be fixed by replacing a processed score component with a text component containing the score.
Created Issue:
Sign json with nonexistent entity selectors cause random nearby tile entities to become invisible
Having a sign displaying a score of a nonexistant entity will cause the sign to corrupt random nearby tile entities and make them invisible when the user exits and reenters the world.
To test:
1. Place multiple signs with text on them, and other various tile entities
2. Run the following command on any sign:/blockdata X Y Z {Text3:"{\"score\":{\"objective\":\"a\",\"name\":\"@e[name=Error]\"}}"}
{/code}3. Exit and reenter the world to see multiple tile entities have become invisible
Having a sign displaying a score of a nonexistant entity will cause the sign to corrupt random nearby tile entities and make them invisible when the user exits and reenters the world.
To test:
1. Place multiple signs with text on them, and other various tile entities
2. Run the following command on any sign:/blockdata X Y Z {Text3:"{\"score\":{\"objective\":\"a\",\"name\":\"@e[name=Error]\"}}"}
{/code}3. Exit and reenter the world to see multiple tile entities have become invisible
Having a sign displaying a score of a nonexistant entity will cause the sign to corrupt random nearby tile entities and make them invisible when the user exits and reenters the world.
To test:
1. Place multiple signs with text on them, and other various tile entities
2. Run the following command on any sign:/blockdata X Y Z {Text3:"{\"score\":{\"objective\":\"a\",\"name\":\"@e[name=Error]\"}}"}3. Exit and reenter the world to see multiple tile entities have become invisible
Having a sign displaying a score of a nonexistant entity will cause the sign to corrupt random nearby tile entities and make them invisible when the user exits and reenters the world.
To test:
1. Place multiple signs with text on them, and other various tile entities
2. Run the following command on any sign:/blockdata X Y Z {Text3:"{\"score\":{\"objective\":\"a\",\"name\":\"@e[name=Error]\"}}"}
3. Exit and reenter the world to see multiple tile entities have become invisibleThe bug
Having a sign displaying a score of a nonexistant entity will cause the sign to corrupt random nearby tile entities and make them invisible when the user exits and reenters the world.
Steps to reproduce
- Place multiple signs with text on them, and other various tile entities
- Run the following command on any sign:
/blockdata X Y Z {Text3:"{\"score\":{\"objective\":\"a\",\"name\":\"@e[name=Error]\"}}"}- Exit and reenter the world to see multiple tile entities have become invisible
Code analysis
Based on 1.11.2 decompiled using MCP 9.35 rc1
The problem is that the client tries to process the score component by calling the method net.minecraft.util.text.TextComponentUtils.processComponent(ICommandSender, ITextComponent, Entity). This method should only be called by the server because the client has no access to the scoreboard or all entities.
This could also be fixed by replacing a processed score component with a text component containing the score.
Sign json with nonexistent entity score selectors cause random nearby tile entities to become invisible
The bug
Having a sign displaying a score of a nonexist
ant entity will cause the sign to corrupt random nearby tile entities and make them invisible when the user exits and reenters the world.Steps to reproduce
- Place multiple signs with text on them, and other various tile entities
- Run the following command on any sign:
/blockdata X Y Z {Text3:"{\"score\":{\"objective\":\"a\",\"name\":\"@e[name=Error]\"}}"}- Exit and reenter the world to see multiple tile entities have become invisible
Code analysis
Based on 1.11.2 decompiled using MCP 9.35 rc1
The problem is that the client tries to process the score component by calling the method net.minecraft.util.text.TextComponentUtils.processComponent(ICommandSender, ITextComponent, Entity). This method should only be called by the server because the client has no access to the scoreboard or all entities.
This could also be fixed by replacing a processed score component with a text component containing the score.
The bug
Having a sign displaying a score of a nonexistent entity will cause the sign to corrupt random nearby tile entities and make them invisible when the user exits and reenters the world.
Steps to reproduce
- Place multiple signs with text on them, and other various tile entities
- Run the following command on any sign:
/blockdata X Y Z {Text3:"{\"score\":{\"objective\":\"a\",\"name\":\"@e[name=Error]\"}}"}- Exit and reenter the world to see multiple tile entities have become invisible
Code analysis
Based on 1.11.2 decompiled using MCP 9.35 rc1
The problem is that the client tries to process the score component by calling the method net.minecraft.util.text.TextComponentUtils.processComponent(ICommandSender, ITextComponent, Entity). This method should only be called by the server because the client has no access to the scoreboard or all entities.
This could also be fixed by replacing a processed score component with a text component containing the score.
The bug
Having a sign displaying a score of a nonexistent entity will cause the sign to corrupt random nearby tile entities and make them invisible when the user exits and reenters the world.
Steps to reproduce
- Place multiple signs with text on them, and other various tile entities
- Run the following command on any sign:
/blockdata X Y Z {Text3:"{\"score\":{\"objective\":\"a\",\"name\":\"@e[name=Error]\"}}"}1.13: /data merge block X Y Z {Text3:"{\"score\":{\"objective\":\"a\",\"name\":\"@e[name=Error]\"}}"}- Exit and reenter the world to see multiple tile entities have become invisible
Code analysis
Based on 1.11.2 decompiled using MCP 9.35 rc1
The problem is that the client tries to process the score component by calling the method net.minecraft.util.text.TextComponentUtils.processComponent(ICommandSender, ITextComponent, Entity). This method should only be called by the server because the client has no access to the scoreboard or all entities.
This could also be fixed by replacing a processed score component with a text component containing the score.
The bug
Having a sign displaying a score of a nonexistent entity will cause the sign to corrupt random nearby tile entities and make them invisible when the user exits and reenters the world.
Stepsto reproduce
- Place multiple signs with text on them, and other various tile entities
- Run the following command on any sign:
/blockdata X Y Z {Text3:"{\"score\":{\"objective\":\"a\",\"name\":\"@e[name=Error]\"}}"}1.13: /data merge block X Y Z {Text3:"{\"score\":{\"objective\":\"a\",\"name\":\"@e[name=Error]\"}}"}- Exit and reenter the world to see multiple tile entities have become invisible
Code analysis
Based on 1.11.2 decompiled using MCP 9.35 rc1
The problem is that the client tries to process the score component by calling the method net.minecraft.util.text.TextComponentUtils.processComponent(ICommandSender, ITextComponent, Entity). This method should only be called by the server because the client has no access to the scoreboard or all entities.
This could also be fixed by replacing a processed score component with a text component containing the score.
The bug
Having a sign displaying a score of a nonexistent entity will cause the sign to corrupt random nearby tile entities and make them invisible when the user exits and reenters the world.
How to reproduce
- Place multiple signs with text on them, and other various tile entities
- Run the following command on any sign:
/blockdata X Y Z {Text3:"{\"score\":{\"objective\":\"a\",\"name\":\"@e[name=Error]\"}}"}1.13: /data merge block X Y Z {Text3:"{\"score\":{\"objective\":\"a\",\"name\":\"@e[name=Error]\"}}"}- Exit and reenter the world to see multiple tile entities have become invisible
Code analysis
Based on 1.11.2 decompiled using MCP 9.35 rc1
The problem is that the client tries to process the score component by calling the method net.minecraft.util.text.TextComponentUtils.processComponent(ICommandSender, ITextComponent, Entity). This method should only be called by the server because the client has no access to the scoreboard or all entities.
This could also be fixed by replacing a processed score component with a text component containing the score.
Could be a duplicate of MC-113141
I also get in the log
02:03:47 net.minecraft.server.MinecraftServer [urielsalis: Block data updated to: {x:-966,Text4:"{\"text\":\"\"}",y:56,Text3:"{\"score\":{\"objective\":\"a\",\"name\":\"@e[name=Error]\"}}",z:-425,Text2:"{\"text\":\"\"}",id:"minecraft:sign",Text1:"{\"text\":\"asdasd\"}"}] 02:03:47 bfn [CHAT] Block data updated to: {x:-966,Text4:"{\"text\":\"\"}",y:56,Text3:"{\"score\":{\"objective\":\"a\",\"name\":\"@e[name=Error]\"}}",z:-425,Text2:"{\"text\":\"\"}",id:"minecraft:sign",Text1:"{\"text\":\"asdasd\"}"} 02:03:47 bes Error executing taskwhen executing the command
Cannot reproduce in 18w31a, neither do I get any error. Can anybody confirm?
Just tested it in 1.13.1. Placed signs, heads, chests, enchantment tables etc, typed the command, relogged and everything's still there. No errors in console.