split PlayerInteractEvent into 2 parts, should still go further with it
merged upstream changes to MaterialInfo/MaterialCollection and began refactoring PlayerInteractEvent.