Lib39

Lib39

Mod

Useful mixins, events, and utilities originating in Yttr.

Client or server Game MechanicsLibraryUtility

15.5k downloads
3 followers
Follow Save
90% of ad revenue goes to creators. Go ad-free while supporting creators with Modrinth Plus. Subscribe today!

Users should never have to download Lib39. Mods that use it should include it. This is provided for special usecases, debugging, or for people who want to make resource/datapacks with the Machination, Lockpick, or Keygen modules.

Lib39 is a loose collection of utilities, mixins, events, etc originating in my content mod Yttr — people constantly talk about "stealing" mixins from Yttr since it has so many random useful things in it, that I decided it'd be a good thing to split it up into a library.

39 is the atomic number of Yttrium. You can pronounce it as "lib thirty nine", "lib three nine", "lib miku", whatever you want.

Getting Started

Lib39 is primarily distributed on the Sleeping Town Maven. Merge the following with your build.gradle:

repositories {
	maven {
		url 'https://repo.sleeping.town'
		content {
			includeGroup 'com.unascribed'
		}
	}
}

dependencies {
	modApi include("com.unascribed:lib39-core:1.4.0")
	// put any other modules you want here
	// loom won't JiJ transitive deps, so you need to include all of them
}

The only supported version of Minecraft right now is 1.19.x, for ModFest: Singularity. Core will also work on 1.18, and Deferral will work back to 1.17.

Modules

  • Core (Java & JSON)
    Random utility classes such as AutoRegistry, AutoMixin, and shared classes with the other modules. Also contains random small tidbits, such as crafting sounds.
  • Lockpick (JSON)
    Mixins to allow removing artificial limits, such as model rotation angles, crafting recipe sizes, and more. Various other related utilities as well, such as the ability to inherit elements from parent models.
  • Ripple (Java)
    Allows customizing splash texts.
  • Gesundheit (Java)
    Adds a convenient and generic GUI particle system that reuses the vanilla particle manager. Works in any screen.
  • Fractal (Java)
    Adds a "subgroup" system for splitting up creative tabs even further.
  • Tunnel (Java)
    Adds a convenient networking system based on Concrete Network from 1.12.
  • Phantom (Java)
    Adds the ability to "phase" blocks out of the world temporarily. The blocks are never removed from the world, simply hidden.
  • Waypoint (Java)
    Adds an additional baked world layer with additive blending for rendering various kinds of glowy effects.
  • Weld (Java)
    Adds a "big blocks" system for creating "prefab" blocks like vanilla beds, but way nicer and with theoretically no size limit.
  • Sandman (Java)
    Adds the ability to make items "always tick", leveraging random ticks.
  • Crowbar (Java)
    Adds events for low-level world generation phases, such as constructing surface rules, and raw access to chunks during the surface and population phases for invoking custom generators.
  • Keygen (Resource)
    Adds the ability to load music in XM, S3M, and MOD format via IBXM2.
  • Dessicant (Java & JSON)
    Implements "logical defaults" for loot tables, and automatically manages recipe unlocks based on a "discovered_by" key in recipe JSONs. Blockstates and block/item models soon.
  • Machination (JSON)
    Adds new recipe types, such as a "soaking" recipe for throwing items in a fluid and a "smashing" recipe for crushing a block between two others with a piston. Comes with EMI support.
  • Recoil (Java)
    Events to let you mess with the camera and FOV, and a way to suppress vanilla behavior and catch raw attack/use. Everything you need to make a satisfying gun mod, basically.
  • Util (Java)
    Random utility classes. No docs yet.

Future modules

Yttr has a lot of weird mixins and utilities in it, and I'd be here a while were I to factor them all out at once. Here's some things I want to separate out but haven't gotten around to yet:

  • Equivalence (Java & JSON)
    Adds a "substitutes" system, for making items functionally the same as others in recipe ingredients and tags.
  • Mesh (Java)
    Adds an efficient graph-based block network system, for pipes and the like.
  • Conflagration (Java)
    Adds a CSS-based configuration system and a framework for making GUIs that interact with it.

Project members

unascribed

Owner

Details

Licensed MIT
Created 2 years ago
Updated 2 years ago