ThexXTURBOXx / BlockHelper

Basically WAILA for b1.6.5-1.5.2
https://modrinth.com/mod/block-helper
MIT License
8 stars 4 forks source link

More fluid bugs! #16

Closed Pyromanc3r closed 4 days ago

Pyromanc3r commented 5 months ago

While I was playing with Railcraft in single player, I found a couple more structures with similar bugs. And then I decided to check other structures in creative mode as well.

IC2 has a setting "B:enableSteamReactor=true" in IC2.cfg, which creates steam in the nuclear reactor instead of the usual EU/t. Steam for the test was used from the reactor.

Steam Turbine 2024-01-18_03 43 00

BuldCraft waterproof pipes (all types) 2024-01-18_16 09 23

Railcraft Tank shows the water level only in the Valve, not on the entire multistructure. Assume Steel variant same. 2024-01-18_16 09 35 2024-01-18_16 09 41

Steam boilers 2024-01-18_16 16 32 2024-01-18_16 15 27

Liquid loaders/unloaders 2024-01-18_16 58 17 2024-01-18_16 25 00

Water Tank 2024-01-18_17 00 00

Steam Oven 2024-01-18_17 01 06

All 3 railcraft steam engines 2024-01-18_17 10 01

I don't know if it's a bug, but I would like to read information from tank carts and locomotives too. At least the correct name, not the internal name 2024-01-18_19 13 03 2024-01-18_17 43 42

And it would also be nice to have features like Waila and Numpad hotkeys with options to switch block type (from liquid to solid block - Num 2), as well as a view of item creation/its derivative (Num 3, 4). Although it might be right to create a separate suggestion for that. Sorry :)

ThexXTURBOXx commented 5 months ago

Thanks for reporting all these! Sadly, most tank implementations back then were "stupid": They create a new tank object everytime you want to see how much liquid is in it. On the other hand, Forge tanks can have up to 7 different internal tanks (one for each side of the cube + one for the "unknown" side, just consider it a special case). Of course, in order to provide information about every tank there could be within a given tile entity, Block Helper queries all the possible tanks and sees whether their Java object addresses match. They should match if and only if they represent exactly the same internal object (hence, if they point to the same tank).

Alas, many implementations return the exact same tank for every side of the block, but packed within newly created, and hence, different Java objects. Hence, their addresses don't match and Block Helper has to consider them different tanks and lists them all. The current way I deal with this is the following: I have a "blacklist" (sort of) of tank types which should just be queried once. Hence, I just need to add all these different tanks to that list, but is that really a good way of dealing with this? I don't know. Is there a better way? I certainly don't know.

I will probably just add all of them to the blacklist for now. But I will still try to see whether I can find a better and more stable way of dealing with all of this.

ThexXTURBOXx commented 4 days ago

Everything except for the NumPad thing is now implemented :) I will port the change to all the various versions now - a new release is expected rather soon-ish! Thanks for your suggestions :)