Jump to content

How can i make a metadata ore drop a specific item instead of itsself


Recommended Posts

Posted

I have a set of metadata ores and i want one of them to drop a certain item(nikolite in this case)

 

heres the three files used

 

Item ore Block

package dus998.mods.oresgalore;

import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;

public class ItemOreBlock extends ItemBlock
{

public ItemOreBlock(int par1) {
	super(par1);
	setHasSubtypes(true);
}

public String getUnlocalizedName(ItemStack itemstack)
{
       String name = "";
       switch(itemstack.getItemDamage())
       {
             case 0:
             {
                    name = "Ruby Ore";
                    break;
             }
             case 1:
             {
                    name = "Sapphire Ore";
                    break;
             }
             case 2:
             {
                    name = "Lead Ore";
                    break;
             }
             case 3:
             {
                    name = "Tungsten Ore";
                    break;
             }
             case 4:
             {
                    name = "Silver Ore";
                    break;
             }
             case 5:
             {
                    name = "Tin Ore";
                    break;
             }
             case 6:
             {
                    name = "Copper Ore";
                    break;
             }
             case 7:
             {
                    name = "Cobalt Ore";
                    break;
             }
             case 8:
             {
                    name = "Zinc Ore";
                    break;
             }
             case 9:
             {
                    name = "Nickel Ore";
                    break;
             }
             case 10:
             {
                    name = "Basalt";
                    break;
             }
             case 11:
             {
                    name = "Marble";
                    break;
             }
             case 12:
             {
            	 name = "Nikolite";
            	 break;
             }
             default: name = "broken";
       }
       return getUnlocalizedName() + "." + name;
}

 public int getMetadata(int par1)
 {
       return par1;
 }

}

 

Ore block

 

package dus998.mods.oresgalore;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Icon;
import net.minecraft.world.World;

public class OreBlock extends Block{

public OreBlock(int par1, Material par2Material) {
	super(par1, par2Material);
	this.setCreativeTab(CreativeTabs.tabBlock);
	}
@SideOnly(Side.CLIENT)
private Icon[] icons;
      
@SideOnly(Side.CLIENT)
public void registerIcons(IconRegister par1IconRegister)
{
       icons = new Icon[13];
            
       for(int i = 0; i < icons.length; i++)
       {
        icons[i] = par1IconRegister.registerIcon(OresMain.modid + ":" + (this.getUnlocalizedName().substring(5)) + i);
       }
}

@SideOnly(Side.CLIENT)
public Icon getIcon(int par1, int par2)
{
       return icons[par2];
}

@SideOnly(Side.CLIENT)
public void getSubBlocks(int par1, CreativeTabs par2CreativeTabs, List par3List)
{
    for (int var4 = 0; var4 < 13; ++var4)
    {
        par3List.add(new ItemStack(par1, 1, var4));
    }
}
  }

Ores main class

package dus998.mods.oresgalore;



import java.io.File;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.Property;
import cpw.mods.fml.common.IWorldGenerator;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.Init;
import cpw.mods.fml.common.Mod.PreInit;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.network.NetworkMod;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

@Mod(modid = OresMain.modid, name = "Ores Galore", version = "1")

@NetworkMod(clientSideRequired = true, serverSideRequired = false)

