Jump to content

Recommended Posts

Posted (edited)

How to change a block model script so that the plant is two blocks high?

Plant model:

{
    "variants":
    {
        "age=0": { "model": "wof:cornbottom0" },
        "age=1": { "model": "wof:cornbottom1" },
        "age=2": { "model": "wof:cornbottom2" },
        "age=3": { "model": "wof:cornbottom3" },
        "age=4": { "model": "wof:cornbottom4" },
        "age=5": { "model": "wof:cornbottom5" },
        "age=6": { "model": "wof:cornbottom6" },
        "age=7": { "model": "wof:cornbottom7" }
    }
}

 

Plant script:

package com.jefrygg.worldofmod.crops;

import java.util.Collection;
import java.util.Random;

import com.google.common.base.Optional;
import com.jefrygg.worldofmod.init.ModBlocks;
import com.jefrygg.worldofmod.init.ModItems;

import net.minecraft.block.Block;
import net.minecraft.block.BlockBush;
import net.minecraft.block.IGrowable;
import net.minecraft.block.SoundType;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyInteger;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState;
import net.minecraft.init.Blocks;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.MathHelper;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;

public class CornCrop extends BlockBush implements IGrowable
{
    public static final PropertyInteger AGE = PropertyInteger.create("age", 0, 7);
    private static final AxisAlignedBB[] CROPS_AABB = new AxisAlignedBB[] {new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 0.125D, 1.0D), new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 0.25D, 1.0D), new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 0.375D, 1.0D), new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 0.5D, 1.0D), new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 0.625D, 1.0D), new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 0.75D, 1.0D), new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 0.875D, 1.0D), new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 1.0D, 1.0D)};

    public CornCrop(String name)
    {
    	this.setUnlocalizedName(name);
    	this.setRegistryName(name);
        this.setDefaultState(this.blockState.getBaseState().withProperty(this.getAgeProperty(), Integer.valueOf(0)));
        this.setTickRandomly(true);
        this.setHardness(0.0F);
        this.setSoundType(SoundType.PLANT);
        this.disableStats();
        
        ModBlocks.BLOCKS.add(this);
    }

    public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos)
    {
        return CROPS_AABB[((Integer)state.getValue(this.getAgeProperty())).intValue()];
    }

    /**
     * Return true if the block can sustain a Bush
     */
    protected boolean canSustainBush(IBlockState state)
    {
        return state.getBlock() == Blocks.FARMLAND;
    }

    protected PropertyInteger getAgeProperty()
    {
        return AGE;
    }

    public int getMaxAge()
    {
        return 7;
    }

    protected int getAge(IBlockState state)
    {
        return ((Integer)state.getValue(this.getAgeProperty())).intValue();
    }

    public IBlockState withAge(int age)
    {
        return this.getDefaultState().withProperty(this.getAgeProperty(), Integer.valueOf(age));
    }

    public boolean isMaxAge(IBlockState state)
    {
        return ((Integer)state.getValue(this.getAgeProperty())).intValue() >= this.getMaxAge();
    }

    public void updateTick(World worldIn, BlockPos pos, IBlockState state, Random rand)
    {
        super.updateTick(worldIn, pos, state, rand);

        if (!worldIn.isAreaLoaded(pos, 1)) return; // Forge: prevent loading unloaded chunks when checking neighbor's light
        if (worldIn.getLightFromNeighbors(pos.up()) >= 9)
        {
            int i = this.getAge(state);

            if (i < this.getMaxAge())
            {
                float f = getGrowthChance(this, worldIn, pos);

                if(net.minecraftforge.common.ForgeHooks.onCropsGrowPre(worldIn, pos, state, rand.nextInt((int)(25.0F / f) + 1) == 0))
                {
                    worldIn.setBlockState(pos, this.withAge(i + 1), 2);
                    net.minecraftforge.common.ForgeHooks.onCropsGrowPost(worldIn, pos, state, worldIn.getBlockState(pos));
                }
            }
        }
    }

    public void grow(World worldIn, BlockPos pos, IBlockState state)
    {
        int i = this.getAge(state) + this.getBonemealAgeIncrease(worldIn);
        int j = this.getMaxAge();

        if (i > j)
        {
            i = j;
        }

        worldIn.setBlockState(pos, this.withAge(i), 2);
    }

    protected int getBonemealAgeIncrease(World worldIn)
    {
        return MathHelper.getInt(worldIn.rand, 2, 5);
    }

    protected static float getGrowthChance(Block blockIn, World worldIn, BlockPos pos)
    {
        float f = 1.0F;
        BlockPos blockpos = pos.down();

        for (int i = -1; i <= 1; ++i)
        {
            for (int j = -1; j <= 1; ++j)
            {
                float f1 = 0.0F;
                IBlockState iblockstate = worldIn.getBlockState(blockpos.add(i, 0, j));

                if (iblockstate.getBlock().canSustainPlant(iblockstate, worldIn, blockpos.add(i, 0, j), net.minecraft.util.EnumFacing.UP, (net.minecraftforge.common.IPlantable)blockIn))
                {
                    f1 = 1.0F;

                    if (iblockstate.getBlock().isFertile(worldIn, blockpos.add(i, 0, j)))
                    {
                        f1 = 3.0F;
                    }
                }

                if (i != 0 || j != 0)
                {
                    f1 /= 4.0F;
                }

                f += f1;
            }
        }

        BlockPos blockpos1 = pos.north();
        BlockPos blockpos2 = pos.south();
        BlockPos blockpos3 = pos.west();
        BlockPos blockpos4 = pos.east();
        boolean flag = blockIn == worldIn.getBlockState(blockpos3).getBlock() || blockIn == worldIn.getBlockState(blockpos4).getBlock();
        boolean flag1 = blockIn == worldIn.getBlockState(blockpos1).getBlock() || blockIn == worldIn.getBlockState(blockpos2).getBlock();

        if (flag && flag1)
        {
            f /= 2.0F;
        }
        else
        {
            boolean flag2 = blockIn == worldIn.getBlockState(blockpos3.north()).getBlock() || blockIn == worldIn.getBlockState(blockpos4.north()).getBlock() || blockIn == worldIn.getBlockState(blockpos4.south()).getBlock() || blockIn == worldIn.getBlockState(blockpos3.south()).getBlock();

            if (flag2)
            {
                f /= 2.0F;
            }
        }

        return f;
    }

    public boolean canBlockStay(World worldIn, BlockPos pos, IBlockState state)
    {
        IBlockState soil = worldIn.getBlockState(pos.down());
        return (worldIn.getLight(pos) >= 8 || worldIn.canSeeSky(pos)) && soil.getBlock().canSustainPlant(soil, worldIn, pos.down(), net.minecraft.util.EnumFacing.UP, this);
    }

    protected Item getSeed()
    {
        return ModItems.CORN_SEEDS;
    }

    protected Item getCrop()
    {
        return ModItems.CORN;
    }

    @Override
    public void getDrops(net.minecraft.util.NonNullList<ItemStack> drops, net.minecraft.world.IBlockAccess world, BlockPos pos, IBlockState state, int fortune)
    {
        super.getDrops(drops, world, pos, state, 0);
        int age = getAge(state);
        Random rand = world instanceof World ? ((World)world).rand : new Random();

        if (age >= getMaxAge())
        {
            int k = 3 + fortune;

            for (int i = 0; i < 3 + fortune; ++i)
            {
                if (rand.nextInt(2 * getMaxAge()) <= age)
                {
                    drops.add(new ItemStack(this.getSeed(), 1, 0));
                }
            }
        }
    }

    /**
     * Spawns this Block's drops into the World as EntityItems.
     */
    @SuppressWarnings("unused")
	public void dropBlockAsItemWithChance(World worldIn, BlockPos pos, IBlockState state, float chance, int fortune)
    {
        super.dropBlockAsItemWithChance(worldIn, pos, state, chance, fortune);

        if (false && !worldIn.isRemote) // Forge: NOP all this.
        {
            int i = this.getAge(state);

            if (i >= this.getMaxAge())
            {
                int j = 3 + fortune;

                for (int k = 0; k < j; ++k)
                {
                    if (worldIn.rand.nextInt(2 * this.getMaxAge()) <= i)
                    {
                        spawnAsEntity(worldIn, pos, new ItemStack(this.getSeed()));
                    }
                }
            }
        }
    }

    /**
     * Get the Item that this Block should drop when harvested.
     */
    public Item getItemDropped(IBlockState state, Random rand, int fortune)
    {
        return this.isMaxAge(state) ? this.getCrop() : this.getSeed();
    }

    public ItemStack getItem(World worldIn, BlockPos pos, IBlockState state)
    {
        return new ItemStack(this.getSeed());
    }

    /**
     * Whether this IGrowable can grow
     */
    public boolean canGrow(World worldIn, BlockPos pos, IBlockState state, boolean isClient)
    {
        return !this.isMaxAge(state);
    }

    public boolean canUseBonemeal(World worldIn, Random rand, BlockPos pos, IBlockState state)
    {
        return true;
    }

    public void grow(World worldIn, Random rand, BlockPos pos, IBlockState state)
    {
        this.grow(worldIn, pos, state);
    }

    /**
     * Convert the given metadata into a BlockState for this Block
     */
    public IBlockState getStateFromMeta(int meta)
    {
        return this.withAge(meta);
    }

    /**
     * Convert the BlockState into the correct metadata value
     */
    public int getMetaFromState(IBlockState state)
    {
        return this.getAge(state);
    }

    protected BlockStateContainer createBlockState()
    {
        return new BlockStateContainer(this, new IProperty[] {AGE});
    }
}

 

