package ljfa.glassshards.glass; import static ljfa.glassshards.GlassShards.logger; import java.util.HashMap; import java.util.Map; import net.minecraft.block.Block; import net.minecraft.block.BlockGlass; import net.minecraft.block.BlockPane; import net.minecraft.block.BlockStainedGlass; import net.minecraft.block.BlockStainedGlassPane; import net.minecraft.block.material.Material; import net.minecraft.util.ResourceLocation; /** * Class that handles glasses form other mods that don't implement the API. * Using the API is preferred before this. */ public class GlassRegistry { /** Adds a handler for a given glass block */ public static void addHandler(Block block, ModGlassHandler handler) { handlerMap.put(block, handler); logger.trace("Added glass handler for {}", block.getRegistryName()); } /** Adds a handler for a given glass block */ public static void addHandler(String blockname, ModGlassHandler handler) { if(Block.REGISTRY.containsKey(new ResourceLocation(blockname))) addHandler(Block.getBlockFromName(blockname), handler); else throw new IllegalArgumentException("Could not find block \"" + blockname + "\""); } /** @return a handler for a given block if one exists, or null */ public static ModGlassHandler get(Block block) { return handlerMap.get(block); } /** @return the map that assigns a handler to each glass block */ public static Map<Block, ModGlassHandler> getHandlerMap() { return handlerMap; } /** Adds all registered blocks that are glass to the GlassRegistry */ public static void registerAll() { int counter = 0; for(Block block: Block.REGISTRY) { if(block.getDefaultState().getMaterial() != Material.GLASS) continue; if(block instanceof BlockGlass) { addHandler(block, SimpleGlassHandler.blockInstance); counter++; } else if(block instanceof BlockStainedGlass) { addHandler(block, SimpleGlassHandler.stainedBlockInstance); counter++; } else if(block instanceof BlockStainedGlassPane) { addHandler(block, SimpleGlassHandler.stainedPaneInstance); counter++; } else if(block instanceof BlockPane) { addHandler(block, SimpleGlassHandler.paneInstance); counter++; } } logger.info("Added {} blocks to the GlassRegistry", counter); } private static final Map<Block, ModGlassHandler> handlerMap = new HashMap<Block, ModGlassHandler>(); }