package sourcecoded.quantum.registry; import mcp.mobius.waila.api.IWailaDataProvider; import mcp.mobius.waila.api.IWailaRegistrar; import net.minecraft.block.Block; import net.minecraft.item.ItemBlock; import sourcecoded.core.block.AbstractBlockRegistry; import sourcecoded.quantum.api.injection.IInjectorRecipe; import sourcecoded.quantum.api.injection.InjectorRegistry; import sourcecoded.quantum.api.vacuum.IVacuumRecipe; import sourcecoded.quantum.api.vacuum.VacuumRegistry; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class BlockRegistry extends AbstractBlockRegistry { public static BlockRegistry instance; public static BlockRegistry instance() { if (instance == null) instance = new BlockRegistry(); return instance; } @Override public void addAll() { for (QABlocks block : QABlocks.values()) this.addBlock(block.getBlockName(), block.getBlock()); } @Override public AbstractBlockRegistry addBlock(String name, Block blockOBJ) { super.addBlock(name, blockOBJ); if (blockOBJ instanceof IInjectorRecipe) InjectorRegistry.addRecipe((IInjectorRecipe) blockOBJ); if (blockOBJ instanceof IVacuumRecipe) VacuumRegistry.addRecipe((IVacuumRecipe) blockOBJ); return this; } @SuppressWarnings("unchecked") public static void wailaRegister(IWailaRegistrar registrar) { BlockRegistry registry = instance(); HashMap<String, Block> hash = (HashMap<String, Block>) registry.blockMap.clone(); List<ItemBlock> listedRegistrars = new ArrayList<ItemBlock>(); for (Map.Entry<String, Block> entry : hash.entrySet()) { ItemBlock ib = (ItemBlock) ItemBlock.getItemFromBlock(entry.getValue()); if (ib instanceof IWailaDataProvider && !listedRegistrars.contains(ib)) { registrar.registerBodyProvider((IWailaDataProvider) ib, entry.getValue().getClass()); listedRegistrars.add(ib); } if (entry.getValue() instanceof IWailaDataProvider) registrar.registerBodyProvider((IWailaDataProvider) entry.getValue(), entry.getValue().getClass()); } } }