Advertisement
RyanDolan123

OptiLeaves 1.4 [WORK IN PROGRESS]

Jan 4th, 2014
349
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 14.99 KB | None | 0 0
  1. //OptiLeaves v1.4 Progress
  2.  
  3. //THIS IS NOT A FULLY WORKING OPTILEAVES YET
  4. //NOT EVERYTHING IS IN PLACE
  5. //NOT EVERYTHING WORKS
  6.  
  7.  
  8. //On the side note, if you have any info on any of the unknown fields/funcs, please let me know on my twitter or on a reply to the OptiLeaves Minecraft thread! @RyanDolan123
  9.  
  10. package net.minecraft.block;
  11.  
  12. import java.util.Random;
  13.  
  14. import net.minecraft.block.material.Material;
  15. import net.minecraft.creativetab.CreativeTabs;
  16. import net.minecraft.entity.player.EntityPlayer;
  17. import net.minecraft.init.Blocks;
  18. import net.minecraft.init.Items;
  19. import net.minecraft.item.Item;
  20. import net.minecraft.item.ItemStack;
  21. import net.minecraft.profiler.Profiler;
  22. import net.minecraft.stats.StatList;
  23. import net.minecraft.util.IIcon;
  24. import net.minecraft.world.ColorizerFoliage;
  25. import net.minecraft.world.IBlockAccess;
  26. import net.minecraft.world.World;
  27.  
  28. public abstract class BlockLeaves extends BlockLeavesBase
  29. {
  30.     int[] adjacentTreeBlocks;
  31.     protected int field_150127_b; //Unknown, probably new
  32.     protected IIcon[][] field_150129_M = new IIcon[2][]; //iconArray
  33.     private static final String __OBFID = "CL_00000263"; //something to do with obfuscation
  34.    
  35.     public boolean isOptiLeaves = true;
  36.     public String OptiLeavesName = "OptiLeaves";
  37.     public String OptiLeavesVersion = "1.4 [WORK IN PROGRESS]";
  38.     public String OptiLeavesDesignedMCVersion = "1.7.2";
  39.    
  40.     private int[] FoliageColorCache = {ColorizerFoliage.getFoliageColorBasic(), ColorizerFoliage.getFoliageColorPine(), ColorizerFoliage.getFoliageColorBirch(),  ColorizerFoliage.getFoliageColorBasic(), ColorizerFoliage.getFoliageColorBasic(), ColorizerFoliage.getFoliageColorBasic(), ColorizerFoliage.getFoliageColorBasic(), ColorizerFoliage.getFoliageColorBasic(), ColorizerFoliage.getFoliageColorBasic(), ColorizerFoliage.getFoliageColorBasic(), ColorizerFoliage.getFoliageColorBasic(), ColorizerFoliage.getFoliageColorBasic(), ColorizerFoliage.getFoliageColorBasic(), ColorizerFoliage.getFoliageColorBasic(), ColorizerFoliage.getFoliageColorBasic(), ColorizerFoliage.getFoliageColorBasic()};
  41.     private int basicColor = ColorizerFoliage.getFoliageColor(0.5D, 1D);
  42.    
  43.     private final Profiler profiler = new Profiler();
  44.  
  45.     public BlockLeaves()
  46.     {
  47.         super(Material.field_151584_j, false); //Material.leaves
  48.         func_149675_a(true); //setTickRandomly
  49.         func_149647_a(CreativeTabs.tabDecorations); //setCreativeTab
  50.         func_149711_c(0.2F); //setHardness
  51.         func_149713_g(1); //setLightOpacity
  52.         func_149672_a(field_149779_h); //setFootstepSound
  53.        
  54.         profiler.startSection(OptiLeavesName + " " + OptiLeavesVersion + " for Minecraft " + OptiLeavesDesignedMCVersion); //Does this even work at all?
  55.     }
  56.    
  57.     public boolean func_149646_a(IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5) //shouldSideBeRendered
  58.     {
  59.         System.out.println("adas");
  60.         //if (par1IBlockAccess.func_147439_a(par2,par3,par4).func_149662_c())
  61.             //return true;
  62.        
  63.         System.out.println(par1IBlockAccess.func_147439_a(par2,par3,par4));
  64.         return par1IBlockAccess.func_147439_a(par2,par3,par4) != this;
  65.     }
  66.  
  67.     public int func_149635_D() //getBlockColor
  68.     {
  69.         return 69;
  70.     }
  71.  
  72.     public int func_149741_i(int par1) throws IllegalArgumentException //getRenderColor
  73.     {
  74.         return FoliageColorCache[par1];
  75.     }
  76.  
  77.     public int func_149720_d(IBlockAccess par1IBlockAccess, int par2, int par3, int par4) //colorMultiplier
  78.     {
  79.         int l = par1IBlockAccess.getBlockMetadata(par2, par3, par4);
  80.        
  81.         switch(l & 3) {
  82.         case 1:
  83.             return ColorizerFoliage.getFoliageColorPine();
  84.         case 2:
  85.             return ColorizerFoliage.getFoliageColorBirch();
  86.         default:
  87.             int i1 = 0;
  88.             int j1 = 0;
  89.             int k1 = 0;
  90.  
  91.             for (int l1 = -1; l1 <= 1; l1++)
  92.             {
  93.                 for (int i2 = -1; i2 <= 1; i2++)
  94.                 {
  95.                     int j2 = par1IBlockAccess.getBiomeGenForCoords(par2 + i2, par4 + l1).func_150571_c(par2 + i2, par3, par4 + i2);
  96.                     i1 += (j2 & 16711680) >> 16;
  97.                     j1 += (j2 & 65280) >> 8;
  98.                     k1 += j2 & 255;
  99.                 }
  100.             }
  101.  
  102.             return (i1 / 9 & 255) << 16 | (j1 / 9 & 255) << 8 | k1 / 9 & 255;
  103.         }
  104.     }
  105.  
  106.     public void func_149749_a(World par1World, int par2, int par3, int par4, Block par5, int par6) //breakBlock
  107.     {
  108.         byte var7 = 1;
  109.         int var8 = var7 + 1;
  110.  
  111.         if (par1World.checkChunksExist(par2 - var8, par3 - var8, par4 - var8, par2 + var8, par3 + var8, par4 + var8))
  112.         {
  113.             for (int var9 = -var7; var9 <= var7; ++var9)
  114.             {
  115.                 for (int var10 = -var7; var10 <= var7; ++var10)
  116.                 {
  117.                     for (int var11 = -var7; var11 <= var7; ++var11)
  118.                     {
  119.                         if (par1World.func_147439_a(par2 + var9, par3 + var10, par4 + var11).func_149688_o() == Material.field_151584_j)
  120.                         {
  121.                             int var12 = par1World.getBlockMetadata(par2 + var9, par3 + var10, par4 + var11);
  122.                             par1World.setBlockMetadataWithNotify(par2 + var9, par3 + var10, par4 + var11, var12 | 8, 4);
  123.                         }
  124.                     }
  125.                 }
  126.             }
  127.         }
  128.     }
  129.  
  130.     public void func_149674_a(World par1World, int par2, int par3, int par4, Random par5Random) //updateTick
  131.     {
  132.         if (!par1World.isRemote)
  133.         {
  134.             int var6 = par1World.getBlockMetadata(par2, par3, par4);
  135.  
  136.             if ((var6 & 8) != 0 && (var6 & 4) == 0)
  137.             {
  138.                 byte var7 = 4;
  139.                 int var8 = var7 + 1;
  140.                 byte var9 = 32;
  141.                 int var10 = var9 * var9;
  142.                 int var11 = var9 / 2;
  143.  
  144.                 if (adjacentTreeBlocks == null)
  145.                 {
  146.                     adjacentTreeBlocks = new int[var9 * var9 * var9];
  147.                 }
  148.  
  149.                 int var12;
  150.  
  151.                 if (par1World.checkChunksExist(par2 - var8, par3 - var8, par4 - var8, par2 + var8, par3 + var8, par4 + var8))
  152.                 {
  153.                     int var13;
  154.                     int var14;
  155.  
  156.                     for (var12 = -var7; var12 <= var7; ++var12)
  157.                     {
  158.                         for (var13 = -var7; var13 <= var7; ++var13)
  159.                         {
  160.                             for (var14 = -var7; var14 <= var7; ++var14)
  161.                             {
  162.                                 Block var15 = par1World.func_147439_a(par2 + var12, par3 + var13, par4 + var14);
  163.  
  164.                                 if (var15 != Blocks.field_150364_r && var15 != Blocks.field_150363_s)
  165.                                 {
  166.                                     if (var15.func_149688_o() == Material.field_151584_j)
  167.                                     {
  168.                                         adjacentTreeBlocks[(var12 + var11) * var10 + (var13 + var11) * var9 + var14 + var11] = -2;
  169.                                     }
  170.                                     else
  171.                                     {
  172.                                         adjacentTreeBlocks[(var12 + var11) * var10 + (var13 + var11) * var9 + var14 + var11] = -1;
  173.                                     }
  174.                                 }
  175.                                 else
  176.                                 {
  177.                                     adjacentTreeBlocks[(var12 + var11) * var10 + (var13 + var11) * var9 + var14 + var11] = 0;
  178.                                 }
  179.                             }
  180.                         }
  181.                     }
  182.  
  183.                     for (var12 = 1; var12 <= 4; ++var12)
  184.                     {
  185.                         for (var13 = -var7; var13 <= var7; ++var13)
  186.                         {
  187.                             for (var14 = -var7; var14 <= var7; ++var14)
  188.                             {
  189.                                 for (int var16 = -var7; var16 <= var7; ++var16)
  190.                                 {
  191.                                     if (adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11) * var9 + var16 + var11] == var12 - 1)
  192.                                     {
  193.                                         if (adjacentTreeBlocks[(var13 + var11 - 1) * var10 + (var14 + var11) * var9 + var16 + var11] == -2)
  194.                                         {
  195.                                             adjacentTreeBlocks[(var13 + var11 - 1) * var10 + (var14 + var11) * var9 + var16 + var11] = var12;
  196.                                         }
  197.  
  198.                                         if (adjacentTreeBlocks[(var13 + var11 + 1) * var10 + (var14 + var11) * var9 + var16 + var11] == -2)
  199.                                         {
  200.                                             adjacentTreeBlocks[(var13 + var11 + 1) * var10 + (var14 + var11) * var9 + var16 + var11] = var12;
  201.                                         }
  202.  
  203.                                         if (adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11 - 1) * var9 + var16 + var11] == -2)
  204.                                         {
  205.                                             adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11 - 1) * var9 + var16 + var11] = var12;
  206.                                         }
  207.  
  208.                                         if (adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11 + 1) * var9 + var16 + var11] == -2)
  209.                                         {
  210.                                             adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11 + 1) * var9 + var16 + var11] = var12;
  211.                                         }
  212.  
  213.                                         if (adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11) * var9 + (var16 + var11 - 1)] == -2)
  214.                                         {
  215.                                             adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11) * var9 + (var16 + var11 - 1)] = var12;
  216.                                         }
  217.  
  218.                                         if (adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11) * var9 + var16 + var11 + 1] == -2)
  219.                                         {
  220.                                             adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11) * var9 + var16 + var11 + 1] = var12;
  221.                                         }
  222.                                     }
  223.                                 }
  224.                             }
  225.                         }
  226.                     }
  227.                 }
  228.  
  229.                 var12 = adjacentTreeBlocks[var11 * var10 + var11 * var9 + var11];
  230.  
  231.                 if (var12 >= 0)
  232.                 {
  233.                     par1World.setBlockMetadataWithNotify(par2, par3, par4, var6 & -9, 4);
  234.                 }
  235.                 else
  236.                 {
  237.                     func_150126_e(par1World, par2, par3, par4);
  238.                 }
  239.             }
  240.         }
  241.     }
  242.  
  243.     public void func_149734_b(World par1World, int par2, int par3, int par4, Random par5) //randomDisplayTick
  244.     {
  245.         if (par1World.canLightningStrikeAt(par2, par3 + 1, par4) && !World.func_147466_a(par1World, par2, par3 - 1, par4) && par5.nextInt(15) == 1)
  246.         {
  247.             double var6 = (double)((float)par2 + par5.nextFloat());
  248.             double var8 = (double)par3 - 0.05D;
  249.             double var10 = (double)((float)par4 + par5.nextFloat());
  250.             par1World.spawnParticle("dripWater", var6, var8, var10, 0.0D, 0.0D, 0.0D);
  251.         }
  252.     }
  253.  
  254.     private void func_150126_e(World par1World, int par2, int par3, int par4) //removeLeaves
  255.     {
  256.         func_149697_b(par1World, par2, par3, par4, par1World.getBlockMetadata(par2, par3, par4), 0);
  257.         par1World.func_147468_f(par2, par3, par4);
  258.     }
  259.  
  260.     public int func_149745_a(Random p_149745_1_) //quantityDropped
  261.     {
  262.         return p_149745_1_.nextInt(20) == 0 ? 1 : 0;
  263.     }
  264.  
  265.     public Item func_149650_a(int par1, Random par2Random, int par3) //idDropped
  266.     {
  267.         return Item.func_150898_a(Blocks.field_150345_g);
  268.     }
  269.  
  270.     public void func_149690_a(World par1World, int par2, int par3, int par4, int par5, float p_149690_6_, int p_149690_7_) //dropBlockAsItemWithChance
  271.     {
  272.         if (!par1World.isRemote)
  273.         {
  274.             int var8 = func_150123_b(par5);
  275.  
  276.             if (p_149690_7_ > 0)
  277.             {
  278.                 var8 -= 2 << p_149690_7_;
  279.  
  280.                 if (var8 < 10)
  281.                 {
  282.                     var8 = 10;
  283.                 }
  284.             }
  285.  
  286.             if (par1World.rand.nextInt(var8) == 0)
  287.             {
  288.                 Item var9 = func_149650_a(par5, par1World.rand, p_149690_7_);
  289.                 func_149642_a(par1World, par2, par3, par4, new ItemStack(var9, 1, func_149692_a(par5)));
  290.             }
  291.  
  292.             var8 = 200;
  293.  
  294.             if (p_149690_7_ > 0)
  295.             {
  296.                 var8 -= 10 << p_149690_7_;
  297.  
  298.                 if (var8 < 40)
  299.                 {
  300.                     var8 = 40;
  301.                 }
  302.             }
  303.  
  304.             func_150124_c(par1World, par2, par3, par4, par5, var8);
  305.         }
  306.     }
  307.  
  308.     protected void func_150124_c(World par1World, int par2, int par3, int par4, int par5, int par6) {}
  309.  
  310.     protected int func_150123_b(int par1) //Unknown, probably new
  311.     {
  312.         return 20;
  313.     }
  314.  
  315.     public void func_149636_a(World par1World, EntityPlayer par1EntityPlayer, int par3, int par4, int par5, int par6) //harvestBlock
  316.     {
  317.         if (!par1World.isRemote && par1EntityPlayer.getCurrentEquippedItem() != null && par1EntityPlayer.getCurrentEquippedItem().getItem() == Items.field_151097_aZ)
  318.         {
  319.             par1EntityPlayer.addStat(StatList.mineBlockStatArray[Block.func_149682_b(this)], 1);
  320.             func_149642_a(par1World, par3, par4, par5, new ItemStack(Item.func_150898_a(this), 1, par6 & 3));
  321.         }
  322.         else
  323.         {
  324.             super.func_149636_a(par1World, par1EntityPlayer, par3, par4, par5, par6);
  325.         }
  326.     }
  327.  
  328.     public int func_149692_a(int par1) //damageDropped
  329.     {
  330.         return par1 & 3;
  331.     }
  332.  
  333.     //public boolean func_149662_c()
  334.     //{
  335.         //return !field_150121_P;
  336.     //}
  337.  
  338.     public abstract IIcon func_149691_a(int var1, int var2); //Unknown, probably new
  339.  
  340.     public void func_150122_b(boolean par1) //setGraphicsLevel
  341.     {
  342.         field_150121_P = true;
  343.         field_150127_b = 0;
  344.     }
  345.    
  346.     public boolean func_149662_c() //isOpaqueCube
  347.     {
  348.         return false;
  349.     }
  350.  
  351.     protected ItemStack func_149644_j(int par1) //createStackedBlock
  352.     {
  353.         return new ItemStack(Item.func_150898_a(this), 1, par1 & 3);
  354.     }
  355.    
  356.     public int func_149701_w() //getRenderBlockPass
  357.     {
  358.         return 0;
  359.     }
  360.  
  361.     public boolean func_149686_d() //renderAsNormalBlock
  362.     {
  363.         return false;
  364.     }
  365.  
  366.     protected boolean func_149700_E() //Unknown, probably new
  367.     {
  368.         return true;
  369.     }
  370.  
  371.     public abstract String[] func_150125_e(); //Unknown, probably new
  372. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement