Code Monkey home page Code Monkey logo

jagex-bytebuf's Introduction

Jagex-ByteBuf

Release Snapshot License Discord

Jagex-ByteBuf is a set of Netty ByteBuf utilities for RuneTek game emulation. Jagex-ByteBuf contains 3 different modules; extensions, wrapper and serialization which are discussed in detail below.

Extensions

Contains a set of ByteBuf extension methods to encode and decode RuneTek specific types and protocol obfuscations, for example:

public fun ByteBuf.readShortLEAdd(index: Int) { ... }

reads 16-bits in little endian byte-order and negates 128 from the resulting value.

Wrapper

The wrapper module provides a wrapper, called JByteBuf around ByteBuf that, instead of upcasting the unsigned value to next biggest primitive returns an unsigned type. Using the wrapper is recommended because it results in stronger typing. Most methods that are available in ByteBuf are also available in JByteBuf. Creating a JByteBuf can be done by calling ByteBufAllocator#jBuffer.

Serialization

Provides a kotlinx.serialization implementation for writing messages used in the RuneTek protocol. Jagex-ByteBuf-Serialization is similar to Protobuf but instead of specifying the encoding through a serializable format it uses annotations. Example:

@Serialization
class VarpLargePacket(
    @JShort(JShortType.LE_ADD) private val id: Short,
    @JInt(JIntType.IME) private val state: Int
)

Usage

Artifacts:

dependencies {
    implementation(group = "org.guthix", name = "jagex-bytebuf-extensions", version = VERSION)
    implementation(group = "org.guthix", name = "jagex-bytebuf-wrapper", version = VERSION)
    implementation(group = "org.guthix", name = "jagex-bytebuf-serialization", version = VERSION)
}

Snapshot repository:

repositories {
    maven("https://oss.sonatype.org/content/repositories/snapshots")
}

When using the Serialization module:

plugins {
    kotlin("plugin.serialization") version KOTLINX_SERIALIZATION_VERSION
}

jagex-bytebuf's People

Contributors

bartvhelvert avatar tomm0017 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

jagex-bytebuf's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.