/*
* 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;
import mods.railcraft.common.blocks.machine.BlockMachine;
import mods.railcraft.common.blocks.machine.ItemMachine;
import mods.railcraft.common.blocks.machine.alpha.EnumMachineAlpha;
import mods.railcraft.common.blocks.machine.alpha.MachineProxyAlpha;
import mods.railcraft.common.blocks.machine.beta.EnumMachineBeta;
import mods.railcraft.common.blocks.machine.beta.MachineProxyBeta;
import mods.railcraft.common.blocks.machine.delta.EnumMachineDelta;
import mods.railcraft.common.blocks.machine.delta.MachineProxyDelta;
import mods.railcraft.common.blocks.machine.epsilon.EnumMachineEpsilon;
import mods.railcraft.common.blocks.machine.epsilon.MachineProxyEpsilon;
import mods.railcraft.common.blocks.machine.gamma.EnumMachineGamma;
import mods.railcraft.common.blocks.machine.gamma.MachineProxyGamma;
import mods.railcraft.common.blocks.signals.BlockSignalRailcraft;
import mods.railcraft.common.blocks.signals.ItemSignal;
import mods.railcraft.common.blocks.tracks.BlockTrack;
import mods.railcraft.common.blocks.tracks.BlockTrackElevator;
import mods.railcraft.common.blocks.tracks.ItemTrack;
import mods.railcraft.common.core.Railcraft;
import mods.railcraft.common.core.RailcraftConfig;
import mods.railcraft.common.items.ItemRail.EnumRail;
import mods.railcraft.common.items.RailcraftItem;
import mods.railcraft.common.plugins.forge.CraftingPlugin;
import mods.railcraft.common.plugins.forge.CreativePlugin;
import mods.railcraft.common.plugins.forge.RailcraftRegistry;
import net.minecraft.block.Block;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.ItemStack;
import java.util.Arrays;
public class RailcraftBlocks {
private static Block blockMachineAlpha;
private static Block blockMachineBeta;
private static Block blockMachineGamma;
private static Block blockMachineDelta;
private static Block blockMachineEpsilon;
private static Block blockTrack;
private static Block blockRailElevator;
private static Block blockSignal;
public static void registerBlockTrack() {
if (blockTrack == null && RailcraftConfig.isBlockEnabled("track")) {
int renderId = Railcraft.getProxy().getRenderId();
blockTrack = new BlockTrack(renderId).setBlockName("railcraft.track");
RailcraftRegistry.register(blockTrack, ItemTrack.class);
}
}
public static Block getBlockTrack() {
return blockTrack;
}
public static void registerBlockRailElevator() {
if (blockRailElevator == null && RailcraftConfig.isBlockEnabled("elevator")) {
int renderId = Railcraft.getProxy().getRenderId();
blockRailElevator = new BlockTrackElevator(renderId).setBlockName("railcraft.track.elevator");
RailcraftRegistry.register(blockRailElevator, ItemBlockRailcraft.class);
blockRailElevator.setHarvestLevel("crowbar", 0);
ItemStack stackElevator = new ItemStack(blockRailElevator, 8);
CraftingPlugin.addShapedRecipe(stackElevator,
"IRI",
"ISI",
"IRI",
'I', RailcraftConfig.useOldRecipes() ? "ingotGold" : RailcraftItem.rail.getRecipeObject(EnumRail.ADVANCED),
'S', RailcraftConfig.useOldRecipes() ? "ingotIron" : RailcraftItem.rail.getRecipeObject(EnumRail.STANDARD),
'R', "dustRedstone");
}
}
public static Block getBlockElevator() {
return blockRailElevator;
}
public static Block registerBlockMachineAlpha() {
if (blockMachineAlpha == null && RailcraftConfig.isBlockEnabled("machine.alpha")) {
int[] lightOpacity = new int[16];
Arrays.fill(lightOpacity, 255);
blockMachineAlpha = new BlockMachine(0, new MachineProxyAlpha(), true, lightOpacity).setBlockName("railcraft.machine.alpha");
RailcraftRegistry.register(blockMachineAlpha, ItemMachine.class);
for (EnumMachineAlpha type : EnumMachineAlpha.values()) {
switch (type) {
case FEED_STATION:
case TANK_WATER:
blockMachineAlpha.setHarvestLevel("axe", 1, type.ordinal());
// blockMachineAlpha.setHarvestLevel("crowbar", 0, type.ordinal());
break;
case WORLD_ANCHOR:
case PERSONAL_ANCHOR:
blockMachineAlpha.setHarvestLevel("pickaxe", 3, type.ordinal());
// blockMachineAlpha.setHarvestLevel("crowbar", 0, type.ordinal());
break;
default:
blockMachineAlpha.setHarvestLevel("pickaxe", 2, type.ordinal());
// blockMachineAlpha.setHarvestLevel("crowbar", 0, type.ordinal());
}
}
}
return blockMachineAlpha;
}
public static Block getBlockMachineAlpha() {
return blockMachineAlpha;
}
public static Block registerBlockMachineBeta() {
if (blockMachineBeta == null && RailcraftConfig.isBlockEnabled("machine.beta")) {
int renderId = Railcraft.getProxy().getRenderId();
int[] lightOpacity = new int[16];
Arrays.fill(lightOpacity, 255);
lightOpacity[EnumMachineBeta.ENGINE_STEAM_HOBBY.ordinal()] = 0;
lightOpacity[EnumMachineBeta.ENGINE_STEAM_LOW.ordinal()] = 0;
lightOpacity[EnumMachineBeta.ENGINE_STEAM_HIGH.ordinal()] = 0;
lightOpacity[EnumMachineBeta.TANK_IRON_WALL.ordinal()] = 0;
lightOpacity[EnumMachineBeta.TANK_IRON_VALVE.ordinal()] = 0;
lightOpacity[EnumMachineBeta.TANK_IRON_GAUGE.ordinal()] = 0;
lightOpacity[EnumMachineBeta.TANK_STEEL_WALL.ordinal()] = 0;
lightOpacity[EnumMachineBeta.TANK_STEEL_VALVE.ordinal()] = 0;
lightOpacity[EnumMachineBeta.TANK_STEEL_GAUGE.ordinal()] = 0;
lightOpacity[EnumMachineBeta.BOILER_TANK_LOW_PRESSURE.ordinal()] = 0;
lightOpacity[EnumMachineBeta.BOILER_TANK_HIGH_PRESSURE.ordinal()] = 0;
lightOpacity[EnumMachineBeta.SENTINEL.ordinal()] = 0;
lightOpacity[EnumMachineBeta.VOID_CHEST.ordinal()] = 0;
lightOpacity[EnumMachineBeta.METALS_CHEST.ordinal()] = 0;
blockMachineBeta = new BlockMachine(renderId, new MachineProxyBeta(), false, lightOpacity).setBlockName("railcraft.machine.beta");
RailcraftRegistry.register(blockMachineBeta, ItemMachine.class);
for (EnumMachineBeta type : EnumMachineBeta.values()) {
switch (type) {
case SENTINEL:
blockMachineBeta.setHarvestLevel("pickaxe", 3, type.ordinal());
// blockMachineBeta.setHarvestLevel("crowbar", 0, type.ordinal());
break;
default:
blockMachineBeta.setHarvestLevel("pickaxe", 2, type.ordinal());
// blockMachineBeta.setHarvestLevel("crowbar", 0, type.ordinal());
}
}
}
return blockMachineBeta;
}
public static Block getBlockMachineBeta() {
return blockMachineBeta;
}
public static Block registerBlockMachineGamma() {
if (blockMachineGamma == null && RailcraftConfig.isBlockEnabled("machine.gamma")) {
int[] lightOpacity = new int[16];
Arrays.fill(lightOpacity, 255);
lightOpacity[EnumMachineGamma.FLUID_LOADER.ordinal()] = 0;
lightOpacity[EnumMachineGamma.FLUID_UNLOADER.ordinal()] = 0;
blockMachineGamma = new BlockMachine(0, new MachineProxyGamma(), false, lightOpacity).setBlockName("railcraft.machine.gamma");
blockMachineGamma.setCreativeTab(CreativeTabs.tabTransport);
RailcraftRegistry.register(blockMachineGamma, ItemMachine.class);
for (EnumMachineGamma type : EnumMachineGamma.values()) {
switch (type) {
default:
blockMachineGamma.setHarvestLevel("pickaxe", 2, type.ordinal());
// blockMachineGamma.setHarvestLevel("crowbar", 0, type.ordinal());
}
}
}
return blockMachineGamma;
}
public static Block getBlockMachineGamma() {
return blockMachineGamma;
}
public static Block registerBlockMachineDelta() {
if (blockMachineDelta == null && RailcraftConfig.isBlockEnabled("machine.delta")) {
int renderId = Railcraft.getProxy().getRenderId();
int[] lightOpacity = new int[16];
Arrays.fill(lightOpacity, 255);
lightOpacity[EnumMachineDelta.WIRE.ordinal()] = 0;
lightOpacity[EnumMachineDelta.CAGE.ordinal()] = 0;
blockMachineDelta = new BlockMachine(renderId, new MachineProxyDelta(), false, lightOpacity).setBlockName("railcraft.machine.delta");
blockMachineDelta.setCreativeTab(CreativePlugin.RAILCRAFT_TAB);
RailcraftRegistry.register(blockMachineDelta, ItemMachine.class);
for (EnumMachineDelta type : EnumMachineDelta.values()) {
switch (type) {
default:
blockMachineDelta.setHarvestLevel("pickaxe", 2, type.ordinal());
// blockMachineDelta.setHarvestLevel("crowbar", 0, type.ordinal());
}
}
}
return blockMachineDelta;
}
public static Block getBlockMachineDelta() {
return blockMachineDelta;
}
public static Block registerBlockMachineEpsilon() {
if (blockMachineEpsilon == null && RailcraftConfig.isBlockEnabled("machine.epsilon")) {
int[] lightOpacity = new int[16];
Arrays.fill(lightOpacity, 255);
blockMachineEpsilon = new BlockMachine(0, new MachineProxyEpsilon(), true, lightOpacity).setBlockName("railcraft.machine.epsilon");
RailcraftRegistry.register(blockMachineEpsilon, ItemMachine.class);
for (EnumMachineEpsilon type : EnumMachineEpsilon.values()) {
switch (type) {
default:
blockMachineEpsilon.setHarvestLevel("pickaxe", 2, type.ordinal());
// blockMachineEpsilon.setHarvestLevel("crowbar", 0, type.ordinal());
}
}
}
return blockMachineEpsilon;
}
public static Block getBlockMachineEpsilon() {
return blockMachineEpsilon;
}
public static void registerBlockSignal() {
if (blockSignal == null && RailcraftConfig.isBlockEnabled("signal")) {
int renderId = Railcraft.getProxy().getRenderId();
blockSignal = new BlockSignalRailcraft(renderId);
RailcraftRegistry.register(blockSignal, ItemSignal.class);
}
}
public static Block getBlockSignal() {
return blockSignal;
}
}