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;
}
}
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;
}
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;
}
Aggregations