Package li.cil.oc.api.prefab

Source Code of li.cil.oc.api.prefab.DriverItem

package li.cil.oc.api.prefab;

import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;

/**
* If you wish to create item components such as the network card or hard drives
* you will need an item driver.
* <p/>
* This prefab allows creating a driver that works for a specified list of item
* stacks (to support different items with the same id but different damage
* values). It also takes care of creating and getting the tag compound on an
* item stack to save data to or load data from.
* <p/>
* You still have to specify your component's slot type and provide the
* implementation for creating its environment, if any.
*
* @see li.cil.oc.api.network.ManagedEnvironment
*/
@SuppressWarnings("UnusedDeclaration")
public abstract class DriverItem implements li.cil.oc.api.driver.Item {
    protected final ItemStack[] items;

    protected DriverItem(final ItemStack... items) {
        this.items = items.clone();
    }

    @Override
    public boolean worksWith(final ItemStack stack) {
        if (stack != null) {
            for (ItemStack item : items) {
                if (item != null && item.isItemEqual(stack)) {
                    return true;
                }
            }
        }
        return false;
    }

    @Override
    public int tier(final ItemStack stack) {
        return 0;
    }

    @Override
    public NBTTagCompound dataTag(final ItemStack stack) {
        if (!stack.hasTagCompound()) {
            stack.setTagCompound(new NBTTagCompound());
        }
        final NBTTagCompound nbt = stack.getTagCompound();
        // This is the suggested key under which to store item component data.
        // You are free to change this as you please.
        if (!nbt.hasKey("oc:data")) {
            nbt.setTag("oc:data", new NBTTagCompound());
        }
        return nbt.getCompoundTag("oc:data");
    }
}
TOP

Related Classes of li.cil.oc.api.prefab.DriverItem

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.