package imdutch21.oilcraft.block;
import imdutch21.oilcraft.fluids.OCFluidBlock;
import imdutch21.oilcraft.fluids.OCFluidRegistry;
import imdutch21.oilcraft.lib.ModInfo;
import imdutch21.oilcraft.recipe.OCMaterials;
import net.minecraft.block.Block;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.MapColor;
import net.minecraft.block.material.Material;
import net.minecraft.item.ItemBlock;
import net.minecraftforge.fluids.BlockFluidClassic;
import net.minecraftforge.fml.common.registry.GameRegistry;
import java.lang.reflect.Field;
import java.util.LinkedList;
import java.util.List;
import java.util.Locale;
public class OCBlockRegistry {
public static final List<Block> BLOCKS = new LinkedList<Block>();
public static OCBlock OIL_COMPRESSOR = new BlockOilCompressor();
public static OCBlock OIL_GENERATOR = new BlockOilGenerator();
public static OCBlock OIL_FURNACE = new BlockOilFurnace();
public static OCBlock MACHINE_FRAME = new OCBlock(Material.IRON, MapColor.GRAY).setSoundType(SoundType.METAL);
public static BlockFluidClassic OIL = new OCFluidBlock(OCFluidRegistry.OIL, OCMaterials.WATER);
public static BlockFluidClassic FUEL = new OCFluidBlock(OCFluidRegistry.FUEL, OCMaterials.WATER);
public static void init() {
registerBlocks();
}
private static void registerBlocks() {
try {
for (Field field : OCBlockRegistry.class.getDeclaredFields()) {
Object obj = field.get(null);
if (obj instanceof Block) {
Block block = (Block) obj;
String name = field.getName().toLowerCase(Locale.ENGLISH);
registerBlock(block, name);
}
}
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}
private static void registerBlock(Block block, String name) {
BLOCKS.add(block);
GameRegistry.register(block.setRegistryName(ModInfo.ID, name).setUnlocalizedName(ModInfo.NAME_PREFIX + name));
ItemBlock item;
if (block instanceof IHasCustomItem)
item = ((IHasCustomItem) block).getItemBlock();
else
item = new ItemBlock(block);
GameRegistry.register((ItemBlock) item.setRegistryName(ModInfo.ID, name).setUnlocalizedName(ModInfo.NAME_PREFIX + name));
}
public interface IHasCustomItem {
ItemBlock getItemBlock();
}
}