Skip to content

Release 6.0.0

Compare
Choose a tag to compare
@Jarno458 Jarno458 released this 09 Jun 17:38
· 33 commits to main since this release

Version 6.0.0 has been released (also available on nuget)

Breaking Changes (oof):

  • All members of ArchiepalgoSession are now provided as interfaces to improve unit testability
    • ReceivedItemsHelper > IReceivedItemsHelper
    • LocationCheckHelper > ILocationCheckHelper
    • PlayerHelper > IPlayerHelper
    • DataStorageHelper > IDataStorageHelper
    • ConnectionInfoHelper > IConnectionInfoProvider
    • RoomStateHelper > IRoomStateHelper
    • MessageLogHelper > IMessageLogHelper
  • Support for older servers that use version based data packages is completely dropped
  • DataStorage callbacks, both session.DataStorage["key"].OnValueChanged() aswel as session.DataStorage["key"] += Callback.Add() have received an additional arguments parameter
    • The parameter of type Dictionary<string, JToken> contains any additional arguments that where send to the server when the corresponding datastorage operation was ran
  • session.DataStorage now has support for BigInterger on .Net Framework 4.0 and higher
  • Changes to LocationCheckHelper:
    • ScoutLocationsAsync() now returns an Dictionary<long, ScoutedItemInfo>
    • GetLocationNameFromId() now has an additional optional games argument to specify the game to lookup the id in
      • game defaults to null where it will look into the game currently connected as
  • Changes to ReceivedItemsHelper:
    • GetItemName() now has an additional optional games argument to specify the game to lookup the id in
      • game defaults to null where it will look into the game currently connected as
    • .AllItemsReceived now returns a ReadOnlyCollection<ItemInfo> rather than ReadOnlyCollection<NetworkItem>
    • .PeekItem() and .DequeueItem now has return a type ItemInfo rather than NetworkItem
      • This means that when there is no item to in the queue, it will return null rather then an default struct
  • ItemSendLogMessage and its descendants HintItemSendLogMessage & ItemCheatLogMessage property Item changed type to ItemInfo rather than NetworkItem
  • Removal of previusly deprecated stuff:
    • ReceivingPlayerSlot and SendingPlayerSlot on ItemSendLogMessage, HintItemSendLogMessage have been removed
    • RoomInfoPacket.DataPackageVersions has been removed
    • Datastorage operation << and >> have been removed

New Features:

  • Support added for overlapping id's in datapackage
  • Api documentation is now available on https://archipelagomw.github.io/Archipelago.MultiClient.Net/index.html
  • New methods on ArchipelagoSession so the client can avoid using session.socket.SendPacket
    • Say() send a message on behalf of the player
    • SetGoalAchieved() mark the current slot as completed
    • SetClientState() update the status of the current client
  • ScoutLocationsAsync has a new overload with an HintCreationPolicy that allows the creation of hints that only get broadcasted once
  • ItemInfo is now used in instead of NetworkItem,
    • its now a class rather than struct
      • this means the default value will be null rather then an default empty struct
      • this also means it can nolonger be implicitly compared itemA == itemB
    • it provides properties to easily resolve names: .ItemName, .LocationName, .ItemDisplayName, .LocationDisplayName
    • it provides properties to access the associated games: .ItemGame, .LocationGame
  • New readonly datastorage methods have been added:
    • session.DataStorage.GetLocationNameGroups() to look up location name groups
    • session.DataStorage.GetClientStatus() to look up the status of a specific slot
    • session.DataStorage.TrackClientStatus() to keep track of changes to a specific slot
  • New datastorage opperations have been added:
    • + Operation.Floor() - round the data storage value down to the nearest integer
    • + Operation.Ceiling() - rounds the data storage value up to the nearest integer
    • + AdditionalArgument.Add() - Allows addition arguments to be added to an data storage operation
  • Improved error reporting on websockets for clients running .Net Framework 4.5 or higher, it will now fire the session.Socket.ErrorReceived with the issues encountered during connection
    • The same change was made to the .Net framework 3.5 or 4.0 but it still doesn't seem report anything
  • PlayerHelper now has a GetPlayerInfo() to easily retrieve information about a specific slot
  • PlayerInfo now implicitly convert to an integer of its slotid, (so it can be used inplace of a slotId)
  • GeneratorVersion is now available for reading on the session.RoomStateHelper
  • ItemMessagePart and LocationMessagePart now contain a .Player property

Changes:

  • Clients that use .Net framework 4.0 or 4.5 version of the library will now use a more framework appropriate version of newtonsoft.json (previously they used the 3.5 version)
  • session.CompleteLocationChecks() will now fully ignore location id's that aren't part of your current multiworld

Fixes:

  • HintCosts are now properly calculated and available on the session.RoomStateHelper
  • DataPackage contents are now also accepted if they are only partly loaded
  • .IsRelatedToActivePlayer on log messages should now work, if not plz let me know in more details to further investigate
  • CompleteLocationChecksAsync() will now wait until the message is published to the websocket