LibAC-dart/lib/nbt/SnbtIo.dart
zontreck 84192c69db Completely rework SNBT Parser
(NOTE: ChatGPT Was used for regex only)
2024-08-29 06:55:12 -07:00

44 lines
1.2 KiB
Dart

import 'dart:io';
import 'Stream.dart';
import 'Tag.dart';
import 'impl/CompoundTag.dart';
class SnbtIo {
static Future<void> writeToFile(String file, CompoundTag tag) async {
File handle = File(file);
if (handle.existsSync())
handle.deleteSync(); // Ensure we flush the file to 0 bytes
StringBuilder builder = StringBuilder();
Tag.writeStringifiedNamedTag(tag, builder, 0);
await handle.writeAsString(builder.toString());
}
static Future<Tag> readFromFile(String file) async {
File fi = File(file);
String data = await fi.readAsString();
StringReader reader = StringReader(data);
Tag tag = CompoundTag();
try {
tag = Tag.readStringifiedNamedTag(reader);
} catch (E, stack) {
print("FATAL ERROR OCCURED AT LOCATION:\n${reader.getSnapshot()}");
print(E);
print(stack);
}
return tag;
}
static String writeToString(CompoundTag tag) {
StringBuilder builder = StringBuilder();
Tag.writeStringifiedNamedTag(tag, builder, 0);
return builder.toString();
}
static Future<Tag> readFromString(String data) async {
return Tag.readStringifiedNamedTag(StringReader(data));
}
}