Bow Draw Timing and Ammunition 1.12.2 - Herbertofury/Advent-of-Ascension GitHub Wiki

Home · Historical weapon references · Crafting

Historical bows: draw timing and ammunition

Minecraft 1.12.2 / AoA 3.3.6. This guide covers 33 direct bow registrations, eight selected base methods, fifteen subclass/resource methods and 671 independent draw models. It is not a live accuracy, DPS or server-timing benchmark.

Four historical bow source-model portraits and modeled full-charge ticks

Craft ordinary Holly Arrows

Use a vertical shaped recipe: Iron Nugget above Stick above Holly Top Petals. The released recipe produces 4 Holly Arrows. Open the illustrated exact recipe.

The base ammo predicate accepts items in the HollyArrow class family. This is not the same as accepting every vanilla arrow. The inspected archive includes PopShot, SpectralHollyArrow and TippedHollyArrow subclasses; their presence alone does not establish identical effects, acquisition or crafting.

The base search checks offhand first, then main hand, then inventory slots. A different eligible arrow in your offhand can therefore be selected before one elsewhere in the inventory. It does not inspect arbitrary nested modded storage.

Inspect the actual draw textures

The complete 33-bow draw-state gallery shows each resting layer and all three released draw overrides. The same four-state sheet opens inside each item’s timing panel only when expanded. These are static source textures alongside the existing model preview, not a runtime animation claim.

How draw timing is calculated

The selected release path multiplies elapsed use ticks by the bow's draw-speed multiplier, using float arithmetic, then converts the result to an integer charge. Forge's onArrowLoose hook can change or cancel that charge. A negative hook result returns without firing.

For an unchanged hook, the local velocity calculation is:

  1. Divide integer charge by 20.
  2. Calculate (f² + 2f) / 3.
  3. Clamp the result to at most 1.
  4. Require a value of at least 0.1 for the selected firing branch.

A larger draw multiplier reaches the same modeled charge in fewer elapsed ticks. The values below simulate the released float32 operations and integer conversion for ticks 0–60. They do not include event overrides, input latency or server lag, and they are not an exact real-time promise.

Draw multiplier Earliest modeled eligible release · ticks First modeled full charge · ticks
0.75 4 27
0.8 4 25
0.85 4 24
0.9 4 23
1 3 20
1.1 3 19
1.2 3 17
1.3 3 16
1.5 2 14
2 2 10
3 1 7

Compare the 33 bow entries

Each name opens its own source-model portrait and lazy 1.12.2 bow inputs · draw timing and ammo panel. The historical bow family filter lists these entries together. Damage is a constructor input, not final health removed.

Bow and portrait Damage input Draw multiplier Durability Modeled full charge · ticks
Alacrity Bow 9.5 1 600 20
Ancient Bow 22 1 1510 20
Atlantic Bow 24.5 0.9 1480 23
Baron Bow 12 1.1 3000 19
Boreic Bow 14 1.3 1190 16
Daybreaker Bow 17.5 1 1180 20
Deep Bow 15.5 0.85 700 24
Explosive Bow 17 0.8 900 25
Haunted Bow 17 1 920 20
Ice Bow 8.5 1 580 20
Infernal Bow 11.5 1 710 20
Justice Bow 14.5 1 920 20
Lunar Bow 17.5 1 900 20
Mecha Bow 20.5 0.75 930 27
Nightmare Bow 13.5 1 890 20
Poison Bow 15 1 950 20
Predatious Bow 14 0.9 690 23
Primordial Bow 18.5 1 1350 20
Rosidian Bow 15.5 1 900 20
Runic Bow 20.5 1 1320 20
Screamer Bow 12 1 665 20
Shyregem Bow 7.5 3 1500 7
Skeletal Bow 8.5 1.5 720 14
Skydriver Bow 14.5 1 850 20
Slingshot 17 1 1200 20
Soulfire Bow 23.5 0.75 1100 27
Spectral Bow 12 1.3 900 16
Speed Bow 8 2 930 10
Sunshine Bow 27 0.8 1530 25
Toxin Bow 14 0.85 900 24
Void Bow 9 1.2 600 17
Weaken Bow 12.5 1 700 20
Wither Bow 13.5 1 835 20

Ammo, durability and enchantments in the base release path

The selected release method treats Creative mode or Infinity above zero as infiniteAmmo. If its ammo result is empty while that flag is true, it constructs a fallback Holly Arrow stack. This describes the release callback; inherited use-start behavior and other mods remain separate checks.

The base makeArrow method creates the arrow, applies launch and enchantment settings, damages the bow by one, and consumes one ammo item when consumeAmmo is true for a player. This occurs before the caller's world spawn attempt. The caller does not establish a rollback if the world rejects the projectile.

At full local velocity, it marks the arrow critical. Its Power adjustment adds 1.5 × Power level + 1 to the created arrow's damage field when Power is positive. That field adjustment is not measured final impact damage. Punch, Flame, pickup restrictions and subclass paths remain separate behavior; do not import a different Minecraft version's formula without checking.

Important bow-specific exceptions

Bow Checked behavior Practical implication / remaining check
Spectral Bow Its ammo getter constructs a Holly Arrow stack and makeArrow passes consumeAmmo=false to the base method. It does not use the ordinary inventory deduction in that path, but the base durability operation remains.
Slingshot Accepts Pop Shot or vanilla Flint and constructs EntityPopShot through its own makeArrow method. Use the correct ammo; its separate damage field and projectile path should not be silently treated as the ordinary bow implementation.
Daybreaker Bow When rotationPitch is strictly below −70, it attempts eight offset copy arrows in addition to returning the central arrow. The condition is an upward pitch check. Spawn attempts are not nine guaranteed hits, and copied arrows have DISALLOWED pickup status.
Nightmare Bow Attempts two sideways copy arrows and returns the central arrow. Copied arrows have CREATIVE_ONLY pickup status; do not assume every projectile can replenish Survival ammo.
Soulfire Bow Calls the Soul resource helper with requested amount 50; a successful result marks the arrow glowing. A glowing entity-impact hook can heal a living, non-dead shooter by 8 and then clears the glow. Resource buffs, disabled resources and Creative exemptions can change actual payment. Block impact clears the glow instead of granting that entity-impact heal.

The Daybreaker and Nightmare copy methods run after the base makeArrow call has handled consumption. Test the last specialized arrow in a stack and its copied metadata explicitly; do not assume that a depleted input stack still supplies all the original arrow information.

Soulfire's resource helper returns true without ordinary deduction when resources are disabled, and has a Creative exemption for this non-Rage resource. Otherwise it applies resource-fortitude modifiers, checks stock and subtracts the adjusted cost. “Requested 50” is therefore more accurate than promising an unconditional deduction of exactly 50 in every configuration.

Safe small-test checklist

  • Confirm this exact release and the intended ammo class before crafting a large supply.
  • Check the offhand for an eligible arrow that could take priority.
  • Treat the timing table as a baseline with an unchanged Forge hook; compare actual behavior in the target pack.
  • Test ordinary and last-item ammo stacks, Infinity, Creative, specialized arrows and subclass bows separately.
  • Check rejected spawns, durability and copied-arrow pickup behavior together.
  • For a remodel, preserve drawing, resource payment and special arrow behavior. A visual upgrade should not quietly substitute modern formulas or a mandatory reload system.

Released methods, 33 constructors, arrow class relationships, recipe and 671 draw models · Source-model crop provenance.