Edited by Jefrygg
Posted

First, how do I find vanilla codes and which block to look for?
Secondly, even if I find the code I need, how will I combine it with the CROP BLOCK code.

Posted
4 hours ago, Jefrygg said:

First, how do I find vanilla codes and which block to look for?

Which IDE do you use? In Eclipse, it is usually the first item in Referenced Libraries. There's a jar for forge/minecraft, a jar for the launcher, and a client-extra jar that contains client stuff like models etc.

4 hours ago, Jefrygg said:

Secondly, even if I find the code I need, how will I combine it with the CROP BLOCK code.

You would just make your crop 2 blocks high or whatever in the same manner the vanilla crop does.

Posted

You're going to need to do some fiddling about, but its possible to do.

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

I tried to combine the "BlockTallGrass" script with my script, but it didn’t work.

 

BlockTallGrass script

[diesieben07: removed copyrighted mojang code]

 

how to combine it with this script

package com.jefrygg.worldofmod.crops;

import java.util.Collection;
import java.util.Random;

import com.google.common.base.Optional;
import com.jefrygg.worldofmod.init.ModBlocks;
import com.jefrygg.worldofmod.init.ModItems;

import net.minecraft.block.Block;
import net.minecraft.block.BlockBush;
import net.minecraft.block.IGrowable;
import net.minecraft.block.SoundType;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyInteger;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState;
import net.minecraft.init.Blocks;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.MathHelper;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;

