reworked how ores are setup

Removed the dependency on using the material enum as it was adding ores
that should not generate which was causing a lot of issues. So to solve
this the block has its own enum set of ores it will work with. However,
i still need to reset the ore generator
This commit is contained in:
DarkGuardsman 2013-09-21 11:36:03 -04:00
parent d6a6112ad9
commit 687a966992
3 changed files with 38 additions and 18 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

View file

@ -29,17 +29,19 @@ public class BlockOre extends Block implements IExtraObjectInfo
super(DarkMain.CONFIGURATION.getBlock("Ore", ModPrefab.getNextID()).getInt(), Material.rock);
this.setCreativeTab(CreativeTabs.tabBlock);
this.setUnlocalizedName(DarkMain.getInstance().PREFIX + "Ore");
for (OreData data : OreData.values())
{
data.stack = new ItemStack(this.blockID, 1, data.ordinal());
}
}
@Override
public void getSubBlocks(int par1, CreativeTabs par2CreativeTabs, List par3List)
{
for (int i = 0; i < EnumMeterials.values().length; i++)
for (OreData data : OreData.values())
{
if (EnumMeterials.values()[i].doWorldGen)
{
par3List.add(new ItemStack(par1, 1, i));
}
par3List.add(data.stack);
}
}
@ -47,12 +49,9 @@ public class BlockOre extends Block implements IExtraObjectInfo
@SideOnly(Side.CLIENT)
public void registerIcons(IconRegister par1IconRegister)
{
for (int i = 0; i < EnumMeterials.values().length; i++)
for (OreData data : OreData.values())
{
if (EnumMeterials.values()[i].doWorldGen)
{
this.icons[i] = par1IconRegister.registerIcon(DarkMain.getInstance().PREFIX + EnumMeterials.values()[i].name + "Ore");
}
data.oreIcon = par1IconRegister.registerIcon(DarkMain.getInstance().PREFIX + data.name + "Ore");
}
}
@ -60,9 +59,9 @@ public class BlockOre extends Block implements IExtraObjectInfo
@SideOnly(Side.CLIENT)
public Icon getIcon(int side, int metadata)
{
if (this.icons[metadata] != null)
if (metadata < OreData.values().length)
{
return this.icons[metadata];
return OreData.values()[metadata].oreIcon;
}
return Block.stone.getIcon(side, metadata);
}
@ -93,13 +92,29 @@ public class BlockOre extends Block implements IExtraObjectInfo
@Override
public void loadOreNames()
{
for (int i = 0; i < EnumMeterials.values().length; i++)
for (OreData data : OreData.values())
{
if (EnumMeterials.values()[i].doWorldGen)
{
OreDictionary.registerOre(EnumMeterials.values()[i].name + "Ore", new ItemStack(this.blockID, 1, i));
OreDictionary.registerOre(data.oreName, data.stack);
}
}
public static enum OreData
{
TIN("tin", "oreTin"),
COPPER("copper", "copperOre"),
SILVER("silver", "silverOre"),
LEAD("lead","leadOre"),
Bauxite("bauxite","bauxiteOre");
public String name, oreName;
public ItemStack stack;
@SideOnly(Side.CLIENT)
public Icon oreIcon;
private OreData(String name, String oreName)
{
this.name = name;
this.oreName = oreName;
}
}
}

View file

@ -3,6 +3,7 @@ package dark.core.common.blocks;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import dark.core.common.DarkMain;
import dark.core.common.blocks.BlockOre.OreData;
import dark.core.common.items.EnumMeterials;
public class ItemBlockOre extends ItemBlock
@ -24,7 +25,11 @@ public class ItemBlockOre extends ItemBlock
@Override
public String getUnlocalizedName(ItemStack par1ItemStack)
{
return "tile." + DarkMain.getInstance().PREFIX + EnumMeterials.values()[par1ItemStack.getItemDamage()].name + "Ore";
if (par1ItemStack != null && par1ItemStack.getItemDamage() < OreData.values().length)
{
return "tile." + DarkMain.getInstance().PREFIX + OreData.values()[par1ItemStack.getItemDamage()].name + "Ore";
}
return super.getUnlocalizedName();
}
}