Please don't avoid the question. As I already said, indicates full charge has already been implemented in minecraft (if we are holding a block and we have a full charge, the texture under the crosshair does not appear.). But crosshair_attack_indicator_full, as the name suggests, is an ATTACK indicator, NOT a CHARGE INDICATOR. Check out the code! Just because jeb did a lot in 1.9 doesn't mean he did everything (including textures). crosshair_attack_indicator_full Was made to help players in the new pvp 1.9 system.
and why come up with some other icon to indicate the completeness of the scale. if the game when the scale is full, simply removes this scale, thereby showing that it is full.
SeaOfPixels, You say that it in no way applies to any type of attack (crit/sweep/sprint knockback), but only indicates how full the gauge is. But why then, if you look at the game code, this icon appears only if there is an entity in front of you and the entity must be alive. This clearly does not mean that this icon is intended to indicate that the scale is full. And why then does it not appear constantly but only in front of the entity.
https://transfiles.ru/ocijh link to download world
World seed is 3816023636521195985
I haven't played with mods or datapacks. I played vanilla 1.20.4. And this happened to me. Here's a video https://youtu.be/6ybTEibSDB8 . I'm sorry, but I don't know how to reproduce this bug. But I can say that I will transfer this world from 1.20.1 to 1.20.4. (I don't think it really affected this but I think it's worth saying). And the fact that I did not appear in this village and these chunk were not previously loaded.
still exist in 24w12a.
How to reproduce this bug? Have you played with mods or data packs? What is the world seed and coordinates of this villager?
Jiingy
Well, what we have at the moment is that we know for sure that CROSSHAIR_ATTACK_INDICATOR_FULL_TEXTURE appears only when AttackCooldownProgress >= 1.0f. This information is in InGameHud.java line 392. Next we have PlayerEntity.java, ENTITY_PLAYER_ATTACK_STRONG is executed only if bl == true.(line 1098) bl == true only if bl = h > 0.9f,(line 1034). ENTITY_PLAYER_ATTACK_CRIT is executed if bl3 == true bl3(line1043) contains the necessary condition bl. ENTITY_PLAYER_ATTACK_SWEEP == true if bl42 == true(line 1076). And here is the condition under which bl42 == true. if (bl && !bl3 && !bl2 && this.isOnGround() && d < (double)this.getMovementSpeed() && (itemStack = this.getStackInHand(Hand.MAIN_HAND)).getItem() instanceof SwordItem) {
bl42 = true;
}(line 1051)
Jiingy
Although your reasoning is very fascinating and I'm sure you spent a lot of time figuring out how it works, but you are wrong. And all your arguments are spoiled by the Minecraft code. Unfortunately, according to the rules, I cannot show this code, but you can generate it yourself and see for yourself in my words.
I expected that crosshair_attack_indicator_full would appear at the moment when critical and strong damage would be available - this moment when AttackCooldownProgress > 0.9f. However, it is not. crosshair_attack_indicator_full appears when AttackCooldownProgress >= 1.0f.
Here are the steps to reproduce this bug:
1. Go to Minecraft.
2. And hit the enitity between AttackCooldownProgress > 0.9f and <1.0f (you can use a sword or any other item)
3. And you will see that although a strong and critical attack is possible, at these moments the texture does not appear.
It seems to me that you used a mod or data pack that affected the generation in this place. I checked this in vanilla minecraft and found nothing.
I can confirm this bug exists on 1.21. If you take, for example, a diamond sword enchanted with sharpness 5 and a netherite sword not enchanted with any enchantments, then the diamond one will show 7 attack damage and the netherite 8, this should not happen. It's strange that this bug is in the release.