aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus/core/block
diff options
context:
space:
mode:
authorDraknyte1 <Draknyte1@hotmail.com>2016-12-20 22:14:10 +1000
committerDraknyte1 <Draknyte1@hotmail.com>2016-12-20 22:14:10 +1000
commite95b35542d8de340835c00d4d21b527350d0cd6c (patch)
treef3fea67e2634676ea21c423103286ba7bb017e7e /src/Java/gtPlusPlus/core/block
parente4e40d86c0c868846cf20098dc1481f3ee3703b5 (diff)
downloadGT5-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.java12
-rw-r--r--src/Java/gtPlusPlus/core/block/general/FirePit.java225
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);
+ }
+
+}