[1.10.2-9.2.1.298] Recurring client crash while dismantling Thermal Evaporation Plant
JaSpr opened this issue ยท 3 comments
I was dismantling the top layer of my thermal tower (which is 12 or so blocks above the thermal controller) when the game crashed. It specifically mentions rendering the thermal controller in the crash report.
I stumbled across what was happening after about the fifth crash: When you remove an entire level, removing the last block of that level causes the tower to be "complete" again (albeit 1 level shorter). It was crashing each time that it tried to change the status of the tower from incomplete to complete again. This might be because the contents of the tower (the water) would have exceeded the height of the tower itself. (The previous tower was at 100% capacity).
Each time it crashed, and I logged back in, the water was restored (to a proper level for the new height), and the first block I broke caused the water to disappear (as the tower was then incomplete). It was only upon removing the last block from that level that it crashed, while trying to say the tower was complete.
A simple workaround (so that I could finish taking the tower apart so that I could move it elsewhere) was to remove an entire column first, so that as each level was removed, the tower was still incomplete.
Error occurs on RenderThermalEvaporationController.java@48 when tileEntity.inputTank.getFluidAmount()
is greater than tileEntity.inputTank.getCapacity()
.
The result is that amount/capacity is greater than 1, and when multiplied times the length of displayList
, it results in an index that is greater than the length of displayList
. Therefore, when trying to access the value of that index, it causes an out of bounds error. This can be resolved by forcing a Math.min with (value) versus 1, meaning we'll never try to render the tower more full than 100%
Fixed in #4240