9.0.0-beta.3
Pre-release
Pre-release
·
22 commits
to dev
since this release
Changelog
Breaking Changes
- Renamed
EConfigtoConfigSubsystem. TheEnableAllandDisableAllmethods inCustomModulesand derivatives now require an assembly as input and return the number of instances of modules generated, activated, and registered per assembly. - Custom items' settings now utilize
SettingsBase. User-defined custom item types must be based onSettingsBase. - Module activation is delayed by 0.5 seconds to allow for the proper loading of dependencies and plugins.
- Renamed
Spawnedevent toChangedRoleevent by @Monald. - Removed previous settings for custom items, including
ItemSettingsandPickupSettings. - Removed generic trackers, which were unnecessary and caused memory issues. A single tracker is now sufficient.
Fixes
- Deserialization Issues: Resolved problems with deserializing
CustomItems.CustomItemsnow usesSettingsBasefor proper serialization and deserialization with a custom deserializer. - Custom Role Spawning: Fixed logical issues with custom role spawning via static methods.
- ModulePointer ID Conflicts:
ModulePointernow avoids ID conflicts by usingModuleTypeIndicatorto differentiate modules. - Automatic Module Loading: Modules not configured for loading are no longer loaded automatically, but only if explicitly enabled.
- RoleAssigner Fixes: Corrected
RoleAssignerand its related events to properly assign roles based on probabilities. - Config Initialization: Fixed issues with configs being null or not initialized inside behaviors.
- Hash Code Issues: Fixed
EObject::GetHashCodeconflicts by relying onInstanceID, which increments for each existingEObject. - Duplicate Component Addition: Added checks to prevent components from being added twice to the same entity, avoiding issues from duplicated instances.
- DynamicEventDispatcher Initialization: Ensured all
DynamicEventDispatcherobjects are initialized to avoid null reference exceptions during object instantiation. - Command Instance Lookup: Fixed issues with
CustomItemandCustomRolecommands not finding the module instance by Id or Name.
Additions
- Dynamic Type Converter: Introduced
DynamicTypeConverter<T>for resolving types during YamlDotNet (de)serialization. - Enhanced Log Information: Improved detail in
Log::GetContextInfo(). - Serialization for ModulePointer: Added serialization support for
ModulePointer, now handling any data type. - Custom Serialization Logic: Added
CustomModule::DeserializeModule_ImplementationandCustomModule::SerializeModule_Implementationmethods to support custom serialization and deserialization. - Module State Events: Implemented events to monitor the state of modules.
- TrackablesGC: Added a garbage collector specifically for trackables.
- ConfigSubsystem Enhancements: Improved handling and interaction with configs and sub-configs with new methods:
Read<T>(string),ReadDataObject<T>(string),ReadDataObjectValue<TSource, TValue>(string),Write<T>(string, object), andWriteDataObjectValue<TSource, TValue>(string, object). - Config Loading on Server Start: Implemented
ConfigSubsystem::LoadAllto load all plugins at server start. - Standalone Configs: Added
ConfigSubsystem::IsStandAloneto define stand-alone configs that do not rely on parent or child configs. The path is user-defined (default is.config/EXILED/Configs/FolderName/FileName.yml). - DynamicTypeGenerator: Introduced
DynamicTypeGeneratorfor runtime type creation, including methods for creating types and more. - EActor Events: Added
EActor::OnAddedandEActor::OnRemovedevents for when components are added or removed from entities. - Default Implementation Methods: Added
static ModuleBehaviour<>::ImplementConfigs_DefaultImplementation()andstatic ModuleBehaviour<>::ApplyConfig_DefaultImplementation()for default instance method implementations. - Custom Module Serialization: Implemented
CustomModule::DeserializeModule_ImplementationandCustomModule::SerializeModule_Implementationmethods for user-defined module (de)serialization logic. - PlayingAudioLog Event: Added
PlayingAudioLogevent by @NotZer0Two. - MoveNetworkIdentityObject API: Added
MoveNetworkIdentityObjectAPI by @notzerotwo_.
Changes:
- Log Readability: Improved readability for logs related to info, warnings, errors, and module state changes.
- Unified Settings Structures:
ItemandPickupnow share the same settings structures. - Tracker Fixes: Fixed trackers for items and pickups.
- Example Project Regeneration: Regenerated the
Exiled.Exampleproject with updated custom item and role examples. - Optimized Attachments Generation: Improved performance of attachments generation at server start.
- Deep Copy Support: Enhanced
ReflectionExtensions::CopyPropertiesto support deep copying for nested and complex types. - StaticActor Performance: Optimized
StaticActorandStaticActor<T>for faster instance retrieval. - Virtual Type Casting: Made
TypeCastObject<T>::Castmethods virtual. - GlobalPatchProcessor Logs: Improved readability and logging for
GlobalPatchProcessor. - Bug Report Fixes: Fixed issues reported in bug report n.396 by @notzerotwo_.