-
Notifications
You must be signed in to change notification settings - Fork 754
/
SlimeTallGrass.java
131 lines (115 loc) · 3.75 KB
/
SlimeTallGrass.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
package tconstruct.blocks.slime;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import net.minecraft.block.Block;
import net.minecraft.block.BlockBush;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.ForgeHooks;
import net.minecraftforge.common.IShearable;
import tconstruct.library.TConstructRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class SlimeTallGrass extends BlockBush implements IShearable
{
private static final String[] grassTypes = new String[] { "slimegrass_blue_tall" };
@SideOnly(Side.CLIENT)
private IIcon[] iconArray;
public SlimeTallGrass()
{
super(Material.vine);
float f = 0.4F;
this.setBlockBounds(0.5F - f, 0.0F, 0.5F - f, 0.5F + f, 0.8F, 0.5F + f);
setCreativeTab(TConstructRegistry.blockTab);
}
@SideOnly(Side.CLIENT)
/**
* From the specified side and block metadata retrieves the blocks texture. Args: side, metadata
*/
public IIcon getIcon (int side, int meta)
{
/*if (meta >= this.iconArray.length)
{
meta = 0;
}*/
return this.iconArray[meta];
}
/**
* Returns the ID of the items to drop on destruction.
*/
public int idDropped (int par1, Random par2Random, int par3)
{
return -1;
}
/**
* Returns the usual quantity dropped by the block plus a bonus of 1 to 'i' (inclusive).
*/
public int quantityDroppedWithBonus (int par1, Random par2Random)
{
return 1 + par2Random.nextInt(par1 * 2 + 1);
}
/**
* Get the block's damage value (for use with pick block).
*/
public int getDamageValue (World par1World, int par2, int par3, int par4)
{
return par1World.getBlockMetadata(par2, par3, par4);
}
@SideOnly(Side.CLIENT)
/**
* returns a list of blocks with the same ID, but different meta (eg: wood returns 4 blocks)
*/
public void getSubBlocks (Block b, CreativeTabs par2CreativeTabs, List par3List)
{
for (int j = 0; j < 1; ++j)
{
par3List.add(new ItemStack(b, 1, j));
}
}
@SideOnly(Side.CLIENT)
/**
* When this method is called, your block should register all the icons it needs with the given IconRegister. This
* is the only chance you get to register icons.
*/
public void registerBlockIcons (IIconRegister par1IconRegister)
{
this.iconArray = new IIcon[grassTypes.length];
for (int i = 0; i < this.iconArray.length; ++i)
{
this.iconArray[i] = par1IconRegister.registerIcon("tinker:" + grassTypes[i]);
}
}
@Override
public ArrayList<ItemStack> getDrops (World world, int x, int y, int z, int meta, int fortune)
{
ArrayList<ItemStack> ret = new ArrayList<ItemStack>();
if (world.rand.nextInt(8) != 0)
{
return ret;
}
ItemStack item = ForgeHooks.getGrassSeed(world);
if (item != null)
{
ret.add(item);
}
return ret;
}
@Override
public boolean isShearable (ItemStack item, IBlockAccess world, int x, int y, int z)
{
return true;
}
@Override
public ArrayList<ItemStack> onSheared (ItemStack item, IBlockAccess world, int x, int y, int z, int fortune)
{
ArrayList<ItemStack> ret = new ArrayList<ItemStack>();
ret.add(new ItemStack(this, 1, world.getBlockMetadata(x, y, z)));
return ret;
}
}