IRC Client Library 4.0.0 released!
01 Jan 2018Version 4.0.0 of the Kitteh IRC Client Library has been released!
This is a substantial update in a few ways, which will be broken down in various ways below. You really should read the first part of the connectivity rework. Unless you like your client no longer functioning, that is!
Connectivity rework
- Client builder's
build()
method no longer automatically connects.Client#connect()
starts a connection.Client.Builder#buildAndConnect()
available to retain older functionality.
- Removed
Client.Builder#afterBuildConsumer()
as it is no longer necessary. ClientConnectedEvent
renamed toClientNegotiationCompleteEvent
:- This is a more accurate name for what it tells.
ClientConnectionEndedEvent
covers connections... ending.- If not user-initiated shutdown, can modify if a reconnect will be attempted and after what delay the attempt will be made.
- Sub classes:
ClientConnectionClosedEvent
for connection closing.ClientConnectionFailedEvent
for connection not even succeeding during attempted connection.
ClientConnectionEstablishedEvent
for when the connection is established and the first messages are about to be sent.- Helper
ConnectionEvent
for all connection-related events.
Un-hiding the implementation
Most of the implementation is now customizable via replacement of individual parts. There are still a few pieces, like connectivity, that will not be swappable until 4.1.0 at the earliest but at this point you should be able to replace any individual part accessible from the builder without interrupting function of any other part.
The following API interfaces have a sub interface that should be implemented by any implementation
and allows for management of things that shouldn't be exposed in the main API: CapabilityManager
,
Client
, and ServerInfo
.
Renames
Many things were renamed for hopefully consistent naming.
- Any instance in class or method of
CTCP
renamed toCtcp
.- Examples:
PrivateCtcpQueryEvent
,#sendCtcpMessage()
.
- Examples:
- Any instance in class or method of
STS
renamed toSts
.- Examples:
StsStorageManager
,#getStsMachine()
.
- Examples:
- Any instance in class or method of
WHOX
renamed toWhoX
- Any instance in class or method of
MOTD
renamed toMotd
. SaslECDSANIST256PChallenge
renamed toSaslEcdsaNist256PChallenge
.- Many
Client.Builder
methods were renamed:- Listeners reordered, such as
listenInput()
toinputListener()
. - Suppliers renamed, such as
eventManagerSupplier()
toeventManager()
.
- Listeners reordered, such as
Other
- Toggling sending of WHO/MODE on channel join is changed:
- Now accessible via
ActorProvider#setQueryChannelInformation(boolean)
. TwitchListener
calls this automatically, as Twitch does not support WHO.
- Now accessible via
- Changed TLS/SSL builder methods from
File
toPath
.secureKeyCertChain(Path)
andsecureKey(Path)
.
ChannelKickEvent
now supports being kicked by aServer
.UnexpectedChannelLeaveViaKickEvent
thus does as well.- Removed deprecated (and now unnecessary) classes:
ChannelKickByServerEvent
UnexpectedChannelLeaveViaKickByServerEvent
- Added convenience method
MessageReceiver#getLowerCaseMessagingName()
. - Broke a few constructors that took
Optional
, instead pushing creation ofOptional
to getters. - Potentially improved connection cleanup handling.
- Updated to latest (4.1.19) Netty.