Search in sources :

Example 6 with Energy

use of ic2.core.block.comp.Energy in project Galacticraft by micdoodle8.

the class BasicSource method onChunkUnload.

/**
 * Forward for the base TileEntity's onChunkUnload(), used for destroying the energy net link.
 * Both invalidate and onChunkUnload have to be used.
 */
@Override
public void onChunkUnload() {
    if (addedToEnet && Info.isIc2Available()) {
        MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent(this));
        addedToEnet = false;
    }
}
Also used : EnergyTileUnloadEvent(ic2.api.energy.event.EnergyTileUnloadEvent)

Example 7 with Energy

use of ic2.core.block.comp.Energy in project Galacticraft by micdoodle8.

the class EnergyNetwork method doTickStartCalc.

/**
 * Refreshes all tiles in network, and updates requested energy
 */
private void doTickStartCalc() {
    this.tickDone = EnergyNetwork.tickCount;
    this.totalSent = 0F;
    this.refreshAcceptors();
    if (!EnergyUtil.initialisedIC2Methods) {
        EnergyUtil.initialiseIC2Methods();
    }
    if (this.conductors.size() == 0) {
        return;
    }
    this.loopPrevention = true;
    this.availableAcceptors.clear();
    this.availableconnectedDirections.clear();
    this.energyRequests.clear();
    this.totalRequested = 0.0F;
    this.totalStorageExcess = 0F;
    if (!this.connectedAcceptors.isEmpty()) {
        float e;
        final Iterator<EnumFacing> acceptorDirection = this.connectedDirections.iterator();
        for (Object acceptor : this.connectedAcceptors) {
            // This tries all sides of the acceptor which are connected (see refreshAcceptors())
            EnumFacing sideFrom = acceptorDirection.next();
            // But the grid will only put energy into the acceptor from one side - once it's in availableAcceptors
            if (!this.ignoreAcceptors.contains(acceptor) && !this.availableAcceptors.contains(acceptor)) {
                e = 0.0F;
                if (acceptor instanceof IElectrical) {
                    e = ((IElectrical) acceptor).getRequest(sideFrom);
                } else if (isMekLoaded && acceptor instanceof IStrictEnergyAcceptor) {
                    e = (float) ((((IStrictEnergyAcceptor) acceptor).getMaxEnergy() - ((IStrictEnergyAcceptor) acceptor).getEnergy()) / EnergyConfigHandler.TO_MEKANISM_RATIO);
                } else if (isIC2Loaded && acceptor instanceof IEnergySink) {
                    double result = 0;
                    try {
                        result = (Double) EnergyUtil.demandedEnergyIC2.invoke(acceptor);
                    } catch (Exception ex) {
                        if (ConfigManagerCore.enableDebug) {
                            ex.printStackTrace();
                        }
                    }
                    // Cap IC2 power transfer at 128EU/t for standard Alu wire, 256EU/t for heavy Alu wire
                    result = Math.min(result, this.networkTierGC * 128D);
                    e = (float) result / EnergyConfigHandler.TO_IC2_RATIO;
                } else if (isRF2Loaded && acceptor instanceof IEnergyReceiver) {
                    e = ((IEnergyReceiver) acceptor).receiveEnergy(sideFrom, Integer.MAX_VALUE, true) / EnergyConfigHandler.TO_RF_RATIO;
                }
                if (e > 0.0F) {
                    this.availableAcceptors.add(acceptor);
                    this.availableconnectedDirections.put(acceptor, sideFrom);
                    this.energyRequests.put(acceptor, e);
                    this.totalRequested += e;
                    if (e > EnergyNetwork.ENERGY_STORAGE_LEVEL) {
                        this.totalStorageExcess += e - EnergyNetwork.ENERGY_STORAGE_LEVEL;
                    }
                }
            }
        }
    }
    this.loopPrevention = false;
}
Also used : EnumFacing(net.minecraft.util.EnumFacing) IStrictEnergyAcceptor(mekanism.api.energy.IStrictEnergyAcceptor) IElectrical(micdoodle8.mods.galacticraft.api.transmission.tile.IElectrical) IEnergySink(ic2.api.energy.tile.IEnergySink) IEnergyReceiver(cofh.api.energy.IEnergyReceiver)

Example 8 with Energy

use of ic2.core.block.comp.Energy in project TUMAT by canitzp.

the class IndustrialCraft2 method renderTileEntity.

