Skip to content

An async, fault-tolerant Java RCON client for the Rust game. Seamlessly integrate with Rust's RCON over websockets, translating game events into actionable insights.

License

Notifications You must be signed in to change notification settings

MrGraversen/rust-rcon

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rust RCON 🎮

An asynchronous, fault-tolerant Rust RCON client built in Java.
Seamlessly integrates with Rust's RCON request-response semantics using websocket connections.
Ideal for those looking to harness the power of Rust's RCON with Java's portability and ease.

About 📝

This library serves as a Rust (the video game) counterpart to the minecraft-rcon library.

It empowers applications with easy integration capabilities with a Rust game server via RCON, translating internal server details into actionable events.

By interfacing with Rust's native RCON payloads, the library efficiently captures and translates in-game occurrences, such as player interactions including connections, chats, combats, and more, into events. This reactive design allows user-code to be promptly informed of player-driven actions.

Additionally, Rust RCON manages connection states intelligently, eliminating concerns about game server restarts. The connection is resilient; if the game server goes offline, it seamlessly recovers once the server becomes available again.

About RCON

RCON (Remote Console) is a protocol that allows for remote game server management.
In the context of Rust, RCON serves as a potent tool for administrators and third-party applications to interact with and control game servers. Whether it's for issuing commands, retrieving information, or automating tasks, Rust's RCON implementation provides a secure and efficient interface for these operations, all without requiring direct access to the game server. This library, Rust RCON, simplifies and enhances the interaction with Rust's RCON system, offering a robust solution for various use cases.

Installation 💾

Rust RCON is available through Maven from GitHub Packages. To install:

⚠️ Even though this project is public, you still need to authenticate properly with GitHub Packages

From the documentation:

If you want to download and use a package from a public repository, you don't need access to the repository. However, you must be authenticated to GitHub Packages under a user account that has a GitHub Free plan.

You must create a GitHub Personal Access Token to facilitate this access. It must have at least the read:packages scope.

Click here to easily create one.

  1. Configure Maven settings.xml: Place this token in your ~/.m2/settings.xml (or the equivalent on your system).
<servers>
  <server>
    <id>github</id>
    <username>YOUR_GITHUB_USERNAME</username>
    <password>YOUR_PERSONAL_ACCESS_TOKEN</password>
  </server>
</servers>
  1. Add the GitHub Packages repository in your pom.xml:
<repositories>
    <repository>
        <id>github</id>
        <url>https://maven.pkg.github.com/MrGraversen/rust-rcon</url>
    </repository>
</repositories>
  1. Next, add the Rust RCON dependency:
<dependency>
    <groupId>io.graversen</groupId>
    <artifactId>rust-rcon</artifactId>
    <version>${io.graversen.rust.rcon-version}</version>
</dependency>
  1. Now you can use Rust RCON in your Java project!

Events 🚀

Rust RCON offers a plethora of events that give developers a detailed insight into various facets of the Rust game server. Below is a categorized breakdown of these events:

Oxide

  • OxidePluginEvent: Pertains to activities and notifications related to Oxide plugins.

Player

  • PlayerChatEvent: Triggered when a player sends a chat message in the game.
  • PlayerConnectedEvent: Fired when a player successfully connects to the server.
  • PlayerDeathEvent: Captured when a player meets their demise in the game.
  • PlayerDisconnectedEvent: Emitted when a player disconnects from the server.
  • PlayerMiniCopterCrashedEvent: Indicates when a player's mini-copter crashes.
  • PlayerSuicideEvent: Signaled when a player deliberately ends their in-game life.

RCON

  • RconProtocolExchangeEvent: Deals with the exchange of protocol-specific data via RCON.
  • RconReceivedEvent: Emitted when the server sends a response or data through RCON.

Server

  • EasyAntiCheatEvent: Relates to notifications and details stemming from the EasyAntiCheat system.
  • ItemDisappearedEvent: Triggered when an in-game item disappears due to various reasons.
  • SaveEvent: Captured whenever there's a save action on the server, be it automatic or manual.
  • WorldEvent: Encompasses events related to the overall game world and its elements.
  • ServerEvent: General server-related events not categorized under other specific events.

Websocket

  • WsOpenedEvent: Signaled when a new websocket connection is successfully established.
  • WsMessageEvent: Fired when a message is received over the websocket connection.
  • WsErrorEvent: Triggered when there's an error in the websocket communication.
  • WsClosedEvent: Emitted when the websocket connection is closed, either due to errors or deliberate actions.

Examples ⚗️

Coming soon

Useful Resources

About

An async, fault-tolerant Java RCON client for the Rust game. Seamlessly integrate with Rust's RCON over websockets, translating game events into actionable insights.

Topics

Resources

License

Stars

Watchers

Forks