public class CornCrop extends BlockBush implements IGrowable
{
    public static final PropertyInteger AGE = PropertyInteger.create("age", 0, 7);
    private static final AxisAlignedBB[] CROPS_AABB = new AxisAlignedBB[] {new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 0.125D, 1.0D), new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 0.25D, 1.0D), new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 0.375D, 1.0D), new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 0.5D, 1.0D), new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 0.625D, 1.0D), new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 0.75D, 1.0D), new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 0.875D, 1.0D), new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 1.0D, 1.0D)};

    public CornCrop(String name)
    {
    	this.setUnlocalizedName(name);
    	this.setRegistryName(name);
        this.setDefaultState(this.blockState.getBaseState().withProperty(this.getAgeProperty(), Integer.valueOf(0)));
        this.setTickRandomly(true);
        this.setHardness(0.0F);
        this.setSoundType(SoundType.PLANT);
        this.disableStats();
        
        ModBlocks.BLOCKS.add(this);
    }

    public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos)
    {
        return CROPS_AABB[((Integer)state.getValue(this.getAgeProperty())).intValue()];
    }

    /**
     * Return true if the block can sustain a Bush
     */
    protected boolean canSustainBush(IBlockState state)
    {
        return state.getBlock() == Blocks.FARMLAND;
    }

    protected PropertyInteger getAgeProperty()
    {
        return AGE;
    }

    public int getMaxAge()
    {
        return 7;
    }

    protected int getAge(IBlockState state)
    {
        return ((Integer)state.getValue(this.getAgeProperty())).intValue();
    }

    public IBlockState withAge(int age)
    {
        return this.getDefaultState().withProperty(this.getAgeProperty(), Integer.valueOf(age));
    }

    public boolean isMaxAge(IBlockState state)
    {
        return ((Integer)state.getValue(this.getAgeProperty())).intValue() >= this.getMaxAge();
    }

    public void updateTick(World worldIn, BlockPos pos, IBlockState state, Random rand)
    {
        super.updateTick(worldIn, pos, state, rand);

        if (!worldIn.isAreaLoaded(pos, 1)) return; // Forge: prevent loading unloaded chunks when checking neighbor's light
        if (worldIn.getLightFromNeighbors(pos.up()) >= 9)
        {
            int i = this.getAge(state);

            if (i < this.getMaxAge())
            {
                float f = getGrowthChance(this, worldIn, pos);

                if(net.minecraftforge.common.ForgeHooks.onCropsGrowPre(worldIn, pos, state, rand.nextInt((int)(25.0F / f) + 1) == 0))
                {
                    worldIn.setBlockState(pos, this.withAge(i + 1), 2);
                    net.minecraftforge.common.ForgeHooks.onCropsGrowPost(worldIn, pos, state, worldIn.getBlockState(pos));
                }
            }
        }
    }

    public void grow(World worldIn, BlockPos pos, IBlockState state)
    {
        int i = this.getAge(state) + this.getBonemealAgeIncrease(worldIn);
        int j = this.getMaxAge();

        if (i > j)
        {
            i = j;
        }

        worldIn.setBlockState(pos, this.withAge(i), 2);
    }

    protected int getBonemealAgeIncrease(World worldIn)
    {
        return MathHelper.getInt(worldIn.rand, 2, 5);
    }

    protected static float getGrowthChance(Block blockIn, World worldIn, BlockPos pos)
    {
        float f = 1.0F;
        BlockPos blockpos = pos.down();

        for (int i = -1; i <= 1; ++i)
        {
            for (int j = -1; j <= 1; ++j)
            {
                float f1 = 0.0F;
                IBlockState iblockstate = worldIn.getBlockState(blockpos.add(i, 0, j));

                if (iblockstate.getBlock().canSustainPlant(iblockstate, worldIn, blockpos.add(i, 0, j), net.minecraft.util.EnumFacing.UP, (net.minecraftforge.common.IPlantable)blockIn))
                {
                    f1 = 1.0F;

                    if (iblockstate.getBlock().isFertile(worldIn, blockpos.add(i, 0, j)))
                    {
                        f1 = 3.0F;
                    }
                }

                if (i != 0 || j != 0)
                {
                    f1 /= 4.0F;
                }

                f += f1;
            }
        }

        BlockPos blockpos1 = pos.north();
        BlockPos blockpos2 = pos.south();
        BlockPos blockpos3 = pos.west();
        BlockPos blockpos4 = pos.east();
        boolean flag = blockIn == worldIn.getBlockState(blockpos3).getBlock() || blockIn == worldIn.getBlockState(blockpos4).getBlock();
        boolean flag1 = blockIn == worldIn.getBlockState(blockpos1).getBlock() || blockIn == worldIn.getBlockState(blockpos2).getBlock();

        if (flag && flag1)
        {
            f /= 2.0F;
        }
        else
        {
            boolean flag2 = blockIn == worldIn.getBlockState(blockpos3.north()).getBlock() || blockIn == worldIn.getBlockState(blockpos4.north()).getBlock() || blockIn == worldIn.getBlockState(blockpos4.south()).getBlock() || blockIn == worldIn.getBlockState(blockpos3.south()).getBlock();

            if (flag2)
            {
                f /= 2.0F;
            }
        }

        return f;
    }

    public boolean canBlockStay(World worldIn, BlockPos pos, IBlockState state)
    {
        IBlockState soil = worldIn.getBlockState(pos.down());
        return (worldIn.getLight(pos) >= 8 || worldIn.canSeeSky(pos)) && soil.getBlock().canSustainPlant(soil, worldIn, pos.down(), net.minecraft.util.EnumFacing.UP, this);
    }

    protected Item getSeed()
    {
        return ModItems.CORN_SEEDS;
    }

    protected Item getCrop()
    {
        return ModItems.CORN;
    }

    @Override
    public void getDrops(net.minecraft.util.NonNullList<ItemStack> drops, net.minecraft.world.IBlockAccess world, BlockPos pos, IBlockState state, int fortune)
    {
        super.getDrops(drops, world, pos, state, 0);
        int age = getAge(state);
        Random rand = world instanceof World ? ((World)world).rand : new Random();

        if (age >= getMaxAge())
        {
            int k = 3 + fortune;

            for (int i = 0; i < 3 + fortune; ++i)
            {
                if (rand.nextInt(2 * getMaxAge()) <= age)
                {
                    drops.add(new ItemStack(this.getSeed(), 1, 0));
                }
            }
        }
    }

    /**
     * Spawns this Block's drops into the World as EntityItems.
     */
    @SuppressWarnings("unused")
	public void dropBlockAsItemWithChance(World worldIn, BlockPos pos, IBlockState state, float chance, int fortune)
    {
        super.dropBlockAsItemWithChance(worldIn, pos, state, chance, fortune);

        if (false && !worldIn.isRemote) // Forge: NOP all this.
        {
            int i = this.getAge(state);

            if (i >= this.getMaxAge())
            {
                int j = 3 + fortune;

                for (int k = 0; k < j; ++k)
                {
                    if (worldIn.rand.nextInt(2 * this.getMaxAge()) <= i)
                    {
                        spawnAsEntity(worldIn, pos, new ItemStack(this.getSeed()));
                    }
                }
            }
        }
    }

    /**
     * Get the Item that this Block should drop when harvested.
     */
    public Item getItemDropped(IBlockState state, Random rand, int fortune)
    {
        return this.isMaxAge(state) ? this.getCrop() : this.getSeed();
    }

    public ItemStack getItem(World worldIn, BlockPos pos, IBlockState state)
    {
        return new ItemStack(this.getSeed());
    }

    /**
     * Whether this IGrowable can grow
     */
    public boolean canGrow(World worldIn, BlockPos pos, IBlockState state, boolean isClient)
    {
        return !this.isMaxAge(state);
    }

    public boolean canUseBonemeal(World worldIn, Random rand, BlockPos pos, IBlockState state)
    {
        return true;
    }

    public void grow(World worldIn, Random rand, BlockPos pos, IBlockState state)
    {
        this.grow(worldIn, pos, state);
    }

    /**
     * Convert the given metadata into a BlockState for this Block
     */
    public IBlockState getStateFromMeta(int meta)
    {
        return this.withAge(meta);
    }

    /**
     * Convert the BlockState into the correct metadata value
     */
    public int getMetaFromState(IBlockState state)
    {
        return this.getAge(state);
    }

    protected BlockStateContainer createBlockState()
    {
        return new BlockStateContainer(this, new IProperty[] {AGE});
    }
}

 