@Override
public TooltipComponent renderTileEntity(WorldClient world, EntityPlayerSP player, TileEntity tileEntity, EnumFacing side, TooltipComponent component, boolean shouldCalculate) {
    if (tileEntity instanceof TileEntityBlock) {
        InfoUtil.syncTileEntity(tileEntity, shouldCalculate, "components");
        if (((TileEntityBlock) tileEntity).hasComponent(Energy.class)) {
            Energy energy = ((TileEntityBlock) tileEntity).getComponent(Energy.class);
            List<String> desc = new ArrayList<>();
            if (ConfigBoolean.SHOW_EU.value) {
                if (!(tileEntity instanceof IEnergyStorage)) {
                    int stored = (int) energy.getEnergy();
                    int cap = (int) energy.getCapacity();
                    if (cap > 0) {
                        if (cap < stored) {
                            cap = stored;
                        }
                        component.add(new EnergyComponent(stored, cap, "EU", TextFormatting.YELLOW), TooltipComponent.Priority.HIGH);
                    }
                }
                if (!energy.getSourceDirs().isEmpty()) {
                    desc.add(Localization.translate("ic2.item.tooltip.PowerTier", energy.getSourceTier()));
                } else if (!energy.getSinkDirs().isEmpty()) {
                    desc.add(Localization.translate("ic2.item.tooltip.PowerTier", energy.getSinkTier()));
                }
            }
            if (tileEntity instanceof TileEntityTransformer) {
                desc.add(String.format("%s %.0f %s %s %.0f %s", Localization.translate("ic2.item.tooltip.Low"), EnergyNet.instance.getPowerFromTier(energy.getSinkTier()), Localization.translate("ic2.generic.text.EUt"), Localization.translate("ic2.item.tooltip.High"), EnergyNet.instance.getPowerFromTier(energy.getSourceTier() + 1), Localization.translate("ic2.generic.text.EUt")));
            }
            component.clear(TooltipComponent.Priority.LOW);
            component.add(new DescriptionComponent(desc), TooltipComponent.Priority.LOW);
        }
    }
    if (tileEntity instanceof TileEntityCable) {
        InfoUtil.syncTileEntity(tileEntity, shouldCalculate, "cableType", "insulation");
        NBTTagCompound nbt = new NBTTagCompound();
        tileEntity.writeToNBT(nbt);
        if (!nbt.hasNoTags()) {
            try {
                CableType cableType = CableType.values[nbt.getByte("cableType") & 255];
                int insulation = nbt.getByte("insulation") & 255;
                ItemStack cable = ItemCable.getCable(cableType, insulation);
                component.setName(new TextComponent(InfoUtil.getItemName(cable)));
                component.clear(TooltipComponent.Priority.LOW);
                component.add(new DescriptionComponent(cable), TooltipComponent.Priority.LOW);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    return component;
}
Also used : TextComponent(de.canitzp.tumat.api.components.TextComponent) TileEntityCable(ic2.core.block.wiring.TileEntityCable) TileEntityTransformer(ic2.core.block.wiring.TileEntityTransformer) ArrayList(java.util.ArrayList) NBTTagCompound(net.minecraft.nbt.NBTTagCompound) EnergyComponent(de.canitzp.tumat.api.components.EnergyComponent) Energy(ic2.core.block.comp.Energy) CableType(ic2.core.block.wiring.CableType) IEnergyStorage(ic2.api.tile.IEnergyStorage) TileEntityBlock(ic2.core.block.TileEntityBlock) ItemStack(net.minecraft.item.ItemStack) DescriptionComponent(de.canitzp.tumat.api.components.DescriptionComponent)

Aggregations

EnergyTileUnloadEvent (ic2.api.energy.event.EnergyTileUnloadEvent)4 IEnergyReceiver (cofh.api.energy.IEnergyReceiver)2 IEnergySink (ic2.api.energy.tile.IEnergySink)2 IStrictEnergyAcceptor (mekanism.api.energy.IStrictEnergyAcceptor)2 IElectrical (micdoodle8.mods.galacticraft.api.transmission.tile.IElectrical)2 EnumFacing (net.minecraft.util.EnumFacing)2 DescriptionComponent (de.canitzp.tumat.api.components.DescriptionComponent)1 EnergyComponent (de.canitzp.tumat.api.components.EnergyComponent)1 TextComponent (de.canitzp.tumat.api.components.TextComponent)1 ElectricItem (ic2.api.item.ElectricItem)1 IElectricItem (ic2.api.item.IElectricItem)1 IElectricItemManager (ic2.api.item.IElectricItemManager)1 ISpecialElectricItem (ic2.api.item.ISpecialElectricItem)1 IEnergyStorage (ic2.api.tile.IEnergyStorage)1 TileEntityBlock (ic2.core.block.TileEntityBlock)1 Energy (ic2.core.block.comp.Energy)1 CableType (ic2.core.block.wiring.CableType)1 TileEntityCable (ic2.core.block.wiring.TileEntityCable)1 TileEntityTransformer (ic2.core.block.wiring.TileEntityTransformer)1 ArrayList (java.util.ArrayList)1