С падающими блоками оказалось проще чем я думал.
Optional<FallingBlockDamageSource> optFallingBlockDamageSource = event.getCause().first(FallingBlockDamageSource.class);
if(optFallingBlockDamageSource.isPresent()) {
FallingBlockDamageSource damageSource = optFallingBlockDamageSource.get();
logger.info("FallingBlockDamageSource -> " + damageSource);
logger.info("Block id -> " + damageSource.getFallingBlockData().blockState().get().getType().getId());
return;
}
Результат в логе.
[Wasted]: FallingBlockDamageSource -> FallingBlockDamageSource{Name=anvil, Type=contact, FallingBlock=EntityFallingBlock['Falling Block'/221, l='Spawn', x=941,50, y=13,00, z=359,50], Data=org.spongepowered.common.data.manipulator.immutable.entity.ImmutableSpongeFallingBlockData@fd826fe4}
[Wasted]: Block id -> minecraft:anvil