setup
(Re)builds the reward pool. Safe to call again on reload.
Filters on each material's stable enum name plus Material.isItem — block-only materials (wall banners, wall coral fans, crops, …) have no item form, and handing one out would throw when the reward is dropped. Regression pin: DEAD_HORN_CORAL_WALL_FAN used to slip through and crash /recycle's reward drop with "isn't an item". Called from onEnable (main thread), so the registry-backed isItem flag is safe here.