package de.take_weiland.mods.commons.util;
import cpw.mods.fml.common.Loader;
import cpw.mods.fml.common.registry.GameRegistry;
import de.take_weiland.mods.commons.meta.HasSubtypes;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import javax.annotation.ParametersAreNonnullByDefault;
import static de.take_weiland.mods.commons.util.RegistrationUtil.checkPhase;
@ParametersAreNonnullByDefault
public final class Items {
private Items() { }
/**
* <p>Equivalent to {@link #init(net.minecraft.item.Item, String, String)} with the currently active ModId.</p>
*
* @param item the Item instance
* @param baseName base name for this Item
*/
public static void init(Item item, String baseName) {
// check phase here already so that we don't fail with a NPE on activeModContainer instead
checkPhase("Item");
init(item, baseName, Loader.instance().activeModContainer().getModId());
}
/**
* <p>Performs some generic initialization on the given Item:</p>
* <ul>
* <li>Sets the Item's texture to <tt>modId:baseName</tt>, unless it is already set</li>
* <li>Sets the Item's unlocalized name to <tt>modId.baseName</tt>, unless it is already set</li>
* <li>Register the Item with {@link cpw.mods.fml.common.registry.GameRegistry#registerItem(net.minecraft.item.Item, String, String)}</li>
* <li>If the Item has subtypes (implementing {@link de.take_weiland.mods.commons.meta.HasSubtypes}):
* <ul>
* <li>Call {@link Item#setHasSubtypes(boolean) setHasSubtypes(true)}</li>
* <li>Register custom ItemStacks for the subtypes with {@link cpw.mods.fml.common.registry.GameRegistry#registerCustomItemStack(String, net.minecraft.item.ItemStack)}</li>
* </ul>
* </li>
* </ul>
*
* @param item the Item instance
* @param baseName base name for this Item
* @param modId your ModId
*/
public static void init(Item item, String baseName, String modId) {
checkPhase("Item");
if (SCReflector.instance.getRawIconName(item) == null) {
item.setTextureName(modId + ":" + baseName);
}
if (SCReflector.instance.getRawUnlocalizedName(item) == null) {
item.setUnlocalizedName(modId + "." + baseName);
}
if (item instanceof HasSubtypes) {
SCReflector.instance.setHasSubtypes(item, true);
ItemStacks.registerSubstacks(baseName, item);
}
GameRegistry.registerItem(item, baseName);
}
public static Block getBlock(Item item) {
return Blocks.fromItem(item);
}
public static Item forBlock(Block block) {
return Blocks.getItem(block);
}
public static Item byID(int id) {
return Item.itemsList[id];
}
private static final short ITEM_NULL_ID = -1;
}