PSA: Minecraft 1.7 update; possibly losing structures

Discussion in 'Community News and Announcements' started by EvilSeph, Oct 23, 2013.

Thread Status:
Not open for further replies.
  1. Offline


    Minecraft 1.7 introduces changes to the world generation code that could very likely result in structures (like strongholds and nether fortresses) generated in 1.6 no longer being recognised as valid. As this would mean that special behaviour for structures would stop working as expected (like wither skeletons spawning in nether fortresses, for example), we felt that it was important to give our Server Admins a heads up.

    Minecraft 1.6.4 introduces a new structure saving feature that should ensure that structures generated before 1.7 continue to be recognised as valid structures after updating. If you don't want to lose your structures from 1.6, you need to update to 1.6.4 first and make sure the structures are saved.

    What needs to be done
    If you're planning to continue running your 1.6 world come 1.7 and want to ensure that structures retain their special behaviour as expected, there is an extra step you need to take as part of the update process. Unfortunately, we've received reports that taking this extra step results in a noticeable performance hit so you'll have to decide for yourself what the best action is to take on your server. We've provided some extra useful information to help you make this decision in the "Things to note" section below.

    Before updating your server from 1.6 to 1.7, you should ensure you update to 1.6.4-R2.0 first and then visit all the structures in the worlds you wish to save. You can do this manually, but it is recommended you use our utility plugin StructureSaver (see below) to streamline this process and make things easier.

    Manually saving:
    Recommended - automated saving:
    • Download and update to CraftBukkit 1.6.4-R2.0
    • Download and install our StructureSaver utility plugin
    • Run the /save-structures [world] command (see below for detailed information)
    • Remove StructureSaver and restart your server
    First you'll need to download and update to CraftBukkit 1.6.4-R2.0

    Then you'll need to download and install StructureSaver from our GitHub here:

    Once it is enabled, it supports the following commands:
    /save-structures <worldname> - saves structures in a specific world only
    /save-structures <worldname> force - saves structures in a specific world only, after removing existing structure data
    /save-structures - saves all structures in every world
    /save-structures force - saves all structures in every world after removing existing structure data

    And has the following permission:

    Neglecting to address this ahead of time will result in structures from old worlds no longer being recognised as valid structures come 1.7.

    Things to note:
    Performance issues
    Since releasing the first version of StructureSaver, we've been receiving consistent reports that there is a noticeable decrease in server performance after StructureSaver has saved the structures on the server. To the best of our knowledge, we're certain that this issue isn't caused by StructureSaver itself as the issue continues after the plugin has been removed.

    Note that this decrease in performance is different from the immediate hit you see right after running StructureSaver (which is why we recommend you remove StructureSaver after you're done using it and restart your server).

    Run it once, keep a backup
    The nice thing about StructureSaver is that as long as you have a back up of your world, you're able to run a 1.6.4-R2.0 server with StructureSaver on it and save the structures whenever you want.

    You also have the option of running it now and backing up the resulting structure files in the 'data' folder inside your world's folder instead. Should you then decide later that you need the structures you saved from 1.6.4-R2.0, you can simply replace the already existing structure data as you please.

    Pick and choose
    Once you've run StructureSaver, it is completely up to you what you do with the saved structures. If you feel like saving Mineshafts is not necessary for your server, you can choose to delete the Mineshaft.dat file. Note, however, that it will be recreated by Minecraft whenever a Mineshaft is rediscovered (this applies to all structure types).

    Here's a list of the files created and what they provide:
    Mineshaft.dat - Stores the data for Mineshafts, not sure what the special feature is for Mineshaft.dat
    Fortress.dat - Stores the data for Nether Fortresses, determines where Wither Skeletons and Blazes can spawn
    Stronghold.dat - Stores the data for Strongholds, determines the location of Strongholds for Ender Eye tracking
    Temple.dat - Stores the data for Jungle Temples, Desert Temples and Witch Huts, determines where Witches can spawn
    Village.dat - Stores the data for Villages, not sure what the special feature is for Village.dat

    What is the actual problem with structures?
    As new features are added to Minecraft, sometimes the world generation logic needs to change along with it. Since Minecraft contains several 'structure specific' features, when the world generation logic changes, it could result in older structures no longer being valid.

    Minecraft 1.7 is one of those updates where the world generation logic has changed, meaning that worlds generated in 1.6 might have structures that are no longer recognised after updating to 1.7. In order to address this problem, Minecraft 1.6.4 introduced the ability to save structures to disk so that Minecraft is able to check for stored structures before trying to dynamically determine where they are.

    What do you mean by structures?
    When we say structures we mean areas in the world that Minecraft recognises as being a part of a special structure. This includes nether fortresses, strongholds, mineshafts, temples, witch huts and villages.

    Does this affect player built buildings?
    No, this only affects special structures generated and recognised by Minecraft.

    What does StructureSaver actually do?
    Simply put:
    StructureSaver is a utility we've provided that makes saving structures easier by providing a streamlined process to trigger the built in structure saving in Minecraft 1.6.4 and above.

    In detail:
    StructureSaver goes through every region file in your world and runs the appropriate structure generation code (without loading any chunks). Once all structures have been generated in your world, the plugin fires off a save to prompt Minecraft to write all the structures to disk.

    Where are structures saved?
    Structures saved by Minecraft 1.6.4 and above are stored in the 'data' folder within your world's folder. The possible names for these new files are:

    Why is my server using a lot of resources after running StructureSaver?
    We believe this might be caused by how structures are handled in Minecraft 1.6.4 and higher. Essentially, once a structure has been saved, it needs to be loaded into memory at all times in order to be accessible and saveable.

    How do I revert the changes StructureSaver made?
    As StructureSaver merely triggers the structure saving feature built into Minecraft 1.6.4 and above, you simply need to remove the following files from the 'data' folder within your world's folder:

    Why is this plugin not on BukkitDev?
    StructureSaver is a utility that is meant to only need to be used once in the transition from Minecraft 1.6.4 to Minecraft 1.7. As such, we felt that it didn't really belong on BukkitDev since it is purely built for one purpose and a specific Minecraft version.

    Delay in getting 1.6.4-R1.0 out
    Lastly, I'd like to apologise for how long it took us to release a 1.6.4 Recommended Build. We were really hoping to promote a Recommended Build immediately after we released our 1.6.4 update in order to address this, but we've been experiencing technical difficulties as our infrastructure broke down.

    Thankfully, as you're all now aware, we've managed to get everything back up and running and everything is now back to normal.
    EDWIN808, AJR200, mg180c and 20 others like this.
  2. Offline


    Builds by player's and randomly Generated structures will all be saved or should be saved as long as no error's occur within the process I would assume.
  3. Offline


    You don't really seem to grasp what this plugin did. Minecraft 1.6.4 introduced the ability for a server to save the structures so when Minecraft 1.7 came around, Wither Skeletons, Witches, and similar mobs that only spawn in server generated structures would continue to work as expected. This is a feature in 1.6.4, however, if that chunk has never been loaded (perhaps no players have visited those structures) then that structure would not get saved. This plugin would run through all structures and ensured they were saved in a 1.7 compatible format.

    This plugin in no way replaces the need for upgrading to 1.7, it is for a completely different purpose. You should educate yourself on what this plugin is used for before you get all up in arms about not having something free given to you fast enough for your liking, and complaining when we provide free tools that are necessary for many admins.

    Point proven? You've proved nothing. Proving the point would be backing your statement up with reproducible facts, not a statement claiming superiority.
  4. Offline


    Will the structuresaver-1.1.jar work with recommended build #2879 1.6.2-R1.0 ?
    They recommended that we load 1.6.4 so that we may load up important parts of our world to prepare for 1.7.
    When the Dev. build came out I loaded it. I had the same problems CPU & RAM maxed out. I kept getting a java.lang.OutOfMemoryError: GC overhead limit exceeded.
    The server did load and run, but I kept getting [WARNING] Can't keep up! Did the system time change, or is the server overloaded.
    I removed all my plugins to see if they might be the problem, but it still gave me the same warnings.
    I put the 1.6.2 Recommended build and my plugins back in and it ran fine.
    Now the recommended build #2912 for 1.6.4-R1.0 is out. So I loaded that one and the same thing happened again, CPU & RAM maxed out. I keep getting a java.lang.OutOfMemoryError: GC overhead limit exceeded is the server already running.
    This time I can't even get it to finish loading the server.
    I put the 1.6.2 recommended build back in and again, it runs fine.
  5. Offline


    No, you need to run RB 1.6.4-R1.0

    As for your other errors, seek assistance on the Bukkit Help forum.
    þÚñK™ likes this.
  6. Offline


    Does this mean that since I have started my whole world and generated it in 1.6.4 I would not need this plugin on the way to 1.7.2?
  7. Offline


    After two hours, save-structures crashed with "Caused by: java.lang.OutOfMemoryError: Java heap space". Now I can't even start the server anymore too, it crashes with the same error when preparing the world (which takes quite a while too).
  8. Offline


    I think the plugin WorldBorder deserves a mention here. It does the same thing as the StructureSaver plus has the added benefit of populating ungenerated chunks, too. This will minimize the "hard edges" that will come with the 1.7 update. It also has a limiter so you can specify how quickly it runs so you can do it slowly as a background process while all your users are online and playing normally or you can speed it up and try to do it as fast as possible (faster = more cpu usage, ram usage, lag, and overall errors). I already ran mine doing 1 chunk per second for 10,000 block radius. Took a few days, but there was no lag or OOM errors while we all still played on it.
    VergilPrime likes this.
  9. Offline


    Hmm good work, but i can't wait untill 1.7.2 bukkit is here!
  10. Offline


    What are the "structures"?
  11. Offline


    Strongholds, Villages
    Unless you have 2+GB RAM, it's not advised to run it as it is a memory hog.
  12. Offline


    Great, good job guys. :)
  13. Offline


    If you first started your world on 1.6.4 you should not need to run this plugin. As your world was loaded to be generated, the server should have saved it correctly. This would also be true if you used a plugin on a 1.6.4 server to generate your world.

    However, if you pre generated your world using some external utility (not a plugin - aka, MCEDIT) I cannot say for sure that utility would have also properly saved your structures.
  14. Offline


    Im a little concerned about this:
    1: Ok, so everything i built, and my players built should be OK. But, if 1.7.2 generates new structures, does this mean it could possibly build a new structure where someone built?
    2: I use a plugin called CleanroomGenerator. Every chunk is completely block-less. If I want to continue using it, for future chunks, do i have to use the plugin you guys created?
  15. Offline


    You're probably fine without using StructureSaver.
  16. Offline


    TnT So I don't need the plugin for sure? If i make a mistake, my skyblock server will always be bad, if there is actual terrain under their skyblock, and my players will never forgive me, if i reset the entire skyblock map.

    I mainly dont wanna download structure saver either, after hearing all the complaints about the RAM.
  17. Offline


    Its fine. All you have to do is delete the mineshafts.dat after you run it and it will run fine

    For some reason that file gets very large
  18. Offline


    robotnikthingy Would that file be under a world file? Or is it just generated in the root folder?
    I also have about 4 worlds.
  19. Offline


    under the world folder, in the data folder for that world
  20. Offline


    When do you think the first version will be available to the public?
  21. Offline


    What sort of information is stored in mineshafts.dat? Are there any negative side effects to removing that file? Also, wouldn't that file eventually grow again causing RAM issues to return if this is, indeed, a flaw in the way Minecraft handles structures?
  22. Offline


    It stores the locations of minecshafts. But since no special mobs spawn in mineshafts, I doubt it has any negative effects. So far I havent seen any on my server

    My guess is that its so large because mineshafts are so large, and rather common in large worlds
  23. Meh, after my server restarted after save-structures, i can't get my minecraft server to run anymore, even with 6 Gigs of RAM.
    This happens, when the server starts up and tries to "Preparing spawn area for" for some worlds, which takes uber long and raises the server cpu to 100%. Later, everything crashes due to "java.lang.OutOfMemoryError: Java heap space" and other out of memory-warnings.
    CPU stays on 100%, nothing is happening then..
  24. Offline


    See some of my posts above. Removing the mineshaft.dat file worked for me in fixing this
  25. Offline


    I am concerned about running the StructureSaver on my world.

    $ du -h ~/servers/loa/world/region
    103G /export/home/loa/servers/loa/world/region
    $ du -h ~/servers/loa/world_nether/DIM-1/region
    23G /export/home/loa/servers/loa/world_nether/DIM-1/region

    My concern is for a few reasons:
    1. This will take a long time and load every chunk I've generated; meaning the server will be hard-locked for several hours. This would only be acceptable if done during maintenance at night, but I don't even know how long to allot for this.
    2. After running, I expect my Mineshafts.dat file to be upwards of 300MB. This will severely impact server load time and memory usage if it loads this into memory at start up.
    3. If it loads it into memory at start up, it will also have to flush it to disk periodically, and if it doesn't use the async saving code, that will lock the server for a few minutes while it generates the NBT and then writes it to disk.
    4. Overall, this solution does not seem scalable. Why would you store all of the structure data for the entire world in a single file? Why not store it alongside the region files (or inside them)?
    At this point, I'm leaning against not running the saver until I can figure out how to save them in a better format. Does anyone else have any thoughts about this situation?
  26. Offline


    Hey, nice catch!
  27. Offline


    I don't have to post my facts because i have done my homework. Did you? Probably not because you obviously don't read what the community has to say about the plugin. To many people are having issues with RAM, and don't want to use it because it risk losing there current world. I don't know about you but when i want something i look at the reviews and feedback before i do anything. With this plugin the feedback sucks. All you guys had to do was make another 1.7.2 craftbukkit build instead of giving us an alternate way to run the servers. Give me a reason why i should use structure saver? (keep in mind that it has caused issues already). Give me a reason why a new 1.7.2 build is not out yet when you guys new for awhile now that Minecraft was going to be updated to 1.7.2? Why give us structure saver? Because you guys know something that we don't, its like you knew it was going to affect 1.7.2 before it even came out. Honestly get real, do your homework, know your facts, then you can come talk to me. And don't even tell me to "try it out before i even talk" because i am not just from the feedback. Thanks but no thanks.

    Just wait for a Craftbukkit 1.7.2 to come out.
  28. Offline


    Oh, maybe because 1.7.2 changes over 500,000 lines of code.
  29. Offline


    I think that this plugin has to be run before Craftbukkit 1.7.2 is run on the world, otherwise things like wither skeletons will no longer spawn in older nether fortresses.
  30. Offline


    Thanks, I posted in the Bukkit Help forums Thursday along with a number of other members.
    The only one who has replied is tcvs.
    I'm not seeing tcvs as staff. Just a 15 year old member.
    tcvs posted
    "@þÚñK™ @SnipsRevival I will start doing some of my own testing in a little bit."
    This was done on Thursday @ 11:18 PM.
    Is tcvs the one we are suppose to be waiting on ?
  31. Offline


    They should make server public before clients so there would be no need to wait for servers to update to the latest version..
Thread Status:
Not open for further replies.

Share This Page