/*
* 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.post;
import mods.railcraft.client.util.textures.TextureAtlasSheet;
import mods.railcraft.common.core.Railcraft;
import mods.railcraft.common.core.RailcraftConfig;
import mods.railcraft.common.plugins.forestry.ForestryPlugin;
import mods.railcraft.common.plugins.forge.HarvestPlugin;
import mods.railcraft.common.plugins.forge.RailcraftRegistry;
import mods.railcraft.common.util.misc.EnumColor;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import java.util.ArrayList;
import java.util.List;
/**
*
* @author CovertJaguar <http://www.railcraft.info>
*/
public class BlockPostMetal extends BlockPostBase {
public static BlockPostMetal post;
public static BlockPostMetal platform;
public static IIcon[] textures;
public final boolean isPlatform;
private BlockPostMetal(int renderType, boolean isPlatform) {
super(renderType);
setStepSound(Block.soundTypeMetal);
this.isPlatform = isPlatform;
}
public static void registerPost() {
if (post == null && RailcraftConfig.isBlockEnabled("post.metal"))
post = BlockPostMetal.make("post.metal", false);
}
public static void registerPlatform() {
if (platform == null && RailcraftConfig.isBlockEnabled("post.metal.platform"))
platform = BlockPostMetal.make("post.metal.platform", true);
}
private static BlockPostMetal make(String tag, boolean isPlatform) {
BlockPostMetal block = new BlockPostMetal(Railcraft.getProxy().getRenderId(), isPlatform);
block.setBlockName("railcraft." + tag);
RailcraftRegistry.register(block, ItemPostMetal.class);
// HarvestPlugin.setHarvestLevel(block, "crowbar", 0);
HarvestPlugin.setHarvestLevel(block, "pickaxe", 2);
ForestryPlugin.addBackpackItem("builder", block);
for (EnumColor color : EnumColor.values()) {
ItemStack stack = block.getItem(1, color.ordinal());
RailcraftRegistry.register(stack);
}
return block;
}
@Override
public boolean isPlatform(int meta) {
return isPlatform;
}
public ItemStack getItem() {
return getItem(1, 3);
}
public ItemStack getItem(int qty) {
return getItem(qty, 3);
}
public ItemStack getItem(int qty, int color) {
return new ItemStack(this, qty, color);
}
@Override
public void getSubBlocks(Item item, CreativeTabs tab, List list) {
for (EnumColor color : EnumColor.values()) {
list.add(getItem(1, color.ordinal()));
}
}
@Override
protected boolean canSilkHarvest() {
return true;
}
@Override
public boolean canSilkHarvest(World world, EntityPlayer player, int x, int y, int z, int metadata) {
return true;
}
@Override
public ArrayList<ItemStack> getDrops(World world, int x, int y, int z, int metadata, int fortune) {
ArrayList<ItemStack> list = new ArrayList<ItemStack>();
if (isPlatform)
list.add(EnumPost.METAL_PLATFORM_UNPAINTED.getItem());
else
list.add(EnumPost.METAL_UNPAINTED.getItem());
return list;
}
@Override
public void registerBlockIcons(IIconRegister iconRegister) {
if (!isPlatform)
textures = TextureAtlasSheet.unstitchIcons(iconRegister, "railcraft:post.metal.painted", 16);
}
@Override
public IIcon getIcon(int side, int meta) {
return textures[meta];
}
@Override
public boolean recolourBlock(World world, int x, int y, int z, ForgeDirection side, int colour) {
int c = 15 - colour;
int meta = world.getBlockMetadata(x, y, z);
if (meta != c) {
world.setBlockMetadataWithNotify(x, y, z, c, 3);
return true;
}
return false;
}
}