forked from mirrors/NBTExplorer
53 lines
1.7 KiB
VB.net
53 lines
1.7 KiB
VB.net
Imports Substrate
|
|
Imports Substrate.Core
|
|
Imports Substrate.Nbt
|
|
|
|
' This example will convert worlds between alpha and beta format.
|
|
' This will convert chunks to and from region format, and copy level.dat
|
|
' Other data, like players and other dims, will not be handled.
|
|
|
|
Module Module1
|
|
|
|
Sub Main(args As String())
|
|
If args.Length <> 3 Then
|
|
Console.WriteLine("Usage: Convert <world> <dest> <a|b>")
|
|
Return
|
|
End If
|
|
|
|
Dim src As String = args(0)
|
|
Dim dst As String = args(1)
|
|
Dim srctype As String = args(2)
|
|
|
|
' Open source and destrination worlds depending on conversion type
|
|
Dim srcWorld As NbtWorld
|
|
Dim dstWorld As NbtWorld
|
|
If srctype = "a" Then
|
|
srcWorld = AlphaWorld.Open(src)
|
|
dstWorld = BetaWorld.Create(dst)
|
|
Else
|
|
srcWorld = BetaWorld.Open(src)
|
|
dstWorld = AlphaWorld.Create(dst)
|
|
End If
|
|
|
|
' Grab chunk managers to copy chunks
|
|
Dim cmsrc As IChunkManager = srcWorld.GetChunkManager()
|
|
Dim cmdst As IChunkManager = dstWorld.GetChunkManager()
|
|
|
|
' Copy each chunk from source to dest
|
|
For Each chunk As ChunkRef In cmsrc
|
|
cmdst.SetChunk(chunk.X, chunk.Z, chunk.GetChunkRef())
|
|
Next
|
|
|
|
' 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" Then
|
|
dstWorld.Level.Version = 0
|
|
End If
|
|
|
|
' Save level.dat
|
|
dstWorld.Level.Save()
|
|
End Sub
|
|
|
|
End Module
|