Search in sources :

Example 1 with ElectricItem

use of ic2.api.item.ElectricItem in project compactsolars by cpw.

the class ItemSolarHat method onArmorTickUpdate.

@Override
public void onArmorTickUpdate(World worldObj, EntityPlayer player, ItemStack itemStack) {
    // client side or no sky: no charge
    if (worldObj.isRemote || worldObj.provider.hasNoSky) {
        return;
    }
    // productionrate is set, and the tick is not zero : no charge
    if (CompactSolars.productionRate != 1 && random.nextInt(CompactSolars.productionRate) != 0) {
        return;
    }
    int xCoord = MathHelper.floor_double(player.posX);
    int zCoord = MathHelper.floor_double(player.posZ);
    boolean isRaining = false;
    if (!this.playerState.containsKey(player)) {
        this.playerState.put(player, new PlayerState());
    }
    PlayerState state = playerState.get(player);
    if (worldObj.getTotalWorldTime() % 20 == 0) {
        boolean canRain = worldObj.getWorldChunkManager().getBiomeGenAt(xCoord, zCoord).getIntRainfall() > 0;
        state.canRain = canRain;
    }
    isRaining = state.canRain && (worldObj.isRaining() || worldObj.isThundering());
    boolean theSunIsVisible = worldObj.isDaytime() && !isRaining && worldObj.canBlockSeeTheSky(xCoord, MathHelper.floor_double(player.posY) + 1, zCoord);
    if (!theSunIsVisible) {
        return;
    }
    int available = type.getOutput();
    for (ItemStack is : player.inventory.armorInventory) {
        if (is == itemStack) {
            continue;
        }
        if (is != null) {
            if (is.getItem() instanceof IElectricItem) {
                IElectricItem electricItem = (IElectricItem) is.getItem();
                available -= ElectricItem.manager.charge(is, available, type.ordinal() + 1, false, false);
            }
        }
    }
    if (available <= 0) {
        state.buildUp += IntMath.pow(2, type.ordinal());
    } else {
        state.buildUp = Math.max(state.buildUp - (worldObj.getTotalWorldTime() - state.lastTick), 0);
    }
    state.lastTick = worldObj.getTotalWorldTime();
    int dose = IntMath.pow(10, type.ordinal()) * 5;
    if (state.buildUp > dose) {
        player.addPotionEffect(new PotionEffect(Potion.confusion.id, dose >> 2, 0));
        state.buildUp -= dose;
    }
}
Also used : IElectricItem(ic2.api.item.IElectricItem) PotionEffect(net.minecraft.potion.PotionEffect) ItemStack(net.minecraft.item.ItemStack)

Example 2 with ElectricItem

use of ic2.api.item.ElectricItem in project Galacticraft by micdoodle8.

the class TileBaseUniversalElectrical method discharge.

public void discharge(ItemStack itemStack) {
    if (itemStack != null) {
        Item item = itemStack.getItem();
        float energyToDischarge = this.getRequest(null);
        if (item instanceof IItemElectric) {
            this.storage.receiveEnergyGC(ElectricItemHelper.dischargeItem(itemStack, energyToDischarge));
        } else // }
        if (EnergyConfigHandler.isMekanismLoaded() && item instanceof IEnergizedItem && ((IEnergizedItem) item).canSend(itemStack)) {
            this.storage.receiveEnergyGC((float) EnergizedItemManager.discharge(itemStack, energyToDischarge / EnergyConfigHandler.MEKANISM_RATIO) * EnergyConfigHandler.MEKANISM_RATIO);
        } else if (EnergyConfigHandler.isIndustrialCraft2Loaded()) {
            if (item instanceof ISpecialElectricItem) {
                ISpecialElectricItem electricItem = (ISpecialElectricItem) item;
                if (electricItem.canProvideEnergy(itemStack)) {
                    double energyDischargeIC2 = energyToDischarge / EnergyConfigHandler.IC2_RATIO;
                    double result = electricItem.getManager(itemStack).discharge(itemStack, energyDischargeIC2, 4, false, false, false);
                    float energyDischarged = (float) result * EnergyConfigHandler.IC2_RATIO;
                    this.storage.receiveEnergyGC(energyDischarged);
                }
            } else if (item instanceof IElectricItem) {
                IElectricItem electricItem = (IElectricItem) item;
                if (electricItem.canProvideEnergy(itemStack)) {
                    double energyDischargeIC2 = energyToDischarge / EnergyConfigHandler.IC2_RATIO;
                    double result = ElectricItem.manager.discharge(itemStack, energyDischargeIC2, 4, false, false, false);
                    float energyDischarged = (float) result * EnergyConfigHandler.IC2_RATIO;
                    this.storage.receiveEnergyGC(energyDischarged);
                }
            }
        }
    // else if (GCCoreCompatibilityManager.isTELoaded() && itemStack.getItem() instanceof IEnergyContainerItem)
    // {
    // float given = ((IEnergyContainerItem) itemStack.getItem()).extractEnergy(itemStack, (int) Math.floor(this.getRequest(EnumFacing.UNKNOWN) * EnergyConfigHandler.TO_TE_RATIO), false);
    // this.receiveElectricity(given * EnergyConfigHandler.TE_RATIO, true);
    // }
    }
}
Also used : Item(net.minecraft.item.Item) ISpecialElectricItem(ic2.api.item.ISpecialElectricItem) ElectricItem(ic2.api.item.ElectricItem) IElectricItem(ic2.api.item.IElectricItem) IEnergizedItem(mekanism.api.energy.IEnergizedItem) IItemElectric(micdoodle8.mods.galacticraft.api.item.IItemElectric) ISpecialElectricItem(ic2.api.item.ISpecialElectricItem) IElectricItem(ic2.api.item.IElectricItem) IEnergizedItem(mekanism.api.energy.IEnergizedItem)

Aggregations

IElectricItem (ic2.api.item.IElectricItem)2 ElectricItem (ic2.api.item.ElectricItem)1 ISpecialElectricItem (ic2.api.item.ISpecialElectricItem)1 IEnergizedItem (mekanism.api.energy.IEnergizedItem)1 IItemElectric (micdoodle8.mods.galacticraft.api.item.IItemElectric)1 Item (net.minecraft.item.Item)1 ItemStack (net.minecraft.item.ItemStack)1 PotionEffect (net.minecraft.potion.PotionEffect)1