
Modrinth · Minecraft mod
Lib99j
Another useful library mod for server-side development.
Quick answer
Which Lib99j release should I use?
Lib99j 1.4.4-patch10 targets 26.3 with Fabric. Do not install it on the client. It must be installed on the dedicated server. All 2 required mods have matching files.
Where it goes
Is Lib99j required on the client, server, or both?
Do not install it on the client. It must be installed on the dedicated server.
This file is marked server-only.
What else does Lib99j 1.4.4-patch10 need?
1.4.4-patch10. Change the file and its required mods may change too.
Install Polymer, Fabric API first. We found matching files for this game-version and loader setup. 1 comes through another mod in the chain.
1 extra mod was pulled in by another dependency. Indented rows show who needs each one. We only count dependency files that match this setup. A file for another loader does not fill the gap.
Before you install it
Add Lib99j without breaking your instance.
Built for Lib99j 1.4.4-patch10. Pick another file and the loader, install side or required mods may change.
- 01
Stick to this file
Use 1.4.4-patch10. It targets 26.3 with Fabric; another release may have different loader, side or dependency requirements.
- 02
Bring the mods it needs
Install Polymer, Fabric API first. We found matching files for this game-version and loader setup. 1 comes through another mod in the chain.
- 03
Put it on the correct side
Do not install it on the client. It must be installed on the dedicated server.
- 04
Pick the file you checked
Use the “Get this file” button beside 1.4.4-patch10. It opens that exact file at the source.
About this project
What does Lib99j add?
About
This is a mod used as a base for all my mods. Feel free to use it if you wish.
Library Features
- VFX including locking camera, overlays, and more
- Server-side gui textures
- Server-side particles
- Hide bossbars
- Custom effects
- Pondering
- Easy config creation
- And more...
Usage
On mod initialization, please run Lib99j.ensureLoaded(). This forces the library to load before yours, which allows all the features to work correctly
build.gradle (Version number from modrinth)
repositories {
maven { url = 'https://dj.ucc.asn.au/maven/' }
}
dependencies {
implementation include("com.daniel99j:djutil:1.1")
implementation include("com.daniel99j:lib99j:VERSION")
}
Ponder (Server-side)
This is a re-creation of Create Mod's ponder system, now server-side. See https://modrinth.com/mod/ponderplus for an example.
Features:
- No client mods
- Skip, rewind, and pause
- If installed alongside Polydex or Booklet, click once to open a ponder
- Fast
- Does not change the player - neither the server or client know you are pondering, everything happens at the network level
- Fully self-contained
- No real-world changes
- Works with Polymer and server-side mods (and client ones too!)
Controls (in-game hud shows these):
- F: Identify - fly around and it will show what you are looking at
- SPACE: Pause/play
- Q: Exit
- L: Open menu
- S: Restart scene
- D: Next scene (if possible)
- A: Previous scene (if possible)
- SCROLL: Select step to skip to
- W: Skip to selected step
Commands:
/ponder all <id>
/ponder item <item>
/ponder item <item> scene <id>
/ponder item hand
/ponder item hand <id>
/ponder scene pause
/ponder scene unpause
/ponder scene exit
Dev commands:
/ponder dev ui_creator -> Opens the UI creator.
/ponder dev ui_creator_from <ponder command> -> Opens the UI creator after running the specified ponder command
/ponder dev toggle_free_movement -> Toggle free movement in a ponder scene
/ponder dev get_edits -> Lists all interactions made with the world in free move mode
UI creator:
- Stained glass shows safe area
- Open menu [L] to start editing
- If on the client hold shift in the menu to see what ponder ui coordinate the cursor is over, CTRL-C to copy
Demo video:
Game properties
- enableHideableBossbar() makes yellow bossbars white, and using BossBarVisibility you can make any bossbar invisible
- enableCustomEffectBadLuck() makes the unluck effect show as "Custom Effect (/polymer effects)" and have a custom sprite
- enablePonder() enables ponder (see above)
- enableAddingAssetTranslationsToServer() makes all lang files in the assets folder be treated as a server translation in Nucleoid Server Translations API
Configs
- Lib99j also provides an easy to use config api
- Per-world, common, client only, and server only configuration options
- Optional client syncing
- Uses cloth config for screen
- In-game server side dialog re-creation of cloth config (/lib99j config {modid})
- Mod menu support
- JSON serialization through GSON
- Supports primitives, identifiers, vec2, vec3, colours automatically in all config screens and config files
- Use ConfigManager.addConfig(modid, modconfig) to add configs. Each ModConfig contains a nullable ConfigHolder for each context. Just supply a config class and you're done
- Use ServerConfigCopy.getConfigOption(modid, serializedName, optionClass, fallback) to get a synced option from the server (option must be annotated with sync = true)
Example config class:
public class ExampleConfig {
@ConfigEntry
public boolean testBool = true;
@ConfigEntry(sync = true)
@SerializedName("wavy_ui")
public boolean wavyUi = false;
//Object primitives work too!
@ConfigEntry(min = 0, max = 10000)
public Integer explosionDamage = 10;
@ConfigEntry(displayType = ConfigDisplayType.SLIDER, max = 50, min = 0)
public int explosionSize = 10;
@ConfigEntry(displayType = ConfigDisplayType.COLOUR_PICKER)
public int worldTint = 0xff00ff;
@ConfigEntry(displayType = ConfigDisplayType.COLOUR_PICKER_ALPHA)
public int overlayColour = 0xff0000ff;
@ConfigEntry
public Identifier packId = Identifier.withDefaultNamespace("test");
@ConfigEntry
public Vec2 spawnRotation = Vec2.ZERO;
@ConfigEntry
public Vec3 spawnPos = Vec3.ZERO;
//ChatFormatting is an Enum
@ConfigEntry
public ChatFormatting formatType = ChatFormatting.RED;
}
Mod install status
- Use ModInstallManager.syncInstalledStatus(modid) to mark your mod to have its install status synced, then use ModInstallManager.isInstalled(modid, player) to check if the mod is installed on the client
Gui Utils
- By default, Lib99j generates a font space range of -256 to 256 (Note, when using eg, space=270, it uses a combo of 256 and 14!). Use GuiUtils.getSpace() and related functions
- GuiUtils.nextPage(), GuiUtils.previousPage(), and GuiUtils.head() create player heads for use in guis
- GuiUtils.doesPlayerHaveMods() allows you to see what mods are installed, read the documentation for more info
- GuiUtils.toast() displays an advancement popup with a custom item and text
- Now for the meat of it!
- GuiUtils.generateTexture() and GuiUtils.generateColourableTexture() creates a GuiElementBuilder that has an auto generated item model and definition. Texture format: "examplemod", "ui/test/image". Note that other base paths are accepted, but it is recommended to use /ui/ as other functions use this solely
- GuiUtils.generateBarTexture() creates a vertical bottom to top filling bar with a base, fill, and overlay.
- BackgroundTextures are a basic inventory-based font background generator, eg: new BackgroundTexture(Identifier.fromNamespaceAndPath(MagmaNetworkMod.MOD_ID, "test/test_ui"), 176). Uses /ui/ for texture references.
VFX
- VfxUtils.shake() causes a camerashake effect similar to bedrock edition
- VfxUtils.addGenericScreenEffect() adds many other client-side effect such as:
- RED_TINT - Red worldborder tint
- SNOW - Powder snow overlay
- FIRE - Self-explanatory
- NAUSEA - You get it.
- BLACK_HEARTS - Withered hearts
- GREEN_HEARTS - Poisoned hearts
- GREEN_HUNGER - Green hunger haunches
- BLINDNESS - The blindness effect
- NIGHT_VISION - The night vision effect
- CONDUIT_POWER - The conduit power effect
- DARKNESS - Warden darkness effect
- LOCK_CAMERA_AND_POS - More complicated, explained next.
- Camera Locking
- To lock the player's camera and movement, add the LOCK_CAMERA_AND_POS effect
- setCameraInterpolation, setCameraPos, setCameraPitch, and setCameraYaw control varius aspects of the locked camera
- Due to technical reasons, the player is unable to see the hotbar, and the game looks like it is in spectator mode
- registerCameraLockHandler registers a camera lock handler for a source id, which supplies camera rotation and player
- MISC
- VfxUtils.clientSideExplode() causes a client-side explosion destroying blocks (ONLY ON THE CLIENT). Use only for cinematics, as ghost blocks are buggy
- VfxUtils.fireworkExplode() creates a firework explosion as if a firework actually spawned
- VfxUtils.sendFakeEntity() sends a client side entity. Note it will never be removed normally, so it is only recommended to use this with lightning bolts or other entities that will be auto-removed
Particles
WORK IN PROGRESS FEATURE, may experience heavy server lag.
Rework will happen soon when I have time.
Misc
- PlayPacketUtils contains a list of all PLAY packets
- ConfigUtils has some basic configuration functions
- GameProperties has some toggles and information about the game
This project has no affiliation with Create Mod, Ponder, or any similar mods.
Project description from Modrinth.
Pick your setup
Lib99j by Minecraft version and loader
Choose the version and loader you play, then open the matching release.
26.3
1 loader build26.1
2 loader builds1.21.11
2 loader builds1.21.10
1 loader build1.21.9
1 loader build1.21.8
2 loader builds1.21.5
2 loader buildsCheck the dependencies, then try the file in a copied instance before changing a world you care about.
Recent files
Lib99j versions and loaders
1.4.4-patch10
lib99j-1.4.4-patch10.jar
5 Nov 2026
1.4.1
lib99j-1.4.1.jar
29 Mar 2026
1.4.0
lib99j-1.4.0.jar
28 Mar 2026
1.3.2-patch2
lib99j-1.3.2.jar
23 Mar 2026
1.3.2-patch1
lib99j-1.3.2.jar
23 Mar 2026
1.3.2
lib99j-1.3.2.jar
23 Mar 2026
1.3.1-hotfix4
lib99j-1.3.1.jar
23 Mar 2026
1.3.1-hotfix2
lib99j-1.3.1.jar
22 Mar 2026
1.3.1-hotfix
lib99j-1.3.1.jar
22 Mar 2026
1.3.1
lib99j-1.3.1.jar
22 Mar 2026
1.3.0
lib99j-1.3.0.jar
22 Mar 2026
1.2.8
lib99j-1.2.8.jar
22 Feb 2026
Looking for an older file? The official Modrinth project page is in Resources.