ModBlocks.java 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312
  1. package me.km.blocks;
  2. import me.km.blocks.cookingpot.BlockCookingPot;
  3. import net.minecraft.block.BarrierBlock;
  4. import net.minecraft.block.Block;
  5. import net.minecraft.block.Block.Properties;
  6. import net.minecraft.block.SoundType;
  7. import net.minecraft.block.material.Material;
  8. import net.minecraft.block.material.MaterialColor;
  9. import net.minecraft.block.BlockState;
  10. import net.minecraft.block.Blocks;
  11. import net.minecraft.block.FireBlock;
  12. import net.minecraft.block.LeavesBlock;
  13. import net.minecraft.block.SlabBlock;
  14. import net.minecraft.item.Item;
  15. import net.minecraft.item.BlockItem;
  16. import net.minecraft.item.ItemGroup;
  17. import net.minecraftforge.registries.IForgeRegistry;
  18. public class ModBlocks {
  19. // ores + blocks
  20. public static Block copperOre;
  21. public static Block copperBlock;
  22. public static Block tinOre;
  23. public static Block tinBlock;
  24. public static Block bronzeBlock;
  25. public static Block silverOre;
  26. public static Block silverBlock;
  27. // misc
  28. public static Block guildblock;
  29. public static Block artefact;
  30. public static Block realHayBlock;
  31. public static Block realHayBed;
  32. public static Block crateAcacia;
  33. public static Block crateBigOak;
  34. public static Block crateBirch;
  35. public static Block crateJungle;
  36. public static Block crateOak;
  37. public static Block crateSpruce;
  38. public static Block cookingPotCopper;
  39. public static Block lantern;
  40. public static Block tallGrass;
  41. // traps
  42. public static Block spikesCopper;
  43. public static Block spikesBronze;
  44. public static Block spikesGold;
  45. public static Block spikesIron;
  46. // slabs
  47. public static Block gravelSlab;
  48. public static Block coarseDirtSlab;
  49. // leaves
  50. public static Block cherryLeaves;
  51. public static Block apricotLeaves;
  52. public static Block pearLeaves;
  53. public static Block plumLeaves;
  54. // saplings
  55. public static Block cherrySapling;
  56. public static Block apricotSapling;
  57. public static Block pearSapling;
  58. public static Block plumSapling;
  59. // bookshelves
  60. public static Block bookshelfAcacia;
  61. public static Block bookshelfBirch;
  62. public static Block bookshelfDarkOak;
  63. public static Block bookshelfJungle;
  64. public static Block bookshelfSpruce;
  65. // invisible blocks
  66. public static Block barrierLight;
  67. public static Block barrierSolid;
  68. private static Block create(String registry, Material m, float hardness, float resistance) {
  69. Block b = new Block(Properties.create(m).hardnessAndResistance(hardness, resistance));
  70. b.setRegistryName(registry);
  71. return b;
  72. }
  73. private static Block createCrate(String registry) {
  74. Block b = new Block(Properties.create(Material.WOOD).hardnessAndResistance(2.0f, 5.0f).sound(SoundType.WOOD));
  75. b.setRegistryName(registry);
  76. return b;
  77. }
  78. private static Block createOre(String registry, int harvestLevel) {
  79. Block b = new BlockOre(Properties.create(Material.ROCK).hardnessAndResistance(3.0f, 3.0f), harvestLevel);
  80. b.setRegistryName(registry);
  81. return b;
  82. }
  83. private static Block createOreBlock(String registry, MaterialColor mc, float hardness, float resistance, int harvestLevel) {
  84. Block b = new BlockOre(Properties.create(Material.IRON, mc).hardnessAndResistance(hardness, resistance), harvestLevel);
  85. b.setRegistryName(registry);
  86. return b;
  87. }
  88. private static Block createLeaves(String registry) {
  89. Block b = new LeavesBlock(Block.Properties.create(Material.LEAVES).hardnessAndResistance(0.2f).tickRandomly().sound(SoundType.PLANT).notSolid());
  90. b.setRegistryName(registry);
  91. return b;
  92. }
  93. private static Block createSapling(String registry, BlockState wood, BlockState leaves) {
  94. ModTree tree = new ModTree();
  95. BlockModSapling b = new BlockModSapling(tree);
  96. tree.setConfig(wood, leaves, b);
  97. b.setRegistryName(registry);
  98. return b;
  99. }
  100. private static Block createBookshelf(String registry) {
  101. Block b = new BlockBookshelf();
  102. b.setRegistryName(registry);
  103. return b;
  104. }
  105. private static Block createInvisibleLight(String registry) {
  106. Block b = new BlockInvisible(Block.Properties.create(
  107. new Material.Builder(MaterialColor.AIR).replaceable().build())
  108. .hardnessAndResistance(-1.0F, 3600000.8F)
  109. .noDrops()
  110. .doesNotBlockMovement()
  111. .lightValue(15));
  112. b.setRegistryName(registry);
  113. return b;
  114. }
  115. private static Block createInvisible(String registry) {
  116. Block b = new BlockInvisible(Block.Properties.create(
  117. new Material.Builder(MaterialColor.AIR).replaceable().build())
  118. .hardnessAndResistance(-1.0F, 3600000.8F)
  119. .noDrops()
  120. .doesNotBlockMovement());
  121. b.setRegistryName(registry);
  122. return b;
  123. }
  124. public static void initBlocks(IForgeRegistry<Block> r) {
  125. // ores + blocks
  126. copperOre = register(r, createOre("copper_ore", 1));
  127. tinOre = register(r, createOre("tin_ore", 1));
  128. silverOre = register(r, createOre("silver_ore", 2));
  129. copperBlock = register(r, createOreBlock("copper_block", MaterialColor.BROWN, 3.0f, 6.0f, 1));
  130. tinBlock = register(r, createOreBlock("tin_block", MaterialColor.IRON, 3.0f, 6.0f, 1));
  131. silverBlock = register(r, createOreBlock("silver_block", MaterialColor.IRON, 5.0f, 6.0f, 2));
  132. bronzeBlock = register(r, createOreBlock("bronze_block", MaterialColor.YELLOW, 5.0f, 6.0f, 2));
  133. // misc
  134. guildblock = register(r, create("guild_block", Material.IRON, 50.0f, 2000.0f));
  135. artefact = register(r, create("artefact", Material.IRON, 50.0f, 2000.0f));
  136. realHayBlock = register(r, new BlockHay("real_hay_block"));
  137. realHayBed = register(r, new BlockHayBed("real_hay_bed"));
  138. crateAcacia = register(r, createCrate("crate_acacia"));
  139. crateBigOak = register(r, createCrate("crate_big_oak"));
  140. crateBirch = register(r, createCrate("crate_birch"));
  141. crateJungle = register(r, createCrate("crate_jungle"));
  142. crateOak = register(r, createCrate("crate_oak"));
  143. crateSpruce = register(r, createCrate("crate_spruce"));
  144. cookingPotCopper = register(r, new BlockCookingPot("cooking_pot_copper"));
  145. lantern = register(r, new BlockLantern("lantern"));
  146. tallGrass = register(r, new BlockResistantTallGrass("rtall_grass"));
  147. // traps
  148. spikesCopper = register(r, new BlockSpikes("spikes_copper", Properties.create(Material.IRON, MaterialColor.BROWN).hardnessAndResistance(3.0f, 6.0f)));
  149. spikesBronze = register(r, new BlockSpikes("spikes_bronze", Properties.create(Material.IRON, MaterialColor.YELLOW).hardnessAndResistance(5.0f, 6.0f)));
  150. spikesGold = register(r, new BlockSpikes("spikes_gold", Properties.create(Material.IRON, MaterialColor.GOLD).hardnessAndResistance(3.0f, 6.0f)));
  151. spikesIron = register(r, new BlockSpikes("spikes_iron", Properties.create(Material.IRON).hardnessAndResistance(5.0f, 6.0f)));
  152. // slabs
  153. gravelSlab = register(r, new BlockGravelSlab(Properties.create(Material.SAND, MaterialColor.STONE)
  154. .sound(SoundType.GROUND).hardnessAndResistance(0.6f)).setRegistryName("gravel_slab"));
  155. coarseDirtSlab = register(r, new SlabBlock(Properties.create(Material.EARTH, MaterialColor.DIRT)
  156. .sound(SoundType.GROUND).hardnessAndResistance(0.5f)).setRegistryName("coarse_dirt_slab"));
  157. // leaves
  158. cherryLeaves = register(r, createLeaves("cherry_leaves"));
  159. apricotLeaves = register(r, createLeaves("apricot_leaves"));
  160. pearLeaves = register(r, createLeaves("pear_leaves"));
  161. plumLeaves = register(r, createLeaves("plum_leaves"));
  162. // saplings
  163. cherrySapling = register(r, createSapling("cherry_sapling", Blocks.OAK_LOG.getDefaultState(), cherryLeaves.getDefaultState()));
  164. apricotSapling = register(r, createSapling("apricot_sapling", Blocks.OAK_LOG.getDefaultState(), apricotLeaves.getDefaultState()));
  165. pearSapling = register(r, createSapling("pear_sapling", Blocks.OAK_LOG.getDefaultState(), pearLeaves.getDefaultState()));
  166. plumSapling = register(r, createSapling("plum_sapling", Blocks.OAK_LOG.getDefaultState(), plumLeaves.getDefaultState()));
  167. // bookshelves
  168. bookshelfAcacia = register(r, createBookshelf("bookshelf_acacia"));
  169. bookshelfBirch = register(r, createBookshelf("bookshelf_birch"));
  170. bookshelfDarkOak = register(r, createBookshelf("bookshelf_dark_oak"));
  171. bookshelfJungle = register(r, createBookshelf("bookshelf_jungle"));
  172. bookshelfSpruce = register(r, createBookshelf("bookshelf_spruce"));
  173. // invisible blocks
  174. barrierLight = register(r, createInvisibleLight("barrier_light"));
  175. barrierSolid = register(r, createInvisible("barrier_solid"));
  176. FireBlock fireblock = (FireBlock) Blocks.FIRE;
  177. fireblock.setFireInfo(bookshelfAcacia, 30, 20);
  178. fireblock.setFireInfo(bookshelfBirch, 30, 20);
  179. fireblock.setFireInfo(bookshelfDarkOak, 30, 20);
  180. fireblock.setFireInfo(bookshelfJungle, 30, 20);
  181. fireblock.setFireInfo(bookshelfSpruce, 30, 20);
  182. fireblock.setFireInfo(cherryLeaves, 30, 60);
  183. fireblock.setFireInfo(apricotLeaves, 30, 60);
  184. fireblock.setFireInfo(pearLeaves, 30, 60);
  185. fireblock.setFireInfo(plumLeaves, 30, 60);
  186. fireblock.setFireInfo(crateAcacia, 5, 5);
  187. fireblock.setFireInfo(crateBigOak, 5, 5);
  188. fireblock.setFireInfo(crateBirch, 5, 5);
  189. fireblock.setFireInfo(crateJungle, 5, 5);
  190. fireblock.setFireInfo(crateOak, 5, 5);
  191. fireblock.setFireInfo(crateSpruce, 5, 5);
  192. }
  193. public static void initItemBlocks(IForgeRegistry<Item> r) {
  194. // ores + blocks
  195. register(r, copperOre, getItemBlock(copperOre, ItemGroup.BUILDING_BLOCKS));
  196. register(r, copperBlock, getItemBlock(copperBlock, ItemGroup.BUILDING_BLOCKS));
  197. register(r, tinOre, getItemBlock(tinOre, ItemGroup.BUILDING_BLOCKS));
  198. register(r, tinBlock, getItemBlock(tinBlock, ItemGroup.BUILDING_BLOCKS));
  199. register(r, bronzeBlock, getItemBlock(bronzeBlock, ItemGroup.BUILDING_BLOCKS));
  200. register(r, silverOre, getItemBlock(silverOre, ItemGroup.BUILDING_BLOCKS));
  201. register(r, silverBlock, getItemBlock(silverBlock, ItemGroup.BUILDING_BLOCKS));
  202. // misc
  203. register(r, guildblock, getItemBlock(guildblock, ItemGroup.BUILDING_BLOCKS));
  204. register(r, artefact, getItemBlock(artefact, ItemGroup.BUILDING_BLOCKS));
  205. register(r, realHayBlock, getItemBlock(realHayBlock, ItemGroup.BUILDING_BLOCKS));
  206. register(r, crateAcacia, getItemBlock(crateAcacia, ItemGroup.DECORATIONS));
  207. register(r, crateBigOak, getItemBlock(crateBigOak, ItemGroup.DECORATIONS));
  208. register(r, crateBirch, getItemBlock(crateBirch, ItemGroup.DECORATIONS));
  209. register(r, crateJungle, getItemBlock(crateJungle, ItemGroup.DECORATIONS));
  210. register(r, crateOak, getItemBlock(crateOak, ItemGroup.DECORATIONS));
  211. register(r, crateSpruce, getItemBlock(crateSpruce, ItemGroup.DECORATIONS));
  212. register(r, cookingPotCopper, getItemBlock(cookingPotCopper, ItemGroup.BREWING));
  213. register(r, lantern, getItemBlock(lantern, ItemGroup.DECORATIONS));
  214. register(r, tallGrass, getItemBlock(tallGrass, ItemGroup.DECORATIONS));
  215. // traps
  216. register(r, spikesCopper, getItemBlock(spikesCopper, ItemGroup.DECORATIONS));
  217. register(r, spikesBronze, getItemBlock(spikesBronze, ItemGroup.DECORATIONS));
  218. register(r, spikesGold, getItemBlock(spikesGold, ItemGroup.DECORATIONS));
  219. register(r, spikesIron, getItemBlock(spikesIron, ItemGroup.DECORATIONS));
  220. // slabs
  221. register(r, gravelSlab, getItemBlock(gravelSlab, ItemGroup.BUILDING_BLOCKS));
  222. register(r, coarseDirtSlab, getItemBlock(coarseDirtSlab, ItemGroup.BUILDING_BLOCKS));
  223. // leaves
  224. register(r, cherryLeaves, getItemBlock(cherryLeaves, ItemGroup.BUILDING_BLOCKS));
  225. register(r, apricotLeaves, getItemBlock(apricotLeaves, ItemGroup.BUILDING_BLOCKS));
  226. register(r, pearLeaves, getItemBlock(pearLeaves, ItemGroup.BUILDING_BLOCKS));
  227. register(r, plumLeaves, getItemBlock(plumLeaves, ItemGroup.BUILDING_BLOCKS));
  228. // saplings
  229. register(r, cherrySapling, getItemBlock(cherrySapling, ItemGroup.BUILDING_BLOCKS));
  230. register(r, apricotSapling, getItemBlock(apricotSapling, ItemGroup.BUILDING_BLOCKS));
  231. register(r, pearSapling, getItemBlock(pearSapling, ItemGroup.BUILDING_BLOCKS));
  232. register(r, plumSapling, getItemBlock(plumSapling, ItemGroup.BUILDING_BLOCKS));
  233. // bookshelves
  234. register(r, bookshelfAcacia, getItemBlock(bookshelfAcacia, ItemGroup.BUILDING_BLOCKS));
  235. register(r, bookshelfBirch, getItemBlock(bookshelfBirch, ItemGroup.BUILDING_BLOCKS));
  236. register(r, bookshelfDarkOak, getItemBlock(bookshelfDarkOak, ItemGroup.BUILDING_BLOCKS));
  237. register(r, bookshelfJungle, getItemBlock(bookshelfJungle, ItemGroup.BUILDING_BLOCKS));
  238. register(r, bookshelfSpruce, getItemBlock(bookshelfSpruce, ItemGroup.BUILDING_BLOCKS));
  239. // invisible blocks
  240. register(r, barrierLight, getItemBlock(barrierLight, ItemGroup.BUILDING_BLOCKS));
  241. register(r, barrierSolid, getItemBlock(barrierSolid, ItemGroup.BUILDING_BLOCKS));
  242. }
  243. private static void register(IForgeRegistry<Item> r, Block block, Item itemBlock) {
  244. r.register(itemBlock);
  245. }
  246. private static Block register(IForgeRegistry<Block> r, Block block) {
  247. r.register(block);
  248. return block;
  249. }
  250. private static BlockItem getItemBlock(Block block, ItemGroup group) {
  251. BlockItem itemBlock = new BlockItem(block, new Item.Properties().group(group));
  252. itemBlock.setRegistryName(block.getRegistryName());
  253. return itemBlock;
  254. }
  255. }