Ender IO Zoo

Ender IO Zoo

962k Downloads

Energy Conduit + buffer saturation

7eggert opened this issue ยท 3 comments

commented

Steps to reproduce:

I wanted to have a distribution line using "ender energy conduits" and machine lines using "energy conduits". So I did this:

  • Install 16 energy generators of 40 RS/t each (Thermal Expansion Dynamo)
  • connect them using "energy conduits" - 640 RF/t in and out
  • optionally install some consumers (RF furnaces generating coal, wood choppers)
  • Have a power/omni buffer collect the energy
  • configure the sides for input/output
  • on the other side, have large consumers (e.g. builder block) that could eat all the energy
  • This consumer is connected using "ender energy conduit"

(Happened in a RFTools dimension with double-speed time; this does not seem to affect the machines; I assume it has no effect on the issue)

What you expected to happen:

  • Each side of the power buffer can receive 640 RF/t using energy conduits
  • sides configured to "push" should output energy? Instructions unclear ...
  • energy conduits set to insert/extract should do that?
  • Therefore the buffer should "consume" up to 5 * 640 RF/t, for now 1 * 640 RF/t; output all the energy on the remaining side
  • (it should be able to handle even more energy throughput)
  • Therefore the generators should be able to generate 16*40 RF/t without saturating the conduit

What happens:

  • The generators will decrease their output to about 10 RF/t
  • replacing all the wires using "ender energy conduit" and removing the buffer gave the expected results with respect to energy generation and consumption

Affected Versions

Minecraft 1.10.2
forge-1.10.2-12.18.3.2185-installer.jar
liteloader-installer-1.10.2-00

1.10-chunkedgeindicator-1.3.jar
Advanced-Inventory-Mod-1.10.2.jar
AutoPackager-Mod-1.10.2.jar
BaseMetals_1.10.2-2.4.0.11.jar
Better HUD by NukeDuck [1.9.4][1.3.8].jar
BetterFoliage-MC1.10.2-2.1.4.jar
BiomesOPlenty-1.10.2-5.0.0.2162-universal.jar
CXLibrary-1.10.2.jar
Chameleon-1.10-2.2.2.jar
CoFHCore-1.10.2-4.1.1.156-universal.jar
CodeChickenCore-1.10.2-2.4.1.102-universal.jar
CodeChickenLib-1.10.2-2.5.8.255-universal.jar
ColossalChests-1.10.2-1.5.2.jar
CraftingCraft_1.10.2-4.1.9.jar
CyclopsCore-1.9.4-0.10.2.jar
DrCyanosLootableBodies_1.10.2-2.2.0.jar
Ender-Compass-Mod-1.10.2.jar
EnderBags-Mod-1.10.2.jar
EnderCore-1.10.2-0.4.1.65-beta.jar
EnderIO-1.10.2-3.1.183.jar
EnderStorage-1.10.2-2.2.1.106-universal.jar
Flat-Bedrock-Mod-1.10.2.jar
Inventory-Tweaks-Mod-1.10.2.jar-
LLOverlayReloaded-1.1.1-mc[1.9-1.11].jar
Mineralogy_1.10.2-3.2.0.jar
OptiFine_1.10.2_HD_U_D7.jar
OreSpawn_1.10.2-1.1.0.jar
PowerAdvantage_1.10.2-2.3.0.jar
ProgressiveAutomation-1.10.2-1.7.4.jar
QuantumFlux-Mod-1.10.2.jar
Railcraft_1.10.2-10.1.1.jar
RebornCore-1.10.2-2.13.5.136-universal.jar
Redstone-Paste-Mod-1.10.2.jar
SteamAdvantage_1.10.2-2.2.0.jar
ThermalExpansion-1.10.2-5.0.4.90-universal.jar
ThermalFoundation-1.10.2-2.0.5.81-universal.jar
VillageInfoSSP-1.9.4-2.1.jar
VoxelMap-Mod-1.10.2.litemod
Waila-1.7.0-B3_1.9.4.jar
Waypoints-Mod-1.9.4.jar
bdlib-1.12.4.24-mc1.10.2.jar
compatlayer-1.10-0.2.5.jar
cyberware-1.9.4-1.10.2-beta-0.2.7.jar
endertanks-1.10.0-1.4.12.jar
fluxducts-mc1.9.4-1.0.4.jar
hopperducts-mc1.9.4-1.4.8.jar
jei_1.10.2-3.14.7.417.jar
mcjtylib-1.1x-2.3.11.jar
mod_worldeditcui_1.10_00_lite_mc1.10.litemod
pressure-1.3.1.20-mc1.10.2.jar
rftools-1.1x-6.00.jar
rftoolsdim-1.1x-4.55.jar
shetiphiancore-1.10.0-3.3.8.jar
worldedit-forge-mc1.10.2-6.1.4-dist.jar

commented

It's the item buffer - even though it says it could move 20480 RF/t, it's saturated.

commented

You need to set the input side of the power buffer to pure input (other with the buffer's config or the conduit), otherwise you'll get a feedback loop there that will eat your available capacity. The buffer has no idea that there's nothing but conduit buffers on that side, so it'll try to fill them up all the time.

commented
  1. This needs to at least be documented, since it's unexpected and unnecessary. Other mods don't have similar requirements. Setting the wire properties should be enough. (Also pending investigation: I had to disable "push".)

  2. The very purpose of the buffer is to not have capacity being eaten. Therefore capacitors and buffers need special handling.

  3. There is a way to avoid this problem:

  • First transfer energy to non-capacitors on the same wire
  • Then transfer energy to buffers/capacitors - if any was remaining
  • Then transfer from buffer/capacitor to consumers
  1. There is another way to avoid that: Only the difference from buffer/capacitor I/O may count towards the wire's total. You have three variables: In, out and buffered (signed; positive == towards buffer). Instead of
    in < 640 and out < 640,
    the limit checks would then be
    (in - max(buffered, 0)) < 640 and (out + min(0, buffered)) < 640.