This PR adds lazy computation of the BlockState#getAsString (and therefore toString) method, allowing this to be computed once rather than calculated every time it's called.
This also partially benefits BaseBlock#toString, as it delegates to this method for the BlockState portion of the string, with NBT data appended to the end.
This PR adds lazy computation of the BlockState#getAsString (and therefore toString) method, allowing this to be computed once rather than calculated every time it's called.
This also partially benefits BaseBlock#toString, as it delegates to this method for the BlockState portion of the string, with NBT data appended to the end.