summaryrefslogtreecommitdiff
path: root/src/main/java/com/sosnitzka/taiga/generic
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/sosnitzka/taiga/generic')
-rw-r--r--src/main/java/com/sosnitzka/taiga/generic/BlockOre.java62
1 files changed, 62 insertions, 0 deletions
diff --git a/src/main/java/com/sosnitzka/taiga/generic/BlockOre.java b/src/main/java/com/sosnitzka/taiga/generic/BlockOre.java
new file mode 100644
index 0000000..55737c3
--- /dev/null
+++ b/src/main/java/com/sosnitzka/taiga/generic/BlockOre.java
@@ -0,0 +1,62 @@
+package com.sosnitzka.taiga.generic;
+
+import net.minecraft.block.Block;
+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.world.Explosion;
+import net.minecraft.world.IBlockAccess;
+import net.minecraft.world.World;
+
+import javax.annotation.ParametersAreNonnullByDefault;
+import java.util.Random;
+
+import static slimeknights.tconstruct.TConstruct.random;
+
+public class BlockOre extends Block {
+
+ private Item dropItem;
+ private int itemAmount;
+ private int xpAmount;
+
+ public BlockOre(String name, Material material, float hardness, float resistance, int harvest, float lightLevel, Item item, int amount, int xp) {
+ super(material);
+ setUnlocalizedName(name);
+ setRegistryName(name);
+ setHardness(hardness);
+ setResistance(resistance);
+ setHarvestLevel("pickaxe", harvest);
+ setLightLevel(lightLevel);
+ this.dropItem = item;
+ this.itemAmount = amount;
+ this.xpAmount = xp;
+
+ }
+
+ @Override
+ public int getExpDrop(IBlockState state, IBlockAccess world, BlockPos pos, int fortune) {
+ return random.nextInt(xpAmount) + fortune;
+
+ }
+
+ @Override
+ @ParametersAreNonnullByDefault
+ public int quantityDropped(IBlockState state, int fortune, Random random) {
+ return (random.nextInt(itemAmount + fortune) + 1);
+ }
+
+ @Override
+ public Item getItemDropped(IBlockState state, Random rand, int fortune) {
+ return dropItem;
+ }
+
+ @Override
+ public void onBlockDestroyedByExplosion(World worldIn, BlockPos pos, Explosion explosionIn) {
+ if (!worldIn.isRemote) {
+ if (random.nextFloat() < 0.5) {
+ worldIn.newExplosion(null, pos.getX(), pos.getY(), pos.getZ(), random.nextFloat() * 4f + 1.5f, true, true);
+ }
+ }
+ }
+}