tminor1 Posted June 22, 2015 Posted June 22, 2015 Hey I am working on a better glass drop mod and I need help with the colored glass. I can get it to work with the white glass block because it is the first stained_glass block so if in my code I have stained_glass it will go for the white one but I also need it to drop the other colors to but I don't know how to add the damage value of the glass block or the color of the glass block so that when you mine a a glass block that is not white it will drop itself. package net.glassDrops.mod; import net.minecraft.block.BlockGlass; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.Entity; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraftforge.event.entity.living.LivingDeathEvent; import net.minecraftforge.event.world.BlockEvent; import net.minecraftforge.event.world.BlockEvent.BreakEvent; public class colorDrop0 { @net.minecraftforge.fml.common.eventhandler.SubscribeEvent public void blockBreak(BreakEvent evt){ if (evt.state.getBlock() == Blocks.stained_glass){ EntityItem item = new EntityItem(evt.world, evt.pos.getX(), evt.pos.getY(), evt.pos.getZ(), new ItemStack(Item.getItemFromBlock(Blocks.stained_glass))); EntityPlayer player = evt.getPlayer(); if(!player.capabilities.isCreativeMode) evt.world.spawnEntityInWorld(item); } }} Quote
SCAREX Posted June 22, 2015 Posted June 22, 2015 The break event gives you all the parameters you need to get the block metadata, new ItemStack(evt.block, 1, evt.blockMetadata) Quote
Failender Posted June 22, 2015 Posted June 22, 2015 There is a special event for setting The drops of a block, you should take a look at HarvestDropsEvent (I think that was its Name) Quote
larsgerrits Posted June 23, 2015 Posted June 23, 2015 You have to set the damage (metadata) of the colored glass in the ItemStack. Quote Don't PM me with questions. They will be ignored! Make a thread on the appropriate board for support. 1.12 -> 1.13 primer by williewillus. 1.7.10 and older versions of Minecraft are no longer supported due to it's age! Update to the latest version for support. http://www.howoldisminecraft1710.today/
tminor1 Posted June 24, 2015 Author Posted June 24, 2015 Yes, but how do I do that? If I try to add anything after the .stained_glass it will not accept it. Quote
larsgerrits Posted June 24, 2015 Posted June 24, 2015 Yes, because you have to pass it as a parameter. The first one is the Item/Block, the second the amount to be dropped (defaults to 1), and the third the damage/metadata. Quote Don't PM me with questions. They will be ignored! Make a thread on the appropriate board for support. 1.12 -> 1.13 primer by williewillus. 1.7.10 and older versions of Minecraft are no longer supported due to it's age! Update to the latest version for support. http://www.howoldisminecraft1710.today/
tminor1 Posted June 25, 2015 Author Posted June 25, 2015 But how do I do that? It wont let me add any thing before or after the Blocks.stained_glass. Quote
Elix_x Posted June 25, 2015 Posted June 25, 2015 But how do I do that? It wont let me add any thing before or after the Blocks.stained_glass. Show the code please... Quote Check out my mods: BTAM Armor sets Avoid Exploding Creepers Tools compressor Anti Id Conflict Key bindings overhaul Colourfull blocks Invisi Zones
larsgerrits Posted June 25, 2015 Posted June 25, 2015 Don't add it as a parameter in the getItemFromBlock() method, but as an parameter of the ItemStack constructor. Quote Don't PM me with questions. They will be ignored! Make a thread on the appropriate board for support. 1.12 -> 1.13 primer by williewillus. 1.7.10 and older versions of Minecraft are no longer supported due to it's age! Update to the latest version for support. http://www.howoldisminecraft1710.today/
tminor1 Posted June 26, 2015 Author Posted June 26, 2015 Alright now I can make it drop other colors then the white but that is only part of it I now I need to make to get what color of the glass you just mined so it knows what color to drop. package net.glassDrops.mod; import net.minecraft.block.BlockGlass; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.Entity; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraftforge.event.entity.living.LivingDeathEvent; import net.minecraftforge.event.world.BlockEvent; import net.minecraftforge.event.world.BlockEvent.BreakEvent; public class colorDrop0 { @net.minecraftforge.fml.common.eventhandler.SubscribeEvent public void blockBreak(BreakEvent evt){ if (evt.state.getBlock() == Blocks.stained_glass){ EntityItem item = new EntityItem(evt.world, evt.pos.getX(), evt.pos.getY(), evt.pos.getZ(), new ItemStack(Item.getItemFromBlock(Blocks.stained_glass),1, 1)); EntityPlayer player = evt.getPlayer(); if(!player.capabilities.isCreativeMode) evt.world.spawnEntityInWorld(item); } }} Quote
KakesRevenge Posted June 26, 2015 Posted June 26, 2015 + You dont need to spawn item you can just do event.drops.add(youritemstack) EDIT : this code works fine for me @SubscribeEvent public void harvestDrops (HarvestDropsEvent event) { if(event.block.equals(Blocks.stained_glass)) { event.drops.add(new ItemStack(Blocks.stained_glass,1,event.blockMetadata)); } } Quote I'm beginner in java and in minecraft modding. Please be specific. Any code examples are appreciated. Sorry for my english i'm from Czech republic. Please hit that thank you button if i helped
tminor1 Posted June 27, 2015 Author Posted June 27, 2015 KakesRevenge I tried your code and it didn't work for me. diesieben07, how do I add what you gave me to my code? What I meant is my plan was just to create a new event for every color glass block but like say the event for the orange one would see that you mined an orange one then drop an orange glass block and it would do that in all the events for all the glass blocks. Not saying I can't do it your way I just don't know how to add that in then drop the block with the Metadata of the one you mined. Quote
tminor1 Posted June 30, 2015 Author Posted June 30, 2015 Am I doing this right? package net.glassDrops.mod; import net.minecraft.block.BlockGlass; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.Entity; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.EnumDyeColor; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraftforge.event.entity.living.LivingDeathEvent; import net.minecraftforge.event.world.BlockEvent; import net.minecraftforge.event.world.BlockEvent.BreakEvent; public class colorDrop0 { @net.minecraftforge.fml.common.eventhandler.SubscribeEvent public void blockBreak(BreakEvent evt){ if (evt.state.getBlock() == Blocks.stained_glass){ EntityItem item = new EntityItem(evt.world, evt.pos.getX(), evt.pos.getY(), evt.pos.getZ(), new ItemStack(Item.getItemFromBlock(Blocks.stained_glass((EnumDyeColor) evt.state.getProperty(BlockGlass.COLOR)).getMetadata))); EntityPlayer player = evt.getPlayer(); if(!player.capabilities.isCreativeMode) evt.world.spawnEntityInWorld(item); } }} Quote
larsgerrits Posted June 30, 2015 Posted June 30, 2015 Don't add it as a parameter in the getItemFromBlock() method, but as an parameter of the ItemStack constructor. Quote Don't PM me with questions. They will be ignored! Make a thread on the appropriate board for support. 1.12 -> 1.13 primer by williewillus. 1.7.10 and older versions of Minecraft are no longer supported due to it's age! Update to the latest version for support. http://www.howoldisminecraft1710.today/
tminor1 Posted July 1, 2015 Author Posted July 1, 2015 Don't add it as a parameter in the getItemFromBlock() method, but as an parameter of the ItemStack constructor. I have tried that. It is not working, someone just show me how to add it to my code please. Quote
larsgerrits Posted July 1, 2015 Posted July 1, 2015 Show what you have tried. Also, without payment, nobody is gonna write code for you because you can't code it yourself. And from this topic alone I can tell you that you do not know enough Java to mod Minecraft. So learn Java, and then come back to modding. Quote Don't PM me with questions. They will be ignored! Make a thread on the appropriate board for support. 1.12 -> 1.13 primer by williewillus. 1.7.10 and older versions of Minecraft are no longer supported due to it's age! Update to the latest version for support. http://www.howoldisminecraft1710.today/
tminor1 Posted July 2, 2015 Author Posted July 2, 2015 After some playing around I got this. package net.glassDrops.mod; import net.minecraft.block.BlockGlass; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.Entity; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.EnumDyeColor; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraftforge.event.entity.living.LivingDeathEvent; import net.minecraftforge.event.world.BlockEvent; import net.minecraftforge.event.world.BlockEvent.BreakEvent; public class colorDrop0 { @net.minecraftforge.fml.common.eventhandler.SubscribeEvent public void blockBreak(BreakEvent evt){ if (evt.state.getBlock() == Blocks.stained_glass){ EntityItem item = new EntityItem(evt.world, evt.pos.getX(), evt.pos.getY(), evt.pos.getZ(), new ItemStack(((EnumDyeColor) evt.state.getProperty(BlockGlass.COLOR)).getMetadata)); EntityPlayer player = evt.getPlayer(); if(!player.capabilities.isCreativeMode) evt.world.spawnEntityInWorld(item); } But it keeps underlining COLOR and getMetadata every time. That is why I asked someone to show me how to add it to my code I am not a complete idiot. Also about learning java then come back to modding even someone who is a master in java can not be able to make a mod because one they need to know how the game they want to mod works and two if you need to use an API like forge to make your mod you need to know how everything with the API works as well and if you have no idea how forge handles everything even a master of java will have to have a lot of help with making a mod for minecraft. P.S I am mostly making this(and other mods that I have made)for fun it is not like I am going to use it to make millions of dollars off it, and I do want to learn java but for now I am unable to do so but when I do get the ability to trust me I will. Quote
tminor1 Posted July 3, 2015 Author Posted July 3, 2015 Hey, look at that. I got it to work by doing this. EntityItem item = new EntityItem(evt.world, evt.pos.getX(), evt.pos.getY(), evt.pos.getZ(), new ItemStack(Item.getItemFromBlock(Blocks.stained_glass),1,((EnumDyeColor) evt.state.getValue(BlockStainedGlass.COLOR)).getMetadata())); First I changed it back to ItemStack(Item.getItemFromBlock(Blocks.stained_glass),1,1)) then added the other part where that last one was. Then, I added an () to the end of getMetadata changed BlockGlass to BlockStaindGlass then if finally took COLOR Then, the .getProperty needed to be changed to .getValue and guess what, it worked. So thanks for semi helping me. Quote
Recommended Posts
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.