Skip to content

azzerial/spiral-knights-headless-client

Repository files navigation


Spiral Knights Headless Client

A fully programmatic Spiral Knights client, designed for server environments,
processing game events entirely through code.

FeaturesNext StepsHow To UseInstallationLicense


Features

As of version 1.0.0, the headless client supported game features & services are:

Next steps

Here are the next feature I consider implementing:

  • auction house - ability to retrieve the auction house listings
  • game server redirection - as of version 1.0.0 the client does not support game server redirection (handles it as a logout)
  • game server regions - as of version 1.0.0, the server IP the client connects to is hard coded ; once the game server redirection is handled, it will be possible to use the Region enum to select a server

It would also be possible to turn this "read only" headless client into a bot allowing for:

  • exchange market - ability to buy or sell energy offers
  • auction house - ability to bid, cancel a bid, get your listings, get your bids, list an item

Though I am not too keen on bringing those features to life as they would introduce botting to the game.

How to Use

Note

For more details regarding the library, please head to the javadoc.

// create the SKClient
final SKClient client = SKClientBuilder.create(username, password)
    .enableServices(Service.EXCHANGE)
    .build();

// register your event listeners
client.addEventListeners(new ListenerAdapter() {
    @Override
    public void onExchange(@NotNull ExchangeEvent event) {
        System.out.println("Market last price is: " + event.market.lastPrice);
    }
});

// bring the client online
client.connect();

Look at the :playground module's Main for a more complete example.

Installation

Important

Do not forget to replace the REPOSITORY and VERSION keywords.
The VERSION should be changed to the desired version of the project and the REPOSITORY must be set to snapshots - if the chosen version is a snapshot - otherwise to releases.

e.g.
if VERSION = 1.0.0 then REPOSITORY = releases
if VERSION = 1.0-SNAPSHOT then REPOSITORY = snapshots

Note

You can import individual modules by using the structure spiral-knights-headless-client-MODULE as the artifact id, where the MODULE keyword should be replaced with the module's name.

e.g. spiral-knights-headless-client-core, spiral-knights-headless-client-legacy

Gradle

repositories {
    maven { url = uri("https://maven.azzerial.net/REPOSITORY") }
}

dependencies {
    implementation("net.azzerial:spiral-knights-headless-client:VERSION")
}

Maven

<repositories>
  <repository>
    <url>https://maven.azzerial.net/REPOSITORY</url>
  </repository>
</repositories>

<dependency>
  <groupId>net.azzerial</groupId>
  <artifactId>spiral-knights-headless-client</artifactId>
  <version>VERSION</version>
</dependency>

License

This project is licensed under the Apache License 2.0 © 2025 Robin Mercier.


Spiral Knights Headless Client by Robin Mercierazzerial.net

About

Spiral Knights client without a GUI

Topics

Resources

License

Stars

Watchers

Forks