Posted (edited)
6 hours ago, Jefrygg said:

    protected boolean canSustainBush(IBlockState state)
    {
        return state.getBlock() == Blocks.FARMLAND;
    }

What does the upper half of your block sit on top of? Is it farmland?

6 hours ago, Jefrygg said:

float f = getGrowthChance(this, worldIn, pos);

When your crop grows, I don't see it doing anything about setting an upper block.

6 hours ago, Jefrygg said:

    protected BlockStateContainer createBlockState()
    {
        return new BlockStateContainer(this, new IProperty[] {AGE});
    }

I don't see anything about the block knowing if its an upper or lower block.

 

6 hours ago, Jefrygg said:

BlockTallGrass

This is not the two-tall grass block class. This is the one-block grass block class (called "tall grass" because it isn't the grass block that has a green top face and dirt bottom face), which is why:

  

6 hours ago, Jefrygg said:

BlockTallGrass.EnumType.DEAD_BUSH

That enum exists. Two tall grass cannot and never is "dead bush."

Edited by Draco18s

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 (edited)
13 hours ago, Draco18s said:
19 hours ago, Jefrygg said:

protected boolean canSustainBush(IBlockState state)
    {
        return state.getBlock() == Blocks.FARMLAND;
    }

What does the upper half of your block sit on top of? Is it farmland?

This is the condition under which the plant will grow under the farmland block.

 

 

13 hours ago, Draco18s said:
19 hours ago, Jefrygg said:

BlockTallGrass

This is not the two-tall grass block class. This is the one-block grass block class (called "tall grass" because it isn't the grass block that has a green top face and dirt bottom face), which is why:

There are no objections. I will look for another. If you know where the tall grass script is, let me know.

 

13 hours ago, Draco18s said:
19 hours ago, Jefrygg said:

protected BlockStateContainer createBlockState()
    {
        return new BlockStateContainer(this, new IProperty[] {AGE});
    }

I don't see anything about the block knowing if its an upper or lower block.

This indicates the age of the plant and not the growth of the plant.

 

Edited by Jefrygg
Posted
26 minutes ago, Jefrygg said:

This indicates the age of the plant and not the growth of the plant.

You still need two functional blocks. A top half and a bottom half and you don't have two halves!

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
2 minutes ago, Draco18s said:

You still need two functional blocks. A top half and a bottom half and you don't have two halves!

So I don’t know how to do it yet.

Posted
On 3/25/2020 at 9:12 AM, diesieben07 said:

You need two blocks if you want something two high, that is what vanilla does for doors, etc. as well.

 

On 3/25/2020 at 12:31 AM, _Bedrockbreaker_ said:

Try looking at the vanilla code for tall flowers or even the door.

 

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 (edited)

[diesieben07: removed copyrighted Mojang code for BlockDoublePlant]

Well, I can only find this.

How can I combine it with the crop script.

Edited by diesieben07
Posted
4 hours ago, Jefrygg said:

How can I combine it with the crop script.

It's not simply a matter of combining "scripts". You need to see and understand how vanilla minecraft makes a block "be 2 blocks tall", which is really *2* blocks, and when it grows, the bottom block checks if it has the top block, if not, it adds it when it grows.

 

Since it has not been asked, it's up to me: Do you know Java? How much programming experience do you have?

I can tell you that without some programming and/or Java experience, you will not have a good time trying to make a mod.

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



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • New users at Temu receive a $100 discount on orders over $100 Use the code [acw940180] during checkout to get Temu Coupon Code $100 off For New Users. Yes, Temu offers $100 off coupon code “acw940180” for first-time users. Temu 100% Off coupon code "acw940180" will save you $100 on your order. To get a discount, click on the item to purchase and enter the code. Yes, Temu offers $100 off coupon code “acw940180” for first-time users. You can get a$100 bonus plus 30% off any purchase at Temu with the$100 Coupon Bundle at Temu if you sign up with the referral code [acw940180] and make a first purchase of$50 or more. The Temu $100 Off coupon code (acw940180) will save you $100 on your order. To get a discount, click on the item to purchase and enter the code. Yes Temu offers $100 Off Coupon Code “acw940180” for First Time Users. Yes, Temu offers $100 off coupon code {acw940180} for first-time users. You can get a $100 bonus plus 100% off any purchase at Temu with the $100 Coupon Bundle if you sign up with the referral code [acw940180] and make a first purchase of $100 or more. If you are who wish to join Temu, then you should use this exclusive Temu coupon code $100 off (acw940180) and get $100 off on your purchase with Temu. You can get a $100 discount with Temu coupon code {acw940180}. This exclusive offer is for existing customers and can be used for a $100 reduction on your total purchase. Enter coupon code {acw940180} at checkout to avail of the discount. You can use the code {acw940180} to get a $100 off Temu coupon as a new customer. Apply this Temu coupon code $100 off (acw940180) to get a $100 discount on your shopping with Temu. If you’re a first-time user and looking for a Temu coupon code $100 first time user(acw940180) then using this code will give you a flat $100 Off and a 90% discount on your Temu shopping. Temu $100% Off Coupon Code "acw940180" will save you $100 on your order. To get a discount, click on the item to purchase and enter the code. Temu coupon code$100off-{acw940180} Temu coupon code -{acw940180} Temu coupon code$50 off-{acw940180} Temu Coupon code [acw940180] for existing users can get up to 50% discount on product during checkout. Temu Coupon Codes for Existing Customers-acw940180 Temu values its loyal customers and offers various promo codes, including the Legit Temu Coupon Code (acw940180]) or (acw940180), which existing users can use. This ensures that repeat shoppers can also benefit from significant discounts on their purchases. Keep an eye out for special promotions and offers that are periodically available to enhance your shopping experience.
    • Verified user can get a $100 off Temu Coupon code using the code ((“ACW883306”)). This Temu $100 Off code is specifically for new and existing customers both and can be redeemed to receive a $100 discount on your purchase.   Our exclusive Temu Coupon code offers a flat $100 off your purchase, plus an additional 30% discount on top of that. You can slash prices by up to $100 as a new Temu customer using code ((“ACW883306”)). Existing users can enjoy $100 off their next haul with this code.   But that’s not all! With our Temu Coupon codes for 2025, you can get up to 90% discount on select items and clearance sales. Whether you’re a new customer or an existing shopper, our Temu codes provide extra discounts tailored just for you. Save up to 30% with these current Temu Coupons ["^"ACW883306"^"] for May 2025. The latest Temu coupon codes at here.   New users at Temu receive a $100 discount on orders over $100 Use the code ((“ACW883306”)) during checkout to get Temu Coupon $100 Off For New Users. You can save $100 Off your first order with the coupon code available for a limited time only.   Temu 90% Off promo code ((“ACW883306”)) will save you $100 on your order. To get a discount, click on the item to purchase and enter the code.   Yes, Temu offers $100 Off coupon code “ACW883306” for first time users. You can get a $100 bonus plus $100 Off any purchase at Temu with the $100 Coupon Bundle at Temu if you sign up with the referral code ((“ACW883306”)) and make a first purchase of $100 or more.   Free Temu codes $100 off — ((“ACW883306”))   Temu Coupon $100 off — ((“ACW883306”))   Temu Coupon 30% off — ((“ACW883306”))   Temu Memorial Day Sale $100off — ((“ACW883306”))   Temu Coupon code today — ((“ACW883306”))   Temu free gift code — ["^"ACW883306"^"](Without inviting friends or family member)    Redeem Free Temu Coupon Code ["^"ACW883306"^"] for first-time users   Get a $100 discount on your Temu order with the promo code "ACW883306". You can get a discount by clicking on the item to purchase and entering this Temu Coupon code $100 off ((“ACW883306”)).   Temu New User Coupon ((“ACW883306”)): Up To $100OFF For First-Time Users   Our Temu first-time user coupon codes are designed just for new customers, offering the biggest discounts and the best deals currently available on Temu. To maximize your savings, download the Temu app and apply our Temu new user coupon during checkout.   Temu Coupon Codes For Existing Users ((“ACW883306”)): $100 Price Slash   Have you been shopping on Temu for a while? Our Temu Coupon for existing customers is here to reward you for your continued support, offering incredible discounts on your favorite products.   Temu Coupon For $100 Off ((“ACW883306”)): Get A Flat $100 Discount On Order Value   Get ready to save big with our incredible Temu Coupon for $100 off! Our amazing Temu $100 off coupon code will give you a flat $100 discount on your order value, making your shopping experience even more rewarding.   Temu Coupon Code For $100 Off ((“ACW883306”)): For Both New And Existing Customers   Our incredible Temu Coupon code for $100 off is here to help you save big on your purchases. Whether you’re a new user or an existing customer, our $100 off code for Temu will give you an additional discount!   Temu Coupon Bundle ((“ACW883306”)): Flat $100 Off + Up To $100 Discount   Get ready for an unbelievable deal with our Temu Coupon bundle for 2025! Our Temu Coupon bundles will give you a flat $100 discount and an additional $100 off on top of it.   Free Temu Coupons ((“ACW883306”)): Unlock Unlimited Savings!   Get ready to unlock a world of savings with our free Temu Coupons! We’ve got you covered with a wide range of Temu Coupon code options that will help you maximize your shopping experience.   30% Off Temu Coupons, Promo Codes + 25% Cash Back ((“ACW883306”))   Redeem Temu Coupon Code ((“ACW883306”))   Temu Coupon $100 OFF ((“ACW883306”))   You can get an exclusive $100 off discount on your Temu purchase with the code *[ACW883306] Or [acw940180]*. This code is specially designed for new customers and offers a significant price cut on your shopping. Make your first purchase on Temu more rewarding by using this code to get $100 off instantly. New users at Temu receive a $100 Off discount on orders over $100 Off Use the code [ACW883306] during checkout to get Temu Discount $100 off For New Users. You can save $100 off your first order with the Promo Code available for a limited time only. Receive $100 off plus an extra 30% off on your first purchase by signing up with {ACW883306}. Temu promo code 100 off - {ACW883306 or acr502121} New users at Temu receive a $100 discount on orders over $100 Use the code ((“ACW883306”)) during checkout to get Temu Coupon $100 Off For New and Existing Customers.   Extra 30% off for new and existing customers + Up to $40 Off / 40% off & more.   Temu Promo Codes for New users- [ACW883306]   Temu discount code for New customers- [ACW883306]   Temu $40 Off Promo Code- [ACW883306]   what are Temu codes- ACW883306   does Temu give you $40 Off - [ACW883306] Yes Verified   Temu Promo Code May 2025- {ACW883306}   Temu New customer offer {ACW883306}   Temu discount code 2025 {ACW883306}   100 off Promo Code Temu {acr502121}   Temu 100% off any order {acr502121}   100 dollar off Temu code {acr502121}   Temu coupon $40 off for New customers   There are a number of discounts and deals shoppers n take advantage of with the Teemu Coupon Bundle [ACW883306]. Temu coupon $40 off for New customers [ACW883306] will save you $40 Off on your order. To get a discount, click on the item to purchase and enter the code. You n think of it as a supercharged savings pack for all your shopping needs Yes, Temu offers a $100 off coupon for new users who download the app. This coupon is part of a larger bundle of savings, and it's available to new users of the Temu app. To claim this offer, new users can typically download the app and find the coupon in their account, or they may be able to enter a specific code like ACW883306 or acr502121 during checkout     Temu Coupon $100 OFF FOR EXISTING CUSTOMERS ((“ACW883306”))   Temu Coupon $100 OFF FIRST ORDER ((“ACW883306”))   Temu Coupon $100 OFF REDDIT ((“ACW883306”))   Temu Coupon $100 OFF FOR EXISTING CUSTOMERS REDDIT ((“ACW883306”))   Temu $100 OFF CODE ((“ACW883306”))   Temu 70 OFF COUPON 2025 ((“ACW883306”))   DOMINOS 70 RS OFF COUPON CODE ((“ACW883306”))   WHAT IS A COUPON RATE ((“ACW883306”))   Temu $100 OFF FOR EXISTING CUSTOMERS ((“ACW883306”))   Temu $100 OFF FIRST ORDER ((“ACW883306”))   Temu $100 OFF FREE SHIPPING ((“ACW883306”))
    • New users at Temu receive a $100 discount on orders over $100 Use the code [acw940180] during checkout to get Temu Coupon Code $100 off For New Users. Yes, Temu offers $100 off coupon code “acw940180” for first-time users. Temu 100% Off coupon code "acw940180" will save you $100 on your order. To get a discount, click on the item to purchase and enter the code. Yes, Temu offers $100 off coupon code “acw940180” for first-time users. You can get a$100 bonus plus 30% off any purchase at Temu with the$100 Coupon Bundle at Temu if you sign up with the referral code [acw940180] and make a first purchase of$50 or more. The Temu $100 Off coupon code (acw940180) will save you $100 on your order. To get a discount, click on the item to purchase and enter the code. Yes Temu offers $100 Off Coupon Code “acw940180” for First Time Users. Yes, Temu offers $100 off coupon code {acw940180} for first-time users. You can get a $100 bonus plus 100% off any purchase at Temu with the $100 Coupon Bundle if you sign up with the referral code [acw940180] and make a first purchase of $100 or more. If you are who wish to join Temu, then you should use this exclusive Temu coupon code $100 off (acw940180) and get $100 off on your purchase with Temu. You can get a $100 discount with Temu coupon code {acw940180}. This exclusive offer is for existing customers and can be used for a $100 reduction on your total purchase. Enter coupon code {acw940180} at checkout to avail of the discount. You can use the code {acw940180} to get a $100 off Temu coupon as a new customer. Apply this Temu coupon code $100 off (acw940180) to get a $100 discount on your shopping with Temu. If you’re a first-time user and looking for a Temu coupon code $100 first time user(acw940180) then using this code will give you a flat $100 Off and a 90% discount on your Temu shopping. Temu $100% Off Coupon Code "acw940180" will save you $100 on your order. To get a discount, click on the item to purchase and enter the code. Temu coupon code$100off-{acw940180} Temu coupon code -{acw940180} Temu coupon code$50 off-{acw940180} Temu Coupon code [acw940180] for existing users can get up to 50% discount on product during checkout. Temu Coupon Codes for Existing Customers-acw940180 Temu values its loyal customers and offers various promo codes, including the Legit Temu Coupon Code (acw940180]) or (acw940180), which existing users can use. This ensures that repeat shoppers can also benefit from significant discounts on their purchases. Keep an eye out for special promotions and offers that are periodically available to enhance your shopping experience.
    • New users at Temu receive a $100 discount on orders over $100 Use the code [acw940180] during checkout to get Temu Coupon Code $100 off For New Users. Yes, Temu offers $100 off coupon code “acw940180” for first-time users. Temu 100% Off coupon code "acw940180" will save you $100 on your order. To get a discount, click on the item to purchase and enter the code. Yes, Temu offers $100 off coupon code “acw940180” for first-time users. You can get a$100 bonus plus 30% off any purchase at Temu with the$100 Coupon Bundle at Temu if you sign up with the referral code [acw940180] and make a first purchase of$50 or more. The Temu $100 Off coupon code (acw940180) will save you $100 on your order. To get a discount, click on the item to purchase and enter the code. Yes Temu offers $100 Off Coupon Code “acw940180” for First Time Users. Yes, Temu offers $100 off coupon code {acw940180} for first-time users. You can get a $100 bonus plus 100% off any purchase at Temu with the $100 Coupon Bundle if you sign up with the referral code [acw940180] and make a first purchase of $100 or more. If you are who wish to join Temu, then you should use this exclusive Temu coupon code $100 off (acw940180) and get $100 off on your purchase with Temu. You can get a $100 discount with Temu coupon code {acw940180}. This exclusive offer is for existing customers and can be used for a $100 reduction on your total purchase. Enter coupon code {acw940180} at checkout to avail of the discount. You can use the code {acw940180} to get a $100 off Temu coupon as a new customer. Apply this Temu coupon code $100 off (acw940180) to get a $100 discount on your shopping with Temu. If you’re a first-time user and looking for a Temu coupon code $100 first time user(acw940180) then using this code will give you a flat $100 Off and a 90% discount on your Temu shopping. Temu $100% Off Coupon Code "acw940180" will save you $100 on your order. To get a discount, click on the item to purchase and enter the code. Temu coupon code$100off-{acw940180} Temu coupon code -{acw940180} Temu coupon code$50 off-{acw940180} Temu Coupon code [acw940180] for existing users can get up to 50% discount on product during checkout. Temu Coupon Codes for Existing Customers-acw940180 Temu values its loyal customers and offers various promo codes, including the Legit Temu Coupon Code (acw940180]) or (acw940180), which existing users can use. This ensures that repeat shoppers can also benefit from significant discounts on their purchases. Keep an eye out for special promotions and offers that are periodically available to enhance your shopping experience.
    • New users at Temu receive a $100 discount on orders over $100 Use the code [aci789589] during checkout to get Temu Coupon Code $100 off For New Users. Yes, Temu offers $100 off coupon code “aci789589” for first-time users. Temu 100% Off coupon code "aci789589" will save you $100 on your order. To get a discount, click on the item to purchase and enter the code. Yes, Temu offers $100 off coupon code “aci789589” for first-time users. You can get a$100 bonus plus 30% off any purchase at Temu with the$100 Coupon Bundle at Temu if you sign up with the referral code [aci789589] and make a first purchase of$50 or more. The Temu $100 Off coupon code (aci789589) will save you $100 on your order. To get a discount, click on the item to purchase and enter the code. Yes Temu offers $100 Off Coupon Code “aci789589” for First Time Users. Yes, Temu offers $100 off coupon code {aci789589} for first-time users. You can get a $100 bonus plus 100% off any purchase at Temu with the $100 Coupon Bundle if you sign up with the referral code [aci789589] and make a first purchase of $100 or more. If you are who wish to join Temu, then you should use this exclusive Temu coupon code $100 off (aci789589) and get $100 off on your purchase with Temu. You can get a $100 discount with Temu coupon code {aci789589}. This exclusive offer is for existing customers and can be used for a $100 reduction on your total purchase. Enter coupon code {aci789589} at checkout to avail of the discount. You can use the code {aci789589} to get a $100 off Temu coupon as a new customer. Apply this Temu coupon code $100 off (aci789589) to get a $100 discount on your shopping with Temu. If you’re a first-time user and looking for a Temu coupon code $100 first time user(aci789589) then using this code will give you a flat $100 Off and a 90% discount on your Temu shopping. Temu $100% Off Coupon Code "aci789589" will save you $100 on your order. To get a discount, click on the item to purchase and enter the code. Temu coupon code$100off-{aci789589} Temu coupon code -{aci789589} Temu coupon code$50 off-{aci789589} Temu Coupon code [aci789589] for existing users can get up to 50% discount on product during checkout. Temu Coupon Codes for Existing Customers-aci789589 Temu values its loyal customers and offers various promo codes, including the Legit Temu Coupon Code (aci789589]) or (aci789589), which existing users can use. This ensures that repeat shoppers can also benefit from significant discounts on their purchases. Keep an eye out for special promotions and offers that are periodically available to enhance your shopping experience.
  • Topics

×
×
  • Create New...

Important Information

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