static void Main(string[] args) { if (args.Length != 3) { Console.WriteLine("Usage: Convert <world> <dest> <a|b>"); return; } string src = args[0]; string dst = args[1]; string srctype = args[2]; // Open source and destrination worlds depending on conversion type NbtWorld srcWorld; NbtWorld dstWorld; if (srctype == "a") { srcWorld = AlphaWorld.Open(src); dstWorld = BetaWorld.Create(dst); } else { srcWorld = BetaWorld.Open(src); dstWorld = AlphaWorld.Create(dst); } // Grab chunk managers to copy chunks IChunkManager cmsrc = srcWorld.GetChunkManager(); IChunkManager cmdst = dstWorld.GetChunkManager(); // Copy each chunk from source to dest foreach (ChunkRef chunk in cmsrc) { cmdst.SetChunk(chunk.X, chunk.Z, chunk.GetChunkRef()); } // Copy level data from source to dest dstWorld.Level.LoadTreeSafe(srcWorld.Level.BuildTree()); // If we're creating an alpha world, get rid of the version field if (srctype == "b") { dstWorld.Level.Version = 0; } // Save level.dat dstWorld.Level.Save(); }
public NbtWorld GetWorld(TKOptions opt) { NbtWorld world = null; try { if (opt.OPT_ALPHA) { world = AlphaWorld.Open(opt.OPT_WORLD); } else { world = BetaWorld.Open(opt.OPT_WORLD); } } catch (Exception ex) { Console.WriteLine("Error: " + ex.Message); Environment.Exit(1); } return(world); }