diff --git a/Dalamud/Game/ClientState/Aetherytes/AetheryteList.cs b/Dalamud/Game/ClientState/Aetherytes/AetheryteList.cs
index a3d44d423..f72339ed2 100644
--- a/Dalamud/Game/ClientState/Aetherytes/AetheryteList.cs
+++ b/Dalamud/Game/ClientState/Aetherytes/AetheryteList.cs
@@ -87,10 +87,7 @@ internal sealed partial class AetheryteList
///
public IEnumerator GetEnumerator()
{
- for (var i = 0; i < this.Length; i++)
- {
- yield return this[i];
- }
+ return new Enumerator(this);
}
///
@@ -98,4 +95,30 @@ internal sealed partial class AetheryteList
{
return this.GetEnumerator();
}
+
+ private struct Enumerator(AetheryteList aetheryteList) : IEnumerator
+ {
+ private int index = 0;
+
+ public IAetheryteEntry Current { get; private set; }
+
+ object IEnumerator.Current => this.Current;
+
+ public bool MoveNext()
+ {
+ if (this.index == aetheryteList.Length) return false;
+ this.Current = aetheryteList[this.index];
+ this.index++;
+ return true;
+ }
+
+ public void Reset()
+ {
+ this.index = 0;
+ }
+
+ public void Dispose()
+ {
+ }
+ }
}