diff --git a/src/main/java/ley/modding/alchemycraft/Alchemycraft.java b/src/main/java/ley/modding/alchemycraft/Alchemycraft.java index 99104d3..340e824 100644 --- a/src/main/java/ley/modding/alchemycraft/Alchemycraft.java +++ b/src/main/java/ley/modding/alchemycraft/Alchemycraft.java @@ -5,12 +5,15 @@ import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; +import cpw.mods.fml.common.registry.GameRegistry; import ley.modding.alchemycraft.alchemy.ElementManager; +import ley.modding.alchemycraft.block.ACBlocks; import ley.modding.alchemycraft.event.EventHandler; import ley.modding.alchemycraft.internal.Registry; import ley.modding.alchemycraft.items.ACItems; import ley.modding.alchemycraft.recipes.Recipes; import ley.modding.alchemycraft.tab.ACTab; +import ley.modding.alchemycraft.worldgen.OreGen; import ley.modding.tileralib.api.IRegistry; import net.minecraft.creativetab.CreativeTabs; import net.minecraftforge.common.MinecraftForge; @@ -41,8 +44,10 @@ public class Alchemycraft { IRegistry registry = new Registry(); ACItems.register(registry); + ACBlocks.register(registry); Recipes.loadRecipes(registry); + GameRegistry.registerWorldGenerator(new OreGen(), 2); } @Mod.EventHandler diff --git a/src/main/java/ley/modding/alchemycraft/block/ACBlocks.java b/src/main/java/ley/modding/alchemycraft/block/ACBlocks.java new file mode 100644 index 0000000..1304857 --- /dev/null +++ b/src/main/java/ley/modding/alchemycraft/block/ACBlocks.java @@ -0,0 +1,24 @@ +package ley.modding.alchemycraft.block; + +import ley.modding.tileralib.api.IRegistry; +import net.minecraft.block.Block; + +public class ACBlocks { + + public static Block alchemyore; + public static Block fireore; + public static Block waterore; + public static Block earthore; + public static Block airore; + + public static void register(IRegistry reg) { + + alchemyore = reg.registerBlock(new BlockOre(BlockOre.Type.ALCHEMY)); + fireore = reg.registerBlock(new BlockOre(BlockOre.Type.FIRE)); + waterore = reg.registerBlock(new BlockOre(BlockOre.Type.WATER)); + earthore = reg.registerBlock(new BlockOre(BlockOre.Type.EARTH)); + airore = reg.registerBlock(new BlockOre(BlockOre.Type.AIR)); + + } + +} diff --git a/src/main/java/ley/modding/alchemycraft/block/BlockOre.java b/src/main/java/ley/modding/alchemycraft/block/BlockOre.java new file mode 100644 index 0000000..2cab36f --- /dev/null +++ b/src/main/java/ley/modding/alchemycraft/block/BlockOre.java @@ -0,0 +1,96 @@ +package ley.modding.alchemycraft.block; + +import ley.modding.alchemycraft.Alchemycraft; +import ley.modding.alchemycraft.items.ACItems; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; + +import java.util.Random; + +public class BlockOre extends Block { + + static IIcon alchemy; + static IIcon fire; + static IIcon water; + static IIcon earth; + static IIcon air; + + Type type; + + protected BlockOre(Type type) { + super(Material.rock); + this.type = type; + setBlockName(type + "ore"); + setHardness(1.0F); + setResistance(5.0F); + setStepSound(soundTypeStone); + setCreativeTab(Alchemycraft.tab); + } + + @Override + public int quantityDropped(Random rand) { + return rand.nextInt(3) + 2; + } + + @Override + public void registerBlockIcons(IIconRegister reg) { + alchemy = reg.registerIcon(Alchemycraft.MODID + ":alchemyore"); + fire = reg.registerIcon(Alchemycraft.MODID + ":fireore"); + water = reg.registerIcon(Alchemycraft.MODID + ":waterore"); + earth = reg.registerIcon(Alchemycraft.MODID + ":earthore"); + air = reg.registerIcon(Alchemycraft.MODID + ":airore"); + } + + @Override + public IIcon getIcon(int side, int meta) { + switch (type) { + case FIRE: return fire; + case WATER: return water; + case EARTH: return earth; + case AIR: return air; + default: return alchemy; + } + } + + @Override + protected boolean canSilkHarvest() { + return false; + } + + @Override + public Item getItemDropped(int meta, Random rand, int par3) { + switch (type) { + case FIRE: return ACItems.firedust; + case WATER: return ACItems.waterdust; + case EARTH: return ACItems.earthdust; + case AIR: return ACItems.airdust; + default: return ACItems.alchemydust; + } + } + + @Override + public void onBlockPlacedBy(World p_149689_1_, int p_149689_2_, int p_149689_3_, int p_149689_4_, EntityLivingBase p_149689_5_, ItemStack p_149689_6_) { + super.onBlockPlacedBy(p_149689_1_, p_149689_2_, p_149689_3_, p_149689_4_, p_149689_5_, p_149689_6_); + } + + public enum Type { + ALCHEMY, + FIRE, + WATER, + EARTH, + AIR; + + + @Override + public String toString() { + return super.toString().toLowerCase(); + } + } + +} diff --git a/src/main/java/ley/modding/alchemycraft/worldgen/OreGen.java b/src/main/java/ley/modding/alchemycraft/worldgen/OreGen.java new file mode 100644 index 0000000..8385eac --- /dev/null +++ b/src/main/java/ley/modding/alchemycraft/worldgen/OreGen.java @@ -0,0 +1,34 @@ +package ley.modding.alchemycraft.worldgen; + +import cpw.mods.fml.common.IWorldGenerator; +import ley.modding.alchemycraft.block.ACBlocks; +import net.minecraft.block.Block; +import net.minecraft.world.World; +import net.minecraft.world.chunk.IChunkProvider; +import net.minecraft.world.gen.feature.WorldGenMinable; + +import java.util.Random; + +public class OreGen implements IWorldGenerator { + + @Override + public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) { + if (world.provider.dimensionId == 0) { + generateSurface(world, random, chunkX * 16, chunkZ * 16, ACBlocks.alchemyore); + generateSurface(world, random, chunkX * 16, chunkZ * 16, ACBlocks.fireore); + generateSurface(world, random, chunkX * 16, chunkZ * 16, ACBlocks.waterore); + generateSurface(world, random, chunkX * 16, chunkZ * 16, ACBlocks.earthore); + generateSurface(world, random, chunkX * 16, chunkZ * 16, ACBlocks.airore); + } + } + + private void generateSurface(World world, Random random, int blockX, int blockZ, Block block) { + for (int k = 0; k < 16; k++) { + int randPosX = blockX + random.nextInt(16); + int randPosY = random.nextInt(64); + int randPosZ = blockZ + random.nextInt(16); + (new WorldGenMinable(block, 4)).generate(world, random, randPosX, randPosY, randPosZ); + } + } + +} diff --git a/src/main/resources/assets/alchemycraft/lang/en_US.lang b/src/main/resources/assets/alchemycraft/lang/en_US.lang index bece9a5..580cbe5 100644 --- a/src/main/resources/assets/alchemycraft/lang/en_US.lang +++ b/src/main/resources/assets/alchemycraft/lang/en_US.lang @@ -5,3 +5,9 @@ item.fire.name=Fire Dust item.water.name=Water Dust item.earth.name=Earth Dust item.air.name=Air Dust + +tile.alchemyore.name=Alchemy Ore +tile.fireore.name=Fire Ore +tile.waterore.name=Water Ore +tile.earthore.name=Earth Ore +tile.airore.name=Air Ore diff --git a/src/main/resources/assets/alchemycraft/textures/blocks/airore.png b/src/main/resources/assets/alchemycraft/textures/blocks/airore.png new file mode 100644 index 0000000..91e2a0e Binary files /dev/null and b/src/main/resources/assets/alchemycraft/textures/blocks/airore.png differ diff --git a/src/main/resources/assets/alchemycraft/textures/blocks/alchemyore.png b/src/main/resources/assets/alchemycraft/textures/blocks/alchemyore.png new file mode 100644 index 0000000..bfe1b07 Binary files /dev/null and b/src/main/resources/assets/alchemycraft/textures/blocks/alchemyore.png differ diff --git a/src/main/resources/assets/alchemycraft/textures/blocks/earthore.png b/src/main/resources/assets/alchemycraft/textures/blocks/earthore.png new file mode 100644 index 0000000..5ee3317 Binary files /dev/null and b/src/main/resources/assets/alchemycraft/textures/blocks/earthore.png differ diff --git a/src/main/resources/assets/alchemycraft/textures/blocks/fireore.png b/src/main/resources/assets/alchemycraft/textures/blocks/fireore.png new file mode 100644 index 0000000..ad76265 Binary files /dev/null and b/src/main/resources/assets/alchemycraft/textures/blocks/fireore.png differ diff --git a/src/main/resources/assets/alchemycraft/textures/blocks/waterore.png b/src/main/resources/assets/alchemycraft/textures/blocks/waterore.png new file mode 100644 index 0000000..cc5b340 Binary files /dev/null and b/src/main/resources/assets/alchemycraft/textures/blocks/waterore.png differ