Push more utilities and UUID stuff

This commit is contained in:
zontreck 2024-05-06 20:49:48 -07:00
parent dd6ee1bf60
commit 9b7b84153f
7 changed files with 325 additions and 0 deletions

View file

@ -1,11 +1,13 @@
import 'package:libac_flutter/nbt/impl/ByteTag.dart';
import 'package:libac_flutter/nbt/impl/CompoundTag.dart';
import 'package:libac_flutter/nbt/impl/DoubleTag.dart';
import 'package:libac_flutter/nbt/impl/IntArrayTag.dart';
import 'package:libac_flutter/nbt/impl/IntTag.dart';
import 'package:libac_flutter/nbt/impl/ListTag.dart';
import 'package:libac_flutter/utils/Vector3.dart';
import '../utils/Vector2.dart';
import '../utils/uuid/UUID.dart';
class NbtUtils {
static void writeBoolean(CompoundTag tag, String name, bool b) {
@ -89,4 +91,29 @@ class NbtUtils {
return Vector3i.ZERO;
}
}
static List<int> _msbLsbToIntArray(int msb, int lsb) {
return [msb >> 32, msb, lsb >> 32, lsb];
}
static List<int> _uuidToIntArray(UUID ID) {
return _msbLsbToIntArray(
ID.getMostSignificantBits(), ID.getLeastSignificantBits());
}
static UUID _uuidFromIntArray(List<int> values) {
return UUID((values[0] << 32 | values[1] & 4294967295),
(values[2] << 32 | values[3] & 4294967295));
}
static void writeUUID(CompoundTag tag, String name, UUID ID) {
tag.put(name, IntArrayTag.valueOf(_uuidToIntArray(ID)));
}
static UUID readUUID(CompoundTag tag, String name) {
if (!tag.contains(name))
return UUID.ZERO;
else
return _uuidFromIntArray(tag.get(name)!.asIntArray());
}
}