Skip to content

Releases: ArchipelagoMW/Archipelago.MultiClient.Net

Release 5.0.3

30 Apr 19:30
Compare
Choose a tag to compare

Changed:

  • session.Players.AllPlayers from ReadonlyCollection<PlayerInfo> to IEnumerable<PlayerInfo> to prevent it from getting indexed by a slot id as this was incorrect

Added:

  • session.Players.Players that is indexable by team and slot to query a specific player

Fixed:

  • Log messages inheriting from PlayerSpecificLogMessage not having the proper player details filled in
  • Datastore operations Operation.Remove, Operation.Pop and Operation.Update to now actually send the correct operation to the server
  • Added a lot more xml doc comments (including the neceserly typos)
  • A rare connection timeout during connection on some platforms (probably only affecting bk_sudoku)

Release 5.0.2

27 Apr 20:39
Compare
Choose a tag to compare

Breaking Changes:

  • Archipelago.MultiClient.Net.Enums.Operation renamed to Archipelago.MultiClient.Net.Enums.OperationType
  • Datastorage operation << and >> have been deprecated
    • use + Operation.Min() or + Operation.Max() instead
  • ItemSendLogMessage and HintItemSendLogMessage moved from Archipelago.MultiClient.Net.Helpers to Archipelago.MultiClient.Net.MessageLog.Messages
  • various MessagePart's moved from Archipelago.MultiClient.Net.Helpers to Archipelago.MultiClient.Net.MessageLog.Parts
  • ItemSendLogMessage and HintItemSendLogMessage properties ReceivingPlayerSlot and SendingPlayerSlot have been deprecated
    • use Sender.Slot or Receiver.Slot
  • The previously deprecated type PrintPacket has now been removed
  • on .net 3.5 session.ConnectAsync() and DisconnectAsync() are removed (no replacement are provided)
  • on .net 4.0 or higher session.Connect() and Disconnect()
    • wait on the tasks of the session.ConnectAsync() and DisconnectAsync() if you want to run them in sync
    • Changed session.Players.AllPlayers from ReadonlyCollection<PlayerInfo> to IEnumerable<PlayerInfo> to prevent it from getting indexed by a slot id as this was incorrect

New Features:

  • Added session.Players.Players that is indexable by team and slot to query a specific player
  • More xml doc comments to make it better documentated
  • Clients on .net 4.5 (or higher) will now also use the new websocket engine that was previously used by .net standard 2.0 and .net 6
  • When no protocol is selected in the server uri, it will attempt to connect over wss before trying ws
  • Cached datapackages are now stored using checksums
  • Many new types of LogMessages can now be received in the session.MessageLog.OnMessageReceived
    • Previously existing message log types ItemSendLogMessage and HintItemSendLogMessage have received the following properties
      • Sender as the player object
      • Receiver as the player object
      • IsSenderTheActivePlayer - true if the sender is the active player
      • IsReceiverTheActivePlayer - true if the receiver is the active player
      • IsRelatedToActivePlayer - if either the Sender or Receiver share any groups with the active players (e.g. ItemLinks)
    • All the new types below where previously send as generic LogMessage, now they got thier own unique types and properties
      • ItemCheatLogMessage - when a players gets an item !getitem
      • JoinLogMessage - a player connected to the multiworld
      • LeaveLogMessage - a player left the multiworld
      • ChatLogMessage - a players chats a message
      • ServerChatLogMessage - a chat message send by the server
      • TutorialLogMessage - the message at the start "Now that you are connected..."
      • TagsChangedLogMessage - a player changed thier connection tags, like DeathLink
      • CommandResultLogMessage - a response to a comment like !players
      • AdminCommandResultLogMessage - a response to an !admin command
      • GoalLogMessage - a player completed thier goal
      • ReleaseLogMessage - a player released
      • CollectLogMessage - a player collected
      • CountdownLogMessage - when a countdown is started on the server
  • All packages received in session.Socket.PacketReceived will now have an ToJObject() method to get a raw view raw json
  • New datastorage opperations have been added:
    • + Operation.Remove() - removes the first instance of value found in the list
    • + Operation.Pop() - for lists it will remove the index of the value given. for dicts it removes the element with the specified key of value
    • + Operation.Update() - Updates the dictionary with the specified elements given in value creating new keys, or updating old ones if they previously existed

