Advertisement
MrCyberdragon

Untitled

Dec 22nd, 2018
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.66 KB | None | 0 0
  1. package com.mrcyberdragon.lightthenight.blocks;
  2.  
  3. import com.mrcyberdragon.lightthenight.Main;
  4. import com.mrcyberdragon.lightthenight.init.ModBlocks;
  5. import com.mrcyberdragon.lightthenight.init.ModItems;
  6. import com.mrcyberdragon.lightthenight.util.IHasModel;
  7. import net.minecraft.block.BlockLeaves;
  8. import net.minecraft.block.BlockPlanks;
  9. import net.minecraft.block.SoundType;
  10. import net.minecraft.block.properties.IProperty;
  11. import net.minecraft.block.state.BlockStateContainer;
  12. import net.minecraft.block.state.IBlockState;
  13. import net.minecraft.creativetab.CreativeTabs;
  14. import net.minecraft.init.Blocks;
  15. import net.minecraft.item.Item;
  16. import net.minecraft.item.ItemBlock;
  17. import net.minecraft.item.ItemStack;
  18. import net.minecraft.util.BlockRenderLayer;
  19. import net.minecraft.util.EnumFacing;
  20. import net.minecraft.util.EnumParticleTypes;
  21. import net.minecraft.util.NonNullList;
  22. import net.minecraft.util.math.BlockPos;
  23. import net.minecraft.world.IBlockAccess;
  24. import net.minecraft.world.World;
  25. import net.minecraftforge.fml.relauncher.Side;
  26. import net.minecraftforge.fml.relauncher.SideOnly;
  27.  
  28. import javax.annotation.Nonnull;
  29. import java.util.List;
  30. import java.util.Random;
  31.  
  32. public class BlockGlowingLeaves extends BlockLeaves implements IHasModel {
  33.  
  34. protected boolean leavesFancy;
  35.  
  36. public BlockGlowingLeaves(String name){
  37. super();
  38. this.setTickRandomly(true);
  39. setUnlocalizedName(name);
  40. setRegistryName(name);
  41. setCreativeTab(CreativeTabs.DECORATIONS);
  42. this.setLightLevel(0.7F);
  43. this.setHardness(0.2F);
  44. this.setLightOpacity(1);
  45. this.setSoundType(SoundType.PLANT);
  46. setDefaultState(this.blockState.getBaseState().withProperty(CHECK_DECAY, Boolean.valueOf(true)).withProperty(DECAYABLE, Boolean.valueOf(true)));
  47.  
  48. ModBlocks.BLOCKS.add(this);
  49. ModItems.ITEMS.add(new ItemBlock(this).setRegistryName(this.getRegistryName()));
  50. }
  51.  
  52. @Override
  53. public void registerModels() {
  54. Main.proxy.registerItemRenderer(Item.getItemFromBlock(this), 0, "inventory");
  55. }
  56.  
  57. protected BlockStateContainer createBlockState(){
  58. return new BlockStateContainer(this, new IProperty[]{DECAYABLE,CHECK_DECAY});
  59. }
  60.  
  61. @Override
  62. public Item getItemDropped(IBlockState state, Random rand, int fortune)
  63. {
  64. return Item.getItemFromBlock(ModBlocks.GLOWING_SAPLING);
  65. }
  66.  
  67. @Override
  68. public void getSubBlocks(CreativeTabs itemIn, NonNullList<ItemStack> items)
  69. {
  70. items.add(new ItemStack(this));
  71. }
  72.  
  73. @Override
  74. public int getMetaFromState(IBlockState state)
  75. {
  76. int i = 0;
  77.  
  78. if (!state.getValue(DECAYABLE).booleanValue())
  79. {
  80. i |= 4;
  81. }
  82.  
  83. if (state.getValue(CHECK_DECAY).booleanValue())
  84. {
  85. i |= 8;
  86. }
  87.  
  88. return i;
  89. }
  90.  
  91. @Override
  92. public int getFlammability(IBlockAccess world, BlockPos pos, EnumFacing face) {
  93. return 60;
  94. }
  95.  
  96. @Override
  97. public boolean isFlammable(IBlockAccess world, BlockPos pos, EnumFacing face) {
  98. return true;
  99. }
  100.  
  101. @Override
  102. public int getFireSpreadSpeed(IBlockAccess world, BlockPos pos, EnumFacing face) {
  103. return 30;
  104. }
  105.  
  106. @Override
  107. public IBlockState getStateFromMeta(int meta)
  108. {
  109. return getDefaultState().withProperty(DECAYABLE, Boolean.valueOf((meta & 4) == 0)).withProperty(CHECK_DECAY, Boolean.valueOf((meta & 8) > 0));
  110. }
  111.  
  112. @Override
  113. protected ItemStack getSilkTouchDrop(IBlockState state)
  114. {
  115. return new ItemStack(Item.getItemFromBlock(this), 1);
  116. }
  117.  
  118. @Override
  119. public int damageDropped(IBlockState state)
  120. {
  121. return 0;
  122. }
  123.  
  124. protected void dropApple(World worldIn, BlockPos pos, IBlockState state, int chance)
  125. {
  126. return;
  127. }
  128.  
  129. protected int getSaplingDropChance(IBlockState state)
  130. {
  131. return 20;
  132. }
  133.  
  134. public BlockPlanks.EnumType getWoodType(int meta){ return null; }
  135.  
  136. @Nonnull
  137. @Override
  138. public NonNullList<ItemStack> onSheared(ItemStack item, net.minecraft.world.IBlockAccess world, BlockPos pos, int fortune)
  139. {
  140. return NonNullList.withSize(1, new ItemStack(this,1));
  141. }
  142.  
  143. @SideOnly(Side.CLIENT)
  144. @Override
  145. public void setGraphicsLevel(boolean fancy)
  146. {
  147. this.leavesFancy = fancy;
  148. }
  149.  
  150. @SideOnly(Side.CLIENT)
  151. @Override
  152. public boolean shouldSideBeRendered(IBlockState blockState, IBlockAccess blockAccess, BlockPos pos, EnumFacing side)
  153. {
  154. return !this.leavesFancy && blockAccess.getBlockState(pos.offset(side)).getBlock() == this ? false : super.shouldSideBeRendered(blockState, blockAccess, pos, side);
  155. }
  156.  
  157. @SideOnly(Side.CLIENT)
  158. @Override
  159. public BlockRenderLayer getBlockLayer()
  160. {
  161. return this.leavesFancy ? BlockRenderLayer.CUTOUT_MIPPED : BlockRenderLayer.SOLID;
  162. }
  163.  
  164. @Override
  165. public boolean isOpaqueCube(IBlockState state)
  166. {
  167. return !this.leavesFancy;
  168. }
  169.  
  170. @Override
  171. public boolean causesSuffocation(IBlockState state)
  172. {
  173. return false;
  174. }
  175.  
  176. @SideOnly(Side.CLIENT)
  177. public void randomDisplayTick(IBlockState stateIn, World worldIn, BlockPos pos, Random rand){
  178. double e0 = rand.nextInt(10)/10.0D;
  179. double e1 = rand.nextInt(10)/10.0D;
  180. double e2 = rand.nextInt(2)/10.0D;
  181. double d0 = (double)pos.getX() + e0;
  182. double d1 = (double)pos.getY();
  183. double d2 = (double)pos.getZ() + e1;
  184. double d3 = -e2;
  185. if(rand.nextInt(20)==1)worldIn.spawnParticle(EnumParticleTypes.END_ROD, d0, d1, d2, 0, d3, 0);
  186. }
  187. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement