/*
* Copyright (c) CovertJaguar, 2014 http://railcraft.info
*
* This code is the property of CovertJaguar
* and may only be used with explicit written
* permission unless otherwise specified on the
* license page at http://railcraft.info/wiki/info:license.
*/
package mods.railcraft.common.blocks.aesthetics.wall;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
import mods.railcraft.common.blocks.aesthetics.brick.BlockBrick;
import mods.railcraft.common.blocks.aesthetics.brick.EnumBrick;
import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
import mods.railcraft.common.core.RailcraftConfig;
import mods.railcraft.common.modules.ModuleManager;
import mods.railcraft.common.modules.ModuleManager.Module;
import mods.railcraft.common.plugins.forge.CraftingPlugin;
import net.minecraft.entity.Entity;
import net.minecraft.init.Blocks;
import net.minecraft.world.World;
/**
*
* @author CovertJaguar <http://www.railcraft.info>
*/
public enum EnumWallBeta implements WallInfo {
QUARTZ,
QUARTZ_CHISELED,
IRON,
GOLD,
DIAMOND,
ABYSSAL_BRICK,
QUARRIED_BRICK,
BLOODSTAINED_BRICK,
BLEACHEDBONE_BRICK,;
public static final EnumWallBeta[] VALUES = values();
private static final List<EnumWallBeta> creativeList = new ArrayList<EnumWallBeta>();
private Block source;
private int sourceMeta = 0;
public static void initialize() {
QUARTZ.sourceMeta = 0;
QUARTZ.source = Blocks.quartz_block;
QUARTZ_CHISELED.sourceMeta = 1;
QUARTZ_CHISELED.source = Blocks.quartz_block;
IRON.source = Blocks.iron_block;
GOLD.source = Blocks.gold_block;
DIAMOND.source = Blocks.diamond_block;
ABYSSAL_BRICK.source = EnumBrick.ABYSSAL.getBlock();
QUARRIED_BRICK.source = EnumBrick.QUARRIED.getBlock();
BLOODSTAINED_BRICK.source = EnumBrick.BLOODSTAINED.getBlock();
BLEACHEDBONE_BRICK.source = EnumBrick.BLEACHEDBONE.getBlock();
for (EnumWallBeta wall : VALUES) {
if (wall.isEnabled() && wall.source != null)
CraftingPlugin.addShapedRecipe(wall.getItem(6), "SSS", "SSS", 'S', wall.getSourceItem());
}
creativeList.addAll(Arrays.asList(VALUES));
}
public static WallInfo fromMeta(int id) {
if (id < 0 || id >= VALUES.length)
return VALUES[0];
return VALUES[id];
}
public static List<EnumWallBeta> getCreativeList() {
return creativeList;
}
@Override
public Block getSource() {
return source;
}
@Override
public int getSourceMeta() {
return sourceMeta;
}
@Override
public ItemStack getSourceItem() {
if (source == null) return null;
return new ItemStack(source, 1, sourceMeta);
}
@Override
public Block getBlock() {
return BlockRailcraftWall.getBlockBeta();
}
@Override
public ItemStack getItem() {
return getItem(1);
}
@Override
public ItemStack getItem(int qty) {
Block block = getBlock();
if (block == null) return null;
return new ItemStack(block, qty, ordinal());
}
@Override
public String getTag() {
return "tile.railcraft.wall." + name().replace("_", ".").toLowerCase(Locale.ENGLISH);
}
@Override
public boolean isEnabled() {
return ModuleManager.isModuleLoaded(Module.STRUCTURES) && RailcraftConfig.isSubBlockEnabled(getTag()) && getBlock() != null;
}
@Override
public float getBlockHardness(World world, int x, int y, int z) {
Block block = getSource();
if (block == null)
return Blocks.brick_block.getBlockHardness(world, x, y, z);
return block.getBlockHardness(world, x, y, z);
}
@Override
public float getExplosionResistance(Entity entity) {
Block block = getSource();
if (block == null)
return Blocks.brick_block.getExplosionResistance(entity);
return block.getExplosionResistance(entity);
}
}