1
1
using System ;
2
2
using System . Buffers ;
3
+ using System . Collections ;
3
4
using System . Collections . Generic ;
4
5
using System . Diagnostics ;
5
6
using System . IO ;
9
10
namespace MCServerSharp . NBT
10
11
{
11
12
[ DebuggerDisplay ( "{ToString(), nq}" ) ]
12
- public readonly partial struct NbtElement
13
+ public readonly partial struct NbtElement : IEnumerable < NbtElement >
13
14
{
14
15
private readonly NbtDocument _parent ;
15
16
private readonly int _index ;
@@ -26,18 +27,16 @@ public readonly partial struct NbtElement
26
27
27
28
public NbtElement this [ ReadOnlySpan < char > name ] => GetCompoundElement ( name ) ;
28
29
29
- public NbtElement this [ string name ] => this [ name . AsSpan ( ) ] ;
30
-
31
30
public NbtOptions Options => _parent . Options ;
32
31
33
32
public bool IsValid => _parent != null && _parent . Bytes . Length != 0 ;
34
33
35
- public NbtType Type => _parent != null
34
+ public NbtType Type => _parent != null
36
35
? _parent . GetTagType ( _index )
37
36
: NbtType . Undefined ;
38
37
39
- public NbtFlags Flags => _parent != null
40
- ? _parent . GetFlags ( _index )
38
+ public NbtFlags Flags => _parent != null
39
+ ? _parent . GetFlags ( _index )
41
40
: NbtFlags . None ;
42
41
43
42
public Utf8Memory Name => _parent != null
@@ -287,6 +286,26 @@ public ContainerEnumerator EnumerateContainer()
287
286
return new ContainerEnumerator ( this ) ;
288
287
}
289
288
289
+ public ContainerEnumerator GetEnumerator ( )
290
+ {
291
+ AssertValidInstance ( ) ;
292
+
293
+ if ( ! Type . IsContainer ( ) )
294
+ return default ;
295
+
296
+ return new ContainerEnumerator ( this ) ;
297
+ }
298
+
299
+ IEnumerator < NbtElement > IEnumerable < NbtElement > . GetEnumerator ( )
300
+ {
301
+ return GetEnumerator ( ) ;
302
+ }
303
+
304
+ IEnumerator IEnumerable . GetEnumerator ( )
305
+ {
306
+ return GetEnumerator ( ) ;
307
+ }
308
+
290
309
public ArrayEnumerator < T > EnumerateArray < T > ( )
291
310
where T : unmanaged
292
311
{
0 commit comments