Advertisement
Corosus

Diagonal anti leaf decay + 2 range

Sep 4th, 2011
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.11 KB | None | 0 0
  1. package net.minecraft.src;
  2.  
  3. import java.util.Random;
  4. import net.minecraft.src.Block;
  5. import net.minecraft.src.BlockLeavesBase;
  6. import net.minecraft.src.ColorizerFoliage;
  7. import net.minecraft.src.Entity;
  8. import net.minecraft.src.EntityPlayer;
  9. import net.minecraft.src.IBlockAccess;
  10. import net.minecraft.src.Item;
  11. import net.minecraft.src.ItemStack;
  12. import net.minecraft.src.Material;
  13. import net.minecraft.src.StatList;
  14. import net.minecraft.src.World;
  15.  
  16. public class BlockLeaves extends BlockLeavesBase {
  17.  
  18.    private int baseIndexInPNG;
  19.    int[] adjacentTreeBlocks;
  20.  
  21.  
  22.    protected BlockLeaves(int var1, int var2) {
  23.       super(var1, var2, Material.leaves, false);
  24.       this.baseIndexInPNG = var2;
  25.       this.setTickOnLoad(true);
  26.    }
  27.  
  28.    public int getRenderColor(int var1) {
  29.       return (var1 & 1) == 1?ColorizerFoliage.getFoliageColorPine():((var1 & 2) == 2?ColorizerFoliage.getFoliageColorBirch():ColorizerFoliage.func_31073_c());
  30.    }
  31.  
  32.    public int colorMultiplier(IBlockAccess var1, int var2, int var3, int var4) {
  33.       int var5 = var1.getBlockMetadata(var2, var3, var4);
  34.       if((var5 & 1) == 1) {
  35.          return ColorizerFoliage.getFoliageColorPine();
  36.       } else if((var5 & 2) == 2) {
  37.          return ColorizerFoliage.getFoliageColorBirch();
  38.       } else {
  39.          var1.getWorldChunkManager().func_4069_a(var2, var4, 1, 1);
  40.          double var6 = var1.getWorldChunkManager().temperature[0];
  41.          double var8 = var1.getWorldChunkManager().humidity[0];
  42.          return ColorizerFoliage.getFoliageColor(var6, var8);
  43.       }
  44.    }
  45.  
  46.    public void onBlockRemoval(World var1, int var2, int var3, int var4) {
  47.       byte var5 = 1;
  48.       int var6 = var5 + 1;
  49.       if(var1.checkChunksExist(var2 - var6, var3 - var6, var4 - var6, var2 + var6, var3 + var6, var4 + var6)) {
  50.          for(int var7 = -var5; var7 <= var5; ++var7) {
  51.             for(int var8 = -var5; var8 <= var5; ++var8) {
  52.                for(int var9 = -var5; var9 <= var5; ++var9) {
  53.                   int var10 = var1.getBlockId(var2 + var7, var3 + var8, var4 + var9);
  54.                   if(var10 == Block.leaves.blockID) {
  55.                      int var11 = var1.getBlockMetadata(var2 + var7, var3 + var8, var4 + var9);
  56.                      var1.setBlockMetadata(var2 + var7, var3 + var8, var4 + var9, var11 | 8);
  57.                   }
  58.                }
  59.             }
  60.          }
  61.       }
  62.  
  63.    }
  64.  
  65.    public void updateTick(World var1, int var2, int var3, int var4, Random var5) {
  66.       if(!var1.multiplayerWorld) {
  67.          int var6 = var1.getBlockMetadata(var2, var3, var4);
  68.          if((var6 & 8) != 0) {
  69.             byte var7 = 6;
  70.             int var8 = var7 + 1;
  71.             byte var9 = 32;
  72.             int var10 = var9 * var9;
  73.             int var11 = var9 / 2;
  74.             if(this.adjacentTreeBlocks == null) {
  75.                this.adjacentTreeBlocks = new int[var9 * var9 * var9];
  76.             }
  77.  
  78.             int var12;
  79.             if(var1.checkChunksExist(var2 - var8, var3 - var8, var4 - var8, var2 + var8, var3 + var8, var4 + var8)) {
  80.                int var13;
  81.                int var14;
  82.                int var15;
  83.                for(var12 = -var7; var12 <= var7; ++var12) {
  84.                   for(var13 = -var7; var13 <= var7; ++var13) {
  85.                      for(var14 = -var7; var14 <= var7; ++var14) {
  86.                         var15 = var1.getBlockId(var2 + var12, var3 + var13, var4 + var14);
  87.                         if(var15 == Block.wood.blockID) {
  88.                            this.adjacentTreeBlocks[(var12 + var11) * var10 + (var13 + var11) * var9 + var14 + var11] = 0;
  89.                         } else if(var15 == Block.leaves.blockID) {
  90.                            this.adjacentTreeBlocks[(var12 + var11) * var10 + (var13 + var11) * var9 + var14 + var11] = -2;
  91.                         } else {
  92.                            this.adjacentTreeBlocks[(var12 + var11) * var10 + (var13 + var11) * var9 + var14 + var11] = -1;
  93.                         }
  94.                      }
  95.                   }
  96.                }
  97.  
  98.                int antiDecayRange = 1;
  99.                
  100.                for(var12 = 1; var12 <= 4; ++var12) {
  101.                   for(var13 = -var7; var13 <= var7; ++var13) {
  102.                      for(var14 = -var7; var14 <= var7; ++var14) {
  103.                         for(var15 = -var7; var15 <= var7; ++var15) {
  104.                            if(this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11) * var9 + var15 + var11] == var12 - 1) {
  105.                                for(int x = -antiDecayRange; x <= antiDecayRange; ++x) {
  106.                                    for(int y = -antiDecayRange; y <= antiDecayRange; ++y) {
  107.                                       for(int z = -antiDecayRange; z <= antiDecayRange; ++z) {
  108.                                           if(this.adjacentTreeBlocks[(var13 + var11 + x) * var10 + (var14 + var11 + y) * var9 + var15 + var11 + z] == -2) {
  109.                                               this.adjacentTreeBlocks[(var13 + var11 + x) * var10 + (var14 + var11 + y) * var9 + var15 + var11 + z] = var12;
  110.                                            }
  111.                                       }
  112.                                    }
  113.                                }
  114.                            }
  115.                         }
  116.                      }
  117.                   }
  118.                }
  119.             }
  120.  
  121.             var12 = this.adjacentTreeBlocks[var11 * var10 + var11 * var9 + var11];
  122.             if(var12 >= 0) {
  123.                var1.setBlockMetadata(var2, var3, var4, var6 & -9);
  124.             } else {
  125.                this.removeLeaves(var1, var2, var3, var4);
  126.             }
  127.          }
  128.  
  129.       }
  130.    }
  131.  
  132.    private void removeLeaves(World var1, int var2, int var3, int var4) {
  133.       this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4));
  134.       var1.setBlockWithNotify(var2, var3, var4, 0);
  135.    }
  136.  
  137.    public int quantityDropped(Random var1) {
  138.       return var1.nextInt(20) == 0?1:0;
  139.    }
  140.  
  141.    public int idDropped(int var1, Random var2) {
  142.       return Block.sapling.blockID;
  143.    }
  144.  
  145.    public void harvestBlock(World var1, EntityPlayer var2, int var3, int var4, int var5, int var6) {
  146.       if(!var1.multiplayerWorld && var2.getCurrentEquippedItem() != null && var2.getCurrentEquippedItem().itemID == Item.shears.shiftedIndex) {
  147.          var2.addStat(StatList.mineBlockStatArray[this.blockID], 1);
  148.          this.dropBlockAsItem_do(var1, var3, var4, var5, new ItemStack(Block.leaves.blockID, 1, var6 & 3));
  149.       } else {
  150.          super.harvestBlock(var1, var2, var3, var4, var5, var6);
  151.       }
  152.  
  153.    }
  154.  
  155.    protected int damageDropped(int var1) {
  156.       return var1 & 3;
  157.    }
  158.  
  159.    public boolean isOpaqueCube() {
  160.       return !this.graphicsLevel;
  161.    }
  162.  
  163.    public int getBlockTextureFromSideAndMetadata(int var1, int var2) {
  164.       return (var2 & 3) == 1?this.blockIndexInTexture + 80:this.blockIndexInTexture;
  165.    }
  166.  
  167.    public void setGraphicsLevel(boolean var1) {
  168.       this.graphicsLevel = var1;
  169.       this.blockIndexInTexture = this.baseIndexInPNG + (var1?0:1);
  170.    }
  171.  
  172.    public void onEntityWalking(World var1, int var2, int var3, int var4, Entity var5) {
  173.       super.onEntityWalking(var1, var2, var3, var4, var5);
  174.    }
  175. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement