/owo-lib

Open ωorthωhile Operations, yes the acronym was "totally accidental"

Primary LanguageJavaMIT LicenseMIT


oωo (owo-lib)

Overview

A general utility, GUI and config library for modding on Fabric. oωo is generally aimed at reducing code verbosity and making development more ergonomic. It covers a wide range of features from networking and serialization over GUI applications and configuration to data handling and registration.

Build Setup:

# https://maven.wispforest.io/io/wispforest/owo-lib/
owo_version=...
repositories {
    maven { url 'https://maven.wispforest.io' }
}

<...>

dependencies {
    modImplementation "io.wispforest:owo-lib:${project.owo_version}"
    // only if you plan to use owo-config
    annotationProcessor "io.wispforest:owo-lib:${project.owo_version}"
    
    // include this if you don't want force your users to install owo
    // sentinel will warn them and give the option to download it automatically
    include "io.wispforest:owo-sentinel:${project.owo_version}"
}
Kotlin DSL
repositories {
    maven("https://maven.wispforest.io")
}
    
dependencies {
    modImplementation("io.wispforest:owo-lib:${properties["owo_version"]}")
    // only if you plan to use owo-config
    annotationProcessor("io.wispforest:owo-lib:${properties["owo_version"]}")
    
    // include this if you don't want force your users to install owo
    // sentinel will warn them and give the option to download it automatically
    include("io.wispforest:owo-sentinel:${properties["owo_version"]}")
} 

You can check the latest version on the Releases page

owo is documented in two main ways:

Features

This is by no means an exhaustive list, for a more complete overview head to https://docs.wispforest.io/owo/features/

  • owo-ui, a fully-featured declarative UI library for building dynamic, beautiful screens with blazingly fast development times
  • owo-config, a built-in, customizable configuration system built on top of owo-ui. It provides many of the same features as Cloth Config while many new conveniences, like server-client config synchronization, added on top
  • A fully automatic registration system that is designed to be as generic as possible. It is simple and non-verbose to use for basic registries, yet the underlying API tree is flexible and can also be used for many custom registration solutions
  • Item Group extensions which allow for sub-tabs inside your mod's group as well as a host of other features like custom buttons, textures and item variant handling
  • A fully-featured networking layer with fully automatic serialization, handshaking to ensure client compatibility and a built-in solution for triggering parametrized particle events in a side-agnostic manner
  • Client-sided particle helpers that allow for easily composing multi-particle effects
  • Rich text translations, allowing you to use Minecraft's text component format in your language files to provide styled text without any code