108 lines
3.6 KiB
Java
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)));
|
|
}
|
|
}
|
|
}
|