Posted May 16, 201312 yr 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); } }
May 16, 201312 yr 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.
May 16, 201312 yr 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! http://s13.postimg.org/z9mlly2av/siglogo.png[/img] My mods (Links coming soon) Cities | Roads | Remula | SilvaniaMod | MoreStats
May 16, 201312 yr 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.
May 16, 201312 yr 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 ) http://s13.postimg.org/z9mlly2av/siglogo.png[/img] My mods (Links coming soon) Cities | Roads | Remula | SilvaniaMod | MoreStats
May 16, 201312 yr 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 ) 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.
May 16, 201312 yr 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.
May 16, 201312 yr 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.
May 16, 201312 yr 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. 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.
May 17, 201312 yr Author 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 ) 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)
May 17, 201312 yr 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 ) 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.
May 18, 201312 yr Author 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 ) 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
May 18, 201312 yr you could use a switch statement. switch(meta) { case FIRST_VALUE: RESULT_1; break; case SECOND_VALUE: RESULT_2; break; case THIRD_VALUE: RESULT_3; break; default: RESULT_4; }
May 18, 201312 yr 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.