Changes:

  • Locations checks no-longer re-send all locations, but rather only send the location checks not yet confirmed by the server
  • session.RoomState.HintPoints is now also updated on successful login to the server

Release 4.2.4

31 Jan 12:23
Compare
Choose a tag to compare

Now uses Tls1.2/Tls1.3 to connect to an AP server if the schema is set to wss:// this fixes the connection errors mentioned in #76

Release 4.2.2

09 Jan 20:32
Compare
Choose a tag to compare

Added new method to track hints using the readonly datastorage, session.DataStorage.TrackHints()

Release 4.2.1

26 Dec 21:30
Compare
Choose a tag to compare

Whats New

  • Added scope for readonly data storage keys
  • Added methods to retrieve known readonly data storage keys (session.DataStorage.GetHints(), session.DataStorage.GetSlotData(), session.DataStorage.GetItemNameGroups())
  • session.DataStorage.GetAsync() now also supports data storage Scopes for keys
  • Added a additional optional requestSlotData parameter to session.TryConnectAndLogin and session.LoginAsync to decide if a successful login attempt should return the slot_data

Release 4.1.2

24 Nov 20:33
Compare
Choose a tag to compare

Breaking Changes

  • Dependency on System.Drawing.Color has been replaced by a polyfill Archipelago.MultiClient.Net.Models.Color
    • This might give some ambiguous references between Color and Color errors that be fixed by usings
  • Replaced System.Version on the ConnectPacket and RoomInfoPacket with a Archipelago.MultiClient.Net.Models.NetworkVersion
  • ArchipelagoSession.Socket type changed from ArchipelagoSocketHelper to IArchipelagoSocketHelper

Whats New

  • Added support for CountdownPrintJsonPacket
  • Default version used to connect to AP, bumped from 0.3.3 to 0.3.5
    • This will send room Countdown messages as PrintJson
  • Added ArchipelagoSession.RoomState.ReleasePermissions to replace ForfeitPermissions in the future
  • ArchipelagoSessionFactory.CreateSession(<string>) will now automatically append the port and prefix with ws:// if the port or protocol arent provided.
    • If a non default port is desired it can either be passed to the 2nd parameter or just included at the end of the string with :port

