Guest User

Custom Block

a guest
Jun 3rd, 2015
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.89 KB | None | 0 0
  1. package me.xxzhalo13xx.zachsmod.blocks;
  2.  
  3. import java.util.Random;
  4.  
  5. import me.xxzhalo13xx.zachsmod.Core;
  6. import me.xxzhalo13xx.zachsmod.generate.CustomBlockGen;
  7. import net.minecraft.block.Block;
  8. import net.minecraft.block.material.Material;
  9. import net.minecraft.block.state.IBlockState;
  10. import net.minecraft.client.Minecraft;
  11. import net.minecraft.client.resources.model.ModelResourceLocation;
  12. import net.minecraft.creativetab.CreativeTabs;
  13. import net.minecraft.init.Blocks;
  14. import net.minecraft.item.Item;
  15. import net.minecraft.util.BlockPos;
  16. import net.minecraft.util.MathHelper;
  17. import net.minecraft.world.IBlockAccess;
  18. import net.minecraft.world.World;
  19. import net.minecraftforge.fml.common.registry.GameRegistry;
  20.  
  21. public class CustomBlock extends Block{
  22.  
  23. private Item dropsOnHarvest;
  24. private int dropamountmax;
  25. private int maxharvestEXP = 2;
  26.  
  27.  
  28. public CustomBlock(Material material, String name, float hardness, float resistance, HarvestToolEnum harvesttool, HarvestLevelEnum harvestlevel, CreativeTabs creativetab, int dropamountmax, int minVienSize, int maxVienSize, int genChance, int minGenY, int maxGenY, Block[] generateIn, Block[] generateNear, int generateDistance, boolean generateInOverworld, boolean generateInNether, boolean generateInEnder)
  29. {
  30. super(material);
  31.  
  32. this.dropamountmax = dropamountmax;
  33. this.setUnlocalizedName(name);
  34. this.setHardness(hardness);
  35. this.setResistance(resistance);
  36. this.setStepSound(soundTypePiston);
  37. this.setHarvestLevel(harvesttool, harvestlevel);
  38. this.setCreativeTab(creativetab);
  39. this.dropsOnHarvest = Item.getItemFromBlock(this);
  40.  
  41. System.out.println("INITIALIZING BLOCK: " + name);
  42.  
  43. GameRegistry.registerBlock(this, name);
  44. GameRegistry.registerWorldGenerator(new CustomBlockGen(this, minVienSize, maxVienSize, genChance, minGenY, maxGenY, generateIn, generateNear, generateDistance, generateInOverworld, generateInNether, generateInEnder), 1);
  45. }
  46.  
  47. public CustomBlock(Material material, String name, float hardness, float resistance, HarvestToolEnum harvesttool, HarvestLevelEnum harvestlevel, CreativeTabs creativetab, int dropamountmax, int minVienSize, int maxVienSize, int genChance, int minGenY, int maxGenY, Block[] generateIn, boolean generateInOverworld, boolean generateInNether, boolean generateInEnder)
  48. {
  49. this(material, name, hardness, resistance, harvesttool, harvestlevel, creativetab, dropamountmax, minVienSize, maxVienSize, genChance, minGenY, maxGenY, generateIn, null, 1, generateInOverworld, generateInNether, generateInEnder);
  50. }
  51.  
  52. public CustomBlock(Material material, String name, float hardness, float resistance, HarvestToolEnum harvesttool, HarvestLevelEnum harvestlevel, CreativeTabs creativetab, int dropamountmax, int minVienSize, int maxVienSize, int genChance, int minGenY, int maxGenY, boolean generateInOverworld, boolean generateInNether, boolean generateInEnder)
  53. {
  54. this(material, name, hardness, resistance, harvesttool, harvestlevel, creativetab, dropamountmax, minVienSize, maxVienSize, genChance, minGenY, maxGenY, new Block[]{Blocks.stone}, generateInOverworld, generateInNether, generateInEnder);
  55. }
  56.  
  57. public CustomBlock(Material material, String name, float hardness, float resistance, HarvestToolEnum harvesttool, HarvestLevelEnum harvestlevel, CreativeTabs creativetab, int dropamountmax)
  58. {
  59. super(material);
  60.  
  61. this.dropamountmax = dropamountmax;
  62. this.setUnlocalizedName(name);
  63. this.setHardness(hardness);
  64. this.setResistance(resistance);
  65. this.setStepSound(soundTypePiston);
  66. this.setHarvestLevel(harvesttool, harvestlevel);
  67. this.setCreativeTab(creativetab);
  68. this.dropsOnHarvest = Item.getItemFromBlock(this);
  69.  
  70. GameRegistry.registerBlock(this, name);
  71. }
  72.  
  73. public void RegisterRenderer(String modelName)
  74. {
  75. System.out.println("REGISTERING BLOCK RENDERER: " + modelName);
  76.  
  77. Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(Item.getItemFromBlock(this), 0, new ModelResourceLocation(Core.MODID+":"+modelName, "inventory"));
  78. }
  79.  
  80. public void setHarvestLevel(HarvestToolEnum harvesttool, HarvestLevelEnum harvestlevel)
  81. {
  82. int level;
  83. String tool;
  84.  
  85. switch(harvesttool)
  86. {
  87. case PICKAXE:
  88. tool = "pickaxe";
  89. break;
  90. case SHOVEL:
  91. tool = "shovel";
  92. break;
  93. case AXE:
  94. tool = "axe";
  95. break;
  96. default:
  97. tool = "pickaxe";
  98. }
  99. switch(harvestlevel)
  100. {
  101. case WOOD:
  102. level = 0;
  103. break;
  104. case STONE:
  105. level = 1;
  106. break;
  107. case IRON:
  108. level = 2;
  109. break;
  110. case DIAMOND:
  111. level = 3;
  112. break;
  113. case GOLD:
  114. level = 0;
  115. break;
  116. default:
  117. level = 0;
  118. }
  119. super.setHarvestLevel(tool, level);
  120. }
  121.  
  122. public static enum HarvestToolEnum
  123. {
  124. PICKAXE,
  125. SHOVEL,
  126. AXE;
  127. }
  128. public static enum HarvestLevelEnum
  129. {
  130. WOOD,
  131. STONE,
  132. IRON,
  133. DIAMOND,
  134. GOLD;
  135. }
  136.  
  137.  
  138. public void setMaxHarvestEXP(int expAmount)
  139. {
  140. maxharvestEXP = expAmount;
  141. }
  142.  
  143. public void setDrops(Item drops)
  144. {
  145. this.dropsOnHarvest = drops;
  146. }
  147. public void setDrops(Block drops)
  148. {
  149. this.dropsOnHarvest = Item.getItemFromBlock(drops);
  150. }
  151.  
  152. public void setDropMaxAmount(int dropamount)
  153. {
  154. this.dropamountmax = dropamount;
  155. }
  156.  
  157. public Item getItemDropped(IBlockState state, Random rand, int fortune)
  158. {
  159. return this.dropsOnHarvest;
  160. }
  161.  
  162. public int quantityDropped(Random random)
  163. {
  164. int amount = random.nextInt(this.dropamountmax)+1;
  165. return amount;
  166. }
  167.  
  168. public int getExpDrop(IBlockAccess world, BlockPos pos, int fortune)
  169. {
  170. IBlockState state = world.getBlockState(pos);
  171. Random rand = world instanceof World ? ((World)world).rand : new Random();
  172. if (this.getItemDropped(state, rand, fortune) != Item.getItemFromBlock(this))
  173. {
  174. return MathHelper.getRandomIntegerInRange(rand, 0, maxharvestEXP);
  175. }
  176. return 0;
  177. }
  178. }
Advertisement
Add Comment
Please, Sign In to add comment