public class OresMain {
public static final String modid = "oresgalore";
public static Block OreBlock;
public static Item  ItemNikolite;

EventManager eventmanager = new EventManager();

@PreInit
public void PreInit(FMLPreInitializationEvent event)
{
dus998.mods.oresgalore.ConfigurationHandler.init(new File(event.getModConfigurationDirectory().getAbsolutePath() + " Ores Galore"));
}

@Init
public void load(FMLInitializationEvent event)
{
	ItemNikolite = new ItemNikolite(Variables.Niko).setUnlocalizedName("Nikolite");

	GameRegistry.registerItem(ItemNikolite, "Nikolite");
	LanguageRegistry.addName(new ItemStack(ItemNikolite, 1, 0), "Nikolite");

	OreBlock = new OreBlock(Variables.oreID, Material.rock).setUnlocalizedName("OreBlock");

	GameRegistry.registerBlock(OreBlock, ItemOreBlock.class, modid + (OreBlock.getUnlocalizedName().substring(5)));
        
	LanguageRegistry.addName(new ItemStack(OreBlock, 1, 0), "Ruby Ore");
        LanguageRegistry.addName(new ItemStack(OreBlock, 1, 1), "Sapphire Ore");
        LanguageRegistry.addName(new ItemStack(OreBlock, 1, 2), "Tungsten Ore");
        LanguageRegistry.addName(new ItemStack(OreBlock, 1, 3), "Lead Ore");
        LanguageRegistry.addName(new ItemStack(OreBlock, 1, 4), "Silver Ore");
        LanguageRegistry.addName(new ItemStack(OreBlock, 1, 5), "Tin Ore");
        LanguageRegistry.addName(new ItemStack(OreBlock, 1, 6), "Copper Ore");
        LanguageRegistry.addName(new ItemStack(OreBlock, 1, 7), "Colbalt Ore");
        LanguageRegistry.addName(new ItemStack(OreBlock, 1, , "Zinc Ore");
        LanguageRegistry.addName(new ItemStack(OreBlock, 1, 9), "Nickel Ore");
        LanguageRegistry.addName(new ItemStack(OreBlock, 1, 10), "Basalt");
        LanguageRegistry.addName(new ItemStack(OreBlock, 1, 11), "Marble");
        LanguageRegistry.addName(new ItemStack(OreBlock, 1, 12), "Nikolite");
        
	GameRegistry.registerWorldGenerator(eventmanager);
}

}

Posted

Look up the function inside the Block class called... idDropped, if I recall correctly.

 

BlockRedstoneOre uses it.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Posted

Look up the function inside the Block class called... idDropped, if I recall correctly.

 

BlockRedstoneOre uses it.

 

I think he means how does he specify which of the subblocks drops what item.

 

I think that because I want to know this too... It'd certainly save on ID's!

 

If you wanna specify which metadata should be dropped, use the damageDropped method.

Don't ask for support per PM! They'll get ignored! | If a post helped you, click the "Thank You" button at the top right corner of said post! |

mah twitter

This thread makes me sad because people just post copy-paste-ready code when it's obvious that the OP has little to no programming experience. This is not how learning works.

Posted

Look up the function inside the Block class called... idDropped, if I recall correctly.

 

BlockRedstoneOre uses it.

 

I think he means how does he specify which of the subblocks drops what item.

 

I think that because I want to know this too... It'd certainly save on ID's!

 

If you wanna specify which metadata should be dropped, use the damageDropped method.

 

Lets say for example, I wanted to make a custom wool set that dropped a custom dye. The wools are all subblocks (500:1, 500:2 etc)

 

How would I specify that MyWoolRed drops red dye, whilst MyWoolBlue drops blue dye?

 

 

(I assume this is what the OP meant. He's not replied since the post so just guessing; but it's something I want to know :P)

width=463 height=200

http://s13.postimg.org/z9mlly2av/siglogo.png[/img]

My mods (Links coming soon)

Cities | Roads | Remula | SilvaniaMod | MoreStats

Posted

Look up the function inside the Block class called... idDropped, if I recall correctly.

 

BlockRedstoneOre uses it.

 

I think he means how does he specify which of the subblocks drops what item.

 

I think that because I want to know this too... It'd certainly save on ID's!

 

If you wanna specify which metadata should be dropped, use the damageDropped method.

 

Lets say for example, I wanted to make a custom wool set that dropped a custom dye. The wools are all subblocks (500:1, 500:2 etc)

 

How would I specify that MyWoolRed drops red dye, whilst MyWoolBlue drops blue dye?

 

 

(I assume this is what the OP meant. He's not replied since the post so just guessing; but it's something I want to know :P)

 

Then use both methods, idDropped and damageDropped. Easy as that.

Don't ask for support per PM! They'll get ignored! | If a post helped you, click the "Thank You" button at the top right corner of said post! |

mah twitter

This thread makes me sad because people just post copy-paste-ready code when it's obvious that the OP has little to no programming experience. This is not how learning works.

Posted

There's also the onHarvest method, which provides access to a large number of things.  I use it in one of my blocks to figure out how many items to drop, based on metadata.

(The block has 8 thickness states, like snow, and each 1/8th drops an item, which is good for making a 1/8th of a block, so using 8 should give you 8 back).

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Posted

There's also the onHarvest method, which provides access to a large number of things.  I use it in one of my blocks to figure out how many items to drop, based on metadata.

(The block has 8 thickness states, like snow, and each 1/8th drops an item, which is good for making a 1/8th of a block, so using 8 should give you 8 back).

 

Yes, there's also that. BlockCrops uses that method IIRC. But just for dropping an item with metadata, the previous methods should be enough. Also if you want to drop multiple items of the same type (which isn't meta-sensitive, though) there's the quantityDropped method.

