Releases: whirvis/JRakNet
JRakNet v2.12.3
The final version of JRakNet version 2. This version does little except mark the end of this major version and remove a constant that has been unused since its implementation in the ConnectionType
class. For more information please refer to this commit. All previous versions except this one will have their tag deleted and will no longer be hosted for download.
However, this major version will still be supported. This means that if a bug is found in this version, it will be fixed and a new version will be released. However, no new features will be added. Instead, I plan to begin work on JRakNet version 3 which will overhaul the API to make it better in areas where I feel it is mediocre and could use improvements. If you wish to propose a change for JRakNet version 3, please create an issue in the repository with the tag "v3.0 proposal". I greatly appreciate any and all feedback!
Click here to see the changelogs for each release beforehand.
JRakNet v2.11.8 (April 1st, 2019)
This version of JRakNet completely overhauls the documentation, cleans up code, improves performance, and also adds some new features!
- Revamped documentation. So much was redocumented that I will not bother to list it all here.
- Removed the now unnecessary "doc" folder as the JavaDocs are now hosted on CodeMC.
- Added many
throws
to methods for the sake of making sure methods are not incorrectly called. Once again, this was done to so many methods that I will not bother to list them all here. - Reworked many internals. I will not bother to mention all the changes with these either as they either simply clean up code or improve performance.
- Update logging to make use of trace where needed to prevent debug spam.
- Removed example classes and moved all contents from the
com.whirvis.jraknet.example
package to thecom.whirivs.jraknet
package.- Fixed some bugginess in both the chat server and chat client.
- Listeners
- Added
ThreadedListener
. This allows for listener event methods to be called on their own dedicated thread. In order to use this, all one has to do is annotate their listener class with it. - All client listener methods now take the calling client as the first parameter.
- All server listener methods now take the calling server as the first parameter.
- Added
- Client
- Clients can now specify an address to bind to when connecting to servers via the constructor.
- Renamed
SessionPreparation
toPeerFactory
and reworkedPeerFactory
internals. - Moved exceptions relating to connection failure from the
com.whirivs.jraknet.client
package to thecom.whirvis.jraknet.client.peer
package. - Removed
connectThreaded()
method as the client will now always use its own thread. - Removed
shutdown()
method. Clients can now also disconnect from a server and then connect to another one.
- Discovery
- Decoupled discovery system from the client. Anything relating to discovery will now be found in the
Discovery
class or incom.whirvis.jraknet.discovery
package. - Added
DiscoveryListener
. LikeRakNetServerListener
andRakNetClientListener
, this listener class also supports theThreadedListener
annotation.
- Decoupled discovery system from the client. Anything relating to discovery will now be found in the
- Peer
- Sessions are now referred to as peers.
- Added ability to set timeout for peers.
- Server
- Servers can now specify an address to bind to during startup via the constructor.
- Servers can now automatically forward the port they are running on through UPnP via the
forwardPort()
method! Likewise, they can then have these ports closed via theclosePort()
method. - Renamed methods that ended with "client" by simply removing the "client" suffix. For example,
disconnectClient()
is now simplydisconnect()
. - Removed
startThread()
method as the server will now always use its own thread. - Servers can now startup after they have already been shutdown.
- Streams
PacketDataInputStream
now supportsreadLine()
andreadUTF()
.PacketDataOutputStream
now supportswriteLine()
andwriteUTF()
.
- Added many new utility methods to the
RakNet
class such as theforwardPort()
andclosePort()
. method. - Removed
NoListenerException
. - Removed
MessageIdentifier
, all of its' fields and methods can now be found inRakNetPacket
. - Moved
InvalidChannelException
to thecom.whirvis.jraknet
package. - Removed all uses of streams for performance purposes.
- Most likely more changes I cannot remember.
- Fixed #105
- Fixed #106
- Fixed #107
- Fixed #109
- Fixed #110
- Fixed #112
- Fixed #113
- Fixed #114
- Fixed #117
- Fixed #118
- Fixed #119
- Fixed #120
- Fixed #121
- Fixed #122
- Fixed #123
- Fixed #124
JRakNet v2.10.7 (August 3rd, 2018)
This release adds the ability to manage loopback exemptions using the UniversalWindowsProgram
class that will now come pre-packaged with JRakNet. I decided to add this so server developers working on server softwares for games like Minecraft which run on the Universal Windows Program framework can have the server automatically enable loopback exemption itself so server owners can connect to their server even if it's running on the same machine as they are playing on.
- Changed logging system from SLF4J to Log4J2
- Moved all methods and fields from
ArrayUtils
andRakNetUtils
toRakNet
. - Renamed
com.whirvis.jraknet.utils.map
package tocom.whirvis.jraknet.map
. - Client
- Loosened maximum transfer unit restrictions and handling during login as to prevent login from failing with third party servers with their own version of RakNet implemented.
- Protocol
- Bumped protocol version for both server and client from 8 to 9.
- Improved MTU negotiation methods for both server and client.
- Windows
- Added
UniversalWindowsProgram
. - Added
PowerShellCommand
. - Added
PowerShellAdministrativeClient
.
- Added
- Exceptions
- Added
PowerShellException
.
- Added
- Fixed #95
- Fixed #97
- Fixed #98
- Fixed #99
- Fixed #100
JRakNet v2.9.8 (February 17th, 2018)
This release is mainly an update that updates the root package and maven project settings to conform with my new domain, however there are some new features and bug fixes.
- Updated project structure
- Changed root package to
com.whirvis.jraknet
. - Made major changes to POM to allow for Jenkins builds on the CodeMC servers.
- Client
- Added
removeExternalServer(DiscoveredServer)
. - Added
getLocalServers()
.
- Added
- Protocol
- Rewrote the connection type system to be more flexible.
- Fixed #71
- Fixed #72
- Fixed #74
- Fixed #77
- Fixed #78
- Fixed #79
- Fixed #82
- Fixed #86
- Fixed #93
- Fixed #94
JRakNet v2.8.4 (November 23rd, 2017)
This release adds manual logging to using SLF4J thanks to CausticCoder along with fixing a few bugs and optimizations.
- Replaced manual logging with SLF4J logging.
- Server
- The server now uses 97% less CPU (Determined on a machine using an Intel i7-6700K @4.0Ghz with 8 cores).
- Servers can now have multiple listeners! Use
addListener()
to add a listener to the server andremoveListener
to remove a listener from the server. - Servers are now allowed to start without any registered listeners.
- Setting the maximum connection count to
-1
will now allow for an unlimited amount of players to connect to the server.
- Client
- The client now uses 99% less CPU (Determined on a machine using an Intel i7-6700K @4.0Ghz with 8 cores).
- Clients can now have multiple listeners! Use
addListener()
to add a listener to the client andremoveListener()
to remove a listener from the client. - Clients are now allowed to attempt to connect to servers without any registered listeners.
- Maximum transfer unit determination is now more consistent with the official RakNet specifications.
- Removed
addMaximumTranferUnit()
andremoveMaximumTransferUnit()
methods, they have been replaced withsetMaximumTransferUnits()
.
- Protocol
- Added JungleTree connection type.
- Renamed
getMaximumTransferUnit()
method togetSize()
inMaximumTransferUnit
. - Renamed
MCPEIdentifier
toMinecraftIdentifier
due to the 1.2 better together update redefining the the definition of Minecraft from the Java version to what was previously known as Pocket Edition or its C++ counterpart.
- Utilities
- Added
ConcurrentByteMap
. - Added
ConcurrentShortMap
. - Added
ConcurrentIntMap
. - Added
ConcurrentLongMap
.
- Added
- Fixed #61
- Fixed #63
- Fixed #64
- Fixed #69
- Fixed #70
JRakNet v2.7.6 (August 8th, 2017)
- Server
- The server now makes use of the new logger system.
- It is now possible to to get the protocol implementation of a client when a ping is received (E.G.: JRakNet, RakLib, JRakLib+, etc.)
- Added
handleUnknownMessage()
toRakNetServerListener
which can be used to implement RakNet protocol functionality that is not present in JRakNet.
- Client
- The client now makes use of the new logger system.
- The client now uses the
RELIABLE_ORDERED_WITH_ACK_RECEIPT
reliability for it'sNewIncomingConnectionPacket
and waits until it is acknowledged before calling theonConnect()
method. - It is now possible to to get the protocol implementation of a discovered server (E.G.: JRakNet, RakLib, JRakLib+, etc.)
- Added
handleUnknownMessage()
toRakNetClientListener
which can be used to implement RakNet protocol functionality that is not present in JRakNet.
- Session
- It is now possible to get the protocol implementation of a session (E.G.: JRakNet, RakLib, JRakL...