No. I mean "don't use a list."
public static void createBlockItems(final RegistryEvent.Register<Item> event) {
final IForgeRegistry<Item> registry = event.getRegistry();
registry.register(new BlockItem(ModBlock.BlockA, new Item.Properties().group(ItemGroup.GROUP)).setRegistryName(ModBlock.BlockA.getRegistryName()));
registry.register(new BlockItem(ModBlock.BlockB, new Item.Properties().group(ItemGroup.BLOCKS)).setRegistryName(ModBlock.BlockB.getRegistryName()));
registry.register(new BlockItem(ModBlock.BlockC, new Item.Properties().group(ItemGroup.REDSTONE)).setRegistryName(ModBlock.BlockC.getRegistryName()));
registry.register(new BlockItem(ModBlock.BlockD, new Item.Properties().group(ItemGroup.DECORATION)).setRegistryName(ModBlock.BlockD.getRegistryName()));
}
Also this line:
IForgeRegistry blockRegistry = GameRegistry.findRegistry(Block.class).getRegistrySuperType();
Is useless, you never actually do anything with the blockRegistry.
Objects.requireNonNull(block.getRegistryName())
RequireNonNull here is also useless. If it was null, the game would have already crashed.
12 blockItem.setRegistryName(Objects.requireNonNull(block.getRegistryName()));
13 registry.register(blockItem);
setRegistryName returns the object, removing the need for a local variable.