Don't ask for support per PM! They'll get ignored! | If a post helped you, click the "Thank You" button at the top right corner of said post! |

mah twitter

This thread makes me sad because people just post copy-paste-ready code when it's obvious that the OP has little to no programming experience. This is not how learning works.

Posted

Yes, there's also that. BlockCrops uses that method IIRC. But just for dropping an item with metadata, the previous methods should be enough. Also if you want to drop multiple items of the same type (which isn't meta-sensitive, though) there's the quantityDropped method.

 

Yup, which is why I couldn't use it. :P

Just pointing out alternatives, because apparently people can't go look at existing blocks to figure out how to do things.

("How do I use multiple textures like a pumpkin?" Me: "Go look at the pumpkin code")

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Posted

Look up the function inside the Block class called... idDropped, if I recall correctly.

 

BlockRedstoneOre uses it.

 

I think he means how does he specify which of the subblocks drops what item.

 

I think that because I want to know this too... It'd certainly save on ID's!

 

If you wanna specify which metadata should be dropped, use the damageDropped method.

 

Lets say for example, I wanted to make a custom wool set that dropped a custom dye. The wools are all subblocks (500:1, 500:2 etc)

 

How would I specify that MyWoolRed drops red dye, whilst MyWoolBlue drops blue dye?

 

 

(I assume this is what the OP meant. He's not replied since the post so just guessing; but it's something I want to know :P)

 

sorry for not responding quickly, but yea this is what i am trying to figure out, none of the item-dropping ores in vanilla mc are metadata blocks so i couldnt look at them to see how to make a metadata ((500:12) in my case) drop a specific item when harvested (5000)

Posted

Look up the function inside the Block class called... idDropped, if I recall correctly.

 

BlockRedstoneOre uses it.

 

I think he means how does he specify which of the subblocks drops what item.

 

I think that because I want to know this too... It'd certainly save on ID's!

 

If you wanna specify which metadata should be dropped, use the damageDropped method.

 

Lets say for example, I wanted to make a custom wool set that dropped a custom dye. The wools are all subblocks (500:1, 500:2 etc)

 

How would I specify that MyWoolRed drops red dye, whilst MyWoolBlue drops blue dye?

 

 

(I assume this is what the OP meant. He's not replied since the post so just guessing; but it's something I want to know :P)

 

sorry for not responding quickly, but yea this is what i am trying to figure out, none of the item-dropping ores in vanilla mc are metadata blocks so i couldnt look at them to see how to make a metadata ((500:12) in my case) drop a specific item when harvested (5000)

 

why don't you read the couple posts above you?

Don't ask for support per PM! They'll get ignored! | If a post helped you, click the "Thank You" button at the top right corner of said post! |

mah twitter

This thread makes me sad because people just post copy-paste-ready code when it's obvious that the OP has little to no programming experience. This is not how learning works.

Posted

Look up the function inside the Block class called... idDropped, if I recall correctly.

 

BlockRedstoneOre uses it.

 

I think he means how does he specify which of the subblocks drops what item.

 

I think that because I want to know this too... It'd certainly save on ID's!

 

If you wanna specify which metadata should be dropped, use the damageDropped method.

 

Lets say for example, I wanted to make a custom wool set that dropped a custom dye. The wools are all subblocks (500:1, 500:2 etc)

 

How would I specify that MyWoolRed drops red dye, whilst MyWoolBlue drops blue dye?

 

 

(I assume this is what the OP meant. He's not replied since the post so just guessing; but it's something I want to know :P)

 

sorry for not responding quickly, but yea this is what i am trying to figure out, none of the item-dropping ores in vanilla mc are metadata blocks so i couldnt look at them to see how to make a metadata ((500:12) in my case) drop a specific item when harvested (5000)

 

why don't you read the couple posts above you?

 

All of those are on how to make a block drop a item with a Metadata, i want to have a Metadata block drop a item without editing the drops of the 15 other blocks on the metadata

Posted

All of those are on how to make a block drop a item with a Metadata, i want to have a Metadata block drop a item without editing the drops of the 15 other blocks on the metadata

 

*Cough*

 

There's also the onHarvest method, which provides access to a large number of things.  I use it in one of my blocks to figure out how many items to drop, based on metadata.

(The block has 8 thickness states, like snow, and each 1/8th drops an item, which is good for making a 1/8th of a block, so using 8 should give you 8 back).

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.