A bow in your hand doesn't tell you what is about to fly out of it. That is decided by Shift, a split second before the shot.
A regular bow shoots arrows. This one shoots arrows, a rocket, or a flying sword, depending on what the player picks mid-fight. One item in hand replaces three tactics, and switching between them is Shift and a click. CloudUniversalBow is a donor bow for Paper 1.19.4 from the Cloud Delight studio.
Visually it is a plain vanilla bow (material BOW): the plugin marks it with a hidden PDC tag rather than a name, so renaming can't fake it. A "genuine" copy can only be issued by the command /ubow give. The texture uses CustomModelData 850001: with the resource pack the bow gets its own look, and without it, it looks like an ordinary bow. There is one model for all three modes, so the texture doesn't change. Only the lore and the actionbar show the active mode.
The item name is a pink "Universal Bow", and the lore lists all three modes line by line: the active one is marked with a green arrow, the others are dim gray, and the line is redrawn live on every switch. The "enchanted" glint is purely a status cosmetic: a hidden Unbreaking level with no gameplay effect. Bow damage and wear are calculated separately and entirely by hand. The standard attribute-modifier tooltip is hidden, since the bow doesn't need it anyway.
Shift+right-click on the bow in the main hand cycles the ammo type: Arrows → Rocket → Sword Projectile → Arrows. The click is fully swallowed: the draw doesn't start, and the gesture is recognized as a mode change. A 250 ms per-player debounce protects against a single physical click firing twice. The switch is confirmed by a sound and an actionbar message with the new mode name, and the item lore updates immediately.
A plain right-click without Shift is a normal draw, and you can hold the bow in either hand. A bow physically can't be drawn without an arrow (a client limitation, not the plugin's), so if the player has no arrows at all — no regular, tipped, or spectral ones — the plugin briefly slips in a service "phantom" arrow: into the offhand, or if that is occupied, into the first free inventory slot (it doesn't touch armor). The phantom carries its own tag and can't be picked up, and it removes itself after the shot (or after 100 ticks — about 5 seconds — if the player changed their mind). The safety net fails only if the offhand is occupied and all 36 inventory slots are full. Thanks to this trick, the Rocket and Sword Projectile modes shoot without a single arrow, so you can safely leave your quiver at home.
Draw strength (0–1, the normal right-click hold before release) applies to all three modes: it sets the projectile speed, and in Sword mode it also affects damage. Between shots there is a cooldown of 600 ms. The plugin also attaches a vanilla HUD bar right to the bow, a "swipe" animation over the icon, so the cooldown is visible on the hotbar and not only in the actionbar hint. A click during the cooldown just shows how many seconds are left and doesn't spend ammo or durability. Every successful shot, in any mode, takes 1 durability point (the bow's maximum is 384, so it lasts about 384 shots). This value is configurable: 0 means the bow doesn't wear out at all (not an "unbreakable" flag, the wear counter just doesn't grow), and anything above 1 breaks it faster (for example, 8 gives about 48 shots). When the limit is reached, the bow doesn't vanish silently: it breaks in the hand as usual, with the vanilla sound and shard particles. Ammo is always taken first from the offhand, then from the hotbar, then from the rest of the inventory.
Formally, the modes differ in what they spend and how they count the numbers, but in combat they feel like three different weapons under one button. A short summary is in the table, and below is each mode's mechanics in detail, with formulas and default numbers.
| Mode | What is spent | Projectile speed | Damage |
|---|---|---|---|
| Arrows | 1 arrow (or a free phantom) | draw strength × 3.0 | vanilla arrow formula + bow enchantment bonus |
| Rocket | 1 firework rocket | draw strength × 2.6, no lower than 0.4× | up to 9.0 at the center, radius 3 blocks, falling off toward the edge |
| Sword Projectile | 1 sword (consumed entirely) | draw strength × 2.6, no lower than 0.4× | (material base + Sharpness) × draw strength, max ×2.5 |
The only mode that spends real ammo rather than an abstract "unit", and that is exactly why it is the only one that can inherit effects. The plugin looks for an arrow in the inventory (offhand first, then hotbar, then the rest of the inventory) and checks its type: a spectral arrow spawns a glowing SpectralArrow, and a tipped arrow spawns a regular arrow but carries the same potion over to it. The base effect and all custom potion effects are taken from the original item before it is consumed and applied to the projectile. If there are no arrows at all, a free phantom one flies, which doesn't affect combat qualities.
Projectile speed = look direction × draw strength × 3.0 — exactly the vanilla bow formula at full charge. A full draw (strength exactly 1.0, string held for at least a second) additionally marks the shot as critical: the standard vanilla crit with a particle trail and bonus damage. Three bow enchantments work here: Power adds to arrow damage level × 0.5 + 0.5 (Power V is +3.0 on top of the arrow's base 2.0 damage), Flame sets the arrow itself on fire for a configurable time (by default 100 ticks, 5 seconds), so whatever it hits burns too, and Punch pushes the target with a force equal to the enchantment level. Vanilla multiplies the final damage by the arrow's flight speed, so a weak draw dampens the Power bonus too. A real arrow can be picked up after the shot, a phantom one never can, otherwise it would be an infinite duplicate out of thin air.
It spends one firework rocket, no matter what effects it was loaded with: the explosion visuals are set by the plugin (a red-orange "ball" with a twinkle), not by the contents of the spent item. The rocket flies forward in the look direction, like from a crossbow, not straight up as with vanilla firework use in the hand. Launch speed = draw strength × 2.6, but no lower than 0.4× — even a short tap-click will fly forward rather than drop at the shooter's feet. The explosion triggers on collision with a block or entity, or on its own if the rocket hasn't hit anything within 25 ticks (~1.25 seconds) of flight. The firework deliberately has a long "fuse" so that the vanilla detonation doesn't fire before this logic.
The blast radius is 3 blocks, and damage at the center is 9.0, then drops linearly toward the edge, but never below 1.0 even at the very border. A tactical detail: by default the explosion is not vanilla but a manual scan of nearby entities by straight-line distance, with no check for blocks between the center and the target. A thin wall doesn't protect you the way it does against real TNT: if the target is within the radius, the damage reaches around corners, and anyone hit is also knocked back from the center, harder the closer they are to the epicenter. By default the rocket can't break blocks, set targets on fire, or hurt the shooter with its own blast. All three are enabled separately in the config. With "break blocks" enabled, the plugin switches to a real vanilla explosion, and the game itself calculates damage and destruction. Of the bow enchantments the rocket reads nothing: no Power, no Flame, no Punch. It is a self-contained combat unit.
The most expensive mode, literally: it spends not a charge or a consumable but the whole sword — one item from the stack per shot, along with all the enchantments on it. It flies as a projectile with a swapped icon, so visually it is a sword spinning in flight, not something abstract, and the shot sound is a trident throw.
Damage = (material base damage + Sharpness bonus) × draw multiplier, up to ×2.5 at full draw. Base damage by material: wood and gold — 4.0, stone — 5.0, iron — 6.0, diamond — 7.0, netherite — 8.0. At full draw that is already 10.0 / 12.5 / 15.0 / 17.5 / 20.0 — with no enchantments at all. Sharpness is calculated with the vanilla formula (0.5 × level + 0.5) and added to the base damage BEFORE multiplying by the draw. Unlike the other enchantments of the mode, its bonus always scales with the draw, no exceptions. Smite (against any undead — zombies, skeletons, the wither, zombie and skeleton horses, phantoms and their kin) and Bane of Arthropods (against spiders, silverfish, endermites, and bees) are added separately on hit, since the target type is only known at the moment of impact. Whether this bonus is multiplied by the draw is decided by a separate toggle (yes by default). At full draw and high enchantment levels it noticeably inflates damage, so on combat servers with strong enchantments it is worth turning the toggle off. Fire Aspect sets the victim on fire for level × seconds-per-level × 20 ticks (4 seconds per level by default), regardless of the target type and the draw toggle.
A miss isn't punished twice: a projectile that hits a block plays the swing sound and impact particles but deals no damage. The sword is already spent, and the target is unharmed.
Enchantment counting is switched by one shared toggle. Turn it off, and both modes that can read enchantments ignore them completely. The two modes read different sets of enchantments:
| Mode | Where the enchantments come from | What counts |
|---|---|---|
| Arrows | from the bow | Power, Flame, Punch |
| Rocket | — | nothing, the mode doesn't read enchantments at all |
| Sword Projectile | from the sword, before it is consumed | Sharpness, Smite, Bane of Arthropods, Fire Aspect |
/ubow give [player] — give a Universal Bow (to yourself if no player is specified)./ubow reload — reload the config without a server restart./universalbow, /улук.universalbow.admin — access to /ubow (giving the bow, reloading the config). By default, operators only.All balance settings live in a single config.yml, applied with the command /ubow reload without a server restart. All in-game messages are in Russian and can be overridden line by line, including separate texts for running out of arrows, rockets, and swords, for the cooldown, and for the mode change.
| Key | Default | What it does |
|---|---|---|
custom-model-data | 850001 | Bow texture for the resource pack, one for all modes |
glint | true | Cosmetic enchantment glint, doesn't affect balance |
default-mode | ARROW | Mode of a freshly given bow |
cooldown-ms | 600 | Cooldown between shots + HUD bar on the bow |
durability-per-shot | 1 | Wear per shot; 0 — the bow is eternal |
phantom.cleanup-delay-ticks | 100 | How many ticks until a stuck phantom is removed if no shot was fired |
enchantments.enabled | true | Master switch for enchantment counting (Arrows and Sword) |
enchantments.scale-with-draw | true | Multiply the Smite/Bane bonus by the sword's draw strength |
enchantments.smite-per-level | 2.5 | Smite bonus per level |
enchantments.bane-per-level | 2.5 | Bane of Arthropods bonus per level |
enchantments.fire-aspect-seconds-per-level | 4 | Seconds of burning per Fire Aspect level |
arrow.max-speed | 3.0 | Arrow speed multiplier from draw |
arrow.flame-ticks | 100 | Igniting the arrow itself when the bow has Flame |
rocket.speed | 2.6 | Rocket launch speed multiplier |
rocket.power | 3.0 | Explosion radius, blocks |
rocket.damage | 9.0 | Damage at the center |
rocket.break-blocks | false | Vanilla explosion with block destruction instead of manual AoE |
rocket.set-fire | false | Set targets in the radius on fire |
rocket.hurt-shooter | false | Hurt the shooter with the blast |
rocket.max-life-ticks | 25 | Self-detonate if the rocket hit nothing |
rocket.fuse-power | 5 | Firework fuse length, lasts longer than max-life-ticks |
sword.max-multiplier | 2.5 | Damage multiplier at full draw |
sword.projectile-speed | 2.6 | Blade projectile speed |
sword.base-damage.* | 4.0–8.0 | Base damage by sword material (see the mode table) |
A separate block is the anti-leak license: it is on by default and requires a key and a license server address. If the license server is briefly unavailable, the plugin keeps running from the local cache for another 24 hours (configurable). For your own server, you can turn the protection off (license.enabled: false), and then neither the key nor the address is needed at all.
One bow, three ways to fear it — and Shift in the player's pocket decides which one to pick.