What's Changed

  • Fix ConcurrentQueue.IsEmpty by @SunnyBat in #64
  • Color polyfill (fixes #66) by @Ijwu in #67
  • Increase concurrentcollections test coverage by @Ijwu in #68
  • More documentation by @toasterparty in #73
  • Fixed Deserialization issues with Version object
  • Fixed a few edge cases with datapackage handling
  • Changed caching mechanism of ArchipelagoSession.Items.Index and ArchipelagoSession.Items.AllItemsReceived
  • The DataPackage cache should now always be updated before the first item messages are received
  • Fixed a few bugs with ArchipelagoSession.TryConnectAndLogin that could case it to hang indefinitely
  • Code documentation comments are now included in the nuget

New Contributors

Full Changelog: 4.0...4.1.2

Release 4.0

16 Aug 01:11
c1e448d
Compare
Choose a tag to compare

Changelog Summary

  • Do not check if an identical NetworkItem has been received before. Check was unnecessary. by @Ijwu in #47
  • New target frameworks by @Jarno458 in #49
  • Throw TimeoutException if accidentally caught in infinite loop when retrieving from DataStorage. by @Ijwu in #48
  • Fixed interger size for items&locations by @Jarno458 in #53
  • Added Async Tasks to callback based methods by @Jarno458 in #51
  • More efficient data package by @Jarno458 in #55
  • Fix for .net client failing to connect in AP 0.4 by @Jarno458 in #54
  • Use build in websockets by @Jarno458 in #52
  • Implemented usage of concurrent collections by @Jarno458 in #57
  • Made deathlink toggleable by @Jarno458 in #59
  • Session requested features by @Jarno458 in #58
  • Added MessageLogHelper by @Jarno458 in #61
  • Breaking Changes for version 4.0.0 by @Jarno458 in #50

Detailed Changelog

Added:

  • Build targets for .Net Framework 4.0 & .Net 6.0
  • List of slot groups to PlayerInfo
  • Methods to connect and retreive RoomInfo without loggin-in
  • Deathlink can now be toggled
  • Session.MessageLog.OnMessageRecieved handler to simplify handling of PrintPackages

Changes:

  • Outside of the .Net Framework 3.5 build, the code now uses Tasks for its async methods rather than callbacks
  • Datapackage now only loads the games that are played into memory (+ Archipelago)
  • Datapackage cache will now be written on a per game base
  • LoginAndConnect nolonger needs a Version and version parameter position was changed
  • Deathlink nolonger triggers of own send DeathLink's
  • Session.CreateDeathLinkServiceAndEnable change to Session.CreateDeathLinkService().EnableDeathLink()
  • Session.UpdateConnectionOptions moved to Session.ConnectionInfo.UpdateConnectionOptions
  • JsonMessagePartColor.PurpleBg renamed to JsonMessagePartColor.MagentaBg

Fixes:

  • NetworkItem was still using int's rather than long
  • Datapackage should now be correctly cached in memory, rather than always loaded from disk
  • Games for the PlayerInfo is now based on slot_info rather than games that nolonger holds information per slot
  • Websockets now work on .Core and upwards due to using a microsoft build-in solution
  • Add support for future new types of PrintJson packets rather than crashing on them

Full Changelog: 3.1...4.0

Release 3.1

11 Jun 18:22
70d0555
Compare
Choose a tag to compare

Release 3.1 Summary

What's Changed

  • Add overloaded ScoutLocationsAsync method that can create as hints by @ThePhar in #40
  • Add Slot Info Data by @CaitSith2 in #41
  • Prevent returning null data package if data package cache is empty by @ThePhar in #42

New Contributors

Full Changelog: 3.0...3.1

Release 3.0

22 Mar 23:13
acfe54c
Compare
Choose a tag to compare

Release 3.0 Summary

Change Detail

  • Splited different PrintJSONPackage by @JarnoWesthof in #28
  • Added item flags by @JarnoWesthof in #29
  • Implement ItemsHandling flags. by @Ijwu in #30
  • Changed item and location Id's from int to long to stay within specification by @JarnoWesthof in #33
  • Implemented GameStateHelper by @JarnoWesthof in #31
  • Switched package data to use Array instead of List as they are immutable by @JarnoWesthof in #34
  • Removed obsolete methods/parameters/properties by @JarnoWesthof in #32
  • Implemented Datastorage with overkill by @JarnoWesthof in #37
  • Breaking changes 3.0 by @JarnoWesthof in #36
  • Create working release process by @Ijwu in #38

Full Changelog: 2.1.0...3.0

Release 2.1.0

06 Jan 23:37
dd91f41
Compare
Choose a tag to compare

Release 2.1.0 Summary

Change Detail

  • Add missing properties on RoomUpdatePacket by @ThePhar in #22
  • Fix datacache by @JarnoWesthof in #21
  • Recieving items during enumeration causes crash by @JarnoWesthof in #24
  • Setup build task with github actions by @Ijwu in #25
  • Implemented handling of server side locations_checked for location helper by @JarnoWesthof in #27

New Contributors

Full Changelog: 2.0...2.1.0