Skip to content
Prev Previous commit
Next Next commit
Added Null check to GpssField to keep from throwing exception. Likely…
… needs to be redone to make fully funtional.
  • Loading branch information
N1Ran committed Mar 31, 2019
commit 0b7a0f74eea91607d03b47234a7eb2096a82b661
25 changes: 15 additions & 10 deletions Essentials/Commands/WorldModule.cs
Original file line number Diff line number Diff line change
Expand Up @@ -262,8 +262,7 @@ private static int FixBlockOwnership()
return count;
}

private static readonly FieldInfo GpssField = typeof(MySession).GetField("Gpss", BindingFlags.NonPublic | BindingFlags.Instance);
private static readonly FieldInfo GpsDicField = GpssField.FieldType.GetField("m_playerGpss", BindingFlags.NonPublic | BindingFlags.Instance);
private static FieldInfo GpssField = typeof(MySession).GetField("Gpss", BindingFlags.NonPublic | BindingFlags.Instance);
private static readonly FieldInfo SeedParamField = typeof(MyProceduralWorldGenerator).GetField("m_existingObjectsSeeds", BindingFlags.NonPublic | BindingFlags.Instance);

private static readonly FieldInfo CamerasField = typeof(MySession).GetField("Cameras", BindingFlags.NonPublic | BindingFlags.Instance);
Expand Down Expand Up @@ -321,16 +320,22 @@ public void CleanSandbox()
count += CleanFaction_Internal();

//Keen, for the love of god why is everything about GPS internal.
var playerGpss = GpsDicField.GetValue(GpssField.GetValue(MySession.Static)) as Dictionary<long, Dictionary<int, MyGps>>;

foreach (var id in playerGpss.Keys)
if (GpssField != null)
{
if (!validIdentities.Contains(id))
idCache.Add(id);
}
var GpsDicField = GpssField.FieldType.GetField("m_playerGpss", BindingFlags.NonPublic | BindingFlags.Instance);

foreach (var id in idCache)
playerGpss.Remove(id);
var playerGpss =
GpsDicField?.GetValue(GpssField?.GetValue(MySession.Static)) as
Dictionary<long, Dictionary<int, MyGps>>;
foreach (var id in playerGpss.Keys)
{
if (!validIdentities.Contains(id))
idCache.Add(id);
}

foreach (var id in idCache)
playerGpss.Remove(id);
}

count += idCache.Count;
idCache.Clear();
Expand Down