Skip to content

Releases: whirvis/JRakNet

JRakNet v2.12.3

29 Nov 22:38
13b2874
Compare
Choose a tag to compare

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 the com.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.
  • Client
    • Clients can now specify an address to bind to when connecting to servers via the constructor.
    • Renamed SessionPreparation to PeerFactory and reworked PeerFactory internals.
    • Moved exceptions relating to connection failure from the com.whirivs.jraknet.client package to the com.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 in com.whirvis.jraknet.discovery package.
    • Added DiscoveryListener. Like RakNetServerListener and RakNetClientListener, this listener class also supports the ThreadedListener annotation.
  • 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 the closePort() method.
    • Renamed methods that ended with "client" by simply removing the "client" suffix. For example, disconnectClient() is now simply disconnect().
    • 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 supports readLine() and readUTF().
    • PacketDataOutputStream now supports writeLine() and writeUTF().
  • Added many new utility methods to the RakNet class such as the forwardPort() and closePort(). method.
  • Removed NoListenerException.
  • Removed MessageIdentifier, all of its' fields and methods can now be found in RakNetPacket.
  • Moved InvalidChannelException to the com.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 and RakNetUtils to RakNet.
  • Renamed com.whirvis.jraknet.utils.map package to com.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.
  • Exceptions
    • Added PowerShellException.
  • 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().
  • 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 and removeListener 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 and removeListener() 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() and removeMaximumTransferUnit() methods, they have been replaced with setMaximumTransferUnits().
  • Protocol
    • Added JungleTree connection type.
    • Renamed getMaximumTransferUnit() method to getSize() in MaximumTransferUnit.
    • Renamed MCPEIdentifier to MinecraftIdentifier 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.
  • 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() to RakNetServerListener 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's NewIncomingConnectionPacket and waits until it is acknowledged before calling the onConnect() method.
    • It is now possible to to get the protocol implementation of a discovered server (E.G.: JRakNet, RakLib, JRakLib+, etc.)
    • Added handleUnknownMessage() to RakNetClientListener 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...
Read more