191 lines
5.8 KiB
Java
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;
|
|
}
|
|
}
|
|
}
|
|
|
|
} |