Minecraft Wiki

Power is retained underwater[]

In Bedrock Edition (1.16 and 1.17 as far as I know), you can shoot a Power-enchanted bow into the water from above, and even though the range is reduced, if the arrow even touches a mob at the end of its reduced range, the arrow still delivers the full impact of damage as if the water wasn't there. I have a Power IV bow that I have used to kill guardians with two shots each, at a range that appeared to exceed 6-8 blocks, just as I would for above-ground mobs.

Does anyone know if Java Edition also retains the power of an arrow shot at the end of its underwater range? Amatulic (talk) 19:19, 18 June 2021 (UTC)

As far as I am aware, damage is calculated at the time of impact in Java edition (with Power adding to the damage multiplier which defaults to 2 in non-enchanted bows.) This means that damage can never be "kept" in any situation, because there was nothing to keep in the first place. Assuming that you're talking about firing directly into water from above and waiting for the arrow to reach terminal velocity in water, it should deal no more than 3 damage (1.5 hearts)- that is the minimum that a Power V bow can do. If you're talking about skimming the surface and effectively maximizing speed, it should be fairly consistent with Java- but in exclusively underwater situations (and a situation like you described in an earlier edit, where the arrow is completely stopped by a block) it should deal negligible damage.
If you could run the command /data get @e[type=minecraft:arrow,limit=1] after firing an arrow from a Power V bow, you could theoretically dig up the damage multiplier assuming it's calculated the same as in Java. It should be labeled "damage" and have a default of 2 from an unenchanted bow. If it doesn't exist, then I guess Bedrock just calculates damage differently?
You might have found a bug.
sev (talk) 01:52, 22 June 2021 (UTC)
Unfortunately, the /data command isn't available in Bedrock Edition. And yes, I meant firing down into the water from above. In survival mode, I managed to kill guardians that appeared to be at maximum range underwater in 2 shots. I'm trying it now from underwater in creative mode and my Power IV bow seems to be able to kill a guardian about 6 blocks away in one shot. It's hard to make an arrow slow down so that it falls vertically onto a guardian, but I managed to do that once and the guardian survived, so I figure maybe it's a binary thing; damage dealt is the draw power of the bow until the arrow reaches terminal velocity and then the damage is some minimum value.
Basically I was wondering if the damage that can be dealt by an arrow dissipates as it travels through water, like it would in real life. Amatulic (talk) 02:23, 22 June 2021 (UTC)
In Java Edition, damage dealt is entirely based on speed. As far as I can tell/remember (and since I am somewhat dumb and don't know math or java well enough to say for certain take it with a grain of salt), the engine takes the blocks per tick of the arrow in all three dimensions, adds them together, then takes the square root of that as the base damage with a floor of 0.5 and a maximum of the 32 bit integer limit. Then, it multiplies the resulting value by the damage tag of the arrow (which is 2.0 for normal bows and 4.5 for Power IV) and the result is the amount of damage dealt. Due to the fact that arrows have an extremely heightened drag multiplier in water (something like 0.5(speed per tick) as opposed to about 0.9(speed per tick)), they nearly always deal minimum damage.
I'm not sure how Bedrock calculates damage, but I can't imagine they'd radically change the method it's calculated to a stored variable at arrow creation. Sticking a guardian in a water tube with no AI (if it's possible) and then firing the arrow into the tube at varying levels of water blocks should help verify whether this is a "arrow keeps velocity and therefore damage" thing or a "arrow has a bugged damage value" thing. The most important thing in Java is velocity- I've read the code and confirmed it myself, as well as messed around with the values it's calculated by and confirmed it through that too. Maybe try cobwebs? Creeper in 1x2x1 tube, with a cobweb right overhead. Fire the arrow into the cobweb, which should stop most momentum other than downwards. Once the arrow drops, test how many it takes to kill the creeper?
Again, I have no idea how Bedrock does damage. Or most things actually. If there's a way to display mob health via scoreboard values, that'd help immensely with testing- but I don't know the best way to test it, so I can only tell you how I'd test it and what I know of Java Edition's arrow damage. sev (talk) 02:41, 22 June 2021 (UTC)
Thanks. Good idea about the tube. It made me think of a better test: have another person join the game, we both take a potion of water breathing, and then one person shoots arrows at the other person at different ranges. The target person can then see the number of hearts reduced from each arrow shot. That's the best alternative to measuring damage I can think of, when there is no command to measure damage in Bedrock Edition. Amatulic (talk) 11:13, 22 June 2021 (UTC)
Update: I did an underwater test with a Power IV bow, in which I hatched a drowned egg inside a fenced enclosure, then went back a few blocks, shot an arrow from my fully-charged bow upward so that it would lose its velocity and fall straight down onto the drowned. I had a lot of misses of course, but the drowned would die from two of the downward-floating arrows hitting it. I tried this on three drowned with the same result. A Power IV bow can normally kill a drowned in one hit on land. Two hits underwater is expected... but not from an arrow that loses all of its momentum. It seems, in Bedrock Edition at least, that the arrow's damage isn't affected by being slowed underwater. Amatulic (talk) 00:45, 25 July 2021 (UTC)
Wacky. Probably report it? What's the protocol for bug/edition specific information- trivia, or something?sev (talk) 03:02, 29 July 2021 (UTC)