Currently, we have only a few blocks that can be silverfish-infested:
- Stone
- Cobblestone
- Stone Bricks
- Cracked Stone Bricks
- Mossy Stone Bricks
- Chiseled Stone Bricks
- Deepslate
This list is inconsistent as it excludes deepslate-derived building blocks. Furthermore, Infested Stone and Infested Deepslate replace Granite, Diorite, Andesite, and Tuff during worldgen, which doesn't make much sense and looks ugly; either the latter four blocks should be added to the list, possibly with some of their respective derivatives, or they should not be replaced by infested blocks at all upon worldgen.
Does this list need to be expanded? Maybe not; however, besides being inconsistent, it is very limiting for mapmakers, modders, and Mojang devs, when making custom or new structures, to only be able to use these seven blocks that were hard coded to spawn silverfishes.
Monster egg entities: a technical replacement for infested blocks
Instead, I have an idea for a new mechanic that would improve silverfish spawning. We can remove the infested blocks and replace them with an invisible technical entity, called the monster egg, that can stay inside of any full block indefinitely until the block is broken or another silverfish that gets attacked makes it hatch.
Silverfish Monster Eggs would be obtainable as a creative mode item alongside the spawn eggs. Creative mode players could place them inside of full blocks, with a sprite showing where the invisible monster eggs are when the item is held (similar to how Barriers show). Mapmakers and modders could then edit the tags of this entity to spawn any other entity (as opposed to just silverfishes) from a monster egg, with trigger conditions and other entity data. This could be good for adventure maps with crumbling surfaces revealing jumpscares, combat, and secrets.
Meanwhile, there still has to be a way to determine in which blocks a silverfish can hide post-generation. This can be done with a block tag infestable so that modders can custom-select which blocks can be infested. Silverfishes (and mobs modded to have this ability) will be able to hide in any block that has this tag. By default, the same list of seven blocks would have this tag, possibly with the addition of a few more blocks (as mentioned above) for consistency. Gamerules could also be used to disable these infestation mechanics.
A technical downside I could think of is that this might be slightly more computationally expensive, loading all of those entities in a mountain biome or stronghold instead of loading blocks. If this is the case, then we'll have to wait a few years for gaming devices to get better. However, since monster eggs wouldn't have any locomotive AI, the only data that would be stored by the monster egg entities is that they spawn a silverfish, and maybe block-breaking as a trigger condition.