--- a/net/minecraft/world/level/block/state/BlockState.java
+++ b/net/minecraft/world/level/block/state/BlockState.java
@@ -10,6 +10,17 @@
 public class BlockState extends BlockBehaviour.BlockStateBase {
     public static final Codec<BlockState> CODEC = codec(BuiltInRegistries.BLOCK.byNameCodec(), Block::defaultBlockState).stable();
 
+    // Paper start - optimise getType calls
+    org.bukkit.Material cachedMaterial;
+
+    public final org.bukkit.Material getBukkitMaterial() {
+        if (this.cachedMaterial == null) {
+            this.cachedMaterial = org.bukkit.craftbukkit.v1_19_R2.util.CraftMagicNumbers.getMaterial(this.getBlock());
+        }
+
+        return this.cachedMaterial;
+    }
+    // Paper end - optimise getType calls
     public BlockState(Block block, ImmutableMap<Property<?>, Comparable<?>> propertyMap, MapCodec<BlockState> codec) {
         super(block, propertyMap, codec);
     }
