Refactor it so that tile entities all inherit a single generic BlockEntityAdapter class, while implementing their details in the BlockEntity trait.