Posted December 14, 201212 yr hello, i'm working on a flower that only can placed on (FarmField) a few of weeks but i'm stuck atm @Override protected boolean canThisPlantGrowOnThisBlockID(int i) { return i == Mod_Mark136.FarmField.blockID; } this should override the methode in the block flower class, but it does'nt, it combines so you can also place my flower on grass/dirt/tilledfield, but i only want that it can be placed on the farmfield Block can somebody help me? (if you need more info, say what you need and i'll post it) Mark136 my Mod: Extended RPG [W.I.P]
December 15, 201212 yr I 'd like to say that you should Override your EnumPlantType to cave in your Seeds class.After this you can grow it everywhere. @Override public EnumPlantType getPlantType(World world, int x, int y, int z) { return EnumPlantType.Cave; }
December 15, 201212 yr Author it won't work, and it's not a seed but a flower/sapling and i DON'T want to just place it everywhere, i only want my flower/sapling on my FarmField block here is some codes from my modcorefile and my block flower.class , i dont write everything because i don't want to hurt your eyes. look at it if you want core mod file **************** public static Block FarmField; public static BlockMFlower Mark136Fl; **************** public void load(FMLInitializationEvent ****) **************** FarmField = new BlockMark136(191, 1, Material.rock).setStepSound(Block.soundStoneFootstep) .setBlockName("Mark's Farm").setHardness(4.5F).setResistance(5F).setLightValue(0.25F); Mark136Fl = (BlockMFlower) new BlockMFlower(204, 14).setStepSound(Block.soundGrassFootstep).setBlockName("Mark's flower") .setHardness(0.15F).setResistance(5F).setLightValue(0.375F); **************** LanguageRegistry.addName(FarmField, "Mark's FarmField"); LanguageRegistry.addName(Mark136Fl, "Mark's Flower"); ************************************************* i think the BlockMark136.class is'nt interesting because it acts like a normal block but the BlockMFlower.class maybe package com.Mark136.ModMark136; import java.util.Random; import net.minecraft.src.Block; import net.minecraft.src.BlockFlower; import net.minecraft.src.CreativeTabs; import net.minecraft.src.Material; import net.minecraft.src.World; public class BlockMFlower extends BlockFlower { protected BlockMFlower(int par1, int par2) { super(par1, par2, Material.vine); float var3 = 0.4F; this.setBlockBounds(0.5F - var3, 0.0F, 0.5F - var3, 0.5F + var3, var3 * 2.0F, 0.5F + var3); this.setCreativeTab(CreativeTabs.tabDecorations); } @Override protected boolean canThisPlantGrowOnThisBlockID(int i) { return i == Mod_Mark136.FarmField.blockID; } public int getBlockTextureFromSideAndMetadata(int par1, int par2) { return this.blockIndexInTexture; } public String getTextureFile() { return "/Mark136/Mark136Blocks.png" ; } public int quantityDropped(int par1) { return (1); } public int idDropped(int par1, Random par2Random, int par3) { return Mod_Mark136.Mark1361.shiftedIndex; } my Mod: Extended RPG [W.I.P]
December 15, 201212 yr Change "protected boolean canThisPlantGrowOnThisBlockID(int i)" to "public boolean canThisPlantGrowOnThisBlockID(int i)" Protip: try and find answers yourself before asking on the forum. It's pretty likely that there is an answer. Was I helpful? Give me a thank you! http://bit.ly/HZ03zy[/img] Tired of waiting for mods to port to bukkit? use BukkitForge! (now with a working version of WorldEdit!)
December 15, 201212 yr Author changed but it don't work, i can still place my flower on grass/dirt/tilledfield my Mod: Extended RPG [W.I.P]
December 15, 201212 yr I see it.What you need to do is 2 things: 1.build a seed item extends ItemSeed.there will be ItemSeed(int,int,int),the first is itemID ,second is blockID of your crop,the 3rd is the soil blockID beneath it.in that class you should Override EnumPlantType to cave. 2.In blockyourcrop Class you should let canThisPlantGrowOnThisBlockID return your soil. It works for me and I have many different plants that grows on plank,stone,etc.
December 15, 201212 yr or you should then use Onneighbourblockchange to examine can it exist. for me,in your seed class you check the blockID you are using the seeds.if it is your soil return super,else return false.
December 15, 201212 yr Author i dont want to create a seed item, i want a SAPLING please reed before answer i want that my SAPLING can ONLY be planted on my block can someone please help me with this please give no useless reactions EDIT: i got it almost, i only need to get public EnumPlantType getPlantType(World world, int x, int y, int z) return false, but i don't know how my Mod: Extended RPG [W.I.P]
December 24, 201212 yr Author please help me also, i want to add something like a suprise box i want to let it drop some items randomly, i only can let it drop 1 thing i want that it will drop items with degrees like 45% dirt, 25% cobble stone 20% sand 5% iron ingot 2% coal 2% gold and 1% diamond i think i must put something in this method public int idDropped(int par1, Random par2Random, int par3) { //but what??????? } please can someone help me thanks and merry christmas Mark136 my Mod: Extended RPG [W.I.P]
December 24, 201212 yr public int idDropped(int par1, Random par2Random, int par3){ int derp = par2Random.nextInt(99); if(derp<45){ return this.dirt.blockId; }else{ if(derp<70){ return this.cobblestone.blockId; }else{ if(derp<90){ return this.sand.blockId }else{ if(derp<95){ return iron.itemId; }else{ if(derp<97){ return item.coal.itemId; }else{ if(derp<99){ return item.gold.itemId; }else{ return item.diamond.itemId; } } } } } } "you seem to be THE best modder I've seen imo." ~spynathan ლ(́◉◞౪◟◉‵ლ
December 27, 201212 yr I looked in BlockFlower.java and found: public boolean canPlace(World world, int i, int j, int k) { return super.canPlace(world, i, j, k) && this.d_(world.getTypeId(i, j - 1, k)); } protected boolean d_(int i) { return i == Block.GRASS.id || i == Block.DIRT.id || i == Block.SOIL.id; } I'm not sure if d_ is still called that in forge now, but one of those functions is what you want to override. (I'm at work now and can't access forge. If you need more help, I'll check it when I get home.)
December 30, 201212 yr yeah thats called you must create another blockflower, and then in your sapling class, u extends the new block flower class.
January 7, 201312 yr You were on the right track with the first thing you tried. You just need to add on to your if statement when it checks the ID of the block you are clicking on. You need to make it so that it will check to make sure that they block you are clicking on is your FarmField, and check that it is not Grass or Dirt it would look something like this protected boolean canThisPlantGrowOnThisBlockID(int i) { return i == Mod_Mark136.FarmField.blockID i != Block.Dirt && i != Block.Grass; } I'm not sure if that is exactly correct, but it will be something like that.
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.