From 82a2579b61d7f78961391ca3500cd9ae28a052e2 Mon Sep 17 00:00:00 2001 From: Amnet Date: Tue, 16 Apr 2013 01:55:45 +0200 Subject: [PATCH] Plants and grass. --- .../textures/blocks/itembush.png | Bin 0 -> 597 bytes .../textures/blocks/itemhighgrass.png | Bin 0 -> 2987 bytes .../textures/blocks/itemmediumgrass.png | Bin 0 -> 376 bytes .../textures/blocks/itemshortgrass.png | Bin 0 -> 268 bytes .../textures/blocks/itemsprout.png | Bin 0 -> 373 bytes .../tdwp_ftw/biomesop/api/Blocks.java | 2 + .../biomesop/blocks/BlockBOPFlower.java | 13 +- .../biomesop/blocks/BlockBOPFoliage.java | 65 ++++---- .../biomesop/blocks/BlockBOPPlant.java | 154 ++++++++++++++++++ .../tdwp_ftw/biomesop/blocks/BlockBush.java | 1 + .../biomesop/blocks/BlockDeadGrass.java | 1 + .../biomesop/blocks/BlockDesertGrass.java | 1 + .../biomesop/blocks/BlockDesertSprouts.java | 1 + .../biomesop/blocks/BlockDuneGrass.java | 1 + .../biomesop/blocks/BlockHighGrassBottom.java | 1 + .../biomesop/blocks/BlockHighGrassTop.java | 1 + .../biomesop/blocks/BlockHolyTallGrass.java | 1 + .../biomesop/blocks/BlockMediumGrass.java | 1 + .../biomesop/blocks/BlockShortGrass.java | 1 + .../tdwp_ftw/biomesop/blocks/BlockSprout.java | 1 + .../tdwp_ftw/biomesop/blocks/BlockThorn.java | 1 + .../biomesop/blocks/BlockTinyCactus.java | 1 + .../biomesop/blocks/BlockToadstool.java | 1 + .../biomesop/configuration/BOPBlocks.java | 32 +++- .../biomesop/items/ItemBOPFlower.java | 2 +- .../biomesop/items/ItemBOPFoliage.java | 81 +++++++++ .../tdwp_ftw/biomesop/items/ItemBOPPlant.java | 36 ++++ 27 files changed, 357 insertions(+), 42 deletions(-) create mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/itembush.png create mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/itemhighgrass.png create mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/itemmediumgrass.png create mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/itemshortgrass.png create mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/itemsprout.png create mode 100644 src/minecraft/tdwp_ftw/biomesop/blocks/BlockBOPPlant.java create mode 100644 src/minecraft/tdwp_ftw/biomesop/items/ItemBOPFoliage.java create mode 100644 src/minecraft/tdwp_ftw/biomesop/items/ItemBOPPlant.java diff --git a/src/minecraft/mods/BiomesOPlenty/textures/blocks/itembush.png b/src/minecraft/mods/BiomesOPlenty/textures/blocks/itembush.png new file mode 100644 index 0000000000000000000000000000000000000000..e009c6d93980f509e7fa917fd3ad239d454d9d87 GIT binary patch literal 597 zcmV-b0;>IqP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02*{fSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+qQF!XYv0005RNkl&N6o-{-1NP~P3L_~b7iCdt=Q0UWeM6ZqNeXPZVGoXQ@F9U!OyDlB+UmAZ7ST_ zMnFybVFl;UqMG9!M?FuKrv1|9G)QvhPooAWj6egVjMQ=zF|EfDJsmNRg0YBI)Uz8Q zZR7+DG3t$5VbgjdB=R7VT@Mx2X~^x0RUznptk7jS_S}x-WhBUQ+d?Abz0Z}lCK%2D z1x}|%fv0INtV-C1ph51O^wcl=>at<&+X*AI97arLC8S_-sAX0|nsZ-3ok%?+K)}?= zYoz9UTliK=FZkM=-LxbqbEmiTu92Si708{D*nwJIvZQCGx0wK|c{{j%Ib(5Y|7lN7* j$;lE~T5`ISBoO!lOfM!J+`#7^00000NkvXXu0mjf0p|-x literal 0 HcmV?d00001 diff --git a/src/minecraft/mods/BiomesOPlenty/textures/blocks/itemhighgrass.png b/src/minecraft/mods/BiomesOPlenty/textures/blocks/itemhighgrass.png new file mode 100644 index 0000000000000000000000000000000000000000..3c23500a853d363e63c1284c2fa4faea7d8a1d89 GIT binary patch literal 2987 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 literal 0 HcmV?d00001 diff --git a/src/minecraft/mods/BiomesOPlenty/textures/blocks/itemmediumgrass.png b/src/minecraft/mods/BiomesOPlenty/textures/blocks/itemmediumgrass.png new file mode 100644 index 0000000000000000000000000000000000000000..7df6d8b0b466076bea78071d9d5681d0423650b4 GIT binary patch literal 376 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{^MbQ4*Y=R#Ki=l*$m0n3-3i=jR%tP-d)Ws%L0m@TF)WP}LVt z7sn6_|D}Pa`3?pMyqz}f!rGP#?n&-1zR^OQ@!uZc#@KK z?#!H-x1+pP?q8tli;O;8WSjnL`l@5Uo<}7r+_0F!zuumUHQK$jKQ!yxG#ei7$6k&O zRYt;x{LOx4%kh-kw9JZWx)HsnW%2IQhO;Ifc%CfFeu9VhaKSng(_^Y#N5A`-w*Io# z_h0gQsp5OpZ{cq~_PjW#?ry$af$Q9%+fSnxT$p*=Mq>GFzR*)k`4W%JG*wT%I%`^F z>G@S1wlM}?wUd;^{F^s?I}`SUS-^3kjg;^cOU9xoH>GJ`SzN=mx_`LfxdP~a22WQ% Jmvv4FO#lV>lW_n5 literal 0 HcmV?d00001 diff --git a/src/minecraft/mods/BiomesOPlenty/textures/blocks/itemshortgrass.png b/src/minecraft/mods/BiomesOPlenty/textures/blocks/itemshortgrass.png new file mode 100644 index 0000000000000000000000000000000000000000..bef01da510eeaf6b719da282af1edb7e4ebd438d GIT binary patch literal 268 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{^MbQ4*Y=R#Ki=l*$m0n3-3i=jR%tP-d)Ws%L0m@TF)WP*sPg zi(`m|fAWw2|Lt8RRx4;$i1aYsVtmZzxW)j|I@yh1m`P4l@D`L7pMv7zGr{f%)^+tK_Y;c83-88U7Tl`WO$(t=q3hFS3j3^ HP6 literal 0 HcmV?d00001 diff --git a/src/minecraft/mods/BiomesOPlenty/textures/blocks/itemsprout.png b/src/minecraft/mods/BiomesOPlenty/textures/blocks/itemsprout.png new file mode 100644 index 0000000000000000000000000000000000000000..1d2302e8cdf698f6733ba7d37bf12b8e8fa04621 GIT binary patch literal 373 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{^MbQ4*Y=R#Ki=l*$m0n3-3i=jR%tP-d)Ws%L0m@TF)WP}N6I z7sn6_|KtN~Q&FxAD!)u4C5fuqu9Qjs?Qw-#0YKh0kJ_qxYp*5nC0_Q<;k z2VPtw)ULI1B9qAl@kDJ82&HA9ofY~ALpqO_7 ztAfJw-h|nuT#Yx4@*JisbRK5h logs1 = Optional.absent(); public static Optional logs2 = Optional.absent(); public static Optional logs3 = Optional.absent(); + public static Optional foliage = Optional.absent(); + public static Optional plants = Optional.absent(); } diff --git a/src/minecraft/tdwp_ftw/biomesop/blocks/BlockBOPFlower.java b/src/minecraft/tdwp_ftw/biomesop/blocks/BlockBOPFlower.java index 21d7ca239..03570c641 100644 --- a/src/minecraft/tdwp_ftw/biomesop/blocks/BlockBOPFlower.java +++ b/src/minecraft/tdwp_ftw/biomesop/blocks/BlockBOPFlower.java @@ -7,7 +7,9 @@ import net.minecraft.block.BlockFlower; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.Entity; import net.minecraft.item.ItemStack; +import net.minecraft.util.DamageSource; import net.minecraft.util.Icon; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; @@ -17,7 +19,7 @@ import cpw.mods.fml.relauncher.SideOnly; public class BlockBOPFlower extends BlockFlower { - private static final String[] plants = new String[] {"swampflower", "deadbloom", "glowflower", "hydrangea", "orangeflower", "pinkflower", "purpleflower", "violet", "whiteflower"}; + private static final String[] plants = new String[] {"swampflower", "deadbloom", "glowflower", "hydrangea", "orangeflower", "pinkflower", "purpleflower", "violet", "whiteflower", "toadstool", "cactus"}; @SideOnly(Side.CLIENT) private Icon[] textures; @@ -55,6 +57,7 @@ public class BlockBOPFlower extends BlockFlower return textures[meta]; } + @Override public int getLightValue(IBlockAccess world, int x, int y, int z) { int meta = world.getBlockMetadata(x, y, z); @@ -64,6 +67,14 @@ public class BlockBOPFlower extends BlockFlower return 0; } + @Override + public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity) + { + int meta = world.getBlockMetadata(x, y, z); + if (meta == 10) + entity.attackEntityFrom(DamageSource.cactus, 1); + } + @Override @SideOnly(Side.CLIENT) public void getSubBlocks(int blockID, CreativeTabs creativeTabs, List list) { diff --git a/src/minecraft/tdwp_ftw/biomesop/blocks/BlockBOPFoliage.java b/src/minecraft/tdwp_ftw/biomesop/blocks/BlockBOPFoliage.java index 463e7a6a2..631835ad8 100644 --- a/src/minecraft/tdwp_ftw/biomesop/blocks/BlockBOPFoliage.java +++ b/src/minecraft/tdwp_ftw/biomesop/blocks/BlockBOPFoliage.java @@ -17,34 +17,34 @@ import net.minecraft.world.ColorizerGrass; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.IShearable; -import tdwp_ftw.biomesop.configuration.BOPBlocks; +import tdwp_ftw.biomesop.mod_BiomesOPlenty; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; public class BlockBOPFoliage extends BlockFlower implements IShearable { - private static final String[] foliageTypes = new String[] {"shortgrass", "mediumgrass", "highgrassbottom", "highgrasstop"}; + private static final String[] foliageTypes = new String[] {"shortgrass", "mediumgrass", "highgrassbottom", "bush", "sprout", "highgrasstop"}; @SideOnly(Side.CLIENT) - private Icon[] textures = {null, null, null, null}; - private final int metadata; + private Icon[] textures; + - public BlockBOPFoliage(int blockID, int index) + public BlockBOPFoliage(int blockID) { super(blockID, Material.vine); float f = 0.4F; - BlockBOPFoliage.setBurnProperties(this.blockID, 60, 100); - metadata = index; - - if (metadata == 3) - this.setBlockBounds(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F); - else - this.setBlockBounds(0.5F - f, 0.0F, 0.5F - f, 0.5F + f, 0.8F, 0.5F + f); + setBurnProperties(this.blockID, 60, 100); + setBlockBounds(0.5F - f, 0.0F, 0.5F - f, 0.5F + f, 0.8F, 0.5F + f); + setHardness(0.0F); + setStepSound(Block.soundGrassFootstep); + this.setCreativeTab(mod_BiomesOPlenty.tabBiomesOPlenty); } @Override @SideOnly(Side.CLIENT) public void registerIcons(IconRegister iconRegister) { + textures = new Icon[foliageTypes.length]; + for (int i = 0; i < textures.length; ++i) textures[i] = iconRegister.registerIcon("BiomesOPlenty:"+foliageTypes[i]); } @@ -65,31 +65,28 @@ public class BlockBOPFoliage extends BlockFlower implements IShearable @SideOnly(Side.CLIENT) public void getSubBlocks(int blockID, CreativeTabs par2CreativeTabs, List list) { - list.add(new ItemStack(blockID, 1, 0)); - list.add(new ItemStack(blockID, 1, 1)); - list.add(new ItemStack(blockID, 1, 2)); - list.add(new ItemStack(blockID, 1, 3)); + for (int i = 0; i < textures.length-1; ++i) + list.add(new ItemStack(blockID, 1, i)); } @Override public boolean canPlaceBlockAt(World world, int x, int y, int z) { - return super.canPlaceBlockAt(world, x, y, z) && this.canThisPlantGrowOnThisBlockID(world.getBlockId(x, y - 1, z)); + return super.canPlaceBlockAt(world, x, y, z) && this.canThisPlantGrowOnThisBlockID(world.getBlockId(x, y - 1, z), world.getBlockMetadata(x, y, z)); } - @Override - protected boolean canThisPlantGrowOnThisBlockID(int blockID) + protected boolean canThisPlantGrowOnThisBlockID(int blockID, int metadata) { - if (metadata == 3) - return blockID == BOPBlocks.highGrassBottom.blockID; + if (metadata == 5) + return blockID == this.blockID; else return blockID == Block.grass.blockID || blockID == Block.dirt.blockID || blockID == Block.tilledField.blockID; } - + @Override public boolean canBlockStay(World world, int x, int y, int z) { - return (world.getFullBlockLightValue(x, y, z) >= 8 || world.canBlockSeeTheSky(x, y, z)) && this.canThisPlantGrowOnThisBlockID(world.getBlockId(x, y - 1, z)); + return (world.getFullBlockLightValue(x, y, z) >= 8 || world.canBlockSeeTheSky(x, y, z)) && this.canThisPlantGrowOnThisBlockID(world.getBlockId(x, y - 1, z), world.getBlockMetadata(x, y, z)); } @Override @@ -112,21 +109,23 @@ public class BlockBOPFoliage extends BlockFlower implements IShearable @SideOnly(Side.CLIENT) public int getRenderColor(int par1) { - return par1 == 0 ? 16777215 : ColorizerFoliage.getFoliageColorBasic(); + return ColorizerFoliage.getFoliageColorBasic(); } @Override @SideOnly(Side.CLIENT) public int colorMultiplier(IBlockAccess par1IBlockAccess, int par2, int par3, int par4) { - int var5 = par1IBlockAccess.getBlockMetadata(par2, par3, par4); - return var5 == 0 ? 16777215 : par1IBlockAccess.getBiomeGenForCoords(par2, par4).getBiomeGrassColor(); + return par1IBlockAccess.getBiomeGenForCoords(par2, par4).getBiomeGrassColor(); } @Override public int getDamageValue(World world, int x, int y, int z) { - return world.getBlockMetadata(x, y, z); + int meta = world.getBlockMetadata(x, y, z); + if (meta == 5) + meta = 2; + return meta; } @Override @@ -141,14 +140,6 @@ public class BlockBOPFoliage extends BlockFlower implements IShearable super.harvestBlock(world, player, x, y, z, meta); } - @Override - public int idPicked(World par1World, int par2, int par3, int par4) - { - // TODO - return -1; -// return BOPItems.shortGrassItem.itemID; - } - @Override public boolean isBlockReplaceable(World world, int x, int y, int z) { @@ -158,9 +149,11 @@ public class BlockBOPFoliage extends BlockFlower implements IShearable @Override public boolean isShearable(ItemStack item, World world, int x, int y, int z) { + if (world.getBlockMetadata(x, y, z) == 5) + return false; return true; } - + @Override public ArrayList onSheared(ItemStack item, World world, int x, int y, int z, int fortune) { diff --git a/src/minecraft/tdwp_ftw/biomesop/blocks/BlockBOPPlant.java b/src/minecraft/tdwp_ftw/biomesop/blocks/BlockBOPPlant.java new file mode 100644 index 000000000..b3d6fcacb --- /dev/null +++ b/src/minecraft/tdwp_ftw/biomesop/blocks/BlockBOPPlant.java @@ -0,0 +1,154 @@ +package tdwp_ftw.biomesop.blocks; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +import tdwp_ftw.biomesop.mod_BiomesOPlenty; +import tdwp_ftw.biomesop.configuration.BOPBlocks; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockFlower; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.DamageSource; +import net.minecraft.util.Icon; +import net.minecraft.world.World; +import net.minecraftforge.common.IShearable; + +public class BlockBOPPlant extends BlockFlower implements IShearable +{ + private static final String[] plants = new String[] {"deadgrass", "desertgrass", "desertsprouts", "dunegrass", "holytallgrass", "thorn"}; + @SideOnly(Side.CLIENT) + private Icon[] textures; + + public BlockBOPPlant(int par1) + { + super(par1, Material.vine); + setTickRandomly(true); + float var3 = 0.4F; + setBurnProperties(this.blockID, 60, 100); + setHardness(0.0F); + setStepSound(Block.soundGrassFootstep); + setBlockBounds(0.5F - var3, 0.0F, 0.5F - var3, 0.5F + var3, 0.8F, 0.5F + var3); + setCreativeTab(mod_BiomesOPlenty.tabBiomesOPlenty); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IconRegister iconRegister) + { + textures = new Icon[plants.length]; + + for (int i = 0; i < plants.length; ++i) + textures[i] = iconRegister.registerIcon("BiomesOPlenty:" + plants[i]); + } + + @Override + @SideOnly(Side.CLIENT) + public Icon getBlockTextureFromSideAndMetadata(int side, int meta) + { + if (meta < 0 || meta >= textures.length) + meta = 0; + + return textures[meta]; + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubBlocks(int blockID, CreativeTabs creativeTabs, List list) { + for (int i = 0; i < plants.length; ++i) + list.add(new ItemStack(blockID, 1, i)); + } + + @Override + public boolean canPlaceBlockAt(World world, int x, int y, int z) + { + return super.canPlaceBlockAt(world, x, y, z) && this.canThisPlantGrowOnThisBlockID(world.getBlockId(x, y - 1, z), world.getBlockMetadata(x, y, z)); + } + + protected boolean canThisPlantGrowOnThisBlockID(int id, int meta) + { + // TODO + if (meta == 0) + return id == BOPBlocks.driedDirt.blockID || id == Block.sand.blockID; + else if (meta == 1) + return id == BOPBlocks.redRock.blockID; + else if (meta == 2 || meta == 3) + return id == Block.sand.blockID; + else if (meta == 4) + return id == BOPBlocks.holyGrass.blockID; + else + return id == Block.grass.blockID || id == Block.dirt.blockID || id == Block.tilledField.blockID; + } + + @Override + public boolean canBlockStay(World world, int x, int y, int z) + { + return (world.getFullBlockLightValue(x, y, z) >= 8 || world.canBlockSeeTheSky(x, y, z)) + && this.canThisPlantGrowOnThisBlockID(world.getBlockId(x, y - 1, z), world.getBlockMetadata(x, y, z)); + } + + @Override + public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity) + { + int meta = world.getBlockMetadata(x, y, z); + if (meta == 5) + entity.attackEntityFrom(DamageSource.cactus, 1); + } + + @Override + public int getDamageValue(World world, int x, int y, int z) + { + int meta = world.getBlockMetadata(x, y, z); + return meta; + } + + @Override + public int idDropped(int par1, Random par2Random, int par3) + { + return -1; + } + + @Override + public void harvestBlock(World world, EntityPlayer player, int x, int y, int z, int meta) + { + super.harvestBlock(world, player, x, y, z, meta); + } + + @Override + public boolean isBlockReplaceable(World world, int x, int y, int z) + { + int meta = world.getBlockMetadata(x, y, z); + if (meta == 5) + return false; + return true; + } + + @Override + public boolean isShearable(ItemStack item, World world, int x, int y, int z) + { + return true; + } + + @Override + public ArrayList onSheared(ItemStack item, World world, int x, int y, int z, int fortune) + { + ArrayList ret = new ArrayList(); + ret.add(new ItemStack(this, 1, world.getBlockMetadata(x, y, z))); + return ret; + } + + @Override + public boolean isBlockFoliage(World world, int x, int y, int z) + { + return true; + } +} diff --git a/src/minecraft/tdwp_ftw/biomesop/blocks/BlockBush.java b/src/minecraft/tdwp_ftw/biomesop/blocks/BlockBush.java index b3e25b3e4..683d86bc0 100644 --- a/src/minecraft/tdwp_ftw/biomesop/blocks/BlockBush.java +++ b/src/minecraft/tdwp_ftw/biomesop/blocks/BlockBush.java @@ -18,6 +18,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.IShearable; import tdwp_ftw.biomesop.configuration.BOPItems; +@Deprecated public class BlockBush extends BlockFlower implements IShearable { public BlockBush(int par1) diff --git a/src/minecraft/tdwp_ftw/biomesop/blocks/BlockDeadGrass.java b/src/minecraft/tdwp_ftw/biomesop/blocks/BlockDeadGrass.java index 11f59ae56..a306bcc3a 100644 --- a/src/minecraft/tdwp_ftw/biomesop/blocks/BlockDeadGrass.java +++ b/src/minecraft/tdwp_ftw/biomesop/blocks/BlockDeadGrass.java @@ -16,6 +16,7 @@ import net.minecraftforge.common.IShearable; import tdwp_ftw.biomesop.mod_BiomesOPlenty; import tdwp_ftw.biomesop.configuration.BOPBlocks; +@Deprecated public class BlockDeadGrass extends Block implements IShearable { protected BlockDeadGrass(int par1, Material par3Material) diff --git a/src/minecraft/tdwp_ftw/biomesop/blocks/BlockDesertGrass.java b/src/minecraft/tdwp_ftw/biomesop/blocks/BlockDesertGrass.java index 6c139cae5..c50683dfc 100644 --- a/src/minecraft/tdwp_ftw/biomesop/blocks/BlockDesertGrass.java +++ b/src/minecraft/tdwp_ftw/biomesop/blocks/BlockDesertGrass.java @@ -14,6 +14,7 @@ import net.minecraftforge.common.IShearable; import tdwp_ftw.biomesop.mod_BiomesOPlenty; import tdwp_ftw.biomesop.configuration.BOPBlocks; +@Deprecated public class BlockDesertGrass extends Block implements IShearable { protected BlockDesertGrass(int par1, Material par3Material) diff --git a/src/minecraft/tdwp_ftw/biomesop/blocks/BlockDesertSprouts.java b/src/minecraft/tdwp_ftw/biomesop/blocks/BlockDesertSprouts.java index c3e498a7d..d4125a76c 100644 --- a/src/minecraft/tdwp_ftw/biomesop/blocks/BlockDesertSprouts.java +++ b/src/minecraft/tdwp_ftw/biomesop/blocks/BlockDesertSprouts.java @@ -9,6 +9,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import tdwp_ftw.biomesop.mod_BiomesOPlenty; +@Deprecated public class BlockDesertSprouts extends Block { protected BlockDesertSprouts(int par1, Material par3Material) diff --git a/src/minecraft/tdwp_ftw/biomesop/blocks/BlockDuneGrass.java b/src/minecraft/tdwp_ftw/biomesop/blocks/BlockDuneGrass.java index 7d04211e3..3ea24604b 100644 --- a/src/minecraft/tdwp_ftw/biomesop/blocks/BlockDuneGrass.java +++ b/src/minecraft/tdwp_ftw/biomesop/blocks/BlockDuneGrass.java @@ -9,6 +9,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import tdwp_ftw.biomesop.mod_BiomesOPlenty; +@Deprecated public class BlockDuneGrass extends Block { protected BlockDuneGrass(int par1, Material par3Material) diff --git a/src/minecraft/tdwp_ftw/biomesop/blocks/BlockHighGrassBottom.java b/src/minecraft/tdwp_ftw/biomesop/blocks/BlockHighGrassBottom.java index 333090799..1fc9a2ad6 100644 --- a/src/minecraft/tdwp_ftw/biomesop/blocks/BlockHighGrassBottom.java +++ b/src/minecraft/tdwp_ftw/biomesop/blocks/BlockHighGrassBottom.java @@ -13,6 +13,7 @@ import net.minecraft.world.ColorizerGrass; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +@Deprecated public class BlockHighGrassBottom extends BlockFlower { public BlockHighGrassBottom(int par1) diff --git a/src/minecraft/tdwp_ftw/biomesop/blocks/BlockHighGrassTop.java b/src/minecraft/tdwp_ftw/biomesop/blocks/BlockHighGrassTop.java index 18f646ea4..f3fbc6859 100644 --- a/src/minecraft/tdwp_ftw/biomesop/blocks/BlockHighGrassTop.java +++ b/src/minecraft/tdwp_ftw/biomesop/blocks/BlockHighGrassTop.java @@ -10,6 +10,7 @@ import net.minecraft.world.ColorizerGrass; import net.minecraft.world.IBlockAccess; import tdwp_ftw.biomesop.configuration.BOPBlocks; +@Deprecated public class BlockHighGrassTop extends BlockFlower { public BlockHighGrassTop(int par1) diff --git a/src/minecraft/tdwp_ftw/biomesop/blocks/BlockHolyTallGrass.java b/src/minecraft/tdwp_ftw/biomesop/blocks/BlockHolyTallGrass.java index accc16741..f364c9c8a 100644 --- a/src/minecraft/tdwp_ftw/biomesop/blocks/BlockHolyTallGrass.java +++ b/src/minecraft/tdwp_ftw/biomesop/blocks/BlockHolyTallGrass.java @@ -13,6 +13,7 @@ import net.minecraftforge.common.IShearable; import tdwp_ftw.biomesop.mod_BiomesOPlenty; import tdwp_ftw.biomesop.configuration.BOPBlocks; +@Deprecated public class BlockHolyTallGrass extends Block implements IShearable { protected BlockHolyTallGrass(int par1, Material par3Material) diff --git a/src/minecraft/tdwp_ftw/biomesop/blocks/BlockMediumGrass.java b/src/minecraft/tdwp_ftw/biomesop/blocks/BlockMediumGrass.java index 94bd5dea8..17dcaee3a 100644 --- a/src/minecraft/tdwp_ftw/biomesop/blocks/BlockMediumGrass.java +++ b/src/minecraft/tdwp_ftw/biomesop/blocks/BlockMediumGrass.java @@ -18,6 +18,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.IShearable; import tdwp_ftw.biomesop.configuration.BOPItems; +@Deprecated public class BlockMediumGrass extends BlockFlower implements IShearable { public BlockMediumGrass(int par1) diff --git a/src/minecraft/tdwp_ftw/biomesop/blocks/BlockShortGrass.java b/src/minecraft/tdwp_ftw/biomesop/blocks/BlockShortGrass.java index 27f15c436..23af03540 100644 --- a/src/minecraft/tdwp_ftw/biomesop/blocks/BlockShortGrass.java +++ b/src/minecraft/tdwp_ftw/biomesop/blocks/BlockShortGrass.java @@ -16,6 +16,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.IShearable; import tdwp_ftw.biomesop.configuration.BOPItems; +@Deprecated public class BlockShortGrass extends BlockFlower implements IShearable { public BlockShortGrass(int par1) diff --git a/src/minecraft/tdwp_ftw/biomesop/blocks/BlockSprout.java b/src/minecraft/tdwp_ftw/biomesop/blocks/BlockSprout.java index 92f980004..832d21b8c 100644 --- a/src/minecraft/tdwp_ftw/biomesop/blocks/BlockSprout.java +++ b/src/minecraft/tdwp_ftw/biomesop/blocks/BlockSprout.java @@ -18,6 +18,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.IShearable; import tdwp_ftw.biomesop.configuration.BOPItems; +@Deprecated public class BlockSprout extends BlockFlower implements IShearable { public BlockSprout(int par1) diff --git a/src/minecraft/tdwp_ftw/biomesop/blocks/BlockThorn.java b/src/minecraft/tdwp_ftw/biomesop/blocks/BlockThorn.java index da6dbaf1b..92ecfb4b6 100644 --- a/src/minecraft/tdwp_ftw/biomesop/blocks/BlockThorn.java +++ b/src/minecraft/tdwp_ftw/biomesop/blocks/BlockThorn.java @@ -18,6 +18,7 @@ import net.minecraftforge.common.IShearable; import tdwp_ftw.biomesop.mod_BiomesOPlenty; import tdwp_ftw.biomesop.configuration.BOPBlocks; +@Deprecated public class BlockThorn extends Block implements IShearable { protected BlockThorn(int par1, Material par3Material) diff --git a/src/minecraft/tdwp_ftw/biomesop/blocks/BlockTinyCactus.java b/src/minecraft/tdwp_ftw/biomesop/blocks/BlockTinyCactus.java index 05b37d4a6..d66b87286 100644 --- a/src/minecraft/tdwp_ftw/biomesop/blocks/BlockTinyCactus.java +++ b/src/minecraft/tdwp_ftw/biomesop/blocks/BlockTinyCactus.java @@ -11,6 +11,7 @@ import net.minecraft.util.DamageSource; import net.minecraft.world.World; import tdwp_ftw.biomesop.mod_BiomesOPlenty; +@Deprecated public class BlockTinyCactus extends Block { protected BlockTinyCactus(int par1, Material par3Material) diff --git a/src/minecraft/tdwp_ftw/biomesop/blocks/BlockToadstool.java b/src/minecraft/tdwp_ftw/biomesop/blocks/BlockToadstool.java index 5e4ca685f..39637424b 100644 --- a/src/minecraft/tdwp_ftw/biomesop/blocks/BlockToadstool.java +++ b/src/minecraft/tdwp_ftw/biomesop/blocks/BlockToadstool.java @@ -9,6 +9,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import tdwp_ftw.biomesop.mod_BiomesOPlenty; +@Deprecated public class BlockToadstool extends Block { protected BlockToadstool(int par1, Material par3Material) diff --git a/src/minecraft/tdwp_ftw/biomesop/configuration/BOPBlocks.java b/src/minecraft/tdwp_ftw/biomesop/configuration/BOPBlocks.java index 271c6e7ad..bd0fc4cc2 100644 --- a/src/minecraft/tdwp_ftw/biomesop/configuration/BOPBlocks.java +++ b/src/minecraft/tdwp_ftw/biomesop/configuration/BOPBlocks.java @@ -15,10 +15,12 @@ import tdwp_ftw.biomesop.blocks.BlockBOPLog.LogCategory; import tdwp_ftw.biomesop.blocks.BlockBOPSlab.SlabCategory; import tdwp_ftw.biomesop.blocks.BlockBOPStairs.WoodCategory; import tdwp_ftw.biomesop.items.ItemBOPFlower; +import tdwp_ftw.biomesop.items.ItemBOPFoliage; import tdwp_ftw.biomesop.items.ItemBOPPlank; import tdwp_ftw.biomesop.items.ItemBOPSlab; import tdwp_ftw.biomesop.items.ItemBOPLeaves; import tdwp_ftw.biomesop.items.ItemBOPLog; +import tdwp_ftw.biomesop.items.ItemBOPPlant; import tdwp_ftw.biomesop.items.ItemBOPColorizedLeaves; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.common.registry.LanguageRegistry; @@ -478,8 +480,8 @@ public class BOPBlocks { LanguageRegistry.addName(new ItemStack(Blocks.stoneSingleSlab.get(),1,0), "Red Rock Bricks Slab"); LanguageRegistry.addName(new ItemStack(Blocks.stoneSingleSlab.get(),1,1), "Red Rock Cobblestone Slab"); LanguageRegistry.addName(new ItemStack(Blocks.stoneSingleSlab.get(),1,2), "Mud Bricks Slab"); - - // Flowers - WORKING! + + // Flowers - WORKING! - need a fix for tiny cactus Blocks.flowers = Optional.of((new BlockBOPFlower(2002)).setHardness(0.0F).setStepSound(Block.soundGrassFootstep).setUnlocalizedName("flowers")); GameRegistry.registerBlock(Blocks.flowers.get(), ItemBOPFlower.class, "flowers"); @@ -492,8 +494,9 @@ public class BOPBlocks { LanguageRegistry.addName(new ItemStack(Blocks.flowers.get(),1,6), "Wildflower"); LanguageRegistry.addName(new ItemStack(Blocks.flowers.get(),1,7), "Violet"); LanguageRegistry.addName(new ItemStack(Blocks.flowers.get(),1,8), "Anemone"); + LanguageRegistry.addName(new ItemStack(Blocks.flowers.get(),1,9), "Toadstool"); + LanguageRegistry.addName(new ItemStack(Blocks.flowers.get(),1,10), "Tiny Cactus"); - // Leaves - Almost working, will have to fix drops Blocks.leaves = Optional.of((new BlockBOPLeaves(2000)).setHardness(0.2F).setLightOpacity(1).setStepSound(Block.soundGrassFootstep).setUnlocalizedName("leaves")); GameRegistry.registerBlock(Blocks.leaves.get(), ItemBOPLeaves.class, "leaves"); @@ -541,8 +544,29 @@ public class BOPBlocks { LanguageRegistry.addName(new ItemStack(Blocks.logs3.get(),1,0), "Redwood Wood"); LanguageRegistry.addName(new ItemStack(Blocks.logs3.get(),1,1), "Willow Wood"); LanguageRegistry.addName(new ItemStack(Blocks.logs3.get(),1,2), "Dead Wood"); -*/ + + // Foliage - WORKIMG! + Blocks.foliage = Optional.of((new BlockBOPFoliage(1988)).setUnlocalizedName("foliage")); + GameRegistry.registerBlock(Blocks.foliage.get(), ItemBOPFoliage.class, "foliage"); + + LanguageRegistry.addName(new ItemStack(Blocks.foliage.get(),1,0), "Short Grass"); + LanguageRegistry.addName(new ItemStack(Blocks.foliage.get(),1,1), "Medium Grass"); + LanguageRegistry.addName(new ItemStack(Blocks.foliage.get(),1,2), "High Grass"); + LanguageRegistry.addName(new ItemStack(Blocks.foliage.get(),1,3), "Bush"); + LanguageRegistry.addName(new ItemStack(Blocks.foliage.get(),1,4), "Sprout"); + + // Plants - Semi working + Blocks.plants = Optional.of((new BlockBOPPlant(1987)).setUnlocalizedName("plants")); + GameRegistry.registerBlock(Blocks.plants.get(), ItemBOPPlant.class, "plants"); + LanguageRegistry.addName(new ItemStack(Blocks.plants.get(),1,0), "Dead Grass"); + LanguageRegistry.addName(new ItemStack(Blocks.plants.get(),1,1), "Desert Grass"); + LanguageRegistry.addName(new ItemStack(Blocks.plants.get(),1,2), "Desert Sprouts"); + LanguageRegistry.addName(new ItemStack(Blocks.plants.get(),1,3), "Dune Grass"); + LanguageRegistry.addName(new ItemStack(Blocks.plants.get(),1,4), "Holy Tall Grass"); + LanguageRegistry.addName(new ItemStack(Blocks.plants.get(),1,5), "Thorns"); +*/ + // Add block registration GameRegistry.registerBlock(mud, "mud"); GameRegistry.registerBlock(driedDirt, "driedDirt"); diff --git a/src/minecraft/tdwp_ftw/biomesop/items/ItemBOPFlower.java b/src/minecraft/tdwp_ftw/biomesop/items/ItemBOPFlower.java index 8d0a975fd..c07fcd7e8 100644 --- a/src/minecraft/tdwp_ftw/biomesop/items/ItemBOPFlower.java +++ b/src/minecraft/tdwp_ftw/biomesop/items/ItemBOPFlower.java @@ -7,7 +7,7 @@ import net.minecraft.util.Icon; public class ItemBOPFlower extends ItemBlock { - private static final String[] plants = new String[] {"swampflower", "deadbloom", "glowflower", "hydrangea", "orangeflower", "pinkflower", "purpleflower", "violet", "whiteflower"}; + private static final String[] plants = new String[] {"swampflower", "deadbloom", "glowflower", "hydrangea", "orangeflower", "pinkflower", "purpleflower", "violet", "whiteflower", "toadstool", "cactus"}; public ItemBOPFlower(int par1) { diff --git a/src/minecraft/tdwp_ftw/biomesop/items/ItemBOPFoliage.java b/src/minecraft/tdwp_ftw/biomesop/items/ItemBOPFoliage.java new file mode 100644 index 000000000..ad0ef860c --- /dev/null +++ b/src/minecraft/tdwp_ftw/biomesop/items/ItemBOPFoliage.java @@ -0,0 +1,81 @@ +package tdwp_ftw.biomesop.items; + +import net.minecraft.block.Block; +import net.minecraft.client.renderer.texture.IconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.util.Icon; +import net.minecraft.world.World; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +public class ItemBOPFoliage extends ItemBlock +{ + private static final String[] foliageTypes = new String[] {"shortgrass", "mediumgrass", "highgrass", "bush", "sprout", "highgrasstop"}; + @SideOnly(Side.CLIENT) + private Icon[] textures; + + public ItemBOPFoliage(int par1) + { + super(par1); + setMaxDamage(0); + setHasSubtypes(true); + } + + @SideOnly(Side.CLIENT) + public void updateIcons(IconRegister iconRegister) + { + textures = new Icon[foliageTypes.length - 1]; + + for (int i = 0; i < foliageTypes.length - 1; ++i) + textures[i] = iconRegister.registerIcon("BiomesOPlenty:item" + foliageTypes[i]); + } + + @Override + public int getMetadata(int meta) + { + return meta; + } + + @Override + public String getUnlocalizedName(ItemStack itemStack) + { + return (new StringBuilder()).append(foliageTypes[itemStack.getItemDamage()]).toString(); + } + + @Override + public Icon getIconFromDamage(int meta) + { + if (meta == 5) + meta = 2; + return textures[meta]; + } + + public boolean onItemUse(ItemStack itemStack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) + { + + if (itemStack.getItemDamage() != 2) + { + return super.onItemUse(itemStack, player, world, x, y, z, side, hitX, hitY, hitZ); + } + else + { + ++y; + + if (!(player.canPlayerEdit(x, y, z, side, itemStack) || player.canPlayerEdit(x, y + 1, z, side, itemStack))) + return false; + else if (world.getBlockMaterial(x, y, z).isReplaceable() && world.getBlockMaterial(x, y + 1, z).isReplaceable()) + { + world.setBlock(x, y, z, itemStack.itemID, 2, 2); + world.setBlock(x, y + 1, z, itemStack.itemID, 5, 2); + world.notifyBlocksOfNeighborChange(x, y, z, itemStack.itemID); + world.notifyBlocksOfNeighborChange(x, y + 1, z, itemStack.itemID); + Block block = Block.blocksList[itemStack.itemID]; + world.playSoundEffect((double)((float)x + 0.5F), (double)((float)y + 0.5F), (double)((float)z + 0.5F), block.stepSound.getPlaceSound(), (block.stepSound.getVolume() + 1.0F) / 2.0F, block.stepSound.getPitch() * 0.8F); + --itemStack.stackSize; + } + return true; + } + } +} diff --git a/src/minecraft/tdwp_ftw/biomesop/items/ItemBOPPlant.java b/src/minecraft/tdwp_ftw/biomesop/items/ItemBOPPlant.java new file mode 100644 index 000000000..c93fb97ad --- /dev/null +++ b/src/minecraft/tdwp_ftw/biomesop/items/ItemBOPPlant.java @@ -0,0 +1,36 @@ +package tdwp_ftw.biomesop.items; + +import net.minecraft.block.Block; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.util.Icon; + +public class ItemBOPPlant extends ItemBlock +{ + private static final String[] plants = new String[] {"deadgrass", "desertgrass", "desertsprouts", "dunegrass", "holytallgrass", "thorn"}; + + public ItemBOPPlant(int par1) + { + super(par1); + setMaxDamage(0); + setHasSubtypes(true); + } + + @Override + public int getMetadata(int meta) + { + return meta; + } + + @Override + public String getUnlocalizedName(ItemStack itemStack) + { + return (new StringBuilder()).append(plants[itemStack.getItemDamage()]).toString(); + } + + @Override + public Icon getIconFromDamage(int meta) + { + return Block.blocksList[this.itemID].getBlockTextureFromSideAndMetadata(0, meta); + } +}