All versions
1.0.2
Release
MilkyWayLib 1.0.2last month 662
Compatibility
Minecraft: Java Edition
1.21.1
Platform
NeoForge
Supported environments
Client and server
Changes
1.0.2 — 2026-09-11
API Changes
- Added
net.galaxihd.milkywaylib.text.MilkyTextfluent per-character text renderer: independent base color and glow-halo color, per-character sinusoidal wave bob, and a scrolling per-character color gradient hook (gradient(IntUnaryOperator, float)) withfireGradient()/frostGradient()ready-made examples - Added
net.galaxihd.milkywaylib.client.input.SprintLock(+mixin.client.MixinLocalPlayerSprint): client-sidePredicate<LocalPlayer>registry that vetoes sprinting the way vanilla's own Blindness effect does — cancelsLocalPlayer#canStartSprinting()and force-stops an already-sprinting player at the top ofaiStep(), both purely client-side so there's no server-correction jitter - Added
net.galaxihd.milkywaylib.particle.ParticleEasingfor smooth mathematical interpolation curves (linear, quad, cubic, sine, exponential, bounce, fade, pop-and-fade) - Added
net.galaxihd.milkywaylib.particle.ParticleCurvesfor color gradient sampling and RGB lerping - Added
net.galaxihd.milkywaylib.particle.ParticleSpawnerfluent particle emitter builder supporting bursts, lines, rings, shockwaves, spheres, helixes, and cones across client and server levels - Added
net.galaxihd.milkywaylib.particle.ParticleFactoryRegistryfor simple particle type registration - Added
net.galaxihd.milkywaylib.client.particle.ParticleOrientationsupporting camera billboard, flat horizontal, upright Y-axis billboard, and velocity-aligned quad orientations - Added
net.galaxihd.milkywaylib.client.particle.MilkyParticleRenderTypesproviding additive blending and custom translucent particle render sheets - Added
net.galaxihd.milkywaylib.client.particle.MilkyParticleenhanced base texture particle supporting orientation modes, additive/translucent rendering, scale/alpha/color easing curves, bounce physics, spin, turbulence, and target homing - Added
net.galaxihd.milkywaylib.client.particle.CustomMeshParticlefor procedural 3D mesh and BufferSource particle rendering - Added
net.galaxihd.milkywaylib.client.particle.MilkyParticleProviderfunctional interfaces and registration helpers forRegisterParticleProvidersEvent - Added
net.galaxihd.milkywaylib.fluid.FluidSplashEffectsandnet.galaxihd.milkywaylib.mixin.entity.MixinEntityFluidSplash: register a customFluidTypewith bubble/splash particles and get vanilla-style splash effects on entity entry for free, without touching vanilla's owndoWaterSplashEffect - Removed
PotionContentsparameter and manual potion tinting override fromBERFluidRenderer.renderFluidBoxin favor of standardFluidStack/IClientFluidTypeExtensionstint resolution - Added
math.IcosphereMesh— procedural icosphere mesh generator (verts/uvs/index buffer) for low-poly sphere rendering with no baked model - Added
client.render.RibbonMeshBuilder— procedural quad-strip ribbon mesh (wing/cape/silk/cloth) swept around an axis with a per-segment wave offset - Added
client.fx.PostChainDepthAccess(+mixin.client.MixinPostChain) — exposes a PostChain's pass list so a shader can be bound an arbitrary depth sampler - Added
client.fx.StatusShaderEffectRegistry— registry of full-screen PostChain effects gated on a live intensity supplier, withGameTime/FadeInTestuniforms driven automatically - Extended
FluidBuilderfluent API with custom factory hooks for bucket items (bucketFactory), custom fluid types (fluidTypeFactory), fluid source/flowing subclasses (sourceFactory,flowingFactory), and custom client extensions (clientExtensions) - Added
DyeColorHelper.dyeItemForColorName(String)— the reverse of the existinggetColorName(ItemStack): resolves theDyeItemfor a color name string, checking the vanillaDyeColorenum first and falling back to scanning for a#c:dyes/<colorName>-tagged item for a genuinely modded color name
Bug Fixes
- Fixed
MineableEntityAPI.getMineableData's raw-NBT scan (saveWithoutId) crashing/desyncing other mods' entities that aren't fully initialized yet when it runs fromisMultipartEntityon client entity tracking-start (e.g. Create contraptions on dedicated servers, whereControlledContraptionEntity.writeAdditionalthrows NPE beforecontrollerPosis set); the failure is now caught and treated as "no raw NBT," matching the surrounding attachment/manager lookups instead of propagating out and killing the entity's initialization - Fixed several bugs with collapsible creative-tab item groups: category layout and section headers corrupting on expand/collapse, the scrollbar position desyncing after a toggle, the search tab showing group badges/slot borders over unrelated items (items are now strictly isolated to category tabs and everything is searchable), and the +/- toggle having no click sound (now plays the vanilla wooden button click, on/off variant matching direction)
- Removed
MineableCrumbleLayer's deprecated explicit event-bus selector; NeoForge now routesIModBusEventlisteners automatically - Fixed
ProceduralChunkGenerator's edge cache retaining every previously visited dimension's data for the life of the game session instead of releasing it when a dimension unloads
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:3xkG1Dfb:Vyd0AX46"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:3xkG1Dfb:Vyd0AX46"
}

