Railcraft

Railcraft

34M Downloads

12.1.0-beta-8 incompatible with SpongeForge Recommended and Latest

Pulz-TCP opened this issue ยท 5 comments

commented

Description of the Bug
Hosting server for the Technic Tekkit 2 modpack.
Forge-1.12.2-14.23.5.2860
With SpongeForge (SF) present, there are a few combinations of mostly negative results with Railcraft.
Tekkit 2 is also using a version of 12.1.0-beta-8 from Speiger, which I believe is just #2086 but cannot be sure. I mention this in case this gets merged.

In 12.0.0, everything worked perfectly.
In 12.1.0-beta-8, with both tested version of SF, railcraft did not work or at worst did not work and caused heavy TPS loss
In 12.1.0-beta-8-Speiger (made for Tekkit 2, v1.1.3), with recommend SF railcraft works but has a heavy TPS impact (a single iron tank can drop TPS from 20 to 16). With the latest SF railcraft does not work and also causes heavy TPS loss.

With SpongeForge 2838-7.4.7 (recommended) present:

Railcraft Version Does mod work? Negative performance impact?
railcraft-12.0.0 YES no
railcraft-12.1.0-beta-8 NO no
railcraft-12.1.0-beta-8-technic2 YES YES

With SpongeForge 2838-7.4.8-RC4142 (latest) present:

Railcraft Version Does mod work? Negative performance impact?
railcraft-12.0.0 YES no
railcraft-12.1.0-beta-8 NO YES
railcraft-12.1.0-beta-8-technic2 NO YES

Logs
There is no unusual content printed to the logs - only warnings regarding the server running behind in those instances where I've specified heavy performance impact.

I did however do a 5 minute timings report with Spark. The context here is that my server TPS was at 3. Destroying perhaps 7 iron tanks by removing a block brought TPS back up to 20. I did one timing report before and after placing the final block in those tanks. I have also encountered the same performance drop with Blast Furnaces and tanks at other locations and times, just whatever happens to be loaded by a player at the time.

  • Forge-1.12.2-14.23.5.2860
  • SpongeForge 2838-7.4.7
  • In 12.1.0-beta-8-Speiger (works but causes heavy TPS loss)
  1. https://spark.lucko.me/5mYwHDzUGu (TPS normal, tanks not finished)
  2. https://spark.lucko.me/4NgodjGhtu (TPS down to 5, tanks finished)

I do also have some in-game footage, for whatever it's worth:

I would have loved to have tested each of the beta's between 12.0.0 and beta 8 but sadly do not have the time beyond this report!

I'm not sure how much further I can help but feel free to ask; thanks for looking at this report.

commented

@Pulz-TCP Note: I never made the patch.
I only made the proposal patch and @xJon made the patch (or has someone that made the patch for him).
While i find it funny that he named the patch after me, i don't even know how he implemented it and what else changed.

But note:
My patch shouldn't trigger this kind of behavior to non EU emitting multiblocks.
And the worst the Enet does is do 1 block update per block being added to the enet.
I think there is something different wrong. But i don't know railcrafts logic that well in the first place.

Maybe @xJon can provide a light what else they patched.

commented

@Speiger I remember this issue was tested with the default 12.1.0-beta-8 build (without your pull request) and was still happening, so it probably has nothing to do with your PR.

commented

I will need to revisit this in the morning as I can see my Spark reports have since expired.

I did hop on briefly to try and get some data, but couldn't get railcraft-12.1.0-beta-8-technic2.jar to work at all with the two specified SpongeForge versions despite following my post in regards to version combinations. (By not work, I mean that blast furnaces and iron tanks do not complete the multiblock structure at all. You still get the achievement for the blast furnace to validate that the arrangement is correct.).

commented

New testing:

railcraft-12.1.0-beta-8-technic2.jar
spongeforge-1.12.2-2838-7.4.8-RC4142.jar

Blast Furnaces + Iron Tank setups do not work, when made they lower the TPS significantly.
In a test server with 6 3x4 iron tanks the TPS drops to around 8-11.
5 minute Spark report: https://spark.lucko.me/zp6m3WH5F8

Looks like mods.railcraft.common.blocks.logic.StructureLogic.spreadChange() keeps going and going and going.

commented

@Pulz-TCP that means Railcraft has a BlockUpdate loop where every tick there is block updates being done.
And that logic updates the whole structure.

At least that is my guess.
Once the structure is valid the structure should not react to blockupdates unless it is within a slave itself and the slave is no longer valid. That is the ONLY case where the structure needs to react to blockupdates.