Dimensional Transceiver doesn't send its max IO value in energy
Prism0 opened this issue ยท 11 comments
Issue Description:
The dimensional transceiver limits the amount of energy sent to the value specified in its Send/Receive buffer tooltip.
What happens:
The transceiver doesn't send as much energy as its Max IO value specifies, even when I change the Max IO number to other values. I tested the default, which was 10,000,000 RF/t in my case, I tested less and I tested which I think (?) is the highest possible amount, 2,147,483,647 RF/t. When I first changed the default value, the transceiver actually "broke" in terms of energy sending/receiving. The transceivers charge remained but its buffer emptied and didn't accept any new energy. Save&quit and then reloading the world fixed the issue but this was only the case after I reset it to the default value of 10,000,000 RF/t. Changing it to any other number seems to break it completely without the option of resetting it via save&quit.
What you expected to happen:
From what I've read, people were able to change the max IO value without it breaking. I don't know if the max IO thing is intended but I can't see a reason why it would be because the "max IO" value indicates the maximum throughput and the send/receive buffer just indicates a buffer to me.
Steps to reproduce:
- Build 2 transceivers
- Place both where they should go and only create 1 energy channel with 1 transceiver sending the energy and the other receiving it.
- Have energy storage on both ends to test if my problem arises.
Affected Versions (Do not use "latest"):
- EnderIO: 1.7.10-2.3.0.429_beta
- EnderCore: 1.7.10-0.2.0.39_beta
- Minecraft: 1.7.10
- Forge: 10.13.4.1614
- SpongeForge? No
- Optifine? No
- Single Player and/or Server? Single player, but opened to LAN to play with a friend. He doesn't use transceivers.
I'm using 512mb minimum and 6016mb maximum memory allocation, and also the following java arguments launching from MultiMC:
-XX:+UseG1GC -Dsun.rmi.dgc.server.gcInterval=2147483646 -XX:+UnlockExperimentalVMOptions -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M
Your most recent log file where the issue was present:
Due to MultiMC not listening to what I want it to do right now, logs are unavailable at this point. But I think there's nothing in there anyway, I went through them myself multiple times as well and didn't find anything important enderIO related.
Are you aware of the transfer energy loss, and 2147483647 is the 32bit signed integer limit so thats another story.
Yeah, I'm aware of the energy loss and also the maintenance cost. The energy loss (10% I think?) was disabled by default in my case, I think the upkeep was disabled as well but anyway, right now there's no energy loss nor upkeep enabled.
To better highlight what I meant with the buffers, here are some screenshots:
Red is the internal buffer
Orange bar is Send/Receive (IO) buffer
Am I just confused or is the transceiver supposed to only send 250k max RF/t to another transceiver and to all transceivers in total the max IO of 10mil RF/t? I didn't find any helpful documentation on this thing sadly.
despite the MAX IO being 10mil, the actual buffer is only 0.25mil so the max speed is 0.25mrf/t that might be weird and i have no idea, maybe its modified configs or something else
It is indeed really weird and I don't understand it.
The transceiver settings can be changed in the EnderIO.cfg file and the one considering max IO is:
Maximum RF/t sent and received by a Dimensional Transceiver per tick. Input and output limits are not cumulative
I:transceiverMaxIoRF=10000000
As I said before, upkeep and energy loss are disabled.
I just found another comment from 2017 where someone asked the exact same question. Sadly, that was in a mc server forum and nobody answered.
Energy is first transferred into the buffer of the transceiver before the buffer is send into the buffer of other transceivers. So you can't transfer more than you can store in the transceiver's buffer.
Yeah, it makes perfect sense considering that the tooltip and the bar in the transceiver state that there's a buffer and that this buffer has a maximum capacity of 250k RF. But why is it then that there's the "max IO" number? Do you know what exactly it means and why does everybody I saw when I googled the problem say that you can increase the transceivers energy transfer speed at will by changing the config, yet those people should have had the 250k buffer too? I'm really confused as to how it's actually supposed to be and if you can even change it without having to decompile mod files.
Max I/O is what the name says - the maximum amount of energy that you can transfer into/out of the buffer per tick. Like the connector transfer limit on the conduits.
Sorry, am I being dumb here? I don't understand what you're saying. How can you extract or input 10 mil RF/t if the buffer can only be as big as 250k RF/t since it is 250k RF max capacity. The transceiver can only send 250k RF/t to any other transceiver which makes the max IO redundant, no?
For instance, imagine the energy conduits sending 250k RF/t instead of 180k RF/t. 1 Conduit on the transceiver to some random machine which needs 250k RF/t would be the maximum I could get out of the transceiver. If I would connect another energy conduit to a different side of the transceiver, it would theoretically not receive any energy since the max IO speed is only as big as the buffer... right? I'm really confused now...
The buffer is transferred between the dimensional transceivers, and the IO is the rate the dim trans can export/import micro infinity into itself from conduits. You can tweak the size of the buffer independently in the configs.
Oh, so "wired" energy input IO max is 10mil and "wireless" energy transmission between the transceivers is maxed with the buffer size? If that's the case, I understand, thanks.
I didn't find the option to change the buffer size in the EnderIO.cfg though, do you know where I can find it? I want it to transfer energy like a Tesseract.
Buffer Scales With Capacitor level so i would think it would be in https://github.com/SleepyTrousers/EnderIO/blob/master/enderio-machines/src/main/resources/assets/enderio/config/recipes/capacitor_machines.xml
Yep https://github.com/SleepyTrousers/EnderIO/blob/76a5ecca2aa9ba13083a12a55711f816acc96951/enderio-machines/src/main/resources/assets/enderio/config/recipes/capacitor_machines.xml#L165