diff options
author | Draknyte1 <Draknyte1@hotmail.com> | 2016-12-20 22:14:10 +1000 |
---|---|---|
committer | Draknyte1 <Draknyte1@hotmail.com> | 2016-12-20 22:14:10 +1000 |
commit | e95b35542d8de340835c00d4d21b527350d0cd6c (patch) | |
tree | f3fea67e2634676ea21c423103286ba7bb017e7e /src/Java/gtPlusPlus/core/block | |
parent | e4e40d86c0c868846cf20098dc1481f3ee3703b5 (diff) | |
download | GT5-Unofficial-e95b35542d8de340835c00d4d21b527350d0cd6c.tar.gz GT5-Unofficial-e95b35542d8de340835c00d4d21b527350d0cd6c.tar.bz2 GT5-Unofficial-e95b35542d8de340835c00d4d21b527350d0cd6c.zip |
+ Added a TESR for the Fire Pit, it's off-centre, but otherwise renders fine.
Diffstat (limited to 'src/Java/gtPlusPlus/core/block')
-rw-r--r-- | src/Java/gtPlusPlus/core/block/base/BasicBlock.java | 12 | ||||
-rw-r--r-- | src/Java/gtPlusPlus/core/block/general/FirePit.java | 225 |
2 files changed, 235 insertions, 2 deletions
diff --git a/src/Java/gtPlusPlus/core/block/base/BasicBlock.java b/src/Java/gtPlusPlus/core/block/base/BasicBlock.java index c95f37d9c5..364a849ebc 100644 --- a/src/Java/gtPlusPlus/core/block/base/BasicBlock.java +++ b/src/Java/gtPlusPlus/core/block/base/BasicBlock.java @@ -3,10 +3,12 @@ package gtPlusPlus.core.block.base; import gtPlusPlus.core.creative.AddToCreativeTab; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.util.Utils; -import net.minecraft.block.Block; +import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; -public class BasicBlock extends Block { +public class BasicBlock extends BlockContainer { public BasicBlock(final String unlocalizedName, final Material material) { super(material); @@ -48,5 +50,11 @@ public class BasicBlock extends Block { } } + + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + return null; + } } diff --git a/src/Java/gtPlusPlus/core/block/general/FirePit.java b/src/Java/gtPlusPlus/core/block/general/FirePit.java new file mode 100644 index 0000000000..4dd58df6a4 --- /dev/null +++ b/src/Java/gtPlusPlus/core/block/general/FirePit.java @@ -0,0 +1,225 @@ +package gtPlusPlus.core.block.general; + +import static net.minecraftforge.common.util.ForgeDirection.*; +import gtPlusPlus.core.block.base.BasicBlock; +import gtPlusPlus.core.creative.AddToCreativeTab; +import gtPlusPlus.core.tileentities.general.TileEntityFirepit; + +import java.util.List; +import java.util.Random; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; +import cpw.mods.fml.common.registry.GameRegistry; +import cpw.mods.fml.common.registry.LanguageRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +public class FirePit extends BasicBlock{ + private static IIcon[] TEXTURE; + public static final int META_ANTIBUILDER = 2; + private int meta; + + @SuppressWarnings("deprecation") + public FirePit() { + super("blockFirePit", Material.wood); + this.setBlockName("blockFirePit"); + this.setCreativeTab(AddToCreativeTab.tabMachines); + this.setHardness(10.0F); + this.setResistance(35.0F); + this.setStepSound(Block.soundTypeWood); + GameRegistry.registerBlock(this, "blockFirePit"); + LanguageRegistry.addName(this, "Fire Pit"); + } + + @Override + public int tickRate(World aParWorld) { + return 30; + } + + @Override + public TileEntity createNewTileEntity(World world, int i) { + return new TileEntityFirepit(); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister par1IconRegister){ + TEXTURE = new IIcon[] {par1IconRegister.registerIcon(this.getTextureName() + "_layer_0"), par1IconRegister.registerIcon(this.getTextureName() + "_layer_1")}; + } + + @SuppressWarnings({ "rawtypes", "unchecked" }) + @Override + public void getSubBlocks(Item par1, CreativeTabs par2CreativeTabs, List par3List){ + par3List.add(new ItemStack(par1, 1, 2)); + } + + @Override + public void updateTick(World par1World, int x, int y, int z, Random par5Random){ + if (!par1World.isRemote){ + //Sets meta. + meta = par1World.getBlockMetadata(x, y, z); + //If Raining, Put out. + if (par1World.isRaining() + && (par1World.canLightningStrikeAt(x, y, z) + || par1World.canLightningStrikeAt(x - 1, y, z) + || par1World.canLightningStrikeAt(x + 1, y, z) + || par1World.canLightningStrikeAt(x, y, z - 1) + || par1World.canLightningStrikeAt(x, y, z + 1))){ + //Fire goes out + par1World.setBlockMetadataWithNotify(x, y, z, 1, 4); + } + if (isNeighborBurning(par1World, x, y, z)){ + //Fire can ignite from a nearby flame source. + par1World.setBlockMetadataWithNotify(x, y, z, 2, 4); + } + } + } + + @Override + public Item getItemDropped(int meta, Random par2Random, int par3){ + switch (meta){ + case 0: + return null; + default: + break; + } + return Item.getItemFromBlock(this); + } + + @Override + public int damageDropped(int meta){ + return meta; + } + + @Override + public boolean isOpaqueCube(){ + return false; + } + + @Override + public int getRenderType(){ + return -1; + } + + @Override + @SideOnly(Side.CLIENT) + public int getRenderBlockPass(){ + return 1; + } + + @Override + public boolean renderAsNormalBlock(){ + return false; + } + + /*@Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World aParWorld, int x, int y, int z){ + return null; + }*/ + + @Override + protected boolean canSilkHarvest(){ + return false; + } + + @Override + @SideOnly(Side.CLIENT) + public void randomDisplayTick(World p_149734_1_, int p_149734_2_, int p_149734_3_, int p_149734_4_, Random p_149734_5_){ + int l; + float f; + float f1; + float f2; + if (meta == 2) + if (p_149734_5_.nextInt(24) == 0){ + p_149734_1_.playSound((double)((float)p_149734_2_ + 0.5F), (double)((float)p_149734_3_ + 0.5F), (double)((float)p_149734_4_ + 0.5F), "fire.fire", 1.0F + p_149734_5_.nextFloat(), p_149734_5_.nextFloat() * 0.7F + 0.3F, false); + } + if (meta == 2) + if (!World.doesBlockHaveSolidTopSurface(p_149734_1_, p_149734_2_, p_149734_3_ - 1, p_149734_4_) && !Blocks.fire.canCatchFire(p_149734_1_, p_149734_2_, p_149734_3_ - 1, p_149734_4_, UP)){ + if (Blocks.fire.canCatchFire(p_149734_1_, p_149734_2_ - 1, p_149734_3_, p_149734_4_, EAST)){ + for (l = 0; l < 2; ++l){ + f = (float)p_149734_2_ + p_149734_5_.nextFloat() * 0.1F; + f1 = (float)p_149734_3_ + p_149734_5_.nextFloat(); + f2 = (float)p_149734_4_ + p_149734_5_.nextFloat(); + p_149734_1_.spawnParticle("largesmoke", (double)f, (double)f1, (double)f2, 0.0D, 0.0D, 0.0D); + } + } + if (Blocks.fire.canCatchFire(p_149734_1_, p_149734_2_ + 1, p_149734_3_, p_149734_4_, WEST)){ + for (l = 0; l < 2; ++l){ + f = (float)(p_149734_2_ + 1) - p_149734_5_.nextFloat() * 0.1F; + f1 = (float)p_149734_3_ + p_149734_5_.nextFloat(); + f2 = (float)p_149734_4_ + p_149734_5_.nextFloat(); + p_149734_1_.spawnParticle("largesmoke", (double)f, (double)f1, (double)f2, 0.0D, 0.0D, 0.0D); + } + } + if (Blocks.fire.canCatchFire(p_149734_1_, p_149734_2_, p_149734_3_, p_149734_4_ - 1, SOUTH)){ + for (l = 0; l < 2; ++l){ + f = (float)p_149734_2_ + p_149734_5_.nextFloat(); + f1 = (float)p_149734_3_ + p_149734_5_.nextFloat(); + f2 = (float)p_149734_4_ + p_149734_5_.nextFloat() * 0.1F; + p_149734_1_.spawnParticle("largesmoke", (double)f, (double)f1, (double)f2, 0.0D, 0.0D, 0.0D); + } + } + if (Blocks.fire.canCatchFire(p_149734_1_, p_149734_2_, p_149734_3_, p_149734_4_ + 1, NORTH)){ + for (l = 0; l < 2; ++l){ + f = (float)p_149734_2_ + p_149734_5_.nextFloat(); + f1 = (float)p_149734_3_ + p_149734_5_.nextFloat(); + f2 = (float)(p_149734_4_ + 1) - p_149734_5_.nextFloat() * 0.1F; + p_149734_1_.spawnParticle("largesmoke", (double)f, (double)f1, (double)f2, 0.0D, 0.0D, 0.0D); + } + } + if (Blocks.fire.canCatchFire(p_149734_1_, p_149734_2_, p_149734_3_ + 1, p_149734_4_, DOWN)){ + for (l = 0; l < 2; ++l){ + f = (float)p_149734_2_ + p_149734_5_.nextFloat(); + f1 = (float)(p_149734_3_ + 1) - p_149734_5_.nextFloat() * 0.1F; + f2 = (float)p_149734_4_ + p_149734_5_.nextFloat(); + p_149734_1_.spawnParticle("largesmoke", (double)f, (double)f1, (double)f2, 0.0D, 0.0D, 0.0D); + } + } + } + else{ + if (meta == 2) + for (l = 0; l < 3; ++l){ + f = (float)p_149734_2_ + p_149734_5_.nextFloat(); + f1 = (float)p_149734_3_ + p_149734_5_.nextFloat() * 0.5F + 0.5F; + f2 = (float)p_149734_4_ + p_149734_5_.nextFloat(); + p_149734_1_.spawnParticle("largesmoke", (double)f, (double)f1, (double)f2, 0.0D, 0.0D, 0.0D); + } + } + } + + @SideOnly(Side.CLIENT) + public static IIcon getFireIcon(int p_149840_1_){ + return FirePit.TEXTURE[p_149840_1_]; + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int p_149691_1_, int p_149691_2_){ + return FirePit.TEXTURE[0]; + } + + private static boolean isNeighborBurning(World world, int x, int y, int z){ + return canCatchFire(world, x + 1, y, z, WEST ) || + canCatchFire(world, x - 1, y, z, EAST ) || + canCatchFire(world, x, y - 1, z, UP ) || + canCatchFire(world, x, y + 1, z, DOWN ) || + canCatchFire(world, x, y, z - 1, SOUTH) || + canCatchFire(world, x, y, z + 1, NORTH); + } + + public static boolean canCatchFire(World world, int x, int y, int z, ForgeDirection face) + { + return world.getBlock(x, y, z).isFireSource(world, x, y, z, face); + } + +} |