VoidChunk - The new era in map decorruption

Discussion in 'Bukkit Tools' started by VoidWhisperer, Oct 8, 2012.

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

    VoidWhisperer

    Table of contents:
    1. What is VoidChunk
    2. How to use VoidChunk
    3. Other information
    4. Credits
    <EDIT by Timtower: removed malicious downloads>

    Make sure to back up your worlds & notice that the decorruption takes time. let it run it's course (Takes approx 1 hour and 9 min for a 4 GB map)
    (If the fact that it's linking to a php page annoys anyone or any bukkit staff have an issue with it, please tell me so i can fix it. -- It's only linking there so i can track download #s)
    What is VoidChunk?

    Voidchunk is a new map decorruption tool that started from the server 'Minesworn' having a lighting corruption, which yes, does exist, and me being asked by the owner to fix it. This is the outcome, and I hope it becomes one of the best map decorruption tools to date =). Anyways, this is the error they got:
    Code:
     2012-10-04 17:03:08 [SEVERE] java.lang.ArrayIndexOutOfBoundsException: 1964
     
    2012-10-04 17:03:08 [SEVERE]  at net.minecraft.server.NibbleArray.a(SourceFile:28)
     
    2012-10-04 17:03:08 [SEVERE]  at net.minecraft.server.ChunkSection.c(ChunkSection.java:102)
     
    2012-10-04 17:03:08 [SEVERE]  at net.minecraft.server.Chunk.getBrightness(Chunk.java:484)
     
    2012-10-04 17:03:08 [SEVERE]  at net.minecraft.server.World.b(World.java:547)
     
    2012-10-04 17:03:08 [SEVERE]  at net.minecraft.server.EntityMonster.o(EntityMonster.java:99)
     
    2012-10-04 17:03:08 [SEVERE]  at net.minecraft.server.EntityMonster.canSpawn(EntityMonster.java:117)
     
    2012-10-04 17:03:08 [SEVERE]  at net.minecraft.server.SpawnerCreature.spawnEntities(SpawnerCreature.java:152)
     
    2012-10-04 17:03:08 [SEVERE]  at net.minecraft.server.WorldServer.doTick(WorldServer.java:155)
     
    2012-10-04 17:03:08 [SEVERE]  at net.minecraft.server.MinecraftServer.q(MinecraftServer.java:557)
     
    2012-10-04 17:03:08 [SEVERE]  at net.minecraft.server.DedicatedServer.q(DedicatedServer.java:213)
     
    2012-10-04 17:03:08 [SEVERE]  at net.minecraft.server.MinecraftServer.p(MinecraftServer.java:473)
     
    2012-10-04 17:03:08 [SEVERE]  at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:405)
     
    2012-10-04 17:03:08 [SEVERE]  at net.minecraft.server.ThreadServerApplication.run(SourceFile:539)
     
    2012-10-04 17:03:08 [SEVERE] Encountered an unexpected exception ArrayIndexOutOfBoundsException
     
    java.lang.ArrayIndexOutOfBoundsException: 1964
     
    at net.minecraft.server.NibbleArray.a(SourceFile:28)
     
    at net.minecraft.server.ChunkSection.c(ChunkSection.java:102)
     
    at net.minecraft.server.Chunk.getBrightness(Chunk.java:484)
     
    at net.minecraft.server.World.b(World.java:547)
     
    at net.minecraft.server.EntityMonster.o(EntityMonster.java:99)
     
    at net.minecraft.server.EntityMonster.canSpawn(EntityMonster.java:117)
     
    at net.minecraft.server.SpawnerCreature.spawnEntities(SpawnerCreature.java:152)
     
    at net.minecraft.server.WorldServer.doTick(WorldServer.java:155)
     
    at net.minecraft.server.MinecraftServer.q(MinecraftServer.java:557)
     
    at net.minecraft.server.DedicatedServer.q(DedicatedServer.java:213)
     
    at net.minecraft.server.MinecraftServer.p(MinecraftServer.java:473)
     
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:405)
     
    at net.minecraft.server.ThreadServerApplication.run(SourceFile:539)
    The block corruption that it fixed:

    Code:
    java.lang.ArrayIndexOutOfBoundsException: 1108
    at net.minecraft.server.ChunkSection.a(ChunkSection.java:37)
    at net.minecraft.server.Chunk.getTypeId(Chunk.java:350)
    at net.minecraft.server.World.getTypeId(World.java:181)
    at net.minecraft.server.World.s(World.java:1702)
    at net.minecraft.server.SpawnerCreature.spawnEntities(SpawnerCreature.java:108)
    at net.minecraft.server.WorldServer.doTick(WorldServer.java:154)
    at net.minecraft.server.MinecraftServer.r(MinecraftServer.java:565)
    at net.minecraft.server.DedicatedServer.r(DedicatedServer.java:215)
    at net.minecraft.server.MinecraftServer.q(MinecraftServer.java:495)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:428)
    at net.minecraft.server.ThreadServerApplication.run(SourceFile:818)
    
    After looking into this, I discovered that there appeared to be some form of lighting corruption due to a piece of the region files not saving the lighting data completely. What voidchunk does for this is it goes through the region files and finds the missing lighting data, and replaces it with what should be there! This has helped Minesworn and their server has been up for quite a while now without crashes that used to happen every 5 minutes with that corruption.

    tl;dr: VoidChunk is a new tool in the area of map decorruption, targeting the common areas of corruption, and those not so common, such as lighting corruption.

    How to use VoidChunk

    BACK UP YOUR WORLD BEFOREHAND!!

    Glad you asked! VoidChunk is very simple to use! No more complex command line arguments, it is all done in the app. The app lets you choose what world to scan (specify the location), then what to scan it for. After that, it does all of the work for you. Let it run while you go eat dinner, go for a bike ride, go to school, or anything else. It will do it's job and then you can check back later when it is done. After that, you can look through the log file for the specific words stated below that will signify corruption was found. (Or, both of the following things will happen: At the end it will give data saying how many chunks were corrupted and fixed, how many entities removed, etc. We also plan to add verbose logging to get rid of the clog caused by the normal logging.)

    Words to search for:
    Lighting corruption scan: 'Corrupted chunk'

    Other information:

    VoidChunk is a constant work in progress, so it is recommended to make sure you back up your world even if you are using a stable build. If you don't back up your world, we are not responsible for what happens to it. At the moment, VoidChunk is still in the process of being expanded, so there isn't a download link yet, however if you would like to test dev builds please feel free to contact me.

    Dev Build information:

    Information on the latest dev build:
    I've implemented 2 things per request:

    Phantom lighting - This forces a reset of all block and skylight lighting, hopefully forcing it to recalculate and fix those ugly lighting blotches.

    General corruption - This should help with general corruption in chunks that like to stop the server -- All it does is rename the file, you may have to remove it, or you can put it up on a file hosting website, give it to me, and i can try to make something to fix it.

    Credits:

    Minesworn server - Server.minesworn.com - For giving the idea of voidchunk and allowing me to test the first version related to lighting decorruption on their server.
    Mojang's anvil world converter code - Well, I had to get the nbt tag library stuff from somewhere! :p

    Todo:
    • Add more types of decorruption
      • Block decorruption
      • Tnt removal
      • Lighting corruption
      • Item removal
      • Any other recommended types!
    • Get a website set up for dev builds/stable builds
    • Get some testers for dev builds and bug finders!
    Changelog:
    • V 0.0.2D: Block decorruption, light decorruption. Other forms of decorruption are WIP or not working, so use at your own risk. make sure to back it up.
    • V 0.0.1: This only allows for light data decorruption atm. We are working on the tnt and entity removal and that will be in v1.
     
  2. Offline

    hawkfalcon

    +2
     
    MrBluebear3 likes this.
  3. Offline

    Afotai

    I can't seem to get it to run with the .batch file, it asks for a folder location, I gave it in different formats such as D:/minecraft/world or D:\minecraft\world - all pointing to the world folder, but it doesn't do anything! It just prints the directory where the java file is along with >pause. Press a key to continue.

    Any way to do it with just the commandline?

    edit: you actually have to point it to your ./world/region folder rather than ./world/
     
  4. Offline

    VoidWhisperer

    Yeah
     
  5. Offline

    hawkfalcon

    This looks like a worthy addition for the tools index
    Please apply here.
     
  6. Offline

    307th

    Exception in thread "main" java.lang.NegativeArraySizeException
    at vc.decorrupter.main.RegionFile.getChunkDataInputStream(RegionFile.java:220)
    at vc.decorrupter.main.Main.main(Main.java:115)
     
  7. Offline

    md_5

    What kind of corruption does it fix at the moment, other than bad lightning?
    From my reckoning that is 1% of corruption. Also since anvil corruption is very very very low.
    Across 3 huge servers we have not had any.
     
  8. Offline

    Afotai

    I ran a check for light corruption in my big map (5+Gb in size :c) but it didn't pick anything up, and there are tons of places with broken light (phantom skylight in underground areas) that will make the server halt.
     
  9. Offline

    VoidWhisperer

    Afotai: Error plz? :D
     
  10. Offline

    Afotai

    Yeah, I think its caused by the covnersion to the anvil format, if you have a huge underground area, it would appear as if the area is exposed to direct sunlight, while in reality it isn't.
    The author of that video actually managed to create a mod that can fix the issue called LightsOut (those fixes are now officially in 1.3), but already generated chunks are unaffected.

    I have a very extensive underground area (mines of moria) that is heavily affected by this, and the light bug actually pops up in some smaller buildings as well. Depending on how much of this 'phantom light sources' you have, it can heavily decrease the performance of the server.

    You can see a few screenshots of what the bug actually does to the map here:
    http://min.us/m9DDNSBhYwO0u

    I'm sure you are aware with the debug menu: the sl and rl values which are quite off are causing all this weird looking light.
     
  11. Offline

    GarretSidzaka

    void is the man!! we had lighting corruption and he cleared it up. i gave him $50 to write void chunk!!! :p
     
    hawkfalcon likes this.
  12. Offline

    md_5

    An error I recently came across on bukkit was uid.dat becoming a 0 byte file. You should add a check to see that a valid 16 byte uuid is written to it, if not make one.
     
  13. Offline

    VoidWhisperer

    Will do!
     
  14. Offline

    Lolmewn

  15. Offline

    Krunch

    I am disappointed this program does not fix corrupt chunks or chunks that have been swapped (relocated) somewhere else.
     
  16. Offline

    md_5

    I could swear I saw an option for that in the command line paramaters, maybe it was a different chunk fixer.
     
  17. Offline

    VoidWhisperer

    That is not in mine, but i can add it :D
     
  18. Offline

    XxBoonexX

    I Really hope this tool does well. chunk errors are the worst :(. lack of chunkster is painfull :(
     
  19. Offline

    VoidWhisperer

  20. Offline

    vander_fr

    Nice thx a lot !

    Please keep working on it :)
     
  21. Offline

    Ugpzt

    I tried this plugin and "region-fixer" on my map which was causing my server to stall when started. The region-fixer reported massive amount of entities on 2 sectors(2000+ and 8000+). So I ran this plugin using all of the options, it did not fix the problem, unfortunately.:oops:

    (It was a map from 1.3.2 R3.0).
     
  22. Offline

    TnT

    Did you attempt to remove those entities with Minecraft Region Fixer?
     
  23. Offline

    Ugpzt

    Yes, and was successful.
     
  24. Offline

    cet0

    I VoidWhisperer, your apps does not work in my computers the windows is auto-close. A file are generate with 0 ko size :(
    OS : Windows 8 64bits
    JAVA7u9
    VoidChunk last dev build

    My server error : http://pastebin.com/0VXhdKAp

    Thank you :)
     
  25. Offline

    VoidWhisperer

    I will look into it.
     
  26. Offline

    Lunarixx

    How to get it running?
    I put the VoidChunk Run and Jar file into the same folder with World_Nether and when i run the Bat file, and it asks for file directory, what should i put there??

    Could you tell me what is wrong here?
    What action should i take?
    http://pastebin.com/9tHGjRjY

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 29, 2016
  27. Offline

    GarretSidzaka

    i originally paid to have this project created. however, VoidWhisperer got hired onto a new company, so this may not be getting maintained.

    good news is we have forked this as something called AnvilCleaner, and we will eventually release to the bukkit community.
     
  28. Offline

    drdeft

    Lighting fix doesn't helped. We have a copy of the broken world and can send it to you.
    http://pastebin.com/nfmQcg7F

    Phantom lightning fix helped. But no all the map is covered by shadows. Shadows dissapearing when touching it. But after relog shadows are back again.

    How can I remove this shadows now?

    No. It hasn't fixed. I tried all methods. The solution was to delete corrupted chunk file and regenerate it. Should I send this file to you?
     
  29. Offline

    RobMasten

    All of my region files only total up to about 13mb...

    But, running any of the scans that VoidChuck has causes it to run through several of regions, but then ends with this:

    Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 1, Size:
    1
    at java.util.ArrayList.rangeCheck(Unknown Source)
    at java.util.ArrayList.set(Unknown Source)
    at vc.decorrupter.main.RegionFile.<init>(RegionFile.java:131)
    at vc.decorrupter.main.BlockCorruption.cleanup(BlockCorruption.java:48)
    at vc.decorrupter.main.Main.main(Main.java:141)
     
  30. Offline

    PurpleRage

    Im curious, what would happen if you ran this on a map that used a terrain generator like TerrainControl? Would the chunks follow default terrain gen or generator...gen?
     
Thread Status:
Not open for further replies.

Share This Page