- Add three-tier legacy material lookup in PatchBukkitLegacy: data-value
map, rename map, and direct name match covering all 462 LEGACY_*
materials
- Fix null player sender by creating PatchBukkitPlayer on-the-fly with
op when Java-side getPlayer returns null
- Add DynamicTestProvider interface and LEGACY_MATERIALS test category
that validates every legacy material converts to non-AIR
- Fix protobuf codegen naming collision with java_outer_classname
- Clean up command_manager: extract get_or_init_command_map helper,
remove debug logging and dead code