package com.austinv11.collectiveframework.minecraft.utils;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraftforge.client.event.TextureStitchEvent;
import java.util.ArrayList;
import java.util.List;
/**
* A class to manage additional icon registrations, just implement {@link com.austinv11.collectiveframework.minecraft.utils.IconManager.IIconNeeded}
*/
@SideOnly(Side.CLIENT)
public class IconManager {
private static List<IIconNeeded> texturesNeeded = new ArrayList<IIconNeeded>();
@SubscribeEvent
public void onPreTextureStitch(TextureStitchEvent.Pre event) {
registerTextures(event.map);
}
/**
* Registers an object which requires icons to be registered
* @param iconNeeded The object
*/
public static void register(IIconNeeded iconNeeded) {
texturesNeeded.add(iconNeeded);
}
private void registerTextures(TextureMap map) {
for (IIconNeeded textureNeeded : texturesNeeded) {
textureNeeded.registerIcons(map);
}
}
/**
* Implement this to be able to register additional icons
*/
public static interface IIconNeeded {
/**
* Called to register icons
* @param register The icon register to register icons with
*/
public void registerIcons(IIconRegister register);
}
}