mod.rankshank.arbitraria.common.cap.armcannon.CapabilityArmCannon.java Source code

Java tutorial

Introduction

Here is the source code for mod.rankshank.arbitraria.common.cap.armcannon.CapabilityArmCannon.java

Source

/*
 * This class was created by: RANKSHANK as a part of  the Arbitraria mod.
 * Full source can be found @ https://github.com/RANKSHANK/Arbitraria
 *
 * Arbitraria is provided in binary and source forms under the Arbitraria License.
 * Arbitraria License can be found in the repository @  https://github.com/RANKSHANK/Arbitraria
 */

package mod.rankshank.arbitraria.common.cap.armcannon;

import mod.rankshank.arbitraria.common.cap.munitions.CapabilityHandlerCannonMunition;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTBase;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumFacing;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.capabilities.ICapabilityProvider;
import net.minecraftforge.common.util.INBTSerializable;
import net.minecraftforge.items.CapabilityItemHandler;
import net.minecraftforge.items.IItemHandler;
import net.minecraftforge.items.IItemHandlerModifiable;

public final class CapabilityArmCannon
        implements IItemHandler, ICapabilityProvider, INBTSerializable, IItemHandlerModifiable {
    private final ItemStack[] augments;

    public CapabilityArmCannon(ItemStack stack, NBTTagCompound nbt) {
        this.augments = new ItemStack[6];
    }

    @Override
    public boolean hasCapability(Capability<?> capability, EnumFacing facing) {
        return capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY
                || capability == CapabilityHandlerCannonMunition.CANNON_CAPABILITY;
    }

    @Override
    @SuppressWarnings("unchecked")
    public <T> T getCapability(Capability<T> capability, EnumFacing facing) {
        return (T) (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY
                || capability == CapabilityHandlerCannonMunition.CANNON_CAPABILITY ? this : null);
    }

    @Override
    public int getSlots() {
        return this.augments.length;
    }

    @Override
    public ItemStack getStackInSlot(int slot) {
        return this.augments[slot];
    }

    @Override
    public ItemStack insertItem(int slot, ItemStack stack, boolean simulate) {
        ItemStack hold = this.augments[slot];
        if (hold == null) {
            if (!simulate) {
            }
        } else if (hold.isItemEqual(stack)) {
            if (slot > 1) {
                return stack;
            }
            if (!simulate) {
            }
        }
        return stack;
    }

    @Override
    public ItemStack extractItem(int slot, int amount, boolean simulate) {
        ItemStack ret = this.augments[slot].copy();
        int diff = ret.getCount() - amount;
        ret.setCount(diff <= 0 ? ret.getCount() : amount);
        if (!simulate) {
            if (diff <= 0) {
                this.augments[slot] = ItemStack.EMPTY;
            } else {
                ItemStack itemStack = this.augments[slot];
                itemStack.shrink(amount);
            }
        }
        return ret;
    }

    @Override
    public int getSlotLimit(int slot) {
        return 0;
    }

    public ItemStack getAmmo() {
        return this.augments[0];
    }

    public ItemStack getPrimer() {
        return this.augments[1];
    }

    public boolean hasAugment() {
        return false;
    }

    @Override
    public NBTBase serializeNBT() {
        return CapabilityItemHandler.ITEM_HANDLER_CAPABILITY.writeNBT(this, null);
    }

    @Override
    public void deserializeNBT(NBTBase nbt) {
        CapabilityItemHandler.ITEM_HANDLER_CAPABILITY.readNBT(this, null, nbt);
    }

    @Override
    public void setStackInSlot(int slot, ItemStack stack) {

    }
}