Пример #1
0
 public void Export(string path, NbtTag root)
 {
     if (Snbt)
     {
         File.WriteAllText(path, root.ToSnbt(CreateOptions()));
     }
     else
     {
         var file = new fNbt.NbtFile();
         file.BigEndian = BigEndian;
         file.RootTag   = root;
         using (var writer = File.Create(path))
         {
             if (BedrockHeader)
             {
                 writer.Seek(8, SeekOrigin.Begin);
             }
             long size = file.SaveToStream(writer, Compression);
             if (BedrockHeader)
             {
                 // bedrock level.dat files start with a header containing a magic number and then the little-endian size of the data
                 writer.Seek(0, SeekOrigin.Begin);
                 writer.Write(new byte[] { 8, 0, 0, 0 }, 0, 4);
                 writer.Write(DataUtils.GetBytes((int)size, little_endian: !BigEndian), 0, 4);
             }
         }
     }
 }
Пример #2
0
 public void SetTags(NbtTag tag, NbtContainerTag parent, bool fill_current_value)
 {
     NbtTag    = tag;
     NbtParent = parent;
     if (fill_current_value)
     {
         this.Text = tag.ToSnbt(SnbtOptions.MultilinePreview);
     }
 }
Пример #3
0
 // add contents of tag to stringbuilder
 // used for aligning indents for multiline compounds and lists
 private static void AddSnbt(NbtTag tag, SnbtOptions options, StringBuilder sb, string indent_string, int indent_level, bool include_name)
 {
     if (tag is NbtCompound compound)
     {
         AddSnbtCompound(compound, options, sb, indent_string, indent_level, include_name);
     }
     else if (tag is NbtList list)
     {
         AddSnbtList(list, options, sb, indent_string, indent_level, include_name);
     }
     else
     {
         AddIndents(sb, indent_string, indent_level);
         sb.Append(tag.ToSnbt(options, include_name: include_name));
     }
 }
Пример #4
0
 public void SetFromTag(NbtTag tag)
 {
     this.Text = tag.ToSnbt(SnbtOptions.DefaultExpanded);
 }