aether-legacy/src/main/java/com/legacy/aether/blocks/natural/BlockAetherGrass.java
2018-12-06 23:33:43 -05:00

191 lines
5.8 KiB
Java

package com.legacy.aether.blocks.natural;
import java.util.Random;
import net.minecraft.block.Block;
import net.minecraft.block.IGrowable;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.item.Item;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.EnumPlantType;
import net.minecraftforge.common.IPlantable;
import net.minecraftforge.common.util.ForgeDirection;
import com.legacy.aether.blocks.BlocksAether;
import com.legacy.aether.items.util.DoubleDropHelper;
import com.legacy.aether.world.AetherWorld;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class BlockAetherGrass extends Block implements IGrowable
{
@SideOnly(Side.CLIENT)
private IIcon blockIconTop;
public BlockAetherGrass()
{
super(Material.grass);
this.setHardness(0.2F);
this.setTickRandomly(true);
this.setStepSound(soundTypeGrass);
this.setHarvestLevel("shovel", 0);
}
@Override
public void updateTick(World worldIn, int x, int y, int z, Random rand)
{
if (!worldIn.isRemote)
{
if (worldIn.getBlockLightValue(x, y + 1, z) < 4 && worldIn.getBlockLightOpacity(x, y + 1, z) > 2)
{
worldIn.setBlock(x, y, z, BlocksAether.aether_dirt);
}
else if (worldIn.getBlockLightValue(x, y + 1, z) >= 9)
{
for (int l = 0; l < 4; ++l)
{
int i1 = x + rand.nextInt(3) - 1;
int j1 = y + rand.nextInt(5) - 3;
int k1 = z + rand.nextInt(3) - 1;
if (worldIn.getBlock(i1, j1, k1) == BlocksAether.aether_dirt && worldIn.getBlockMetadata(i1, j1, k1) == 0 && worldIn.getBlockLightValue(i1, j1 + 1, k1) >= 4 && worldIn.getBlockLightOpacity(i1, j1 + 1, k1) <= 2)
{
worldIn.setBlock(i1, j1, k1, BlocksAether.aether_grass);
}
}
}
}
}
@Override
public Item getItemDropped(int meta, Random random, int fortune)
{
return Item.getItemFromBlock(BlocksAether.aether_dirt);
}
@Override
public void harvestBlock(World worldIn, EntityPlayer player, int x, int y, int z, int meta)
{
DoubleDropHelper.dropBlock(player, x, y, z, this, meta);
}
@Override
public int damageDropped(int meta)
{
return 1;
}
@Override
@SideOnly(Side.CLIENT)
public void registerBlockIcons(IIconRegister registry)
{
this.blockIcon = registry.registerIcon("aether_legacy:aether_grass_side");
this.blockIconTop = registry.registerIcon("aether_legacy:aether_grass_top");
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIcon(int side, int meta)
{
return side == 1 ? this.blockIconTop : (side == 0 ? BlocksAether.aether_dirt.getBlockTextureFromSide(side) : this.blockIcon);
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side)
{
if (side == 1)
{
return this.blockIconTop;
}
else if (side == 0)
{
return BlocksAether.aether_dirt.getBlockTextureFromSide(side);
}
return this.blockIcon;
}
@Override
public boolean canSustainPlant(IBlockAccess world, int x, int y, int z, ForgeDirection direction, IPlantable plantable)
{
EnumPlantType plantType = plantable.getPlantType(world, x, y + 1, z);
return plantType == EnumPlantType.Plains;
}
@Override
public boolean func_149851_a(World p_149851_1_, int p_149851_2_, int p_149851_3_, int p_149851_4_, boolean p_149851_5_)
{
return true;
}
@Override
public boolean func_149852_a(World p_149852_1_, Random p_149852_2_, int p_149852_3_, int p_149852_4_, int p_149852_5_)
{
return true;
}
@Override
public void func_149853_b(World p_149853_1_, Random p_149853_2_, int p_149853_3_, int p_149853_4_, int p_149853_5_)
{
int l = 0;
while (l < 128)
{
int i1 = p_149853_3_;
int j1 = p_149853_4_ + 1;
int k1 = p_149853_5_;
int l1 = 0;
while (true)
{
if (l1 < l / 16)
{
i1 += p_149853_2_.nextInt(3) - 1;
j1 += (p_149853_2_.nextInt(3) - 1) * p_149853_2_.nextInt(3) / 2;
k1 += p_149853_2_.nextInt(3) - 1;
if (p_149853_1_.getBlock(i1, j1 - 1, k1) == BlocksAether.aether_grass && !p_149853_1_.getBlock(i1, j1, k1).isNormalCube())
{
++l1;
continue;
}
}
else if (p_149853_1_.isAirBlock(i1, j1, k1))
{
if (p_149853_2_.nextInt(8) != 0)
{
if (Blocks.tallgrass.canBlockStay(p_149853_1_, i1, j1, k1))
{
p_149853_1_.setBlock(i1, j1, k1, Blocks.tallgrass, 1, 3);
}
}
else if (p_149853_2_.nextInt(12) == 0)
{
if (BlocksAether.berry_bush_stem.canBlockStay(p_149853_1_, i1, j1, k1))
{
p_149853_1_.setBlock(i1, j1, k1, BlocksAether.berry_bush_stem, 0, 3);
}
}
else
{
AetherWorld.aether_biome.plantFlower(p_149853_1_, p_149853_2_, i1, j1, k1);
}
}
++l;
break;
}
}
}
}