Multi-block ME controllers forcing chunks to stay loaded #1656

Closed
RoyCurtis opened this Issue Jun 29, 2015 · 2 comments

Comments

Projects
None yet
3 participants
@RoyCurtis

It appears that ME Controllers are keeping their chunk(s) loaded ("orphaned"?) without using the Forge forced chunk ticket system, when:

This causes surrounding chunks to load by other means such as conduits and machinery from other mods, which then become unloaded during auto-save and immediately loaded again by the ME controller keeping the chunk alive.

Details

Discovered on

  • Direwolf20 1.7.10 1.4.1 and 1.5.0 live server
  • Forge 10.13.4.1448
  • Applied Energistics rv2-stable-3 and rv2-stable-9

Screenshots

Reproduction

Testing environment

Steps

  1. Create a flatland creative world with cheats enabled
  2. Execute /tp 0 8 0 and then /setworldspawn (keeps spawn chunks away from testing areas)
  3. Execute /tp 1000 8 1000
  4. Build an ME controller setup with one block, an Energy Acceptor and a Creative Energy Cell
  5. Execute /tp 1000 8 -1000
  6. Repeat step 4, but with a multi-block ME Controller setup
  7. Execute /tp -1000 8 1000
  8. Repeat step 4, but with multiple multi-block ME controller setups
  9. Repeat steps 7 and 8 at /tp -1000 8 -1000
  10. Execute /tp 0 8 0
  11. Press ESC to open the main menu and force a chunk purge
  12. Resume game and execute /chunkloaders. A new window will open under Minecraft
  13. Observe that chunks with the multi-block ME Controllers are kept loaded, whilst the chunk with only a single ME controller is properly unloaded

Notes

I discovered this bug as part of a long running investigation as to why chunks are mysteriously loading and unloading at random on my server. It is possible that other mods and factors are contributing to the problem, but I believe this particular bug is a major contributor.

To determine the existance of this bug, I took an offline copy of an affected base and tore it down machine by machine (e.g. reactor, turbine, EnderIO conduits, etc) and teleported in and out, until I was able to unload the chunk.

Because of time constraints and lack of experience with the AE2 codebase, I am unable to offer any advice or pull requests.

@yueh yueh added the type-bug label Jul 1, 2015

@yueh yueh added the state-fixed label Jul 1, 2015

@RoyCurtis

This comment has been minimized.

Show comment
Hide comment
@RoyCurtis

RoyCurtis Jul 2, 2015

Really cool! Looking forward to trying this out. Thank you for the fix, @yueh

Edit: Tested the build of this fix using a TeamCity guest account; success! No more forced chunks.

Really cool! Looking forward to trying this out. Thank you for the fix, @yueh

Edit: Tested the build of this fix using a TeamCity guest account; success! No more forced chunks.

@KennyBurch

This comment has been minimized.

Show comment
Hide comment
@KennyBurch

KennyBurch Jul 5, 2015

I'm curious now, I have been fighting with the ME2 controller(just using a single block) losing all contact with ALL storage devices when I use chickenchunks chunkloader on my base. (Controller stops talking to drives when I move away from my base and the chunks get cleaned up) I wonder if the current 'broken keeping chunks loaded' would keep the system working if I use a multiblock controller.

I'm curious now, I have been fighting with the ME2 controller(just using a single block) losing all contact with ALL storage devices when I use chickenchunks chunkloader on my base. (Controller stops talking to drives when I move away from my base and the chunks get cleaned up) I wonder if the current 'broken keeping chunks loaded' would keep the system working if I use a multiblock controller.

@yueh yueh closed this in f5e3ae8 Jul 14, 2015

yueh added a commit that referenced this issue Jul 14, 2015

Merge pull request #1665 from yueh/fix-1656
Fixes #1656 Reduces the amount of block updates a controller sends.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment