/*
* 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.plugins.forestry;
import cpw.mods.fml.common.Optional;
import forestry.api.storage.IBackpackDefinition;
import mods.railcraft.common.blocks.aesthetics.EnumBlockMaterial;
import mods.railcraft.common.blocks.aesthetics.slab.BlockRailcraftSlab;
import mods.railcraft.common.blocks.aesthetics.stairs.BlockRailcraftStairs;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import mods.railcraft.common.blocks.aesthetics.wall.EnumWallAlpha;
import mods.railcraft.common.util.inventory.InvTools;
import mods.railcraft.common.util.inventory.StandaloneInventory;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
/**
*
* @author CovertJaguar <http://www.railcraft.info>
*/
@Optional.Interface(iface = "forestry.api.storage.IBackpackDefinition", modid = "Forestry")
public class IcemanBackpack extends BaseBackpack implements IBackpackDefinition {
private static IcemanBackpack instance;
private static final ItemStack SNOWBALL = new ItemStack(Items.snowball);
private static final ItemStack SNOWBLOCK = new ItemStack(Blocks.snow);
private static final String INV_TAG = "Items";
public static IcemanBackpack getInstance() {
if (instance == null) {
instance = new IcemanBackpack();
}
return instance;
}
protected IcemanBackpack() {
}
public void setup() {
addItem(Blocks.snow);
addItem(Blocks.snow_layer);
addItem(Blocks.ice);
addItem(EnumWallAlpha.SNOW.getItem());
addItem(EnumWallAlpha.ICE.getItem());
addItem(BlockRailcraftStairs.getItem(EnumBlockMaterial.SNOW));
addItem(BlockRailcraftStairs.getItem(EnumBlockMaterial.ICE));
addItem(BlockRailcraftSlab.getItem(EnumBlockMaterial.SNOW));
addItem(BlockRailcraftSlab.getItem(EnumBlockMaterial.ICE));
addItem(Items.snowball);
}
public void compactInventory(ItemStack backpack) {
StandaloneInventory inv = new StandaloneInventory(45);
NBTTagCompound data = backpack.getTagCompound();
if (data == null) return;
InvTools.readInvFromNBT(inv, INV_TAG, data);
int numSnowballs = InvTools.countItems(inv, SNOWBALL);
if (numSnowballs >= 16) {
for (int i = 0; i < 4; i++) {
InvTools.removeOneItem(inv, SNOWBALL);
}
if (InvTools.moveItemStack(new ItemStack(Blocks.snow), inv) == null) {
InvTools.writeInvToNBT(inv, INV_TAG, data);
}
} else if (numSnowballs < 8 && InvTools.removeOneItem(inv, SNOWBLOCK) != null) {
if (InvTools.moveItemStack(new ItemStack(Items.snowball, 4), inv) == null) {
InvTools.writeInvToNBT(inv, INV_TAG, data);
}
}
}
@Override
public String getKey() {
return "ICEMAN";
}
@Override
public int getPrimaryColour() {
return 0xFFFFFF;
}
@Override
public int getSecondaryColour() {
return 0xFFFFFF;
}
}