Introduce a managed custom item API with mine-block callbacks and cancellation semantics, plus native runtime support for registering pickaxe items.
Key changes:
- add WeaveLoader.API Item base/PickaxeItem and dispatcher plumbing
- register managed item instances in ItemRegistry
- add native export for pickaxe registration and wire through GameObjectFactory
- resolve/hook item mineBlock paths (ItemInstance/Item/DiggerItem) and dispatch to managed host
- expose managed OnItemMineBlock entry in WeaveLoader.Core and DotNetHost
- add Ruby Pickaxe example item + placeholder texture
- keep logger usable even before managed handler setup via native fallback
- Skip UpdateTabPageCounts when no mod items injected (prevents TabSpec
corruption and crash when .NET fails to load)
- Add assembly/config existence checks with clear error messages
- Log which managed entry point fails to resolve
- Log hostfxr and load_assembly error codes for debugging
Instead of backing up and overwriting vanilla terrain.png/items.png,
hook CreateFileW to redirect file opens to merged atlases in
mods/ModLoader/generated/. The hook is active only during init and
removed once textures are loaded into GPU memory. Vanilla game files
are never modified.