private static FieldInfo fi_NetPackagePlayerStats_entityId; // NetPackagePlayerStats -> private int int_0; public static void Init() { try { fi_PowerTrigger_isTriggered = ReflectionTools.GetField(typeof(PowerTrigger), "isTriggered"); fi_PowerTrigger_isActive = ReflectionTools.GetField(typeof(PowerTrigger), "isActive"); fi_PowerTrigger_delayStartTime = ReflectionTools.GetField(typeof(PowerTrigger), "delayStartTime"); fi_PowerTrigger_powerTime = ReflectionTools.GetField(typeof(PowerTrigger), "powerTime"); fi_PowerConsumerToggle_isToggled = ReflectionTools.GetField(typeof(PowerConsumerToggle), "isToggled"); fi_PowerRangedTrap_isLocked = ReflectionTools.GetField(typeof(PowerRangedTrap), "isLocked"); fi_PowerItem_hasChangesLocal = ReflectionTools.GetField(typeof(PowerItem), "hasChangesLocal"); fi_TileEntityPowered_wireChildren = ReflectionTools.GetField(typeof(TileEntityPowered), typeof(List <Vector3i>)); fi_TileEntityPowered_wireParent = ReflectionTools.GetField(typeof(TileEntityPowered), typeof(Vector3i)); fi_PowerManager_rootPowerItems = ReflectionTools.GetField(typeof(PowerManager), typeof(List <PowerItem>)); fi_TileEntity_readVersion = ReflectionTools.GetField(typeof(TileEntity), "readVersion"); fi_TileEntity_nextHeatMapEvent = ReflectionTools.GetField(typeof(TileEntity), typeof(ulong)); fi_TileEntityPowered_bool_1 = ReflectionTools.GetField(typeof(TileEntityPowered), typeof(bool), 2); // WARNING! Relying on member order here! fi_TileEntityPowered_bool_3 = ReflectionTools.GetField(typeof(TileEntityPowered), typeof(bool), 4); // WARNING! Relying on member order here! fi_SdtdConsole_commandObjects = ReflectionTools.GetField(typeof(global::SdtdConsole), typeof(List <IConsoleCommand>)); var t_StdtConsole_CommandObjectPair = ReflectionTools.GetNestedType(typeof(global::SdtdConsole), typeof(IConsoleCommand)); // struct Struct13, last in source, has IConsoleCommand field fi_SdtdConsole_commandObjectPairs = ReflectionTools.GetField(typeof(global::SdtdConsole), typeof(List <>).MakeGenericType(t_StdtConsole_CommandObjectPair)); fi_SdtdConsole_commandObjectsReadOnly = ReflectionTools.GetField(typeof(global::SdtdConsole), typeof(ReadOnlyCollection <IConsoleCommand>)); ci_CommandObjectPair_Constructor = ReflectionTools.GetConstructor(t_StdtConsole_CommandObjectPair, new[] { typeof(string), typeof(IConsoleCommand) }); fi_CommandObjectPair_CommandField = ReflectionTools.GetField(t_StdtConsole_CommandObjectPair, typeof(string)); fi_CommandObjectPair_CommandObjectField = ReflectionTools.GetField(t_StdtConsole_CommandObjectPair, typeof(IConsoleCommand)); mi_ChunkProviderGenerateWorld_generateTerrain = ReflectionTools.GetMethod(typeof(ChunkProviderGenerateWorld), "generateTerrain"); mi_ChunkProviderGenerateWorld_DecorateChunkOverlapping = ReflectionTools.GetMethod(typeof(ChunkProviderGenerateWorld), typeof(void), new [] { typeof(Chunk) }, 1); // WARNING! Relying on member order here! var t_ChunkAreaBiomeSpawnData_SpawnData = ReflectionTools.GetNestedType(typeof(ChunkAreaBiomeSpawnData), typeof(ulong)); // private struct LK, has public ulong PP; fi_ChunkAreaBiomeSpawnData_dict = ReflectionTools.GetField(typeof(ChunkAreaBiomeSpawnData), typeof(Dictionary <,>).MakeGenericType(typeof(string), t_ChunkAreaBiomeSpawnData_SpawnData)); fi_EACServer_successDelegateField = ReflectionTools.GetField(typeof(EACServer), typeof(AuthenticationSuccessfulCallbackDelegate)); fi_EACServer_kickDelegateField = ReflectionTools.GetField(typeof(EACServer), typeof(KickPlayerDelegate)); fi_EntityAlive_damageResponse = ReflectionTools.GetField(typeof(EntityAlive), typeof(DamageResponse)); ev_MasterServerAnnouncer_add_ServerRegistered = ReflectionTools.GetAddMethod(typeof(MasterServerAnnouncer), typeof(void), new [] { typeof(Action) }); fi_NetPackagePlayerStats_entityId = ReflectionTools.GetField(typeof(NetPackagePlayerStats), typeof(int), 0); // WARNING! Relying on member order here! Log.Out("Successfilly established reflection references."); } catch (Exception ex) { Log.Error("Error while establishing references to 7DTD's \"private parts\". Your game version might not be compatible with this Scripting Mod version." + Environment.NewLine + ex); throw; } }