package net.paladrill.paladrillmod.block; import net.paladrill.paladrillmod.creativetab.TabPalaDrillMod; import net.paladrill.paladrillmod.ElementsPaladrillmodMod; import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.client.event.ModelRegistryEvent; import net.minecraft.world.gen.feature.WorldGenMinable; import net.minecraft.world.gen.IChunkGenerator; import net.minecraft.world.chunk.IChunkProvider; import net.minecraft.world.World; import net.minecraft.world.IBlockAccess; import net.minecraft.util.math.BlockPos; import net.minecraft.util.NonNullList; import net.minecraft.item.ItemStack; import net.minecraft.item.ItemBlock; import net.minecraft.item.Item; import net.minecraft.init.Blocks; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.block.state.IBlockState; import net.minecraft.block.material.Material; import net.minecraft.block.SoundType; import net.minecraft.block.Block; import java.util.Random; @ElementsPaladrillmodMod.ModElement.Tag public class BlockTitaneOre extends ElementsPaladrillmodMod.ModElement { @GameRegistry.ObjectHolder("paladrillmod:titaneore") public static final Block block = null; public BlockTitaneOre(ElementsPaladrillmodMod instance) { super(instance, 28); } @Override public void initElements() { elements.blocks.add(() -> new BlockCustom().setRegistryName("titaneore")); elements.items.add(() -> new ItemBlock(block).setRegistryName(block.getRegistryName())); } @SideOnly(Side.CLIENT) @Override public void registerModels(ModelRegistryEvent event) { ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(block), 0, new ModelResourceLocation("paladrillmod:titaneore", "inventory")); } @Override public void generateWorld(Random random, int chunkX, int chunkZ, World world, int dimID, IChunkGenerator cg, IChunkProvider cp) { boolean dimensionCriteria = false; if (dimID == 1) dimensionCriteria = true; if (dimID == 0) dimensionCriteria = true; if (!dimensionCriteria) return; for (int i = 0; i < 6; i++) { int x = chunkX + random.nextInt(16); int y = random.nextInt(18) + 1; int z = chunkZ + random.nextInt(16); (new WorldGenMinable(block.getDefaultState(), 4, new com.google.common.base.Predicate() { public boolean apply(IBlockState blockAt) { boolean blockCriteria = false; IBlockState require; if (blockAt.getBlock() == Blocks.GRAVEL.getDefaultState().getBlock()) blockCriteria = true; require = Blocks.DIRT.getStateFromMeta(0); try { if ((blockAt.getBlock() == require.getBlock()) && (blockAt.getBlock().getMetaFromState(blockAt) == require.getBlock().getMetaFromState(require))) blockCriteria = true; } catch (Exception e) { if (blockAt.getBlock() == require.getBlock()) blockCriteria = true; } require = Blocks.STONE.getStateFromMeta(0); try { if ((blockAt.getBlock() == require.getBlock()) && (blockAt.getBlock().getMetaFromState(blockAt) == require.getBlock().getMetaFromState(require))) blockCriteria = true; } catch (Exception e) { if (blockAt.getBlock() == require.getBlock()) blockCriteria = true; } require = Blocks.MONSTER_EGG.getStateFromMeta(0); try { if ((blockAt.getBlock() == require.getBlock()) && (blockAt.getBlock().getMetaFromState(blockAt) == require.getBlock().getMetaFromState(require))) blockCriteria = true; } catch (Exception e) { if (blockAt.getBlock() == require.getBlock()) blockCriteria = true; } return blockCriteria; } })).generate(world, random, new BlockPos(x, y, z)); } } public static class BlockCustom extends Block { public BlockCustom() { super(Material.ROCK); setUnlocalizedName("titaneore"); setSoundType(SoundType.STONE); setHarvestLevel("pickaxe", 2); setHardness(4F); setResistance(6F); setLightLevel(0F); setLightOpacity(0); setCreativeTab(TabPalaDrillMod.tab); } @Override public boolean isOpaqueCube(IBlockState state) { return false; } @Override public void getDrops(NonNullList drops, IBlockAccess world, BlockPos pos, IBlockState state, int fortune) { drops.add(new ItemStack(BlockTitaneOre.block, (int) (1))); } } }