Posted January 27, 201411 yr Hello I was wondering if anyone could help me to get my block (cookie jar) to pop out a random item (different type of cookies) each time it's right clicked. My block code and item code are basic and have nothing special added to them. Thanks! package techcell.practicemod.block; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.creativetab.CreativeTabs; public class BlockCookieJar extends Block{ public BlockCookieJar(int par1, Material par2Material) { super(par1, par2Material); this.setCreativeTab(CreativeTabs.tabBlock); this.setLightValue(0.1F); this.setHardness(6); this.setResistance(10); } public void registerIcons(IconRegister iconRegister) { blockIcon = iconRegister.registerIcon("PracticeMod:CookieJar"); } } package techcell.practicemod.item; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; public class ItemSugerCookie extends Item { public ItemSugerCookie(int par1) { super(par1); this.setCreativeTab(CreativeTabs.tabFood); } public void registerIcons(IconRegister iconRegister) { itemIcon = iconRegister.registerIcon("PracticeMod:SugerCookie"); } } jar and item code
January 27, 201411 yr Youl'll want to look into the onBlockActivated method for starters, then find out how to "spawn" "item" "entities" in the "world" (those are keywords to search for) and Id start my search in net.minecraft.world in the world.java file.
January 28, 201411 yr Create a new EntityItem and set its ItemStack...Spawn it into the world (IDK how to do this, check out World or EntityItem)... Hook that code to your onBlockActivated event... Done! So, what would happen if I did push that shiny red button over there? ... Really? ... Can I try it? ... Damn.
January 28, 201411 yr Author package techcell.practicemod.block; 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.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.world.World; public class BlockWandShelf extends Block{ public BlockWandShelf(int par1, Material par2Material) { super(par1, par2Material); this.setCreativeTab(CreativeTabs.tabBlock); this.setLightValue(0.1F); this.setHardness(6); this.setResistance(10); } public boolean blockActivated(World world, int i, int j, int k, EntityPlayer entityplayer) { ItemStack itemstack = entityplayer.getCurrentEquippedItem(); if(itemstack.itemID == 12) { EntityItem entityitem = new EntityItem(world, i, j, k, new ItemStack(sand, 1)); entityitem.delayBeforeCanPickup = 10; world.spawnEntityInWorld(entityitem); } return true; } public void registerIcons(IconRegister iconRegister) { blockIcon = iconRegister.registerIcon("PracticeMod:WandShelf"); } } I've tried this and its still not dropping anything I'm not getting any errors, i don't see what I'm missing. it should be dropping sand when i right click it. :'(
January 28, 201411 yr Add some debug, see if your code is actually getting called. (A System.out.println(...) statement) Also, I looked at your code and it may be spawning the item inside the block (at the exact coords of the block). You can also skip the ItemStack itemStack =... statement and put it in the if(...). (Won't change the functionality, but it'll be cleaner. So, what would happen if I did push that shiny red button over there? ... Really? ... Can I try it? ... Damn.
January 28, 201411 yr Yeah, like atrain99 said. Try and put System.out.println("test"); between if(itemstack.itemID == 12) { //here } Now, I'm thinking the same thing to. It's spawning inside the block, maybe you can move the y coordinate up 1? j+1
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.