Releases: ArchipelagoMW/Archipelago.MultiClient.Net
Releases · ArchipelagoMW/Archipelago.MultiClient.Net
Release 5.0.3
Changed:
session.Players.AllPlayers
fromReadonlyCollection<PlayerInfo>
toIEnumerable<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
andOperation.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
Breaking Changes:
Archipelago.MultiClient.Net.Enums.Operation
renamed toArchipelago.MultiClient.Net.Enums.OperationType
- Datastorage operation
<<
and>>
have been deprecated- use
+ Operation.Min()
or+ Operation.Max()
instead
- use
ItemSendLogMessage
andHintItemSendLogMessage
moved fromArchipelago.MultiClient.Net.Helpers
toArchipelago.MultiClient.Net.MessageLog.Messages
- various
MessagePart
's moved fromArchipelago.MultiClient.Net.Helpers
toArchipelago.MultiClient.Net.MessageLog.Parts
ItemSendLogMessage
andHintItemSendLogMessage
propertiesReceivingPlayerSlot
andSendingPlayerSlot
have been deprecated- use
Sender.Slot
orReceiver.Slot
- use
- The previously deprecated type
PrintPacket
has now been removed - on .net 3.5
session.ConnectAsync()
andDisconnectAsync()
are removed (no replacement are provided) - on .net 4.0 or higher
session.Connect()
andDisconnect()
- wait on the tasks of the
session.ConnectAsync()
andDisconnectAsync()
if you want to run them in sync - Changed
session.Players.AllPlayers
fromReadonlyCollection<PlayerInfo>
toIEnumerable<PlayerInfo>
to prevent it from getting indexed by a slot id as this was incorrect
- wait on the tasks of the
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
andHintItemSendLogMessage
have received the following propertiesSender
as the player objectReceiver
as the player objectIsSenderTheActivePlayer
- true if the sender is the active playerIsReceiverTheActivePlayer
- true if the receiver is the active playerIsRelatedToActivePlayer
- if either theSender
orReceiver
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 propertiesItemCheatLogMessage
- when a players gets an item!getitem
JoinLogMessage
- a player connected to the multiworldLeaveLogMessage
- a player left the multiworldChatLogMessage
- a players chats a messageServerChatLogMessage
- a chat message send by the serverTutorialLogMessage
- the message at the start "Now that you are connected..."TagsChangedLogMessage
- a player changed thier connection tags, like DeathLinkCommandResultLogMessage
- a response to a comment like!players
AdminCommandResultLogMessage
- a response to an!admin
commandGoalLogMessage
- a player completed thier goalReleaseLogMessage
- a player releasedCollectLogMessage
- a player collectedCountdownLogMessage
- when a countdown is started on the server
- Previously existing message log types
- All packages received in
session.Socket.PacketReceived
will now have anToJObject()
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
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
Added new method to track hints using the readonly datastorage, session.DataStorage.TrackHints()
Release 4.2.1
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 storageScopes
for keys- Added a additional optional
requestSlotData
parameter tosession.TryConnectAndLogin
andsession.LoginAsync
to decide if a successful login attempt should return the slot_data
Release 4.1.2
Breaking Changes
- Dependency on
System.Drawing.Color
has been replaced by a polyfillArchipelago.MultiClient.Net.Models.Color
- This might give some ambiguous references between Color and Color errors that be fixed by usings
- Replaced
System.Version
on theConnectPacket
andRoomInfoPacket
with aArchipelago.MultiClient.Net.Models.NetworkVersion
ArchipelagoSession.Socket
type changed fromArchipelagoSocketHelper
toIArchipelagoSocketHelper
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 replaceForfeitPermissions
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
andArchipelagoSession.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
- @SunnyBat made their first contribution in #64
- @toasterparty made their first contribution in #73
Full Changelog: 4.0...4.1.2
Release 4.0
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
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
- @CaitSith2 made their first contribution in #41
Full Changelog: 3.0...3.1
Release 3.0
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
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