Just Enough Guns New
A modern fork and unofficial port of the Forge 1.20.1 mod Just Enough Guns, bringing vanilla-styled firearms, hostile gunners, faction raids, vehicles, and late-game aerial threats to newer Minecraft versions.

Just Enough Guns New is based on the original Just Enough Guns project for Forge 1.20.1. This fork continues its Minecraft-friendly firearms, survival crafting, hostile gunners, raids, vehicles, and special equipment on modern Fabric and NeoForge versions. The current 1.8.2 builds add a four-chapter combat-career guide, SW-aligned vehicle controls and part damage, revised ADS/spread, magazine-mode notices and recipe rules, and combat/configuration fixes across all six maintained branches.
Documentation / Wiki
The detailed player and server guide is available in five languages. English is the reference language.
Screenshots



Highlights
- Broad firearm lineup: pistols, revolvers, rifles, SMGs, shotguns, machine guns, launchers, bows, flamethrower-style weapons, and special late-game guns.
- Survival progression: workbenches, ammo, magazines, attachments, skins, and repair items.
- Modern gun handling: left-click shooting, right-click aiming, magazine reloads, recoil, movement spread, dynamic crosshair expansion, hit markers, muzzle effects, and bullet trails.
- Animated gun inspection on the Y key for held animated guns.
- Extended magazine system: base, extended, and drum magazines for supported rifle, SMG, and shotgun reloads.
- Forge-style melee support: V-key gun melee, flashlight toggles, sword bayonet damage, and first-person melee or bayonet animations for animated guns.
- Walkürenritt vehicle warfare: assembled land vehicles, boats, aircraft, helicopters, fixed weapon platforms, vehicle inventories, repair tools, charging support, missiles, decoys, and dedicated vehicle HUDs.
- Special equipment: FPV drones with monitor control and kamikaze payload HUD, C4 (remote/detonator), claymore mines, C4 vest, C4 defuser, Javelin and Igla 9K38 lock-on launchers, smoke screens that deny missile locks, and vehicle missile lock frames with seek audio.
- Hostile gunner mobs: zombie-family, skeleton-family, piglin-family, pillager/vindicator, phantom, ghoul, and parched gunner variants, plus a configurable C4 vest bomber gunner variant.
- Faction encounters: patrols, faction omen flow, home-triggered raids, raid flares, boss bars, configurable raid waves, and faction-specific blueprint rewards.
- Terror Phantom content: rare sky threat, Bound Terror Phantom guardian variant, phantom gunner summons, configurable death explosions, and End Ship Armada structure encounters.
- Defensive gear: bulletproof helmets and vests, plus armored Joy Harness upgrades.
- Server configuration: tune gunners, raids, UI visibility, dynamic crosshair, hit feedback, Terror Phantom behavior, spread, explosions, vehicles, and other combat systems.
Latest Release Notes
Version 1.8.2 adds a four-chapter combat-career guide with legacy progress migration, SW-aligned vehicle controls and part damage, ADS/spread adjustments, and server magazine-mode notices with matching recipes. It also fixes delayed trigger release, anti-armor impacts, truck fall damage, and config-menu feedback.
Highlights
- Combat career — Four chapters with 72 visible nodes / 53 core objectives on 1.21.1 and 73 nodes / 54 objectives on 26.2 and 26.3, with legacy progress preserved silently.
- Vehicle warfare — SW-aligned controls, cameras, crew HUDs, enemy AI, component hitboxes, damage, repair, and collision behavior.
- Gun handling — revised ADS recoil and spread, tighter shotgun grouping, configurable hip-fire spread, and reliable trigger release under delayed synchronization.
- Magazine rules — a confirmed server-mode notice and recipes that follow the active magazine or direct-ammo mode.
Fixed
- Corrected anti-armor rocket damage and missile contact with unmounted targets.
- Corrected truck fall immunity and restored the player-skin Finger Gun inventory icon.
- Fixed config tooltip line breaks and guarded config-menu opening failures.
- Added remote vehicle smoothing on NeoForge; corrected vehicle scroll and crew HUD visibility on Fabric 1.21.1.
The dedicated-server monitor tooltip and gunner-growth configuration fixes from 1.8.1 remain included. The FPV drones, C4, mines, guided launchers, smoke denial, and kill-credit work from 1.8.0 remain available.
Full release notes: 1.8.2 changelog.
Supported Versions
| Loader | Minecraft | Java | Mod Version | Required Dependencies |
|---|---|---|---|---|
| Fabric | 1.21.1 | Java 21 | 1.8.2 | Fabric API, GeckoLib 4.8.3 |
| NeoForge | 1.21.1-1.21.4 | Java 21 | 1.8.2 | NeoForge 21.1.x, GeckoLib 4.8.3 |
| Fabric | 26.2 | Java 25 | 1.8.2 | Fabric API, GeckoLib 5.5+ |
| NeoForge | 26.2 | Java 25 | 1.8.2 | NeoForge 26.2.x, GeckoLib 5.5.1 |
| Fabric | 26.3 | Java 25 | 1.8.2 | Fabric API, GeckoLib 5.5.7 |
| NeoForge | 26.3 | Java 25 | 1.8.2 | NeoForge 26.3.x, GeckoLib 5.5.7 |
The older Fabric 26.1 and NeoForge 26.1 branches are legacy lines after the 26.2 unofficial port. Use 26.2 for the maintained Java 25 release line unless you specifically need a 26.1 legacy build.
Install the Just Enough Guns New file that matches your loader and Minecraft version. Do not mix Fabric and NeoForge builds.
How To Play
For version 1.3.0 and newer, gun controls use the modern input layout:
| Action | Default Input |
|---|---|
| Shoot | Left Click |
| Aim down sights | Right Click |
| Reload | R |
| Inspect animated gun | Y |
| Gun melee / flashlight toggle, where supported | V |
| Sneak behavior, where supported | Shift |
Older builds before 1.3.0 used right-click shooting, F reload, and Shift aiming. If you are updating from an old version, check your keybinds after launch.
Vehicles in the Walkürenritt update are built through vehicle assembly progression, then deployed and driven directly in-world. Most vehicles use normal Minecraft movement inputs once mounted:
| Vehicle Action | Default Input |
|---|---|
| Enter vehicle / interact with vehicle | Right Click |
| Steer and throttle land vehicles, boats, helicopters, and aircraft | W / A / S / D |
| Brake, reverse, or slow down | S |
| Look / aim turret, cannon, or mounted weapon | Mouse movement |
| Fire the active vehicle weapon | Left Click |
| Aim, lock, zoom, or use the secondary vehicle function where supported | Right Click |
| Reload the active vehicle weapon where supported | R |
| Dismount | Shift |
Vehicle behavior depends on the vehicle type and seat. Driver seats control movement, while weapon seats or co-pilot seats may control turrets, missiles, target locks, or defensive tools. Keep ammunition, repair tools, and charged support items in the vehicle inventory when the vehicle expects them, and watch the vehicle HUD for weapon state, reload timing, lock warnings, and damage feedback.
Gameplay Notes
Most guns need the correct ammo or magazine type. Magazine-fed weapons use loaded magazines, while manual and single-item weapons use their matching ammunition directly. Attachments, stocks, grips, sights, skins, badges, and special ammo types are part of the normal progression.
Some world and combat systems are intentionally dangerous when enabled. Gunner mobs, patrols, raids, explosive mobs, vehicles, vehicle weapons, and Terror Phantom events can heavily change survival balance. Server owners should review the generated config files before running the mod in a public world.
Ballistic Armor Interception
Bulletproof helmets and vests use a ballistic interception model for gun damage instead of vanilla Projectile Protection. Each shot resolves an effective armor-piercing value from the ammo type and the gun multiplier:
effectiveAP = ammoArmorPiercing * gunArmorPiercingMultiplier
On a protected hit, headshots use the bulletproof helmet first. Other protected body hits use the bulletproof vest. If no matching bulletproof armor piece is equipped, gun damage is unchanged.
For the selected armor piece, the damage multiplier depends on whether the shot undermatches or overmatches the armor rating:
apRatio = effectiveAP / armorRating
if effectiveAP < armorRating:
damageMultiplier = undermatchMultiplier * (0.55 + apRatio * 0.45)
else:
damageMultiplier = overmatchMultiplier * min(1.25, 0.85 + (apRatio - 1.0) * 0.18)
damageMultiplier = min(damageMultiplier, 0.95)
finalDamage = rawDamage * damageMultiplier
Armor durability loss scales with raw damage and AP pressure. Under-matching shots still wear armor down, while over-matching shots punish armor more heavily:
pressure = effectiveAP / armorRating
if effectiveAP < armorRating:
durabilityDamage = rawDamage * (0.65 + pressure * 0.35)
else:
durabilityDamage = rawDamage * (1.00 + min(1.50, pressure - 1.0) * 0.85)
The result is then scaled by the armor slot and armor tier durability multipliers and capped before being applied to the armor item.
Donation
PayPal: https://www.paypal.com/paypalme/RuiMao65
Commands And Config
The mod exposes in-game configuration commands for common server tuning. Availability depends on loader/version branch, but recent builds include controls for areas such as:
- UI: ammo HUD, timer HUD, crosshair, dynamic crosshair, and hit markers.
- Mobs: gunner conversion chances, Parched gunner conversion, Phantom Gunner death explosions, and Terror Phantom behavior.
- Raids: faction patrols, raid wave timing, raid counts, and gunner accuracy scaling.
- Vehicles: vehicle assembly, enemy vehicle spawning, vehicle combat behavior, and vehicle support systems.
Config changes should be tested on a copy of the world before using them on a long-running server.
Credits And License
Just Enough Guns New is a fork and modern Fabric/NeoForge unofficial port of the original Just Enough Guns project by MigaMi, which targets Forge 1.20.1: https://www.curseforge.com/minecraft/mc-mods/just-enough-guns
- Original Just Enough Guns code is by MigaMi and is licensed under GPL-3.0.
- Original Just Enough Guns assets (models, textures, sounds, animations, icons, and other art) are by MigaMi and are All Rights Reserved (ARR). This project redistributes and uses those assets with explicit authorization from the original author (MigaMi).
- Recent updates include substantial materials derived from Superb Warfare (SBW / SW) by the SBW development team. SBW-derived assets (models, textures, sounds, animations, icons, and other art) are by the SBW development team and are All Rights Reserved (ARR). This project redistributes and uses those assets with explicit authorization from the original authors (SBW development team).
- Walkürenritt vehicle set: LAV-150, BMP-2, speedboat, truck, AH-6, MI-28, A-10, TOM-6, HPJ-11, laser tower, and waveforce tower, plus vehicle workbenches, repair tools, models, textures, sounds, icons, recipes, and related data.
- Special equipment and related assets: FGM-148 Javelin and missile, 9K38 Igla, FPV drone and monitor, C4 and detonator, Claymore, TM-62, smoke-screen / missile-lock UI and audio materials, and related models, textures, sounds, HUD art, and animations.
- SBW-derived materials are All Rights Reserved (ARR) under explicit authorization from the SBW development team, are for non-commercial use, and must be shared under the same ARR terms when redistributed or adapted. Future content may have different source projects and license terms.
- Just Enough Guns New is an independent unofficial port project and is not affiliated with, endorsed by, or an official addon for Just Enough Guns or Superb Warfare.
- Just Enough Guns New unofficial porting and maintenance is handled by maoruiq.
- Contributor: realorangewool, who provided the Fabric 26.1.2 backport.
- Project code based on Just Enough Guns is licensed under GPL-3.0. Original JEG assets remain ARR under authorized use as noted above. SBW-derived assets remain ARR under authorized use as noted above.
Suggestions and bug reports are welcome. Clear reproduction steps, Minecraft version, loader, mod version, dependency versions, and crash logs help much more than vague reports.
All Versions
+ Add Version| Name | Game version | Platforms | Published | Downloads | Actions |
|---|---|---|---|---|---|
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 |
- Version:**
1.8.2
## Summary
Rebalanced vehicle armor, guided missiles, and rocket launcher HE so combat no longer one-shots full-HP vehicles through stacked SW damage-modifier bugs, and so rocket tooltips match actual combat values.
## Missiles
- Unified SW-style explosion: one
explosionDamagefor all entities. - Falloff:
SwStyleExplosion(diameter = 2R, quadratic damage percent). - Direct hit then explosion; removed per-vehicle missile entity multipliers.
- Direct hits use ballistic AP against vehicle armor.
| Weapon | Direct | Blast | Radius | AP |
|--------|--------|-------|--------|-----|
| Javelin | 500 | 120 | 9 | 14 |
| Igla | 260 | 90 | 6 | 11 |
| BMP-2 / TOW | 600 | 60 | 6 | 12 |
| 9M120 | 650 | 80 | 7 | 13 |
| KH-39 | 1100 | 180 | 12 | 15 |
| 9M336 | 260 | 90 | 6 | 11 |
## Rocket launcher
- Direct **150**, blast **50**, radius 11, AP **10**.
- Tooltip shows real direct + blast (was GunStats
28).
## Vehicle armor (fallback)
| Vehicle | HP | Rating | HE notes |
|---------|----|--------|----------|
| BMP-2 | 300 | 12 |
explosion * 6 || LAV-150 | 270 | 11 |
* 7.5 / missile blast * 2.5 || Mi-28 | 350 | 10 |
* 1.75 || AH-6 | 250 | 7.5 |
* 1.75 || A-10 | 350 | 8 |
* 2.0 || HPJ-11 | 350 | 10 | |
| Waveforce Tower | 400 | 12 | |
| Speedboat | 200 | 7 | |
| Truck | 250 | 4 | |
| Laser Tower | 100 | 8 | |
| Tom-6 | 40 | 6 | |
| Light Combat Vehicle | 80 | 6 | |
## Fixes
- Strict explosion-type matching in
DamageModifierInfo(no multi-rule stack). - Rocket tooltip combat numbers.
- Version:**
1.8.2
## Summary
Rebalanced vehicle armor, guided missiles, and rocket launcher HE so combat no longer one-shots full-HP vehicles through stacked SW damage-modifier bugs, and so rocket tooltips match actual combat values.
## Missiles
- Unified SW-style explosion: one
explosionDamagefor all entities. - Falloff:
SwStyleExplosion(diameter = 2R, quadratic damage percent). - Direct hit then explosion; removed per-vehicle missile entity multipliers.
- Direct hits use ballistic AP against vehicle armor.
| Weapon | Direct | Blast | Radius | AP |
|--------|--------|-------|--------|-----|
| Javelin | 500 | 120 | 9 | 14 |
| Igla | 260 | 90 | 6 | 11 |
| BMP-2 / TOW | 600 | 60 | 6 | 12 |
| 9M120 | 650 | 80 | 7 | 13 |
| KH-39 | 1100 | 180 | 12 | 15 |
| 9M336 | 260 | 90 | 6 | 11 |
## Rocket launcher
- Direct **150**, blast **50**, radius 11, AP **10**.
- Tooltip shows real direct + blast (was GunStats
28).
## Vehicle armor (fallback)
| Vehicle | HP | Rating | HE notes |
|---------|----|--------|----------|
| BMP-2 | 300 | 12 |
explosion * 6 || LAV-150 | 270 | 11 |
* 7.5 / missile blast * 2.5 || Mi-28 | 350 | 10 |
* 1.75 || AH-6 | 250 | 7.5 |
* 1.75 || A-10 | 350 | 8 |
* 2.0 || HPJ-11 | 350 | 10 | |
| Waveforce Tower | 400 | 12 | |
| Speedboat | 200 | 7 | |
| Truck | 250 | 4 | |
| Laser Tower | 100 | 8 | |
| Tom-6 | 40 | 6 | |
| Light Combat Vehicle | 80 | 6 | |
## Fixes
- Strict explosion-type matching in
DamageModifierInfo(no multi-rule stack). - Rocket tooltip combat numbers.
- Version:**
1.8.2
## Summary
Rebalanced vehicle armor, guided missiles, and rocket launcher HE so combat no longer one-shots full-HP vehicles through stacked SW damage-modifier bugs, and so rocket tooltips match actual combat values.
## Missiles
- Unified SW-style explosion: one
explosionDamagefor all entities. - Falloff:
SwStyleExplosion(diameter = 2R, quadratic damage percent). - Direct hit then explosion; removed per-vehicle missile entity multipliers.
- Direct hits use ballistic AP against vehicle armor.
| Weapon | Direct | Blast | Radius | AP |
|--------|--------|-------|--------|-----|
| Javelin | 500 | 120 | 9 | 14 |
| Igla | 260 | 90 | 6 | 11 |
| BMP-2 / TOW | 600 | 60 | 6 | 12 |
| 9M120 | 650 | 80 | 7 | 13 |
| KH-39 | 1100 | 180 | 12 | 15 |
| 9M336 | 260 | 90 | 6 | 11 |
## Rocket launcher
- Direct **150**, blast **50**, radius 11, AP **10**.
- Tooltip shows real direct + blast (was GunStats
28).
## Vehicle armor (fallback)
| Vehicle | HP | Rating | HE notes |
|---------|----|--------|----------|
| BMP-2 | 300 | 12 |
explosion * 6 || LAV-150 | 270 | 11 |
* 7.5 / missile blast * 2.5 || Mi-28 | 350 | 10 |
* 1.75 || AH-6 | 250 | 7.5 |
* 1.75 || A-10 | 350 | 8 |
* 2.0 || HPJ-11 | 350 | 10 | |
| Waveforce Tower | 400 | 12 | |
| Speedboat | 200 | 7 | |
| Truck | 250 | 4 | |
| Laser Tower | 100 | 8 | |
| Tom-6 | 40 | 6 | |
| Light Combat Vehicle | 80 | 6 | |
## Fixes
- Strict explosion-type matching in
DamageModifierInfo(no multi-rule stack). - Rocket tooltip combat numbers.
- Version:**
1.8.2
## Summary
Rebalanced vehicle armor, guided missiles, and rocket launcher HE so combat no longer one-shots full-HP vehicles through stacked SW damage-modifier bugs, and so rocket tooltips match actual combat values.
## Missiles
- Unified SW-style explosion: one
explosionDamagefor all entities. - Falloff:
SwStyleExplosion(diameter = 2R, quadratic damage percent). - Direct hit then explosion; removed per-vehicle missile entity multipliers.
- Direct hits use ballistic AP against vehicle armor.
| Weapon | Direct | Blast | Radius | AP |
|--------|--------|-------|--------|-----|
| Javelin | 500 | 120 | 9 | 14 |
| Igla | 260 | 90 | 6 | 11 |
| BMP-2 / TOW | 600 | 60 | 6 | 12 |
| 9M120 | 650 | 80 | 7 | 13 |
| KH-39 | 1100 | 180 | 12 | 15 |
| 9M336 | 260 | 90 | 6 | 11 |
## Rocket launcher
- Direct **150**, blast **50**, radius 11, AP **10**.
- Tooltip shows real direct + blast (was GunStats
28).
## Vehicle armor (fallback)
| Vehicle | HP | Rating | HE notes |
|---------|----|--------|----------|
| BMP-2 | 300 | 12 |
explosion * 6 || LAV-150 | 270 | 11 |
* 7.5 / missile blast * 2.5 || Mi-28 | 350 | 10 |
* 1.75 || AH-6 | 250 | 7.5 |
* 1.75 || A-10 | 350 | 8 |
* 2.0 || HPJ-11 | 350 | 10 | |
| Waveforce Tower | 400 | 12 | |
| Speedboat | 200 | 7 | |
| Truck | 250 | 4 | |
| Laser Tower | 100 | 8 | |
| Tom-6 | 40 | 6 | |
| Light Combat Vehicle | 80 | 6 | |
## Fixes
- Strict explosion-type matching in
DamageModifierInfo(no multi-rule stack). - Rocket tooltip combat numbers.
- Version:**
1.8.2
## Summary
Rebalanced vehicle armor, guided missiles, and rocket launcher HE so combat no longer one-shots full-HP vehicles through stacked SW damage-modifier bugs, and so rocket tooltips match actual combat values.
## Missiles
- Unified SW-style explosion: one
explosionDamagefor all entities. - Falloff:
SwStyleExplosion(diameter = 2R, quadratic damage percent). - Direct hit then explosion; removed per-vehicle missile entity multipliers.
- Direct hits use ballistic AP against vehicle armor.
| Weapon | Direct | Blast | Radius | AP |
|--------|--------|-------|--------|-----|
| Javelin | 500 | 120 | 9 | 14 |
| Igla | 260 | 90 | 6 | 11 |
| BMP-2 / TOW | 600 | 60 | 6 | 12 |
| 9M120 | 650 | 80 | 7 | 13 |
| KH-39 | 1100 | 180 | 12 | 15 |
| 9M336 | 260 | 90 | 6 | 11 |
## Rocket launcher
- Direct **150**, blast **50**, radius 11, AP **10**.
- Tooltip shows real direct + blast (was GunStats
28).
## Vehicle armor (fallback)
| Vehicle | HP | Rating | HE notes |
|---------|----|--------|----------|
| BMP-2 | 300 | 12 |
explosion * 6 || LAV-150 | 270 | 11 |
* 7.5 / missile blast * 2.5 || Mi-28 | 350 | 10 |
* 1.75 || AH-6 | 250 | 7.5 |
* 1.75 || A-10 | 350 | 8 |
* 2.0 || HPJ-11 | 350 | 10 | |
| Waveforce Tower | 400 | 12 | |
| Speedboat | 200 | 7 | |
| Truck | 250 | 4 | |
| Laser Tower | 100 | 8 | |
| Tom-6 | 40 | 6 | |
| Light Combat Vehicle | 80 | 6 | |
## Fixes
- Strict explosion-type matching in
DamageModifierInfo(no multi-rule stack). - Rocket tooltip combat numbers.
- Version:**
1.8.2
## Summary
Rebalanced vehicle armor, guided missiles, and rocket launcher HE so combat no longer one-shots full-HP vehicles through stacked SW damage-modifier bugs, and so rocket tooltips match actual combat values.
## Missiles
- Unified SW-style explosion: one
explosionDamagefor all entities. - Falloff:
SwStyleExplosion(diameter = 2R, quadratic damage percent). - Direct hit then explosion; removed per-vehicle missile entity multipliers.
- Direct hits use ballistic AP against vehicle armor.
| Weapon | Direct | Blast | Radius | AP |
|--------|--------|-------|--------|-----|
| Javelin | 500 | 120 | 9 | 14 |
| Igla | 260 | 90 | 6 | 11 |
| BMP-2 / TOW | 600 | 60 | 6 | 12 |
| 9M120 | 650 | 80 | 7 | 13 |
| KH-39 | 1100 | 180 | 12 | 15 |
| 9M336 | 260 | 90 | 6 | 11 |
## Rocket launcher
- Direct **150**, blast **50**, radius 11, AP **10**.
- Tooltip shows real direct + blast (was GunStats
28).
## Vehicle armor (fallback)
| Vehicle | HP | Rating | HE notes |
|---------|----|--------|----------|
| BMP-2 | 300 | 12 |
explosion * 6 || LAV-150 | 270 | 11 |
* 7.5 / missile blast * 2.5 || Mi-28 | 350 | 10 |
* 1.75 || AH-6 | 250 | 7.5 |
* 1.75 || A-10 | 350 | 8 |
* 2.0 || HPJ-11 | 350 | 10 | |
| Waveforce Tower | 400 | 12 | |
| Speedboat | 200 | 7 | |
| Truck | 250 | 4 | |
| Laser Tower | 100 | 8 | |
| Tom-6 | 40 | 6 | |
| Light Combat Vehicle | 80 | 6 | |
## Fixes
- Strict explosion-type matching in
DamageModifierInfo(no multi-rule stack). - Rocket tooltip combat numbers.
- Date:** 2026-09-22
- Version:**
1.8.1 - Loaders:** Fabric / NeoForge · Minecraft
1.21.1,26.2, and26.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](./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
- Date:** 2026-09-22
- Version:**
1.8.1 - Loaders:** Fabric / NeoForge · Minecraft
1.21.1,26.2, and26.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](./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
- Date:** 2026-09-22
- Version:**
1.8.1 - Loaders:** Fabric / NeoForge · Minecraft
1.21.1,26.2, and26.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](./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
- Date:** 2026-09-22
- Version:**
1.8.1 - Loaders:** Fabric / NeoForge · Minecraft
1.21.1,26.2, and26.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](./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
- Date:** 2026-09-22
- Version:**
1.8.1 - Loaders:** Fabric / NeoForge · Minecraft
1.21.1,26.2, and26.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](./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
- Date:** 2026-09-22
- Version:**
1.8.1 - Loaders:** Fabric / NeoForge · Minecraft
1.21.1,26.2, and26.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](./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
I don't compromise anything of this version. That means it might be buggy. Because it's a community contributed version.
btw, fck u minecraft! I've had enough of this version numbering system. There's no significant updates in the new version of minecraft, and there are so many stuffs to test.
in a word, I may give up maintaining this project in the future.
btw, fck u minecraft! I've had enough of this version numbering system. There's no significant updates in the new version of minecraft, and there are so many stuffs to test.
in a word, I may give up maintaining this project in the future.
- Date:** 2026-08-05
- Version:**
1.8.0 - Loaders:** Fabric / NeoForge · Minecraft
1.21.1and26.2
This is the **combined 1.8.0 release notes** for the whole workspace.
Each branch also keeps its own full history in:
| Module | Branch changelog |
|--------|------------------|
| NeoForge 1.21.1 |
Just-Enough-Guns-NeoForge-1.21.1/CHANGELOG.md || Fabric 1.21.1 |
Just-Enough-Guns-Fabric-1.21.1/CHANGELOG.md || NeoForge 26.2 |
Just-Enough-Guns-NeoForge-26.2/CHANGELOG.md || Fabric 26.2 |
Just-Enough-Guns-Fabric-26.2/CHANGELOG.md |Per-branch files may include loader-specific bullets; this document merges the common 1.8.0 story plus those specifics.
> Interim labels **1.8.1** / **1.8.2** were never separate public releases. Their work is part of **1.8.0**.
## Highlights
1. **SuperbWarfare-style special equipment** — drones, C4 / claymore / vest, Javelin & Igla, smoke denial, vehicle lock UI.
2. **Kill credit** — gun / rocket / explosive kills correctly credit the player ([#10](https://github.com/maoruiQa/just-enough-guns-neoforge/issues/10)).
3. **Vehicle / missile / rocket combat balance** — SW-aligned missile damage model, ballistic AP for missiles, retuned vehicle armor & HE modifiers, rocket numbers + tooltip fix.
## Added
- Ported SuperbWarfare-style special equipment into JEG: FPV drones with monitor control, C4 bombs (including remote/detonator variants), claymore mines, and a C4 vest wearable charge.
- Added the C4 Defuser tool for safely removing placed C4 charges, with durability-based uses.
- Added guided launchers **Javelin** and **Igla 9K38**, including lock-on fire, SW-aligned first-person poses/ADS, inventory icons, walk/sprint root motion, and full reload animation support.
- Added C4 drone FPV payload HUD with detonate guidance and a **KAMIKAZE** dive presentation for explosive drone runs.
- Added a C4 vest bomber gunner variant with configurable spawn rates so suicide-bomber pressure can be tuned per server.
- Added SW-style smoke screens that deny missile locks while active, including denser custom smoke particles and dedicated release audio.
- Added SW-style vehicle missile lock frames and seek audio so lockable targets get clear on-screen seek boxes and feedback.
- Soft-disabled natural Terror Phantom spawns by default to reduce unsolicited aerial boss pressure in normal worlds.
## Changed
- Set the module version to
1.8.0on all four maintained loaders. - Rebalanced guided missiles: retuned tracking/damage feel and allow unguided Javelin dumps when lock is not available.
- Improved anti-vehicle rocket performance against armored targets.
- Strengthened drone descent power cut and raised max drone descent speed by about 1.33x for snappier FPV kamikaze dives.
- Aligned drone camera pitch with SuperbWarfare FPV framing.
- Only draw lock boxes for missile/drone targets that are in range and have line of sight.
- Improved vehicle state sync with broader tracking coverage and a 256-block fallback for distant vehicles.
- (Fabric)** Hide the vanilla armor bar while riding a vehicle so vehicle HUDs stay readable.
### Vehicle / missile / rocket balance (1.8.0 combat pass)
- Rebalanced vehicle armor ratings and HE damage modifiers using SW-style
damage_modifierswith **strict damage-type matching** (no stacked explosion multipliers on a single hit). - Guided missiles use SW-aligned **direct hit + explosion falloff** (
SwStyleExplosion: diameter = 2R, quadratic damage percent). - Removed per-vehicle missile **entity multipliers** (e.g.
@javelin_missile * 0.8,@igla_9k38_missile * …); missile **direct hits** use the ballistic **armor piercing** system against vehicle part armor. - Rocket launcher combat values: **direct 150**, **blast 50**, blast radius **11**, **AP 10**.
- Rocket launcher tooltip shows real direct + blast damage (was incorrectly showing legacy GunStats
28). - Guided launcher (Javelin / Igla) tooltips mirror the rocket layout: real direct damage, blast damage, blast radius, and profile AP from
VehicleMissileProfile(GunStats damage was often 0/placeholder); seek range 256; headshot multiplier omitted for HE launchers. - Rocket / guided launcher tooltips now include blast radius (rocket **11**, Javelin **9**, Igla **6**).
- Raised LAV-150 HE vulnerability (vanilla explosion **\*7.5**, missile blast **\*2.5**).
- Lowered helicopter/aircraft HE multipliers: Mi-28 / AH-6 **\*1.75**, A-10 **\*2.0**.
- Aligned ported vehicle max health and armor fallback ratings closer to SuperbWarfare where applicable.
- Raised undermatch multipliers (~0.45–0.55) so non-penetrating hits still deal meaningful partial damage.
#### Missile combat table
| Weapon | Direct | Blast | Radius | AP |
|--------|--------|-------|--------|-----|
| Javelin | 500 | 120 | 9 | 14 |
| Igla | 260 | 90 | 6 | 11 |
| BMP-2 / TOW missile | 600 | 60 | 6 | 12 |
| 9M120 | 650 | 80 | 7 | 13 |
| KH-39 | 1100 | 180 | 12 | 15 |
| 9M336 | 260 | 90 | 6 | 11 |
| Rocket launcher | 150 | 50 | 11 | 10 |
#### Vehicle armor (fallback rating)
| Vehicle | HP | Rating | HE notes |
|---------|----|--------|----------|
| BMP-2 | 300 | 12 |
explosion * 6 || LAV-150 | 270 | 11 |
explosion * 7.5 / missile blast * 2.5 || Mi-28 | 350 | 10 |
explosion * 1.75 || AH-6 | 250 | 7.5 |
explosion * 1.75 || A-10 | 350 | 8 |
explosion * 2.0 || HPJ-11 | 350 | 10 | |
| Waveforce Tower | 400 | 12 | |
| Speedboat | 200 | 7 | |
| Truck | 250 | 4 | |
| Laser Tower | 100 | 8 | |
| Tom-6 | 40 | 6 | |
| Light Combat Vehicle | 80 | 6 | |
## Fixed
### Special equipment / vehicles / presentation
- Fixed drone FPV rubber-banding and missing pilot render during monitor control.
- Fixed missile/drone seek frames missing when targets were due north.
- Fixed helicopter rotor spin-down and engine sound continuing after dismount.
- Fixed guided launcher fire/lock handling, ADS raise, hand orientation, and inventory GUI presentation (including flat Igla icons that fill the item slot).
- Fixed special equipment audio, monitor link behavior, and payload HUD tip text; repaired related language JSON.
- Fixed vehicle missile and special-equipment presentation issues carried over from the special equipment port.
- (Fabric 1.21.1 / Fabric 26.2)** Fixed special-equipment entity scale, claymore facing, and related mixin/render targets for drone and seek frames where applicable.
- (NeoForge 26.2)** Fixed C4/claymore entity scale and claymore facing; fixed missile/decoy deferred render pose so projectiles keep correct scale; fixed GeckoLib v5 first-person guided launcher hip pose, ScreenProjection capture for HUD frames, and drone rotor bone spin.
### Kill credit ([#10](https://github.com/maoruiQa/just-enough-guns-neoforge/issues/10))
- Fixed gun / missile / grenade / molotov kills not counting for vanilla advancements, boss kill credit,
killed_by_playerloot, and modpack kill tracking. - Player-fired bullets use dedicated
jeg:bulletdamage type with the shooter as the causing entity, and setlastHurtByPlayerafter successful hits (1.21.1 path). - Explosive blast paths (rockets, vehicle cannons, grenades, molotovs) attribute player kill credit the same way.
- Fixed gun/missile kills not awarding Free the End /
MOB_KILLS; attribute player credit before damage, keep player as bullet causing entity (Ender Dragon), resolve multipart parts, and tagjeg:bulletasalways_hurts_ender_dragonswhere required. - (NeoForge / Fabric 26.2)** 26.x no longer relies on the old hurt-path
lastHurtByPlayeralone; credit is applied from the damage source on incoming damage and death, and weapon code attributes **before**hurtServer. Guided missiles use a player-attributed blast source, pre-credit nearby targets, and explicitly credit lock/direct-hit bosses (e.g. Ender Dragon) that can sit outside a tight blast AABB. Rifles no longer strip the player causing entity in creative for dragon hits.
### Vehicle combat balance fixes
- Fixed vehicle damage-modifier matching that stacked multiple explosion rules and could one-shot full-HP vehicles or nearly nullify rocket damage on airframes.
- Fixed rocket launcher item tooltip damage readout so it matches actual HE combat numbers (direct + blast).
- Fixed Javelin and Igla item tooltips so combat stats match
VehicleMissileProfileinstead of empty/placeholder GunStats values.
## Verification
| Module | Check |
|--------|--------|
| NeoForge 1.21.1 |
.\gradlew build || Fabric 1.21.1 |
.\gradlew build || NeoForge 26.2 |
.\gradlew compileJava / build || Fabric 26.2 |
.\gradlew build |## Modules / branches
| Module | Remote branch | Version |
|--------|---------------|---------|
| Fabric 26.2 |
fabric-26.2 | **1.8.0** || NeoForge 26.2 |
neoforge-26.2 | **1.8.0** || Fabric 1.21.1 |
fabric-1.21.1 | **1.8.0** || NeoForge 1.21.1 |
neoforge-1.21.1 | **1.8.0** |### Published jars (workspace
release/)jegn-1.8.0+fabric1.21.1.jarjegn-1.8.0+neoforge1.21.1.jarjegn-1.8.0+fabric26.2.jarjegn-1.8.0+neoforge26.2.jar
## Note on interim labels
| Label | Meaning |
|-------|---------|
| **1.8.1** | Interim local version bump only for kill-credit work; **not** a separate public release. Content is under **Fixed → Kill credit** above and in each branch
CHANGELOG.md §1.8.0. || **1.8.2** | Interim label only for vehicle/missile/rocket balance; **not** a separate public release. Content is under **Changed → Vehicle / missile / rocket balance** and **Fixed → Vehicle combat balance fixes** above, and in each branch
CHANGELOG.md §1.8.0. |Public version remains **
1.8.0**.- Date:** 2026-08-05
- Version:**
1.8.0 - Loaders:** Fabric / NeoForge · Minecraft
1.21.1and26.2
This is the **combined 1.8.0 release notes** for the whole workspace.
Each branch also keeps its own full history in:
| Module | Branch changelog |
|--------|------------------|
| NeoForge 1.21.1 |
Just-Enough-Guns-NeoForge-1.21.1/CHANGELOG.md || Fabric 1.21.1 |
Just-Enough-Guns-Fabric-1.21.1/CHANGELOG.md || NeoForge 26.2 |
Just-Enough-Guns-NeoForge-26.2/CHANGELOG.md || Fabric 26.2 |
Just-Enough-Guns-Fabric-26.2/CHANGELOG.md |Per-branch files may include loader-specific bullets; this document merges the common 1.8.0 story plus those specifics.
> Interim labels **1.8.1** / **1.8.2** were never separate public releases. Their work is part of **1.8.0**.
## Highlights
1. **SuperbWarfare-style special equipment** — drones, C4 / claymore / vest, Javelin & Igla, smoke denial, vehicle lock UI.
2. **Kill credit** — gun / rocket / explosive kills correctly credit the player ([#10](https://github.com/maoruiQa/just-enough-guns-neoforge/issues/10)).
3. **Vehicle / missile / rocket combat balance** — SW-aligned missile damage model, ballistic AP for missiles, retuned vehicle armor & HE modifiers, rocket numbers + tooltip fix.
## Added
- Ported SuperbWarfare-style special equipment into JEG: FPV drones with monitor control, C4 bombs (including remote/detonator variants), claymore mines, and a C4 vest wearable charge.
- Added the C4 Defuser tool for safely removing placed C4 charges, with durability-based uses.
- Added guided launchers **Javelin** and **Igla 9K38**, including lock-on fire, SW-aligned first-person poses/ADS, inventory icons, walk/sprint root motion, and full reload animation support.
- Added C4 drone FPV payload HUD with detonate guidance and a **KAMIKAZE** dive presentation for explosive drone runs.
- Added a C4 vest bomber gunner variant with configurable spawn rates so suicide-bomber pressure can be tuned per server.
- Added SW-style smoke screens that deny missile locks while active, including denser custom smoke particles and dedicated release audio.
- Added SW-style vehicle missile lock frames and seek audio so lockable targets get clear on-screen seek boxes and feedback.
- Soft-disabled natural Terror Phantom spawns by default to reduce unsolicited aerial boss pressure in normal worlds.
## Changed
- Set the module version to
1.8.0on all four maintained loaders. - Rebalanced guided missiles: retuned tracking/damage feel and allow unguided Javelin dumps when lock is not available.
- Improved anti-vehicle rocket performance against armored targets.
- Strengthened drone descent power cut and raised max drone descent speed by about 1.33x for snappier FPV kamikaze dives.
- Aligned drone camera pitch with SuperbWarfare FPV framing.
- Only draw lock boxes for missile/drone targets that are in range and have line of sight.
- Improved vehicle state sync with broader tracking coverage and a 256-block fallback for distant vehicles.
- (Fabric)** Hide the vanilla armor bar while riding a vehicle so vehicle HUDs stay readable.
### Vehicle / missile / rocket balance (1.8.0 combat pass)
- Rebalanced vehicle armor ratings and HE damage modifiers using SW-style
damage_modifierswith **strict damage-type matching** (no stacked explosion multipliers on a single hit). - Guided missiles use SW-aligned **direct hit + explosion falloff** (
SwStyleExplosion: diameter = 2R, quadratic damage percent). - Removed per-vehicle missile **entity multipliers** (e.g.
@javelin_missile * 0.8,@igla_9k38_missile * …); missile **direct hits** use the ballistic **armor piercing** system against vehicle part armor. - Rocket launcher combat values: **direct 150**, **blast 50**, blast radius **11**, **AP 10**.
- Rocket launcher tooltip shows real direct + blast damage (was incorrectly showing legacy GunStats
28). - Guided launcher (Javelin / Igla) tooltips mirror the rocket layout: real direct damage, blast damage, blast radius, and profile AP from
VehicleMissileProfile(GunStats damage was often 0/placeholder); seek range 256; headshot multiplier omitted for HE launchers. - Rocket / guided launcher tooltips now include blast radius (rocket **11**, Javelin **9**, Igla **6**).
- Raised LAV-150 HE vulnerability (vanilla explosion **\*7.5**, missile blast **\*2.5**).
- Lowered helicopter/aircraft HE multipliers: Mi-28 / AH-6 **\*1.75**, A-10 **\*2.0**.
- Aligned ported vehicle max health and armor fallback ratings closer to SuperbWarfare where applicable.
- Raised undermatch multipliers (~0.45–0.55) so non-penetrating hits still deal meaningful partial damage.
#### Missile combat table
| Weapon | Direct | Blast | Radius | AP |
|--------|--------|-------|--------|-----|
| Javelin | 500 | 120 | 9 | 14 |
| Igla | 260 | 90 | 6 | 11 |
| BMP-2 / TOW missile | 600 | 60 | 6 | 12 |
| 9M120 | 650 | 80 | 7 | 13 |
| KH-39 | 1100 | 180 | 12 | 15 |
| 9M336 | 260 | 90 | 6 | 11 |
| Rocket launcher | 150 | 50 | 11 | 10 |
#### Vehicle armor (fallback rating)
| Vehicle | HP | Rating | HE notes |
|---------|----|--------|----------|
| BMP-2 | 300 | 12 |
explosion * 6 || LAV-150 | 270 | 11 |
explosion * 7.5 / missile blast * 2.5 || Mi-28 | 350 | 10 |
explosion * 1.75 || AH-6 | 250 | 7.5 |
explosion * 1.75 || A-10 | 350 | 8 |
explosion * 2.0 || HPJ-11 | 350 | 10 | |
| Waveforce Tower | 400 | 12 | |
| Speedboat | 200 | 7 | |
| Truck | 250 | 4 | |
| Laser Tower | 100 | 8 | |
| Tom-6 | 40 | 6 | |
| Light Combat Vehicle | 80 | 6 | |
## Fixed
### Special equipment / vehicles / presentation
- Fixed drone FPV rubber-banding and missing pilot render during monitor control.
- Fixed missile/drone seek frames missing when targets were due north.
- Fixed helicopter rotor spin-down and engine sound continuing after dismount.
- Fixed guided launcher fire/lock handling, ADS raise, hand orientation, and inventory GUI presentation (including flat Igla icons that fill the item slot).
- Fixed special equipment audio, monitor link behavior, and payload HUD tip text; repaired related language JSON.
- Fixed vehicle missile and special-equipment presentation issues carried over from the special equipment port.
- (Fabric 1.21.1 / Fabric 26.2)** Fixed special-equipment entity scale, claymore facing, and related mixin/render targets for drone and seek frames where applicable.
- (NeoForge 26.2)** Fixed C4/claymore entity scale and claymore facing; fixed missile/decoy deferred render pose so projectiles keep correct scale; fixed GeckoLib v5 first-person guided launcher hip pose, ScreenProjection capture for HUD frames, and drone rotor bone spin.
### Kill credit ([#10](https://github.com/maoruiQa/just-enough-guns-neoforge/issues/10))
- Fixed gun / missile / grenade / molotov kills not counting for vanilla advancements, boss kill credit,
killed_by_playerloot, and modpack kill tracking. - Player-fired bullets use dedicated
jeg:bulletdamage type with the shooter as the causing entity, and setlastHurtByPlayerafter successful hits (1.21.1 path). - Explosive blast paths (rockets, vehicle cannons, grenades, molotovs) attribute player kill credit the same way.
- Fixed gun/missile kills not awarding Free the End /
MOB_KILLS; attribute player credit before damage, keep player as bullet causing entity (Ender Dragon), resolve multipart parts, and tagjeg:bulletasalways_hurts_ender_dragonswhere required. - (NeoForge / Fabric 26.2)** 26.x no longer relies on the old hurt-path
lastHurtByPlayeralone; credit is applied from the damage source on incoming damage and death, and weapon code attributes **before**hurtServer. Guided missiles use a player-attributed blast source, pre-credit nearby targets, and explicitly credit lock/direct-hit bosses (e.g. Ender Dragon) that can sit outside a tight blast AABB. Rifles no longer strip the player causing entity in creative for dragon hits.
### Vehicle combat balance fixes
- Fixed vehicle damage-modifier matching that stacked multiple explosion rules and could one-shot full-HP vehicles or nearly nullify rocket damage on airframes.
- Fixed rocket launcher item tooltip damage readout so it matches actual HE combat numbers (direct + blast).
- Fixed Javelin and Igla item tooltips so combat stats match
VehicleMissileProfileinstead of empty/placeholder GunStats values.
## Verification
| Module | Check |
|--------|--------|
| NeoForge 1.21.1 |
.\gradlew build || Fabric 1.21.1 |
.\gradlew build || NeoForge 26.2 |
.\gradlew compileJava / build || Fabric 26.2 |
.\gradlew build |## Modules / branches
| Module | Remote branch | Version |
|--------|---------------|---------|
| Fabric 26.2 |
fabric-26.2 | **1.8.0** || NeoForge 26.2 |
neoforge-26.2 | **1.8.0** || Fabric 1.21.1 |
fabric-1.21.1 | **1.8.0** || NeoForge 1.21.1 |
neoforge-1.21.1 | **1.8.0** |### Published jars (workspace
release/)jegn-1.8.0+fabric1.21.1.jarjegn-1.8.0+neoforge1.21.1.jarjegn-1.8.0+fabric26.2.jarjegn-1.8.0+neoforge26.2.jar
## Note on interim labels
| Label | Meaning |
|-------|---------|
| **1.8.1** | Interim local version bump only for kill-credit work; **not** a separate public release. Content is under **Fixed → Kill credit** above and in each branch
CHANGELOG.md §1.8.0. || **1.8.2** | Interim label only for vehicle/missile/rocket balance; **not** a separate public release. Content is under **Changed → Vehicle / missile / rocket balance** and **Fixed → Vehicle combat balance fixes** above, and in each branch
CHANGELOG.md §1.8.0. |Public version remains **
1.8.0**.- Date:** 2026-08-05
- Version:**
1.8.0 - Loaders:** Fabric / NeoForge · Minecraft
1.21.1and26.2
This is the **combined 1.8.0 release notes** for the whole workspace.
Each branch also keeps its own full history in:
| Module | Branch changelog |
|--------|------------------|
| NeoForge 1.21.1 |
Just-Enough-Guns-NeoForge-1.21.1/CHANGELOG.md || Fabric 1.21.1 |
Just-Enough-Guns-Fabric-1.21.1/CHANGELOG.md || NeoForge 26.2 |
Just-Enough-Guns-NeoForge-26.2/CHANGELOG.md || Fabric 26.2 |
Just-Enough-Guns-Fabric-26.2/CHANGELOG.md |Per-branch files may include loader-specific bullets; this document merges the common 1.8.0 story plus those specifics.
> Interim labels **1.8.1** / **1.8.2** were never separate public releases. Their work is part of **1.8.0**.
## Highlights
1. **SuperbWarfare-style special equipment** — drones, C4 / claymore / vest, Javelin & Igla, smoke denial, vehicle lock UI.
2. **Kill credit** — gun / rocket / explosive kills correctly credit the player ([#10](https://github.com/maoruiQa/just-enough-guns-neoforge/issues/10)).
3. **Vehicle / missile / rocket combat balance** — SW-aligned missile damage model, ballistic AP for missiles, retuned vehicle armor & HE modifiers, rocket numbers + tooltip fix.
## Added
- Ported SuperbWarfare-style special equipment into JEG: FPV drones with monitor control, C4 bombs (including remote/detonator variants), claymore mines, and a C4 vest wearable charge.
- Added the C4 Defuser tool for safely removing placed C4 charges, with durability-based uses.
- Added guided launchers **Javelin** and **Igla 9K38**, including lock-on fire, SW-aligned first-person poses/ADS, inventory icons, walk/sprint root motion, and full reload animation support.
- Added C4 drone FPV payload HUD with detonate guidance and a **KAMIKAZE** dive presentation for explosive drone runs.
- Added a C4 vest bomber gunner variant with configurable spawn rates so suicide-bomber pressure can be tuned per server.
- Added SW-style smoke screens that deny missile locks while active, including denser custom smoke particles and dedicated release audio.
- Added SW-style vehicle missile lock frames and seek audio so lockable targets get clear on-screen seek boxes and feedback.
- Soft-disabled natural Terror Phantom spawns by default to reduce unsolicited aerial boss pressure in normal worlds.
## Changed
- Set the module version to
1.8.0on all four maintained loaders. - Rebalanced guided missiles: retuned tracking/damage feel and allow unguided Javelin dumps when lock is not available.
- Improved anti-vehicle rocket performance against armored targets.
- Strengthened drone descent power cut and raised max drone descent speed by about 1.33x for snappier FPV kamikaze dives.
- Aligned drone camera pitch with SuperbWarfare FPV framing.
- Only draw lock boxes for missile/drone targets that are in range and have line of sight.
- Improved vehicle state sync with broader tracking coverage and a 256-block fallback for distant vehicles.
- (Fabric)** Hide the vanilla armor bar while riding a vehicle so vehicle HUDs stay readable.
### Vehicle / missile / rocket balance (1.8.0 combat pass)
- Rebalanced vehicle armor ratings and HE damage modifiers using SW-style
damage_modifierswith **strict damage-type matching** (no stacked explosion multipliers on a single hit). - Guided missiles use SW-aligned **direct hit + explosion falloff** (
SwStyleExplosion: diameter = 2R, quadratic damage percent). - Removed per-vehicle missile **entity multipliers** (e.g.
@javelin_missile * 0.8,@igla_9k38_missile * …); missile **direct hits** use the ballistic **armor piercing** system against vehicle part armor. - Rocket launcher combat values: **direct 150**, **blast 50**, blast radius **11**, **AP 10**.
- Rocket launcher tooltip shows real direct + blast damage (was incorrectly showing legacy GunStats
28). - Guided launcher (Javelin / Igla) tooltips mirror the rocket layout: real direct damage, blast damage, blast radius, and profile AP from
VehicleMissileProfile(GunStats damage was often 0/placeholder); seek range 256; headshot multiplier omitted for HE launchers. - Rocket / guided launcher tooltips now include blast radius (rocket **11**, Javelin **9**, Igla **6**).
- Raised LAV-150 HE vulnerability (vanilla explosion **\*7.5**, missile blast **\*2.5**).
- Lowered helicopter/aircraft HE multipliers: Mi-28 / AH-6 **\*1.75**, A-10 **\*2.0**.
- Aligned ported vehicle max health and armor fallback ratings closer to SuperbWarfare where applicable.
- Raised undermatch multipliers (~0.45–0.55) so non-penetrating hits still deal meaningful partial damage.
#### Missile combat table
| Weapon | Direct | Blast | Radius | AP |
|--------|--------|-------|--------|-----|
| Javelin | 500 | 120 | 9 | 14 |
| Igla | 260 | 90 | 6 | 11 |
| BMP-2 / TOW missile | 600 | 60 | 6 | 12 |
| 9M120 | 650 | 80 | 7 | 13 |
| KH-39 | 1100 | 180 | 12 | 15 |
| 9M336 | 260 | 90 | 6 | 11 |
| Rocket launcher | 150 | 50 | 11 | 10 |
#### Vehicle armor (fallback rating)
| Vehicle | HP | Rating | HE notes |
|---------|----|--------|----------|
| BMP-2 | 300 | 12 |
explosion * 6 || LAV-150 | 270 | 11 |
explosion * 7.5 / missile blast * 2.5 || Mi-28 | 350 | 10 |
explosion * 1.75 || AH-6 | 250 | 7.5 |
explosion * 1.75 || A-10 | 350 | 8 |
explosion * 2.0 || HPJ-11 | 350 | 10 | |
| Waveforce Tower | 400 | 12 | |
| Speedboat | 200 | 7 | |
| Truck | 250 | 4 | |
| Laser Tower | 100 | 8 | |
| Tom-6 | 40 | 6 | |
| Light Combat Vehicle | 80 | 6 | |
## Fixed
### Special equipment / vehicles / presentation
- Fixed drone FPV rubber-banding and missing pilot render during monitor control.
- Fixed missile/drone seek frames missing when targets were due north.
- Fixed helicopter rotor spin-down and engine sound continuing after dismount.
- Fixed guided launcher fire/lock handling, ADS raise, hand orientation, and inventory GUI presentation (including flat Igla icons that fill the item slot).
- Fixed special equipment audio, monitor link behavior, and payload HUD tip text; repaired related language JSON.
- Fixed vehicle missile and special-equipment presentation issues carried over from the special equipment port.
- (Fabric 1.21.1 / Fabric 26.2)** Fixed special-equipment entity scale, claymore facing, and related mixin/render targets for drone and seek frames where applicable.
- (NeoForge 26.2)** Fixed C4/claymore entity scale and claymore facing; fixed missile/decoy deferred render pose so projectiles keep correct scale; fixed GeckoLib v5 first-person guided launcher hip pose, ScreenProjection capture for HUD frames, and drone rotor bone spin.
### Kill credit ([#10](https://github.com/maoruiQa/just-enough-guns-neoforge/issues/10))
- Fixed gun / missile / grenade / molotov kills not counting for vanilla advancements, boss kill credit,
killed_by_playerloot, and modpack kill tracking. - Player-fired bullets use dedicated
jeg:bulletdamage type with the shooter as the causing entity, and setlastHurtByPlayerafter successful hits (1.21.1 path). - Explosive blast paths (rockets, vehicle cannons, grenades, molotovs) attribute player kill credit the same way.
- Fixed gun/missile kills not awarding Free the End /
MOB_KILLS; attribute player credit before damage, keep player as bullet causing entity (Ender Dragon), resolve multipart parts, and tagjeg:bulletasalways_hurts_ender_dragonswhere required. - (NeoForge / Fabric 26.2)** 26.x no longer relies on the old hurt-path
lastHurtByPlayeralone; credit is applied from the damage source on incoming damage and death, and weapon code attributes **before**hurtServer. Guided missiles use a player-attributed blast source, pre-credit nearby targets, and explicitly credit lock/direct-hit bosses (e.g. Ender Dragon) that can sit outside a tight blast AABB. Rifles no longer strip the player causing entity in creative for dragon hits.
### Vehicle combat balance fixes
- Fixed vehicle damage-modifier matching that stacked multiple explosion rules and could one-shot full-HP vehicles or nearly nullify rocket damage on airframes.
- Fixed rocket launcher item tooltip damage readout so it matches actual HE combat numbers (direct + blast).
- Fixed Javelin and Igla item tooltips so combat stats match
VehicleMissileProfileinstead of empty/placeholder GunStats values.
## Verification
| Module | Check |
|--------|--------|
| NeoForge 1.21.1 |
.\gradlew build || Fabric 1.21.1 |
.\gradlew build || NeoForge 26.2 |
.\gradlew compileJava / build || Fabric 26.2 |
.\gradlew build |## Modules / branches
| Module | Remote branch | Version |
|--------|---------------|---------|
| Fabric 26.2 |
fabric-26.2 | **1.8.0** || NeoForge 26.2 |
neoforge-26.2 | **1.8.0** || Fabric 1.21.1 |
fabric-1.21.1 | **1.8.0** || NeoForge 1.21.1 |
neoforge-1.21.1 | **1.8.0** |### Published jars (workspace
release/)jegn-1.8.0+fabric1.21.1.jarjegn-1.8.0+neoforge1.21.1.jarjegn-1.8.0+fabric26.2.jarjegn-1.8.0+neoforge26.2.jar
## Note on interim labels
| Label | Meaning |
|-------|---------|
| **1.8.1** | Interim local version bump only for kill-credit work; **not** a separate public release. Content is under **Fixed → Kill credit** above and in each branch
CHANGELOG.md §1.8.0. || **1.8.2** | Interim label only for vehicle/missile/rocket balance; **not** a separate public release. Content is under **Changed → Vehicle / missile / rocket balance** and **Fixed → Vehicle combat balance fixes** above, and in each branch
CHANGELOG.md §1.8.0. |Public version remains **
1.8.0**.- Date:** 2026-08-05
- Version:**
1.8.0 - Loaders:** Fabric / NeoForge · Minecraft
1.21.1and26.2
This is the **combined 1.8.0 release notes** for the whole workspace.
Each branch also keeps its own full history in:
| Module | Branch changelog |
|--------|------------------|
| NeoForge 1.21.1 |
Just-Enough-Guns-NeoForge-1.21.1/CHANGELOG.md || Fabric 1.21.1 |
Just-Enough-Guns-Fabric-1.21.1/CHANGELOG.md || NeoForge 26.2 |
Just-Enough-Guns-NeoForge-26.2/CHANGELOG.md || Fabric 26.2 |
Just-Enough-Guns-Fabric-26.2/CHANGELOG.md |Per-branch files may include loader-specific bullets; this document merges the common 1.8.0 story plus those specifics.
> Interim labels **1.8.1** / **1.8.2** were never separate public releases. Their work is part of **1.8.0**.
## Highlights
1. **SuperbWarfare-style special equipment** — drones, C4 / claymore / vest, Javelin & Igla, smoke denial, vehicle lock UI.
2. **Kill credit** — gun / rocket / explosive kills correctly credit the player ([#10](https://github.com/maoruiQa/just-enough-guns-neoforge/issues/10)).
3. **Vehicle / missile / rocket combat balance** — SW-aligned missile damage model, ballistic AP for missiles, retuned vehicle armor & HE modifiers, rocket numbers + tooltip fix.
## Added
- Ported SuperbWarfare-style special equipment into JEG: FPV drones with monitor control, C4 bombs (including remote/detonator variants), claymore mines, and a C4 vest wearable charge.
- Added the C4 Defuser tool for safely removing placed C4 charges, with durability-based uses.
- Added guided launchers **Javelin** and **Igla 9K38**, including lock-on fire, SW-aligned first-person poses/ADS, inventory icons, walk/sprint root motion, and full reload animation support.
- Added C4 drone FPV payload HUD with detonate guidance and a **KAMIKAZE** dive presentation for explosive drone runs.
- Added a C4 vest bomber gunner variant with configurable spawn rates so suicide-bomber pressure can be tuned per server.
- Added SW-style smoke screens that deny missile locks while active, including denser custom smoke particles and dedicated release audio.
- Added SW-style vehicle missile lock frames and seek audio so lockable targets get clear on-screen seek boxes and feedback.
- Soft-disabled natural Terror Phantom spawns by default to reduce unsolicited aerial boss pressure in normal worlds.
## Changed
- Set the module version to
1.8.0on all four maintained loaders. - Rebalanced guided missiles: retuned tracking/damage feel and allow unguided Javelin dumps when lock is not available.
- Improved anti-vehicle rocket performance against armored targets.
- Strengthened drone descent power cut and raised max drone descent speed by about 1.33x for snappier FPV kamikaze dives.
- Aligned drone camera pitch with SuperbWarfare FPV framing.
- Only draw lock boxes for missile/drone targets that are in range and have line of sight.
- Improved vehicle state sync with broader tracking coverage and a 256-block fallback for distant vehicles.
- (Fabric)** Hide the vanilla armor bar while riding a vehicle so vehicle HUDs stay readable.
### Vehicle / missile / rocket balance (1.8.0 combat pass)
- Rebalanced vehicle armor ratings and HE damage modifiers using SW-style
damage_modifierswith **strict damage-type matching** (no stacked explosion multipliers on a single hit). - Guided missiles use SW-aligned **direct hit + explosion falloff** (
SwStyleExplosion: diameter = 2R, quadratic damage percent). - Removed per-vehicle missile **entity multipliers** (e.g.
@javelin_missile * 0.8,@igla_9k38_missile * …); missile **direct hits** use the ballistic **armor piercing** system against vehicle part armor. - Rocket launcher combat values: **direct 150**, **blast 50**, blast radius **11**, **AP 10**.
- Rocket launcher tooltip shows real direct + blast damage (was incorrectly showing legacy GunStats
28). - Guided launcher (Javelin / Igla) tooltips mirror the rocket layout: real direct damage, blast damage, blast radius, and profile AP from
VehicleMissileProfile(GunStats damage was often 0/placeholder); seek range 256; headshot multiplier omitted for HE launchers. - Rocket / guided launcher tooltips now include blast radius (rocket **11**, Javelin **9**, Igla **6**).
- Raised LAV-150 HE vulnerability (vanilla explosion **\*7.5**, missile blast **\*2.5**).
- Lowered helicopter/aircraft HE multipliers: Mi-28 / AH-6 **\*1.75**, A-10 **\*2.0**.
- Aligned ported vehicle max health and armor fallback ratings closer to SuperbWarfare where applicable.
- Raised undermatch multipliers (~0.45–0.55) so non-penetrating hits still deal meaningful partial damage.
#### Missile combat table
| Weapon | Direct | Blast | Radius | AP |
|--------|--------|-------|--------|-----|
| Javelin | 500 | 120 | 9 | 14 |
| Igla | 260 | 90 | 6 | 11 |
| BMP-2 / TOW missile | 600 | 60 | 6 | 12 |
| 9M120 | 650 | 80 | 7 | 13 |
| KH-39 | 1100 | 180 | 12 | 15 |
| 9M336 | 260 | 90 | 6 | 11 |
| Rocket launcher | 150 | 50 | 11 | 10 |
#### Vehicle armor (fallback rating)
| Vehicle | HP | Rating | HE notes |
|---------|----|--------|----------|
| BMP-2 | 300 | 12 |
explosion * 6 || LAV-150 | 270 | 11 |
explosion * 7.5 / missile blast * 2.5 || Mi-28 | 350 | 10 |
explosion * 1.75 || AH-6 | 250 | 7.5 |
explosion * 1.75 || A-10 | 350 | 8 |
explosion * 2.0 || HPJ-11 | 350 | 10 | |
| Waveforce Tower | 400 | 12 | |
| Speedboat | 200 | 7 | |
| Truck | 250 | 4 | |
| Laser Tower | 100 | 8 | |
| Tom-6 | 40 | 6 | |
| Light Combat Vehicle | 80 | 6 | |
## Fixed
### Special equipment / vehicles / presentation
- Fixed drone FPV rubber-banding and missing pilot render during monitor control.
- Fixed missile/drone seek frames missing when targets were due north.
- Fixed helicopter rotor spin-down and engine sound continuing after dismount.
- Fixed guided launcher fire/lock handling, ADS raise, hand orientation, and inventory GUI presentation (including flat Igla icons that fill the item slot).
- Fixed special equipment audio, monitor link behavior, and payload HUD tip text; repaired related language JSON.
- Fixed vehicle missile and special-equipment presentation issues carried over from the special equipment port.
- (Fabric 1.21.1 / Fabric 26.2)** Fixed special-equipment entity scale, claymore facing, and related mixin/render targets for drone and seek frames where applicable.
- (NeoForge 26.2)** Fixed C4/claymore entity scale and claymore facing; fixed missile/decoy deferred render pose so projectiles keep correct scale; fixed GeckoLib v5 first-person guided launcher hip pose, ScreenProjection capture for HUD frames, and drone rotor bone spin.
### Kill credit ([#10](https://github.com/maoruiQa/just-enough-guns-neoforge/issues/10))
- Fixed gun / missile / grenade / molotov kills not counting for vanilla advancements, boss kill credit,
killed_by_playerloot, and modpack kill tracking. - Player-fired bullets use dedicated
jeg:bulletdamage type with the shooter as the causing entity, and setlastHurtByPlayerafter successful hits (1.21.1 path). - Explosive blast paths (rockets, vehicle cannons, grenades, molotovs) attribute player kill credit the same way.
- Fixed gun/missile kills not awarding Free the End /
MOB_KILLS; attribute player credit before damage, keep player as bullet causing entity (Ender Dragon), resolve multipart parts, and tagjeg:bulletasalways_hurts_ender_dragonswhere required. - (NeoForge / Fabric 26.2)** 26.x no longer relies on the old hurt-path
lastHurtByPlayeralone; credit is applied from the damage source on incoming damage and death, and weapon code attributes **before**hurtServer. Guided missiles use a player-attributed blast source, pre-credit nearby targets, and explicitly credit lock/direct-hit bosses (e.g. Ender Dragon) that can sit outside a tight blast AABB. Rifles no longer strip the player causing entity in creative for dragon hits.
### Vehicle combat balance fixes
- Fixed vehicle damage-modifier matching that stacked multiple explosion rules and could one-shot full-HP vehicles or nearly nullify rocket damage on airframes.
- Fixed rocket launcher item tooltip damage readout so it matches actual HE combat numbers (direct + blast).
- Fixed Javelin and Igla item tooltips so combat stats match
VehicleMissileProfileinstead of empty/placeholder GunStats values.
## Verification
| Module | Check |
|--------|--------|
| NeoForge 1.21.1 |
.\gradlew build || Fabric 1.21.1 |
.\gradlew build || NeoForge 26.2 |
.\gradlew compileJava / build || Fabric 26.2 |
.\gradlew build |## Modules / branches
| Module | Remote branch | Version |
|--------|---------------|---------|
| Fabric 26.2 |
fabric-26.2 | **1.8.0** || NeoForge 26.2 |
neoforge-26.2 | **1.8.0** || Fabric 1.21.1 |
fabric-1.21.1 | **1.8.0** || NeoForge 1.21.1 |
neoforge-1.21.1 | **1.8.0** |### Published jars (workspace
release/)jegn-1.8.0+fabric1.21.1.jarjegn-1.8.0+neoforge1.21.1.jarjegn-1.8.0+fabric26.2.jarjegn-1.8.0+neoforge26.2.jar
## Note on interim labels
| Label | Meaning |
|-------|---------|
| **1.8.1** | Interim local version bump only for kill-credit work; **not** a separate public release. Content is under **Fixed → Kill credit** above and in each branch
CHANGELOG.md §1.8.0. || **1.8.2** | Interim label only for vehicle/missile/rocket balance; **not** a separate public release. Content is under **Changed → Vehicle / missile / rocket balance** and **Fixed → Vehicle combat balance fixes** above, and in each branch
CHANGELOG.md §1.8.0. |Public version remains **
1.8.0**.## 1.7.4 - 2026-07-12
### Changed
- Set the module version to
1.7.4. - Made login intro messages configurable.
- Updated bulletproof helmet IV-VI textures and normalized the IV/V armor-layer UV framing.
- Scaled elite gunner chance by in-game day so advanced gunner pressure ramps later instead of appearing at a flat rate.
- Tuned gunner tactics and smoke concealment.
- Scaled late-game rocket launcher and vehicle spawn chances by in-game day, reaching maximum rocket chance by day 150 and the vehicle conversion cap by day 180.
### Added
- Added the Magazine Loader block for filling compatible magazines from loose ammo.
- Added a gun headshot damage multiplier path for gun damage resolution.
- Added the in-game JEGN server configuration UI.
- Added dense campfire smoke to smoke grenades.
### Fixed
- Fixed gunners and vehicles targeting invisible players.
- Fixed bulletproof vest hand UV texture rendering.
- Removed the enchantment glint from bulletproof armor.
- Restored bulletproof vest shoulder UV textures so shoulder armor renders in-game.
- Fixed machine gun belt visibility in third person.
- Fixed third-person rocket launcher missile visibility.
- Fixed light machine gun reload interruption.
- Fixed duplicate config screen background rendering.
- Fixed blurred server config labels.
- Guarded unregistered attack target memory.
- Fixed gunner spawn egg item colors so each gunner spawn egg better matches its vanilla mob family.
- Fixed animated gun draw lock handling so held actions are released consistently after the authored draw timing.
### Verification
- Passed
.\gradlew build.
## 1.7.4 - 2026-07-12
### Changed
- Set the module version to
1.7.4. - Made login intro messages configurable.
- Updated bulletproof helmet IV-VI textures and normalized the IV/V armor-layer UV framing.
- Scaled elite gunner chance by in-game day so advanced gunner pressure ramps later instead of appearing at a flat rate.
- Tuned gunner tactics and smoke concealment.
- Scaled late-game rocket launcher and vehicle spawn chances by in-game day, reaching maximum rocket chance by day 150 and the vehicle conversion cap by day 180.
### Added
- Added the Magazine Loader block for filling compatible magazines from loose ammo.
- Added a gun headshot damage multiplier path for gun damage resolution.
- Added the in-game JEGN server configuration UI.
- Added dense campfire smoke to smoke grenades.
### Fixed
- Fixed gunners and vehicles targeting invisible players.
- Fixed bulletproof vest hand UV texture rendering.
- Removed the enchantment glint from bulletproof armor.
- Restored bulletproof vest shoulder UV textures so shoulder armor renders in-game.
- Fixed machine gun belt visibility in third person.
- Fixed third-person rocket launcher missile visibility.
- Fixed light machine gun reload interruption.
- Fixed duplicate config screen background rendering.
- Fixed blurred server config labels.
- Guarded unregistered attack target memory.
- Fixed gunner spawn egg item colors so each gunner spawn egg better matches its vanilla mob family.
- Fixed animated gun draw lock handling so held actions are released consistently after the authored draw timing.
### Verification
- Passed
.\gradlew build.
## 1.7.4 - 2026-07-12
### Changed
- Set the module version to
1.7.4. - Made login intro messages configurable.
- Updated bulletproof helmet IV-VI textures and normalized the IV/V armor-layer UV framing.
- Scaled elite gunner chance by in-game day so advanced gunner pressure ramps later instead of appearing at a flat rate.
- Tuned gunner tactics and smoke concealment.
- Scaled late-game rocket launcher and vehicle spawn chances by in-game day, reaching maximum rocket chance by day 150 and the vehicle conversion cap by day 180.
### Added
- Added the Magazine Loader block for filling compatible magazines from loose ammo.
- Added a gun headshot damage multiplier path for gun damage resolution.
- Added the in-game JEGN server configuration UI.
- Added dense campfire smoke to smoke grenades.
### Fixed
- Fixed gunners and vehicles targeting invisible players.
- Fixed bulletproof vest hand UV texture rendering.
- Removed the enchantment glint from bulletproof armor.
- Restored bulletproof vest shoulder UV textures so shoulder armor renders in-game.
- Fixed machine gun belt visibility in third person.
- Fixed third-person rocket launcher missile visibility.
- Fixed light machine gun reload interruption.
- Fixed duplicate config screen background rendering.
- Fixed blurred server config labels.
- Guarded unregistered attack target memory.
- Fixed gunner spawn egg item colors so each gunner spawn egg better matches its vanilla mob family.
- Fixed animated gun draw lock handling so held actions are released consistently after the authored draw timing.
### Verification
- Passed
.\gradlew build.
## 1.7.4 - 2026-07-12
### Changed
- Set the module version to
1.7.4. - Made login intro messages configurable.
- Updated bulletproof helmet IV-VI textures and normalized the IV/V armor-layer UV framing.
- Scaled elite gunner chance by in-game day so advanced gunner pressure ramps later instead of appearing at a flat rate.
- Tuned gunner tactics and smoke concealment.
- Scaled late-game rocket launcher and vehicle spawn chances by in-game day, reaching maximum rocket chance by day 150 and the vehicle conversion cap by day 180.
### Added
- Added the Magazine Loader block for filling compatible magazines from loose ammo.
- Added a gun headshot damage multiplier path for gun damage resolution.
- Added the in-game JEGN server configuration UI.
- Added dense campfire smoke to smoke grenades.
### Fixed
- Fixed gunners and vehicles targeting invisible players.
- Fixed bulletproof vest hand UV texture rendering.
- Removed the enchantment glint from bulletproof armor.
- Restored bulletproof vest shoulder UV textures so shoulder armor renders in-game.
- Fixed machine gun belt visibility in third person.
- Fixed third-person rocket launcher missile visibility.
- Fixed light machine gun reload interruption.
- Fixed duplicate config screen background rendering.
- Fixed blurred server config labels.
- Guarded unregistered attack target memory.
- Fixed gunner spawn egg item colors so each gunner spawn egg better matches its vanilla mob family.
- Fixed animated gun draw lock handling so held actions are released consistently after the authored draw timing.
### Verification
- Passed
.\gradlew build.
## Changed
- Scaled elite gunner chance by in-game day so advanced gunner pressure ramps later instead of appearing at a flat rate.
- Tuned skeleton sniper gunners for the updated encounter balance.
## Added
- Added the Magazine Loader block for filling compatible magazines from loose ammo.
- Added a gun headshot damage multiplier path for gun damage resolution.
## Fixed
- Fixed gunner spawn egg item colors on the 1.21.1 maintained branches.
- Fixed third-person muzzle flash anchoring on the 26.2 maintained branches.
- Fixed animated gun draw lock handling so held actions release consistently after authored draw timing.
## Verification
- Passed
./gradlew buildin Fabric 1.21.1, Fabric 26.2, NeoForge 1.21.1, and NeoForge 26.2.
## Changed
- Scaled elite gunner chance by in-game day so advanced gunner pressure ramps later instead of appearing at a flat rate.
- Tuned skeleton sniper gunners for the updated encounter balance.
## Added
- Added the Magazine Loader block for filling compatible magazines from loose ammo.
- Added a gun headshot damage multiplier path for gun damage resolution.
## Fixed
- Fixed gunner spawn egg item colors on the 1.21.1 maintained branches.
- Fixed third-person muzzle flash anchoring on the 26.2 maintained branches.
- Fixed animated gun draw lock handling so held actions release consistently after authored draw timing.
## Verification
- Passed
./gradlew buildin Fabric 1.21.1, Fabric 26.2, NeoForge 1.21.1, and NeoForge 26.2.
## Changed
- Scaled elite gunner chance by in-game day so advanced gunner pressure ramps later instead of appearing at a flat rate.
- Tuned skeleton sniper gunners for the updated encounter balance.
## Added
- Added the Magazine Loader block for filling compatible magazines from loose ammo.
- Added a gun headshot damage multiplier path for gun damage resolution.
## Fixed
- Fixed gunner spawn egg item colors on the 1.21.1 maintained branches.
- Fixed third-person muzzle flash anchoring on the 26.2 maintained branches.
- Fixed animated gun draw lock handling so held actions release consistently after authored draw timing.
## Verification
- Passed
./gradlew buildin Fabric 1.21.1, Fabric 26.2, NeoForge 1.21.1, and NeoForge 26.2.
## Changed
- Scaled elite gunner chance by in-game day so advanced gunner pressure ramps later instead of appearing at a flat rate.
- Tuned skeleton sniper gunners for the updated encounter balance.
## Added
- Added the Magazine Loader block for filling compatible magazines from loose ammo.
- Added a gun headshot damage multiplier path for gun damage resolution.
## Fixed
- Fixed gunner spawn egg item colors on the 1.21.1 maintained branches.
- Fixed third-person muzzle flash anchoring on the 26.2 maintained branches.
- Fixed animated gun draw lock handling so held actions release consistently after authored draw timing.
## Verification
- Passed
./gradlew buildin Fabric 1.21.1, Fabric 26.2, NeoForge 1.21.1, and NeoForge 26.2.
## 1.7.2 - 2026-06-24
### Changed
- Set the module version to
1.7.2.
### Fixed
- Reworked ADS alignment for reflex, monocle, and holographic sights so their open-sight reticles use the Forge 1.20.1-derived scope camera position and each gun's scope mount transform.
- Kept telescopic sight and spyglass ADS corrections on their existing per-rifle path.
- Matched gun draw operation locks to each weapon's authored draw animation length, unlocking shoot, reload, inspect, melee, attachments, and ADS after 85% of the draw animation instead of a fixed delay.
- Preserved held fire and held action-key input through the draw unlock point while preventing released keys from firing late.
### Verification
- Passed
.\gradlew build.
## 1.7.2 - 2026-06-24
### Changed
- Set the module version to
1.7.2.
### Fixed
- Reworked ADS alignment for reflex, monocle, and holographic sights so their open-sight reticles use the Forge 1.20.1-derived scope camera position and each gun's scope mount transform.
- Kept telescopic sight and spyglass ADS corrections on their existing per-rifle path.
- Matched gun draw operation locks to each weapon's authored draw animation length, unlocking shoot, reload, inspect, melee, attachments, and ADS after 85% of the draw animation instead of a fixed delay.
- Preserved held fire and held action-key input through the draw unlock point while preventing released keys from firing late.
### Verification
- Passed
.\gradlew build.
## 1.7.2 - 2026-06-24
### Changed
- Set the module version to
1.7.2.
### Fixed
- Reworked ADS alignment for reflex, monocle, and holographic sights so their open-sight reticles use the Forge 1.20.1-derived scope camera position and each gun's scope mount transform.
- Kept telescopic sight and spyglass ADS corrections on their existing per-rifle path.
- Matched gun draw operation locks to each weapon's authored draw animation length, unlocking shoot, reload, inspect, melee, attachments, and ADS after 85% of the draw animation instead of a fixed delay.
- Preserved held fire and held action-key input through the draw unlock point while preventing released keys from firing late.
### Verification
- Passed
.\gradlew build.