170 lines
4.7 KiB
Java
170 lines
4.7 KiB
Java
|
package resonantinduction.old.core;
|
||
|
|
||
|
import java.util.List;
|
||
|
|
||
|
import net.minecraft.block.Block;
|
||
|
import net.minecraft.client.renderer.texture.IconRegister;
|
||
|
import net.minecraft.creativetab.CreativeTabs;
|
||
|
import net.minecraft.item.ItemStack;
|
||
|
import net.minecraft.util.Icon;
|
||
|
import net.minecraftforge.common.Configuration;
|
||
|
import net.minecraftforge.common.MinecraftForge;
|
||
|
import net.minecraftforge.event.ForgeSubscribe;
|
||
|
import net.minecraftforge.oredict.OreDictionary;
|
||
|
import resonantinduction.api.events.LaserEvent;
|
||
|
import resonantinduction.core.Reference;
|
||
|
import resonantinduction.core.Settings;
|
||
|
import resonantinduction.core.prefab.item.ItemBase;
|
||
|
import cpw.mods.fml.relauncher.Side;
|
||
|
import cpw.mods.fml.relauncher.SideOnly;
|
||
|
import dark.lib.EnumMaterial;
|
||
|
import dark.lib.EnumOrePart;
|
||
|
import dark.lib.IExtraInfo.IExtraItemInfo;
|
||
|
|
||
|
/**
|
||
|
* A series of items that are derived from a basic material
|
||
|
*
|
||
|
* @author DarkGuardsman
|
||
|
*/
|
||
|
public class ItemOreDirv extends ItemBase implements IExtraItemInfo
|
||
|
{
|
||
|
public ItemOreDirv()
|
||
|
{
|
||
|
super("Metal_Parts", Settings.getNextItemID());
|
||
|
this.setHasSubtypes(true);
|
||
|
this.setCreativeTab(CreativeTabs.tabMaterials);
|
||
|
MinecraftForge.EVENT_BUS.register(this);
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public String getUnlocalizedName(ItemStack itemStack)
|
||
|
{
|
||
|
if (itemStack != null)
|
||
|
{
|
||
|
return "item." + Reference.PREFIX + EnumOrePart.getFullName(itemStack.getItemDamage());
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
return this.getUnlocalizedName();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public Icon getIconFromDamage(int i)
|
||
|
{
|
||
|
return EnumMaterial.getIcon(i);
|
||
|
}
|
||
|
|
||
|
@SideOnly(Side.CLIENT)
|
||
|
@Override
|
||
|
public void registerIcons(IconRegister iconRegister)
|
||
|
{
|
||
|
for (EnumMaterial mat : EnumMaterial.values())
|
||
|
{
|
||
|
mat.itemIcons = new Icon[EnumOrePart.values().length];
|
||
|
for (EnumOrePart part : EnumOrePart.values())
|
||
|
{
|
||
|
if (mat.shouldCreateItem(part))
|
||
|
{
|
||
|
mat.itemIcons[part.ordinal()] = iconRegister.registerIcon(Reference.PREFIX + mat.simpleName + part.simpleName);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public void getSubItems(int par1, CreativeTabs par2CreativeTabs, List par3List)
|
||
|
{
|
||
|
for (EnumMaterial mat : EnumMaterial.values())
|
||
|
{
|
||
|
for (EnumOrePart part : EnumOrePart.values())
|
||
|
{
|
||
|
ItemStack stack = EnumMaterial.getStack(this, mat, part, 1);
|
||
|
if (stack != null && mat.shouldCreateItem(part) && mat.itemIcons[part.ordinal()] != null)
|
||
|
{
|
||
|
par3List.add(stack);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public boolean hasExtraConfigs()
|
||
|
{
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public void loadExtraConfigs(Configuration config)
|
||
|
{
|
||
|
// TODO Auto-generated method stub
|
||
|
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public void loadOreNames()
|
||
|
{
|
||
|
for (EnumMaterial mat : EnumMaterial.values())
|
||
|
{
|
||
|
// System.out.println(" [OrenameDebug]Mat:" + mat.simpleName);
|
||
|
for (EnumOrePart part : EnumOrePart.values())
|
||
|
{
|
||
|
if (mat.shouldCreateItem(part))
|
||
|
{
|
||
|
String name = mat.getOreName(part);
|
||
|
ItemStack stack = mat.getStack(this, part, 1);
|
||
|
// System.out.println(" [OrenameDebug]Name:" + name + " Stack:" +
|
||
|
// stack.toString());
|
||
|
OreDictionary.registerOre(name, stack);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@ForgeSubscribe
|
||
|
public void LaserSmeltEvent(LaserEvent.LaserDropItemEvent event)
|
||
|
{
|
||
|
if (event.items != null)
|
||
|
{
|
||
|
for (int i = 0; i < event.items.size(); i++)
|
||
|
{
|
||
|
if (event.items.get(i).itemID == Block.blockIron.blockID)
|
||
|
{
|
||
|
event.items.set(i, EnumMaterial.getStack(this, EnumMaterial.IRON, EnumOrePart.MOLTEN, event.items.get(i).stackSize * 9));
|
||
|
}
|
||
|
else if (event.items.get(i).itemID == Block.blockGold.blockID)
|
||
|
{
|
||
|
event.items.set(i, EnumMaterial.getStack(this, EnumMaterial.GOLD, EnumOrePart.MOLTEN, event.items.get(i).stackSize * 9));
|
||
|
}
|
||
|
else if (event.items.get(i).itemID == Block.oreIron.blockID)
|
||
|
{
|
||
|
event.items.set(i, EnumMaterial.getStack(this, EnumMaterial.IRON, EnumOrePart.MOLTEN, event.items.get(i).stackSize));
|
||
|
}
|
||
|
else if (event.items.get(i).itemID == Block.oreGold.blockID)
|
||
|
{
|
||
|
event.items.set(i, EnumMaterial.getStack(this, EnumMaterial.GOLD, EnumOrePart.MOLTEN, event.items.get(i).stackSize));
|
||
|
}
|
||
|
|
||
|
String oreName = OreDictionary.getOreName(OreDictionary.getOreID(event.items.get(i)));
|
||
|
|
||
|
if (oreName != null)
|
||
|
{
|
||
|
for (EnumMaterial mat : EnumMaterial.values())
|
||
|
{
|
||
|
if (oreName.equalsIgnoreCase("ore" + mat.simpleName) || oreName.equalsIgnoreCase(mat.simpleName + "ore"))
|
||
|
{
|
||
|
event.items.set(i, mat.getStack(this, EnumOrePart.MOLTEN, event.items.get(i).stackSize + 1 + event.world.rand.nextInt(3)));
|
||
|
break;
|
||
|
}
|
||
|
else if (oreName.equalsIgnoreCase("ingot" + mat.simpleName) || oreName.equalsIgnoreCase(mat.simpleName + "ingot"))
|
||
|
{
|
||
|
event.items.set(i, mat.getStack(this, EnumOrePart.MOLTEN, event.items.get(i).stackSize));
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|