diff options
Diffstat (limited to 'src/main/java/com/sosnitzka/taiga/blocks')
6 files changed, 213 insertions, 17 deletions
diff --git a/src/main/java/com/sosnitzka/taiga/blocks/BlockCobble.java b/src/main/java/com/sosnitzka/taiga/blocks/BlockCobble.java new file mode 100644 index 0000000..f525e99 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/blocks/BlockCobble.java @@ -0,0 +1,33 @@ +package com.sosnitzka.taiga.blocks; + +import com.sosnitzka.taiga.generic.BasicBlock; +import net.minecraft.block.material.Material; +import net.minecraft.init.Blocks; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.world.BlockEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; + +import static slimeknights.tconstruct.TConstruct.random; + +public class BlockCobble extends BasicBlock { + + public BlockCobble(String name, Material material, float hardness, float resistance, int harvestlevel, float light, String oreDictPrefix) { + super(name, material, hardness, resistance, harvestlevel, light, oreDictPrefix); + MinecraftForge.EVENT_BUS.register(this); + } + + @SubscribeEvent + public void breakMoonRock(BlockEvent.BreakEvent e) { + if (e.getWorld().getBlockState(e.getPos()).getBlock().equals(this)) { + if (!e.getWorld().isRemote && random.nextFloat() > .9) { + e.setCanceled(true); + if (random.nextBoolean()) { + e.getWorld().setBlockState(e.getPos(), Blocks.LAVA.getDefaultState()); + } else { + e.getWorld().newExplosion(null, e.getPos().getX(), e.getPos().getY() + 1 / 16f, e.getPos().getZ(), 0.5f + random.nextFloat() * 1.5f, false, true); + } + } + } + } + +} diff --git a/src/main/java/com/sosnitzka/taiga/blocks/BlockLignite.java b/src/main/java/com/sosnitzka/taiga/blocks/BlockLignite.java index d399a9e..ebd4d75 100644 --- a/src/main/java/com/sosnitzka/taiga/blocks/BlockLignite.java +++ b/src/main/java/com/sosnitzka/taiga/blocks/BlockLignite.java @@ -3,7 +3,6 @@ package com.sosnitzka.taiga.blocks; import com.sosnitzka.taiga.generic.BasicBlock; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; -import net.minecraft.item.Item; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; import net.minecraft.world.IBlockAccess; @@ -12,8 +11,6 @@ import net.minecraft.world.World; import javax.annotation.ParametersAreNonnullByDefault; import java.util.Random; -import static com.sosnitzka.taiga.Items.lignite; - public class BlockLignite extends BasicBlock { public BlockLignite() { @@ -34,9 +31,4 @@ public class BlockLignite extends BasicBlock { public int quantityDropped(IBlockState state, int fortune, Random random) { return random.nextInt(3) + 1 + fortune; } - - @Override - public Item getItemDropped(IBlockState state, Random rand, int fortune) { - return lignite; - } } diff --git a/src/main/java/com/sosnitzka/taiga/blocks/BlockMetal.java b/src/main/java/com/sosnitzka/taiga/blocks/BlockMetal.java new file mode 100644 index 0000000..1aa4017 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/blocks/BlockMetal.java @@ -0,0 +1,70 @@ +package com.sosnitzka.taiga.blocks; + +import net.minecraft.block.material.Material; +import net.minecraft.block.properties.PropertyEnum; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IStringSerializable; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; +import slimeknights.mantle.block.EnumBlock; + +import javax.annotation.Nonnull; +import java.util.List; +import java.util.Locale; + +public class BlockMetal extends EnumBlock<BlockMetal.MetalTypes> { + + public static final PropertyEnum<MetalTypes> TYPE = PropertyEnum.create("type", MetalTypes.class); + + public BlockMetal() { + super(Material.IRON, TYPE, MetalTypes.class); + } + + @SideOnly(Side.CLIENT) + @Override + public void getSubBlocks(@Nonnull Item itemIn, CreativeTabs tab, List<ItemStack> list) { + for (MetalTypes type : MetalTypes.values()) { + list.add(new ItemStack(this, 1, type.getMeta())); + } + } + + public enum MetalTypes implements IStringSerializable, EnumBlock.IEnumMeta { + TIBERIUM, + AURODIUM, + PROMETHEUM, + ARCANITE, + TITANITE, + MYTHRIL, + URU, + VIBRANIUM, + ETERNITE, + FRACTORYTE, + PALLADIUM, + IGNITITE, + BISMUTH, + JAUXITE, + VIOLIUM, + KARMESINE; + + public final int meta; + + MetalTypes() { + meta = ordinal(); + } + + @Override + public String getName() { + return this.toString().toLowerCase(Locale.US); + } + + @Override + public int getMeta() { + return meta; + } + + } + + +} diff --git a/src/main/java/com/sosnitzka/taiga/blocks/BlockMeteoriteRock.java b/src/main/java/com/sosnitzka/taiga/blocks/BlockMeteoriteRock.java new file mode 100644 index 0000000..d87794b --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/blocks/BlockMeteoriteRock.java @@ -0,0 +1,33 @@ +package com.sosnitzka.taiga.blocks; + +import com.sosnitzka.taiga.generic.BasicBlock; +import net.minecraft.block.material.Material; +import net.minecraft.block.state.IBlockState; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.world.BlockEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; + +import static slimeknights.tconstruct.TConstruct.random; + +public class BlockMeteoriteRock extends BasicBlock { + + private IBlockState cobbblestate; + + public BlockMeteoriteRock(String name, Material material, float hardness, float resistance, int harvestlevel, float light, String oreDictPrefix, IBlockState cobble) { + super(name, material, hardness, resistance, harvestlevel, light, oreDictPrefix); + MinecraftForge.EVENT_BUS.register(this); + this.cobbblestate = cobble; + } + + @SubscribeEvent + public void breakMoonRock(BlockEvent.BreakEvent e) { + if (e.getWorld().getBlockState(e.getPos()).getBlock().equals(this)) { + if (!e.getWorld().isRemote && random.nextFloat() > .25) { + e.setCanceled(true); + e.getWorld().setBlockState(e.getPos(), cobbblestate); + } + } + + } + +} diff --git a/src/main/java/com/sosnitzka/taiga/blocks/BlockOre.java b/src/main/java/com/sosnitzka/taiga/blocks/BlockOre.java new file mode 100644 index 0000000..e0ad9f6 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/blocks/BlockOre.java @@ -0,0 +1,68 @@ +package com.sosnitzka.taiga.blocks; + +import net.minecraft.block.material.Material; +import net.minecraft.block.properties.PropertyEnum; +import net.minecraft.util.BlockRenderLayer; +import net.minecraft.util.IStringSerializable; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; +import slimeknights.mantle.block.EnumBlock; + +import javax.annotation.Nonnull; +import java.util.Locale; + +public class BlockOre extends EnumBlock<BlockOre.OreTypes> { + + public static final PropertyEnum<OreTypes> TYPE = PropertyEnum.create("type", OreTypes.class); + + public BlockOre() { + this(Material.ROCK); + } + + public BlockOre(Material material) { + super(material, TYPE, OreTypes.class); + } + + @Nonnull + @Override + @SideOnly(Side.CLIENT) + public BlockRenderLayer getBlockLayer() { + return BlockRenderLayer.CUTOUT_MIPPED; + } + + public enum OreTypes implements IStringSerializable, EnumBlock.IEnumMeta { + TIBERIUM, + AURODIUM, + PROMETHEUM, + ARCANITE, + TITANITE, + MYTHRIL, + URU, + VIBRANIUM, + ETERNITE, + FRACTORYTE, + PALLADIUM, + IGNITITE, + BISMUTH, + JAUXITE, + VIOLIUM, + KARMESINE; + + public final int meta; + + OreTypes() { + meta = ordinal(); + } + + @Override + public String getName() { + return this.toString().toLowerCase(Locale.US); + } + + @Override + public int getMeta() { + return meta; + } + } + +} diff --git a/src/main/java/com/sosnitzka/taiga/blocks/BlockTiberium.java b/src/main/java/com/sosnitzka/taiga/blocks/BlockTiberium.java index 977e65a..c3167a0 100644 --- a/src/main/java/com/sosnitzka/taiga/blocks/BlockTiberium.java +++ b/src/main/java/com/sosnitzka/taiga/blocks/BlockTiberium.java @@ -4,9 +4,9 @@ import com.sosnitzka.taiga.Items; import com.sosnitzka.taiga.generic.BasicBlock; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; import net.minecraft.world.Explosion; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; @@ -16,12 +16,12 @@ import java.util.Random; import static com.sosnitzka.taiga.util.Utils.PREFIX_ORE; import static slimeknights.tconstruct.TConstruct.random; -import static slimeknights.tconstruct.library.utils.HarvestLevels.OBSIDIAN; +import static slimeknights.tconstruct.library.utils.HarvestLevels.STONE; public class BlockTiberium extends BasicBlock { public BlockTiberium() { - super("tiberium_ore", Material.ROCK, 15.0f, 2.0f, OBSIDIAN, 1.0F, PREFIX_ORE); + super("tiberium_ore", Material.ROCK, 15.0f, 2.0f, STONE, 1.0F, PREFIX_ORE); } @Override @@ -39,23 +39,23 @@ public class BlockTiberium extends BasicBlock { @Override public Item getItemDropped(IBlockState state, Random rand, int fortune) { - return Items.tiberiumShardInstable; + return Items.tiberiumDust; } @Override public void onBlockDestroyedByExplosion(World worldIn, BlockPos pos, Explosion explosionIn) { if (!worldIn.isRemote) { - if (MathHelper.getRandomIntegerInRange(random, 1, 15) > 10) { - worldIn.newExplosion(null, pos.getX(), pos.getY(), pos.getZ(), 1.6f, true, true); + if (random.nextFloat() < 0.5) { + worldIn.newExplosion(null, pos.getX(), pos.getY(), pos.getZ(), random.nextFloat() * 2f + 1.5f, true, true); } } } @Override - public void onBlockDestroyedByPlayer(World worldIn, BlockPos pos, IBlockState state) { - if (MathHelper.getRandomIntegerInRange(random, 1, 30) < 3) { + public void onBlockHarvested(World worldIn, BlockPos pos, IBlockState state, EntityPlayer player) { + if (random.nextFloat() < 0.1) { if (!worldIn.isRemote) { - worldIn.newExplosion(null, pos.getX(), pos.getY() + 1 / 16f, pos.getZ(), 1.1f, true, true); + worldIn.newExplosion(null, pos.getX(), pos.getY() + 1 / 16f, pos.getZ(), 1.5f, true, true); } } } |
