Files

108 lines
3.6 KiB
Java

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 BlockAmethystOre extends ElementsPaladrillmodMod.ModElement {
@GameRegistry.ObjectHolder("paladrillmod:amethystore")
public static final Block block = null;
public BlockAmethystOre(ElementsPaladrillmodMod instance) {
super(instance, 2);
}
@Override
public void initElements() {
elements.blocks.add(() -> new BlockCustom().setRegistryName("amethystore"));
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:amethystore", "inventory"));
}
@Override
public void generateWorld(Random random, int chunkX, int chunkZ, World world, int dimID, IChunkGenerator cg, IChunkProvider cp) {
boolean dimensionCriteria = false;
if (dimID == 0)
dimensionCriteria = true;
if (!dimensionCriteria)
return;
for (int i = 0; i < 5; i++) {
int x = chunkX + random.nextInt(16);
int y = random.nextInt(24) + 1;
int z = chunkZ + random.nextInt(16);
(new WorldGenMinable(block.getDefaultState(), 5, new com.google.common.base.Predicate<IBlockState>() {
public boolean apply(IBlockState blockAt) {
boolean blockCriteria = false;
IBlockState require;
if (blockAt.getBlock() == Blocks.GRAVEL.getDefaultState().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;
}
return blockCriteria;
}
})).generate(world, random, new BlockPos(x, y, z));
}
}
public static class BlockCustom extends Block {
public BlockCustom() {
super(Material.ROCK);
setUnlocalizedName("amethystore");
setSoundType(SoundType.STONE);
setHarvestLevel("pickaxe", 2);
setHardness(3F);
setResistance(5F);
setLightLevel(0F);
setLightOpacity(0);
setCreativeTab(TabPalaDrillMod.tab);
}
@Override
public boolean isOpaqueCube(IBlockState state) {
return false;
}
@Override
public void getDrops(NonNullList<ItemStack> drops, IBlockAccess world, BlockPos pos, IBlockState state, int fortune) {
drops.add(new ItemStack(BlockAmethystOre.block, (int) (1)));
}
}
}