Ender IO Zoo

Ender IO Zoo

962k Downloads

Loot capacitors can be combined to produce insane amounts of power in a Stirling Generator

fotoply opened this issue ยท 7 comments

commented

Issue Description:

When combining the capacitors found in loot chests it is possible to get obscene values for the Stirling Generator power gen, which results in the generator producing large amounts of RF (millions to billions). This is possible even with very few capacitors (4-5), as long as they have the correct distribution of lows and highs.

What happens:

Loot capacitors explode in terms of Stirling Power Gen value, growing much faster than any of the combined capacitors value.

What you expected to happen:

Loot capacitors can be combined to create capacitors which are roughly as good as the two it was made of combined.

Steps to reproduce:

  1. Spawn 3 capacitors using the following command:
    /give <playerName> enderio:itemBasicCapacitor 3 3 {eiocap:{level:2,stirling_power_gen:3f}}
  2. Spawn 1 capacitor using the following command:
    /give <playerName> enderio:itemBasicCapacitor 1 3 {eiocap:{level:2,stirling_power_gen:0.1f}}
  3. Combine one of the first capacitors with the second in an anvil.
  4. Combine the result with one of the first until all capacitors have been combined into one.
  5. Put the capacitor in a Stirling Generator and watch it produces immense amounts of power

Affected Versions:

  • EnderIO: 1.10.2-3.1.193
  • EnderCore: 1.10.2-0.4.1.66-beta
  • Minecraft: 1.10.2
  • Forge: 12.18.3.2316

Your most recent log file where the issue was present:

https://hastebin.com/opiluhiwaj.sql

Note: This issue is much easier to replicate when using a mod to view the info of the loot capacitors. Therefore AnalyzeIO was also included in the world, though it does not seem to actually cause the issue.

commented

Ok, what was happening here is that combining 2 caps that have the same key should give you a value for that key that was between "better value - difference (but at least worse value)" and "better value + difference (but no more than 4.75)" with a gaussian distribution centred on "better value". However, it gave you "better value + difference (but at least worse value)" in the "it gets lower" case---which is a higher number with no limit on its size.

Or in other words: The distribution is made by 2 half-bells because the bells' centre is is not in the middle between min and max. Those bells are cut off at the min and max. But the lower half-bell was inverted---before it was cut off.

commented

Just curious, but did the tags change from 1.10 to 1.12? Just wondering about that give command and how it'd work for spawner speedup.

commented

What part of the spawner?

commented

Powered spawner spawn rate. Like, how fast it spawns.

commented

That would be energy used. More energy used the faster it spawns. You can do that with a generic capacitor level or the specific spawner energy use

commented

PS: Please don't necro bug reports, we have a perfectly fine Discord for asking questions ;)

commented

Yes, the tags changed. I remembered making it so it still recognized the old ones, but I'm not sure if that is still the case.

Adding a parameter for the efficiency (energy per spawning) may be a good idea. I'll have a look at the code and think about it further next week.