Added ore generation
continuous-integration/drone Build is passing Details
continuous-integration/drone/tag Build is passing Details

This commit is contained in:
Timo Ley 2021-04-20 09:17:12 +02:00
parent fc3690ba16
commit f88a395d7c
10 changed files with 165 additions and 0 deletions

View File

@ -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

View File

@ -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));
}
}

View File

@ -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();
}
}
}

View File

@ -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);
}
}
}

View File

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 595 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 528 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 582 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 668 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 532 B