package de.take_weiland.mods.commons.client; import de.take_weiland.mods.commons.meta.HasSubtypes; import de.take_weiland.mods.commons.meta.MetadataProperty; import de.take_weiland.mods.commons.meta.Subtype; import de.take_weiland.mods.commons.util.SCReflector; import net.minecraft.block.Block; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.item.Item; import net.minecraft.util.Icon; import java.util.Map; public final class Icons { public static <TYPE extends Subtype, ITEM extends Item & HasSubtypes<TYPE>> Map<TYPE, Icon> registerMulti(ITEM item, IconRegister register) { return registerMulti0(SCReflector.instance.getIconName(item) + ".", item, register); } public static <TYPE extends Subtype, BLOCK extends Block & HasSubtypes<TYPE>> Map<TYPE, Icon> registerMulti(BLOCK block, IconRegister register) { return registerMulti0(SCReflector.instance.getIconName(block) + ".", block, register); } private static <TYPE extends Subtype> Map<TYPE, Icon> registerMulti0(String base, HasSubtypes<TYPE> element, IconRegister register) { MetadataProperty<TYPE> property = element.subtypeProperty(); Map<TYPE, Icon> map = property.createMap(); for (TYPE type : property.values()) { String name = base + type.subtypeName(); Icon icon = register.registerIcon(name); map.put(type, icon); } return map; } private Icons() { } }