Tags
Creators
Details
1.8.1
Compatibility
Required content
Changes
JEG 1.8.1 Changelog (workspace total)
Date: 2026-09-22
Version: 1.8.1
Loaders: Fabric / NeoForge · Minecraft 1.21.1, 26.2, and 26.3
This is the combined 1.8.1 release note. Each maintained branch also has the entry at the top of its own CHANGELOG.md.
| Module | Branch changelog |
|---|---|
| Fabric 1.21.1 | Just-Enough-Guns-Fabric-1.21.1/CHANGELOG.md |
| NeoForge 1.21.1 | Just-Enough-Guns-NeoForge-1.21.1/CHANGELOG.md |
| Fabric 26.2 | Just-Enough-Guns-Fabric-26.2/CHANGELOG.md |
| NeoForge 26.2 | Just-Enough-Guns-NeoForge-26.2/CHANGELOG.md |
| Fabric 26.3 | Just-Enough-Guns-Fabric-26.3/CHANGELOG.md |
| NeoForge 26.3 | Just-Enough-Guns-NeoForge-26.3/CHANGELOG.md |
Previous feature notes stay in 1.8.0-changelog.md. The interim local label “1.8.1” mentioned there was kill-credit work that shipped inside 1.8.0. This file is the public 1.8.1 release.
Fixed
Dedicated server startup
MonitorItem kept a constant-pool reference to client-only net.minecraft.client.Minecraft. On a dedicated server that class is stripped, so item registration failed with NoClassDefFoundError: net/minecraft/client/player/LocalPlayer and the server never reached Done.
The distance line now lives in client-only MonitorDistanceTooltip.
| Module | This crash before 1.8.1 | Fix in 1.8.1 |
|---|---|---|
| Fabric 1.21.1 | No. The tooltip only prints coordinates. | None needed. |
| Fabric 26.2 | Yes. | Client source set, called by reflection after a client environment check. |
| Fabric 26.3 | Yes. | Same reflection path as Fabric 26.2. |
| NeoForge 1.21.1 | Yes. | Direct call to client MonitorDistanceTooltip. |
| NeoForge 26.2 | Yes. | Direct call to client MonitorDistanceTooltip. |
| NeoForge 26.3 | No. The tooltip was already delegated to the client class. | None needed. |
Config menu and config commands
ServerConfigOptions checked a hardcoded list size while the class was initializing. The real list is 15 gunner growth types × 18 settings, plus 19 non-growth options (20 on NeoForge 1.21.1, which also has ui.hideMedals). The old assertion expected 291, or 292 on NeoForge 1.21.1.
The first use of that class then crashed the server tick:
- Opening the pause-menu config sends
jeg:open_server_config. - Gunner growth commands such as
/justEnoughGuns config mob spawn <type> <setting> [value]read the same option list.
Both paths are fixed on all six maintained branches. The expected size is computed from the growth lists plus the non-growth count for that branch.
Verification
.\gradlew runServer reached Done on every maintained branch:
| Module | Result |
|---|---|
| Fabric 1.21.1 | Done (0.829s), 113 jeg recipes |
| Fabric 26.2 | Done (0.450s), 162 jeg recipes |
| Fabric 26.3 | Done (0.321s), 162 jeg recipes |
| NeoForge 1.21.1 | Done (0.650s), 113 jeg recipes |
| NeoForge 26.2 | Done (0.450s), 163 jeg recipes |
| NeoForge 26.3 | Done (0.258s), 163 jeg recipes |
Fabric 26.2 still logs a recipe parse error for jeg:recipe/javelin_missile.json (jeg:javelin_missile is not a registered item id in that file). The server continues past it.
Modules / branches
| Module | Remote branch | Version |
|---|---|---|
| Fabric 1.21.1 | fabric-1.21.1 |
1.8.1 |
| NeoForge 1.21.1 | neoforge-1.21.1 |
1.8.1 |
| Fabric 26.2 | fabric-26.2 |
1.8.1 |
| NeoForge 26.2 | neoforge-26.2 |
1.8.1 |
| Fabric 26.3 | fabric-26.3 |
1.8.1 |
| NeoForge 26.3 | neoforge-26.3 |
1.8.1 |
Published jars (workspace release/)
jegn-1.8.1+fabric1.21.1.jarjegn-1.8.1+neoforge1.21.1.jarjegn-1.8.1+fabric26.2.jarjegn-1.8.1+neoforge26.2.jarjegn-1.8.1+fabric26.3.jarjegn-1.8.1+neoforge26.3.jar
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:dxTydNDF:z9mXVAmo"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:dxTydNDF:z9mXVAmo"
}

