- Java 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
|
||
| .github/workflows | ||
| gradle/wrapper | ||
| src/main | ||
| .gitattributes | ||
| .gitignore | ||
| 07-ammo-system.md | ||
| AGENTS.md | ||
| build.gradle | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| README.md | ||
| settings.gradle | ||
| TEMPLATE_LICENSE.txt | ||
Escape From Somewhere — TaCZ Addon
A NeoForge 1.21.1 addon for Timeless and Classics Zero (TaCZ). It adds six ammunition and armor tiers, prevents mixed-tier magazines, and recalculates gun damage and armor durability loss from the difference between ammunition and armor tiers.
07-ammo-system.md is the authoritative specification for all gameplay rules.
Requirements and installation
- Minecraft 1.21.1
- NeoForge 21.1.249 or a compatible later version
- TaCZ 1.1.8 up to, but not including, 2.0.0
Place this mod's JAR and TaCZ's JAR in the instance's mods/ directory. Install the addon on the server and on every client: the ammo-selection UI, HUD, and item icons run on clients, while reloading, hit processing, and damage calculation are server-authoritative.
Gameplay
Six-tier ammunition and armor
Ammunition and armor have tiers from 1 through 6. An item without tier data is always treated as tier 1.
| Item | minecraft:custom_data key |
|---|---|
| TaCZ ammunition and ammo boxes | AmmoLevel |
| Armor and armor repair kits | ArmorLevel |
| A gun's current and selected loading tier | MagazineAmmoLevel |
Different tiers of the same caliber do not stack. A magazine and chamber can contain only one tier. TaCZ's Creative ammo tab provides six entries for every caliber. When a tier-specific texture exists, ammunition in inventories and containers has a colored tier label; otherwise it retains TaCZ's original icon. The addon no longer registers custom data components; existing items carrying the removed component data fall back to tier 1 and must be replaced or recreated.
Selecting and loading ammunition
Hold a gun and press Z to open TaCZ's gun-refit screen. The Ammo button at the lower right opens the tier list:
- In Survival, the list contains only tiers with compatible ammunition or ammo boxes in the inventory, along with the available count.
- Selecting a new tier returns the old-tier rounds from the chamber and magazine, empties the gun, and saves the new tier. Reload normally through TaCZ afterward.
- The
↶button beside the tier button unloads ammunition without changing the selected tier. - In Creative, all six tiers are shown and can be selected without carrying matching ammunition.
Reloading extracts only compatible ammunition at the selected tier. The HUD colors both the loaded-ammo and reserve-ammo counts by that tier; the reserve count includes only the same caliber and tier.
Damage and armor
On every TaCZ bullet hit, the addon compares the fired round's tier with the affected armor tier. Headshots use the helmet. Non-headshots select the chestplate 70% of the time, leggings 20%, and boots 10%; an unoccupied selected slot is treated as unarmored.
| Ammunition tier A vs. armor tier R | Player damage | Armor durability loss |
|---|---|---|
A ≥ R + 2 |
100% | 40% |
A = R + 1 |
100% | 50% |
A = R |
80% | 60% |
A = R - 1 |
40% | 80% |
A = R - 2 |
10% | 100% |
A ≤ R - 3 |
0%–5% | 60% |
Percentages use TaCZ damage after distance falloff and headshot multipliers. If armor lacks enough durability to absorb its calculated damage, the unabsorbed armor damage is dealt to the player. See the specification for full rules and rationale.
Server configuration
The server configuration exposes debug_damage, which defaults to false. When enabled, each gun hit writes the selected armor slot, ammunition and armor tiers, armor durability loss, and final damage to the server log for balancing and debugging.
Development
This project uses Java 21, NeoForge 1.21.1, and the Gradle Wrapper. The TaCZ API is a compile-time/development dependency only and is not bundled in the produced JAR.
./gradlew build --offline # Compile, test, and build the JAR
./gradlew runClient --offline # Start a development client
./gradlew runServer --offline # Start a development dedicated server
./gradlew runGameTestServer --offline
./gradlew runData --offline # Generate resources into src/generated/resources/
Build artifacts are written to build/libs/. Update 07-ammo-system.md whenever changing gameplay rules.
License
All Rights Reserved.