==================== com.ogaba.sa_combat.client.tooltip.BlueprintClientTooltipComponent ====================
Compiled from "BlueprintClientTooltipComponent.java"
public class com.ogaba.sa_combat.client.tooltip.BlueprintClientTooltipComponent implements net.minecraft.client.gui.screens.inventory.tooltip.ClientTooltipComponent {
  private static final net.minecraft.resources.ResourceLocation BLUEPRINT_BG;

  private static final int WIDTH;

  private static final int HEIGHT;

  private static final int PADDING;

  private static final int BG_TEXTURE_W;

  private static final int BG_TEXTURE_H;

  private static final int BG_RENDER_W;

  private static final int BG_RENDER_H;

  private final com.ogaba.sa_combat.item.BlueprintTooltipComponent data;

  private net.minecraft.world.item.ItemStack cachedResult;

  private boolean resolved;

  public com.ogaba.sa_combat.client.tooltip.BlueprintClientTooltipComponent(com.ogaba.sa_combat.item.BlueprintTooltipComponent);
    Code:
       0: aload_0
       1: invokespecial #47                 // Method java/lang/Object."<init>":()V
       4: aload_0
       5: getstatic     #52                 // Field net/minecraft/world/item/ItemStack.f_41583_:Lnet/minecraft/world/item/ItemStack;
       8: putfield      #54                 // Field cachedResult:Lnet/minecraft/world/item/ItemStack;
      11: aload_0
      12: aload_1
      13: putfield      #56                 // Field data:Lcom/ogaba/sa_combat/item/BlueprintTooltipComponent;
      16: return

  public int m_142103_();
    Code:
       0: bipush        88
       2: ireturn

  public int m_142069_(net.minecraft.client.gui.Font);
    Code:
       0: sipush        250
       3: ireturn

  public void m_183452_(net.minecraft.client.gui.Font, int, int, net.minecraft.client.gui.GuiGraphics);
    Code:
       0: aload_0
       1: invokevirtual #70                 // Method resolveResultStack:()Lnet/minecraft/world/item/ItemStack;
       4: astore        5
       6: iload_2
       7: iconst_4
       8: iadd
       9: istore        6
      11: iload_3
      12: bipush        8
      14: iadd
      15: istore        7
      17: aload_0
      18: aload         4
      20: iload         6
      22: iload         7
      24: invokevirtual #74                 // Method renderBlueprintBackground:(Lnet/minecraft/client/gui/GuiGraphics;II)V
      27: aload_0
      28: aload         4
      30: aload         5
      32: iload         6
      34: iload         7
      36: invokevirtual #78                 // Method renderResultItem:(Lnet/minecraft/client/gui/GuiGraphics;Lnet/minecraft/world/item/ItemStack;II)V
      39: iload         6
      41: bipush        82
      43: iadd
      44: bipush        9
      46: iadd
      47: istore        8
      49: iload_3
      50: bipush        10
      52: iadd
      53: istore        9
      55: sipush        250
      58: iload         8
      60: iload_2
      61: isub
      62: isub
      63: iconst_4
      64: isub
      65: iconst_2
      66: isub
      67: istore        10
      69: aload         5
      71: invokevirtual #82                 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z
      74: ifeq          125
      77: aload         4
      79: aload_1
      80: aload_0
      81: ldc           #84                 // String tooltip.sa_combat.blueprint.unknown
      83: ldc           #86                 // String Unknown Unlock
      85: invokevirtual #90                 // Method tr:(Ljava/lang/String;Ljava/lang/String;)Lnet/minecraft/network/chat/Component;
      88: iload         8
      90: iload         9
      92: ldc           #91                 // int 15724527
      94: iconst_0
      95: invokevirtual #97                 // Method net/minecraft/client/gui/GuiGraphics.m_280614_:(Lnet/minecraft/client/gui/Font;Lnet/minecraft/network/chat/Component;IIIZ)I
      98: pop
      99: aload         4
     101: aload_1
     102: aload_0
     103: ldc           #99                 // String tooltip.sa_combat.blueprint.check_data
     105: ldc           #101                // String Check blueprint data
     107: invokevirtual #90                 // Method tr:(Ljava/lang/String;Ljava/lang/String;)Lnet/minecraft/network/chat/Component;
     110: iload         8
     112: iload         9
     114: bipush        12
     116: iadd
     117: ldc           #102                // int 9211020
     119: iconst_0
     120: invokevirtual #97                 // Method net/minecraft/client/gui/GuiGraphics.m_280614_:(Lnet/minecraft/client/gui/Font;Lnet/minecraft/network/chat/Component;IIIZ)I
     123: pop
     124: return
     125: aload_0
     126: getfield      #56                 // Field data:Lcom/ogaba/sa_combat/item/BlueprintTooltipComponent;
     129: invokevirtual #110                // Method com/ogaba/sa_combat/item/BlueprintTooltipComponent.rarity:()Ljava/lang/String;
     132: invokestatic  #114                // Method prettyRarity:(Ljava/lang/String;)Ljava/lang/String;
     135: astore        11
     137: aload         11
     139: invokevirtual #119                // Method java/lang/String.isBlank:()Z
     142: ifeq          149
     145: iconst_0
     146: goto          157
     149: aload_1
     150: aload         11
     152: invokevirtual #123                // Method net/minecraft/client/gui/Font.m_92895_:(Ljava/lang/String;)I
     155: iconst_4
     156: iadd
     157: istore        12
     159: aload_1
     160: aload         5
     162: invokevirtual #127                // Method net/minecraft/world/item/ItemStack.m_41786_:()Lnet/minecraft/network/chat/Component;
     165: invokeinterface #132,  1          // InterfaceMethod net/minecraft/network/chat/Component.getString:()Ljava/lang/String;
     170: bipush        32
     172: iload         10
     174: iload         12
     176: isub
     177: invokestatic  #138                // Method java/lang/Math.max:(II)I
     180: invokestatic  #142                // Method trimToWidth:(Lnet/minecraft/client/gui/Font;Ljava/lang/String;I)Ljava/lang/String;
     183: astore        13
     185: aload         4
     187: aload_1
     188: aload         13
     190: iload         8
     192: iload         9
     194: ldc           #143                // int 16777215
     196: iconst_0
     197: invokevirtual #147                // Method net/minecraft/client/gui/GuiGraphics.m_280056_:(Lnet/minecraft/client/gui/Font;Ljava/lang/String;IIIZ)I
     200: pop
     201: aload         11
     203: invokevirtual #119                // Method java/lang/String.isBlank:()Z
     206: ifne          243
     209: aload         4
     211: aload_1
     212: aload         11
     214: iload         8
     216: iload         10
     218: iadd
     219: aload_1
     220: aload         11
     222: invokevirtual #123                // Method net/minecraft/client/gui/Font.m_92895_:(Ljava/lang/String;)I
     225: isub
     226: iload         9
     228: aload_0
     229: getfield      #56                 // Field data:Lcom/ogaba/sa_combat/item/BlueprintTooltipComponent;
     232: invokevirtual #110                // Method com/ogaba/sa_combat/item/BlueprintTooltipComponent.rarity:()Ljava/lang/String;
     235: invokestatic  #150                // Method rarityColor:(Ljava/lang/String;)I
     238: iconst_0
     239: invokevirtual #147                // Method net/minecraft/client/gui/GuiGraphics.m_280056_:(Lnet/minecraft/client/gui/Font;Ljava/lang/String;IIIZ)I
     242: pop
     243: iinc          9, 12
     246: aload         4
     248: aload_1
     249: aload_0
     250: ldc           #152                // String tooltip.sa_combat.blueprint.unlock
     252: ldc           #154                // String Unlock
     254: invokevirtual #90                 // Method tr:(Ljava/lang/String;Ljava/lang/String;)Lnet/minecraft/network/chat/Component;
     257: iload         8
     259: iload         9
     261: ldc           #155                // int 7788287
     263: iconst_0
     264: invokevirtual #97                 // Method net/minecraft/client/gui/GuiGraphics.m_280614_:(Lnet/minecraft/client/gui/Font;Lnet/minecraft/network/chat/Component;IIIZ)I
     267: pop
     268: iinc          9, 12
     271: aload         5
     273: invokevirtual #159                // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item;
     276: instanceof    #161                // class com/ogaba/sa_combat/combat/weapon/BaseMeleeWeapon
     279: ifeq          318
     282: aload_0
     283: aload_1
     284: aload         4
     286: aload         5
     288: iload         8
     290: iload         9
     292: iload         10
     294: invokevirtual #165                // Method drawCompactWeaponStats:(Lnet/minecraft/client/gui/Font;Lnet/minecraft/client/gui/GuiGraphics;Lnet/minecraft/world/item/ItemStack;III)V
     297: iinc          9, 13
     300: aload_0
     301: aload_1
     302: aload         4
     304: aload         5
     306: iload         8
     308: iload         9
     310: iload         10
     312: invokevirtual #168                // Method drawCompactAbilitySummary:(Lnet/minecraft/client/gui/Font;Lnet/minecraft/client/gui/GuiGraphics;Lnet/minecraft/world/item/ItemStack;III)V
     315: goto          340
     318: aload         4
     320: aload_1
     321: aload_0
     322: ldc           #170                // String tooltip.sa_combat.blueprint.recipe_unlock
     324: ldc           #172                // String Recipe Unlock
     326: invokevirtual #90                 // Method tr:(Ljava/lang/String;Ljava/lang/String;)Lnet/minecraft/network/chat/Component;
     329: iload         8
     331: iload         9
     333: ldc           #173                // int 12115967
     335: iconst_0
     336: invokevirtual #97                 // Method net/minecraft/client/gui/GuiGraphics.m_280614_:(Lnet/minecraft/client/gui/Font;Lnet/minecraft/network/chat/Component;IIIZ)I
     339: pop
     340: return

  private net.minecraft.world.item.ItemStack resolveResultStack();
    Code:
       0: aload_0
       1: getfield      #188                // Field resolved:Z
       4: ifeq          12
       7: aload_0
       8: getfield      #54                 // Field cachedResult:Lnet/minecraft/world/item/ItemStack;
      11: areturn
      12: aload_0
      13: iconst_1
      14: putfield      #188                // Field resolved:Z
      17: aload_0
      18: aload_0
      19: getfield      #56                 // Field data:Lcom/ogaba/sa_combat/item/BlueprintTooltipComponent;
      22: invokestatic  #194                // Method com/ogaba/sa_combat/client/tooltip/BlueprintPreviewResolverFromData.resolve:(Lcom/ogaba/sa_combat/item/BlueprintTooltipComponent;)Lnet/minecraft/world/item/ItemStack;
      25: putfield      #54                 // Field cachedResult:Lnet/minecraft/world/item/ItemStack;
      28: aload_0
      29: getfield      #54                 // Field cachedResult:Lnet/minecraft/world/item/ItemStack;
      32: areturn

  private void renderBlueprintBackground(net.minecraft.client.gui.GuiGraphics, int, int);
    Code:
       0: ldc           #195                // float 1.28125f
       2: fstore        4
       4: ldc           #196                // float 1.2745098f
       6: fstore        5
       8: aload_1
       9: invokevirtual #200                // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack;
      12: invokevirtual #205                // Method com/mojang/blaze3d/vertex/PoseStack.m_85836_:()V
      15: aload_1
      16: invokevirtual #200                // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack;
      19: iload_2
      20: i2f
      21: iload_3
      22: i2f
      23: fconst_0
      24: invokevirtual #209                // Method com/mojang/blaze3d/vertex/PoseStack.m_252880_:(FFF)V
      27: aload_1
      28: invokevirtual #200                // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack;
      31: fload         4
      33: fload         5
      35: fconst_1
      36: invokevirtual #212                // Method com/mojang/blaze3d/vertex/PoseStack.m_85841_:(FFF)V
      39: aload_1
      40: getstatic     #214                // Field BLUEPRINT_BG:Lnet/minecraft/resources/ResourceLocation;
      43: iconst_0
      44: iconst_0
      45: fconst_0
      46: fconst_0
      47: bipush        64
      49: bipush        51
      51: bipush        64
      53: bipush        51
      55: invokevirtual #218                // Method net/minecraft/client/gui/GuiGraphics.m_280163_:(Lnet/minecraft/resources/ResourceLocation;IIFFIIII)V
      58: aload_1
      59: invokevirtual #200                // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack;
      62: invokevirtual #221                // Method com/mojang/blaze3d/vertex/PoseStack.m_85849_:()V
      65: return

  private void renderResultItem(net.minecraft.client.gui.GuiGraphics, net.minecraft.world.item.ItemStack, int, int);
    Code:
       0: aload_2
       1: invokevirtual #82                 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z
       4: ifeq          8
       7: return
       8: ldc           #225                // float 2.85f
      10: fstore        5
      12: iload_3
      13: i2f
      14: ldc           #226                // float 41.0f
      16: fadd
      17: ldc           #227                // float 22.8f
      19: fsub
      20: invokestatic  #231                // Method java/lang/Math.round:(F)I
      23: iconst_2
      24: iadd
      25: istore        6
      27: iload         4
      29: i2f
      30: ldc           #232                // float 32.5f
      32: fadd
      33: ldc           #227                // float 22.8f
      35: fsub
      36: invokestatic  #231                // Method java/lang/Math.round:(F)I
      39: iconst_2
      40: iadd
      41: istore        7
      43: aload_1
      44: invokevirtual #200                // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack;
      47: invokevirtual #205                // Method com/mojang/blaze3d/vertex/PoseStack.m_85836_:()V
      50: aload_1
      51: invokevirtual #200                // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack;
      54: iload         6
      56: i2f
      57: iload         7
      59: i2f
      60: ldc           #233                // float 120.0f
      62: invokevirtual #209                // Method com/mojang/blaze3d/vertex/PoseStack.m_252880_:(FFF)V
      65: aload_1
      66: invokevirtual #200                // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack;
      69: ldc           #225                // float 2.85f
      71: ldc           #225                // float 2.85f
      73: fconst_1
      74: invokevirtual #212                // Method com/mojang/blaze3d/vertex/PoseStack.m_85841_:(FFF)V
      77: aload_1
      78: aload_2
      79: iconst_0
      80: iconst_0
      81: invokevirtual #237                // Method net/minecraft/client/gui/GuiGraphics.m_280480_:(Lnet/minecraft/world/item/ItemStack;II)V
      84: aload_1
      85: invokevirtual #200                // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack;
      88: invokevirtual #221                // Method com/mojang/blaze3d/vertex/PoseStack.m_85849_:()V
      91: return

  private void drawCompactWeaponStats(net.minecraft.client.gui.Font, net.minecraft.client.gui.GuiGraphics, net.minecraft.world.item.ItemStack, int, int, int);
    Code:
       0: aload_0
       1: aload_3
       2: getstatic     #246                // Field net/minecraft/world/entity/ai/attributes/Attributes.f_22281_:Lnet/minecraft/world/entity/ai/attributes/Attribute;
       5: invokevirtual #250                // Method sumAttribute:(Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/entity/ai/attributes/Attribute;)D
       8: dstore        7
      10: ldc2_w        #251                // double 4.0d
      13: aload_0
      14: aload_3
      15: getstatic     #255                // Field net/minecraft/world/entity/ai/attributes/Attributes.f_22283_:Lnet/minecraft/world/entity/ai/attributes/Attribute;
      18: invokevirtual #250                // Method sumAttribute:(Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/entity/ai/attributes/Attribute;)D
      21: dadd
      22: dstore        9
      24: ldc2_w        #256                // double 2.5d
      27: aload_0
      28: aload_3
      29: invokevirtual #261                // Method sumCombatRangeAttribute:(Lnet/minecraft/world/item/ItemStack;)D
      32: dadd
      33: dstore        11
      35: iload         4
      37: istore        13
      39: aload_0
      40: aload_1
      41: aload_2
      42: ldc_w         #263                // String �˺�
      45: dload         7
      47: invokestatic  #267                // Method formatNumber:(D)Ljava/lang/String;
      50: iload         13
      52: iload         5
      54: ldc_w         #268                // int -2598310
      57: invokevirtual #272                // Method drawCompactStat:(Lnet/minecraft/client/gui/Font;Lnet/minecraft/client/gui/GuiGraphics;Ljava/lang/String;Ljava/lang/String;III)I
      60: istore        13
      62: aload_0
      63: aload_1
      64: aload_2
      65: ldc_w         #274                // String ����
      68: dload         9
      70: invokestatic  #267                // Method formatNumber:(D)Ljava/lang/String;
      73: iload         13
      75: bipush        8
      77: iadd
      78: iload         5
      80: sipush        -14249
      83: invokevirtual #272                // Method drawCompactStat:(Lnet/minecraft/client/gui/Font;Lnet/minecraft/client/gui/GuiGraphics;Ljava/lang/String;Ljava/lang/String;III)I
      86: istore        13
      88: aload_0
      89: aload_1
      90: aload_2
      91: ldc_w         #276                // String ���
      94: dload         11
      96: invokestatic  #267                // Method formatNumber:(D)Ljava/lang/String;
      99: iload         13
     101: bipush        8
     103: iadd
     104: iload         5
     106: ldc_w         #277                // int -10106881
     109: invokevirtual #272                // Method drawCompactStat:(Lnet/minecraft/client/gui/Font;Lnet/minecraft/client/gui/GuiGraphics;Ljava/lang/String;Ljava/lang/String;III)I
     112: pop
     113: return

  private int drawCompactStat(net.minecraft.client.gui.Font, net.minecraft.client.gui.GuiGraphics, java.lang.String, java.lang.String, int, int, int);
    Code:
       0: aload_2
       1: aload_1
       2: aload_3
       3: iload         5
       5: iload         6
       7: ldc_w         #285                // int 11513775
      10: iconst_0
      11: invokevirtual #147                // Method net/minecraft/client/gui/GuiGraphics.m_280056_:(Lnet/minecraft/client/gui/Font;Ljava/lang/String;IIIZ)I
      14: pop
      15: iload         5
      17: aload_1
      18: aload_3
      19: invokevirtual #123                // Method net/minecraft/client/gui/Font.m_92895_:(Ljava/lang/String;)I
      22: iadd
      23: iconst_3
      24: iadd
      25: istore        8
      27: aload_2
      28: aload_1
      29: aload         4
      31: iload         8
      33: iload         6
      35: ldc           #143                // int 16777215
      37: iconst_0
      38: invokevirtual #147                // Method net/minecraft/client/gui/GuiGraphics.m_280056_:(Lnet/minecraft/client/gui/Font;Ljava/lang/String;IIIZ)I
      41: pop
      42: iload         8
      44: aload_1
      45: aload         4
      47: invokevirtual #123                // Method net/minecraft/client/gui/Font.m_92895_:(Ljava/lang/String;)I
      50: iadd
      51: istore        9
      53: aload_2
      54: iload         5
      56: iload         6
      58: bipush        9
      60: iadd
      61: iload         9
      63: iload         6
      65: bipush        10
      67: iadd
      68: iload         7
      70: invokevirtual #289                // Method net/minecraft/client/gui/GuiGraphics.m_280509_:(IIIII)V
      73: iload         9
      75: ireturn

  private void drawCompactAbilitySummary(net.minecraft.client.gui.Font, net.minecraft.client.gui.GuiGraphics, net.minecraft.world.item.ItemStack, int, int, int);
    Code:
       0: aload_3
       1: invokevirtual #159                // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item;
       4: astore        8
       6: aload         8
       8: instanceof    #161                // class com/ogaba/sa_combat/combat/weapon/BaseMeleeWeapon
      11: ifeq          29
      14: aload         8
      16: checkcast     #161                // class com/ogaba/sa_combat/combat/weapon/BaseMeleeWeapon
      19: astore        7
      21: aload         7
      23: invokevirtual #298                // Method com/ogaba/sa_combat/combat/weapon/BaseMeleeWeapon.getDefinition:()Lcom/ogaba/sa_combat/combat/weapon/WeaponDefinition;
      26: ifnonnull     30
      29: return
      30: aload         7
      32: invokevirtual #298                // Method com/ogaba/sa_combat/combat/weapon/BaseMeleeWeapon.getDefinition:()Lcom/ogaba/sa_combat/combat/weapon/WeaponDefinition;
      35: invokevirtual #304                // Method com/ogaba/sa_combat/combat/weapon/WeaponDefinition.abilities:()Ljava/util/List;
      38: astore        8
      40: aload         8
      42: invokeinterface #309,  1          // InterfaceMethod java/util/List.isEmpty:()Z
      47: ifeq          75
      50: aload_2
      51: aload_1
      52: aload_0
      53: ldc_w         #311                // String tooltip.sa_combat.blueprint.no_abilities
      56: ldc_w         #313                // String No abilities
      59: invokevirtual #90                 // Method tr:(Ljava/lang/String;Ljava/lang/String;)Lnet/minecraft/network/chat/Component;
      62: iload         4
      64: iload         5
      66: ldc_w         #314                // int 7303023
      69: iconst_0
      70: invokevirtual #97                 // Method net/minecraft/client/gui/GuiGraphics.m_280614_:(Lnet/minecraft/client/gui/Font;Lnet/minecraft/network/chat/Component;IIIZ)I
      73: pop
      74: return
      75: aload_2
      76: aload_1
      77: aload_0
      78: ldc_w         #316                // String tooltip.sa_combat.blueprint.on_hit
      81: ldc_w         #318                // String On Hit
      84: invokevirtual #90                 // Method tr:(Ljava/lang/String;Ljava/lang/String;)Lnet/minecraft/network/chat/Component;
      87: iload         4
      89: iload         5
      91: ldc_w         #319                // int 14271867
      94: iconst_0
      95: invokevirtual #97                 // Method net/minecraft/client/gui/GuiGraphics.m_280614_:(Lnet/minecraft/client/gui/Font;Lnet/minecraft/network/chat/Component;IIIZ)I
      98: pop
      99: iload         5
     101: bipush        11
     103: iadd
     104: istore        9
     106: iconst_2
     107: aload         8
     109: invokeinterface #322,  1          // InterfaceMethod java/util/List.size:()I
     114: invokestatic  #325                // Method java/lang/Math.min:(II)I
     117: istore        10
     119: iconst_0
     120: istore        11
     122: iload         11
     124: iload         10
     126: if_icmpge     165
     129: aload_0
     130: aload_1
     131: aload_2
     132: aload         8
     134: iload         11
     136: invokeinterface #329,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     141: checkcast     #331                // class com/ogaba/sa_combat/combat/system/AbilityInstance
     144: iload         4
     146: iload         9
     148: iload         11
     150: bipush        10
     152: imul
     153: iadd
     154: iload         6
     156: invokevirtual #335                // Method drawAbilityLine:(Lnet/minecraft/client/gui/Font;Lnet/minecraft/client/gui/GuiGraphics;Lcom/ogaba/sa_combat/combat/system/AbilityInstance;III)V
     159: iinc          11, 1
     162: goto          122
     165: aload         8
     167: invokeinterface #322,  1          // InterfaceMethod java/util/List.size:()I
     172: iload         10
     174: if_icmple     228
     177: aload         8
     179: invokeinterface #322,  1          // InterfaceMethod java/util/List.size:()I
     184: iload         10
     186: isub
     187: invokedynamic #347,  0            // InvokeDynamic #0:makeConcatWithConstants:(I)Ljava/lang/String;
     192: astore        11
     194: aload_2
     195: aload_1
     196: aload         11
     198: iload         4
     200: iload         6
     202: iadd
     203: aload_1
     204: aload         11
     206: invokevirtual #123                // Method net/minecraft/client/gui/Font.m_92895_:(Ljava/lang/String;)I
     209: isub
     210: iload         9
     212: iload         10
     214: iconst_1
     215: isub
     216: bipush        10
     218: imul
     219: iadd
     220: ldc_w         #348                // int 7829367
     223: iconst_0
     224: invokevirtual #147                // Method net/minecraft/client/gui/GuiGraphics.m_280056_:(Lnet/minecraft/client/gui/Font;Ljava/lang/String;IIIZ)I
     227: pop
     228: return

  private void drawAbilityLine(net.minecraft.client.gui.Font, net.minecraft.client.gui.GuiGraphics, com.ogaba.sa_combat.combat.system.AbilityInstance, int, int, int);
    Code:
       0: aload_3
       1: invokevirtual #359                // Method com/ogaba/sa_combat/combat/system/AbilityInstance.type:()Lcom/ogaba/sa_combat/combat/system/AbilityType;
       4: invokestatic  #365                // Method com/ogaba/sa_combat/combat/system/SACombatTextIcons.abilityIcon:(Lcom/ogaba/sa_combat/combat/system/AbilityType;)Lnet/minecraft/network/chat/MutableComponent;
       7: astore        7
       9: aload_0
      10: aload_3
      11: invokevirtual #369                // Method abilityDisplayName:(Lcom/ogaba/sa_combat/combat/system/AbilityInstance;)Ljava/lang/String;
      14: aload_3
      15: invokevirtual #372                // Method com/ogaba/sa_combat/combat/system/AbilityInstance.tier:()I
      18: invokestatic  #377                // Method com/ogaba/sa_combat/util/TextFormatUtil.tierRoman:(I)Ljava/lang/String;
      21: invokedynamic #382,  0            // InvokeDynamic #1:makeConcatWithConstants:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
      26: astore        8
      28: aload_1
      29: aload         8
      31: bipush        20
      33: iload         6
      35: bipush        14
      37: isub
      38: invokestatic  #138                // Method java/lang/Math.max:(II)I
      41: invokestatic  #142                // Method trimToWidth:(Lnet/minecraft/client/gui/Font;Ljava/lang/String;I)Ljava/lang/String;
      44: astore        9
      46: aload_2
      47: aload_1
      48: aload         7
      50: iload         4
      52: iload         5
      54: iconst_m1
      55: iconst_0
      56: invokevirtual #97                 // Method net/minecraft/client/gui/GuiGraphics.m_280614_:(Lnet/minecraft/client/gui/Font;Lnet/minecraft/network/chat/Component;IIIZ)I
      59: pop
      60: aload_2
      61: aload_1
      62: aload         9
      64: iload         4
      66: bipush        13
      68: iadd
      69: iload         5
      71: aload_0
      72: aload_3
      73: invokevirtual #386                // Method abilityColor:(Lcom/ogaba/sa_combat/combat/system/AbilityInstance;)I
      76: iconst_0
      77: invokevirtual #147                // Method net/minecraft/client/gui/GuiGraphics.m_280056_:(Lnet/minecraft/client/gui/Font;Ljava/lang/String;IIIZ)I
      80: pop
      81: return

  private net.minecraft.network.chat.Component tr(java.lang.String, java.lang.String);
    Code:
       0: aload_1
       1: invokestatic  #396                // InterfaceMethod net/minecraft/network/chat/Component.m_237115_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent;
       4: astore_3
       5: aload_3
       6: invokeinterface #132,  1          // InterfaceMethod net/minecraft/network/chat/Component.getString:()Ljava/lang/String;
      11: aload_1
      12: invokevirtual #400                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
      15: ifeq          25
      18: aload_2
      19: invokestatic  #403                // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent;
      22: goto          26
      25: aload_3
      26: areturn

  private java.lang.String abilityDisplayName(com.ogaba.sa_combat.combat.system.AbilityInstance);
    Code:
       0: getstatic     #410                // Field com/ogaba/sa_combat/client/tooltip/BlueprintClientTooltipComponent$1.$SwitchMap$com$ogaba$sa_combat$combat$system$AbilityType:[I
       3: aload_1
       4: invokevirtual #359                // Method com/ogaba/sa_combat/combat/system/AbilityInstance.type:()Lcom/ogaba/sa_combat/combat/system/AbilityType;
       7: invokevirtual #415                // Method com/ogaba/sa_combat/combat/system/AbilityType.ordinal:()I
      10: iaload
      11: tableswitch   { // 1 to 4

                     1: 48

                     2: 54

                     3: 60

                     4: 66
               default: 40
          }
      40: new           #417                // class java/lang/IncompatibleClassChangeError
      43: dup
      44: invokespecial #418                // Method java/lang/IncompatibleClassChangeError."<init>":()V
      47: athrow
      48: ldc_w         #420                // String ��Ѫ
      51: goto          69
      54: ldc_w         #422                // String ���
      57: goto          69
      60: ldc_w         #424                // String ���
      63: goto          69
      66: ldc_w         #426                // String ����
      69: areturn

  private int abilityColor(com.ogaba.sa_combat.combat.system.AbilityInstance);
    Code:
       0: getstatic     #410                // Field com/ogaba/sa_combat/client/tooltip/BlueprintClientTooltipComponent$1.$SwitchMap$com$ogaba$sa_combat$combat$system$AbilityType:[I
       3: aload_1
       4: invokevirtual #359                // Method com/ogaba/sa_combat/combat/system/AbilityInstance.type:()Lcom/ogaba/sa_combat/combat/system/AbilityType;
       7: invokevirtual #415                // Method com/ogaba/sa_combat/combat/system/AbilityType.ordinal:()I
      10: iaload
      11: tableswitch   { // 1 to 4

                     1: 48

                     2: 54

                     3: 60

                     4: 66
               default: 40
          }
      40: new           #417                // class java/lang/IncompatibleClassChangeError
      43: dup
      44: invokespecial #418                // Method java/lang/IncompatibleClassChangeError."<init>":()V
      47: athrow
      48: ldc_w         #428                // int -42406
      51: goto          69
      54: ldc_w         #429                // int -11147009
      57: goto          69
      60: sipush        -10934
      63: goto          69
      66: ldc_w         #430                // int -5011201
      69: ireturn

  private double sumCombatRangeAttribute(net.minecraft.world.item.ItemStack);
    Code:
       0: getstatic     #436                // Field net/minecraftforge/registries/ForgeRegistries.ATTRIBUTES:Lnet/minecraftforge/registries/IForgeRegistry;
       3: new           #438                // class net/minecraft/resources/ResourceLocation
       6: dup
       7: ldc_w         #440                // String bettercombat
      10: ldc_w         #442                // String attack_range
      13: invokespecial #445                // Method net/minecraft/resources/ResourceLocation."<init>":(Ljava/lang/String;Ljava/lang/String;)V
      16: invokeinterface #451,  2          // InterfaceMethod net/minecraftforge/registries/IForgeRegistry.getValue:(Lnet/minecraft/resources/ResourceLocation;)Ljava/lang/Object;
      21: checkcast     #453                // class net/minecraft/world/entity/ai/attributes/Attribute
      24: astore_2
      25: aload_2
      26: ifnull        36
      29: aload_0
      30: aload_1
      31: aload_2
      32: invokevirtual #250                // Method sumAttribute:(Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/entity/ai/attributes/Attribute;)D
      35: dreturn
      36: aload_0
      37: aload_1
      38: getstatic     #459                // Field net/minecraftforge/common/ForgeMod.ENTITY_REACH:Lnet/minecraftforge/registries/RegistryObject;
      41: invokevirtual #464                // Method net/minecraftforge/registries/RegistryObject.get:()Ljava/lang/Object;
      44: checkcast     #453                // class net/minecraft/world/entity/ai/attributes/Attribute
      47: invokevirtual #250                // Method sumAttribute:(Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/entity/ai/attributes/Attribute;)D
      50: dreturn

  private double sumAttribute(net.minecraft.world.item.ItemStack, net.minecraft.world.entity.ai.attributes.Attribute);
    Code:
       0: aload_1
       1: getstatic     #471                // Field net/minecraft/world/entity/EquipmentSlot.MAINHAND:Lnet/minecraft/world/entity/EquipmentSlot;
       4: invokevirtual #475                // Method net/minecraft/world/item/ItemStack.m_41638_:(Lnet/minecraft/world/entity/EquipmentSlot;)Lcom/google/common/collect/Multimap;
       7: aload_2
       8: invokeinterface #480,  2          // InterfaceMethod com/google/common/collect/Multimap.get:(Ljava/lang/Object;)Ljava/util/Collection;
      13: invokeinterface #486,  1          // InterfaceMethod java/util/Collection.stream:()Ljava/util/stream/Stream;
      18: invokedynamic #504,  0            // InvokeDynamic #2:test:()Ljava/util/function/Predicate;
      23: invokeinterface #510,  2          // InterfaceMethod java/util/stream/Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
      28: invokedynamic #523,  0            // InvokeDynamic #3:applyAsDouble:()Ljava/util/function/ToDoubleFunction;
      33: invokeinterface #527,  2          // InterfaceMethod java/util/stream/Stream.mapToDouble:(Ljava/util/function/ToDoubleFunction;)Ljava/util/stream/DoubleStream;
      38: invokeinterface #532,  1          // InterfaceMethod java/util/stream/DoubleStream.sum:()D
      43: dreturn

  private static java.lang.String prettyRarity(java.lang.String);
    Code:
       0: aload_0
       1: ifnull        11
       4: aload_0
       5: invokevirtual #119                // Method java/lang/String.isBlank:()Z
       8: ifeq          15
      11: ldc_w         #535                // String
      14: areturn
      15: aload_0
      16: bipush        95
      18: bipush        32
      20: invokevirtual #539                // Method java/lang/String.replace:(CC)Ljava/lang/String;
      23: invokevirtual #542                // Method java/lang/String.trim:()Ljava/lang/String;
      26: getstatic     #548                // Field java/util/Locale.ROOT:Ljava/util/Locale;
      29: invokevirtual #552                // Method java/lang/String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
      32: astore_1
      33: new           #554                // class java/lang/StringBuilder
      36: dup
      37: invokespecial #555                // Method java/lang/StringBuilder."<init>":()V
      40: astore_2
      41: aload_1
      42: ldc_w         #557                // String
      45: invokevirtual #561                // Method java/lang/String.split:(Ljava/lang/String;)[Ljava/lang/String;
      48: astore_3
      49: aload_3
      50: arraylength
      51: istore        4
      53: iconst_0
      54: istore        5
      56: iload         5
      58: iload         4
      60: if_icmpge     123
      63: aload_3
      64: iload         5
      66: aaload
      67: astore        6
      69: aload         6
      71: invokevirtual #119                // Method java/lang/String.isBlank:()Z
      74: ifeq          80
      77: goto          117
      80: aload_2
      81: invokevirtual #566                // Method java/lang/StringBuilder.length:()I
      84: ifle          94
      87: aload_2
      88: bipush        32
      90: invokevirtual #570                // Method java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder;
      93: pop
      94: aload_2
      95: aload         6
      97: iconst_0
      98: invokevirtual #574                // Method java/lang/String.charAt:(I)C
     101: invokestatic  #580                // Method java/lang/Character.toUpperCase:(C)C
     104: invokevirtual #570                // Method java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder;
     107: aload         6
     109: iconst_1
     110: invokevirtual #583                // Method java/lang/String.substring:(I)Ljava/lang/String;
     113: invokevirtual #586                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     116: pop
     117: iinc          5, 1
     120: goto          56
     123: aload_2
     124: invokevirtual #589                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     127: areturn

  private static int rarityColor(java.lang.String);
    Code:
       0: aload_0
       1: ifnonnull     8
       4: ldc_w         #594                // int 12434877
       7: ireturn
       8: aload_0
       9: getstatic     #548                // Field java/util/Locale.ROOT:Ljava/util/Locale;
      12: invokevirtual #552                // Method java/lang/String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
      15: astore_1
      16: iconst_m1
      17: istore_2
      18: aload_1
      19: invokevirtual #597                // Method java/lang/String.hashCode:()I
      22: lookupswitch  { // 6

           -2081562821: 140

           -1354814997: 80

            -840528943: 155

            -468311612: 95

               3119877: 125

               3493026: 110
               default: 167
          }
      80: aload_1
      81: ldc_w         #599                // String ��ͨ
      84: invokevirtual #400                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
      87: ifeq          167
      90: iconst_0
      91: istore_2
      92: goto          167
      95: aload_1
      96: ldc_w         #601                // String ����
      99: invokevirtual #400                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
     102: ifeq          167
     105: iconst_1
     106: istore_2
     107: goto          167
     110: aload_1
     111: ldc_w         #603                // String ϡ��
     114: invokevirtual #400                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
     117: ifeq          167
     120: iconst_2
     121: istore_2
     122: goto          167
     125: aload_1
     126: ldc_w         #605                // String ʷʫ
     129: invokevirtual #400                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
     132: ifeq          167
     135: iconst_3
     136: istore_2
     137: goto          167
     140: aload_1
     141: ldc_w         #607                // String ��˵
     144: invokevirtual #400                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
     147: ifeq          167
     150: iconst_4
     151: istore_2
     152: goto          167
     155: aload_1
     156: ldc_w         #609                // String ����
     159: invokevirtual #400                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
     162: ifeq          167
     165: iconst_5
     166: istore_2
     167: iload_2
     168: tableswitch   { // 0 to 5

                     0: 208

                     1: 214

                     2: 220

                     3: 226

                     4: 232

                     5: 238
               default: 244
          }
     208: ldc_w         #594                // int 12434877
     211: goto          247
     214: ldc_w         #610                // int 7591543
     217: goto          247
     220: ldc_w         #611                // int 5941247
     223: goto          247
     226: ldc_w         #612                // int 11766015
     229: goto          247
     232: ldc_w         #613                // int 16757051
     235: goto          247
     238: ldc_w         #614                // int 16734962
     241: goto          247
     244: ldc_w         #594                // int 12434877
     247: ireturn

  private static java.lang.String formatNumber(double);
    Code:
       0: dload_0
       1: dload_0
       2: invokestatic  #618                // Method java/lang/Math.rint:(D)D
       5: dsub
       6: invokestatic  #621                // Method java/lang/Math.abs:(D)D
       9: ldc2_w        #622                // double 0.001d
      12: dcmpg
      13: ifge          25
      16: dload_0
      17: invokestatic  #618                // Method java/lang/Math.rint:(D)D
      20: d2i
      21: invokestatic  #626                // Method java/lang/String.valueOf:(I)Ljava/lang/String;
      24: areturn
      25: getstatic     #548                // Field java/util/Locale.ROOT:Ljava/util/Locale;
      28: ldc_w         #628                // String %.1f
      31: iconst_1
      32: anewarray     #4                  // class java/lang/Object
      35: dup
      36: iconst_0
      37: dload_0
      38: invokestatic  #633                // Method java/lang/Double.valueOf:(D)Ljava/lang/Double;
      41: aastore
      42: invokestatic  #637                // Method java/lang/String.format:(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
      45: areturn

  private static java.lang.String trimToWidth(net.minecraft.client.gui.Font, java.lang.String, int);
    Code:
       0: aload_0
       1: aload_1
       2: invokevirtual #123                // Method net/minecraft/client/gui/Font.m_92895_:(Ljava/lang/String;)I
       5: iload_2
       6: if_icmpgt     11
       9: aload_1
      10: areturn
      11: ldc_w         #639                // String ...
      14: astore_3
      15: aload_1
      16: invokevirtual #640                // Method java/lang/String.length:()I
      19: istore        4
      21: iload         4
      23: ifle          53
      26: aload_0
      27: aload_1
      28: iconst_0
      29: iload         4
      31: invokevirtual #643                // Method java/lang/String.substring:(II)Ljava/lang/String;
      34: aload_3
      35: invokedynamic #646,  0            // InvokeDynamic #4:makeConcatWithConstants:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
      40: invokevirtual #123                // Method net/minecraft/client/gui/Font.m_92895_:(Ljava/lang/String;)I
      43: iload_2
      44: if_icmple     53
      47: iinc          4, -1
      50: goto          21
      53: aload_1
      54: iconst_0
      55: iconst_0
      56: iload         4
      58: invokestatic  #138                // Method java/lang/Math.max:(II)I
      61: invokevirtual #643                // Method java/lang/String.substring:(II)Ljava/lang/String;
      64: aload_3
      65: invokedynamic #646,  0            // InvokeDynamic #4:makeConcatWithConstants:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
      70: areturn

  private static boolean lambda$sumAttribute$0(net.minecraft.world.entity.ai.attributes.AttributeModifier);
    Code:
       0: aload_0
       1: invokevirtual #653                // Method net/minecraft/world/entity/ai/attributes/AttributeModifier.m_22217_:()Lnet/minecraft/world/entity/ai/attributes/AttributeModifier$Operation;
       4: getstatic     #657                // Field net/minecraft/world/entity/ai/attributes/AttributeModifier$Operation.ADDITION:Lnet/minecraft/world/entity/ai/attributes/AttributeModifier$Operation;
       7: if_acmpne     14
      10: iconst_1
      11: goto          15
      14: iconst_0
      15: ireturn

  static {};
    Code:
       0: new           #438                // class net/minecraft/resources/ResourceLocation
       3: dup
       4: ldc_w         #662                // String sa_combat
       7: ldc_w         #664                // String textures/gui/arsenal_table/blueprint_bg.png
      10: invokespecial #445                // Method net/minecraft/resources/ResourceLocation."<init>":(Ljava/lang/String;Ljava/lang/String;)V
      13: putstatic     #214                // Field BLUEPRINT_BG:Lnet/minecraft/resources/ResourceLocation;
      16: return
}


==================== com.ogaba.sa_combat.item.BlueprintTooltipComponent ====================
Compiled from "BlueprintTooltipComponent.java"
public final class com.ogaba.sa_combat.item.BlueprintTooltipComponent extends java.lang.Record implements net.minecraft.world.inventory.tooltip.TooltipComponent {
  private final net.minecraft.resources.ResourceLocation blueprintId;

  private final net.minecraft.resources.ResourceLocation unlocks;

  private final java.lang.String rarity;

  public com.ogaba.sa_combat.item.BlueprintTooltipComponent(net.minecraft.resources.ResourceLocation, net.minecraft.resources.ResourceLocation, java.lang.String);
    Code:
       0: aload_0
       1: invokespecial #23                 // Method java/lang/Record."<init>":()V
       4: aload_0
       5: aload_1
       6: putfield      #25                 // Field blueprintId:Lnet/minecraft/resources/ResourceLocation;
       9: aload_0
      10: aload_2
      11: putfield      #27                 // Field unlocks:Lnet/minecraft/resources/ResourceLocation;
      14: aload_0
      15: aload_3
      16: putfield      #29                 // Field rarity:Ljava/lang/String;
      19: return

  public final java.lang.String toString();
    Code:
       0: aload_0
       1: invokedynamic #48,  0             // InvokeDynamic #0:toString:(Lcom/ogaba/sa_combat/item/BlueprintTooltipComponent;)Ljava/lang/String;
       6: areturn

  public final int hashCode();
    Code:
       0: aload_0
       1: invokedynamic #53,  0             // InvokeDynamic #0:hashCode:(Lcom/ogaba/sa_combat/item/BlueprintTooltipComponent;)I
       6: ireturn

  public final boolean equals(java.lang.Object);
    Code:
       0: aload_0
       1: aload_1
       2: invokedynamic #58,  0             // InvokeDynamic #0:equals:(Lcom/ogaba/sa_combat/item/BlueprintTooltipComponent;Ljava/lang/Object;)Z
       7: ireturn

  public net.minecraft.resources.ResourceLocation blueprintId();
    Code:
       0: aload_0
       1: getfield      #25                 // Field blueprintId:Lnet/minecraft/resources/ResourceLocation;
       4: areturn

  public net.minecraft.resources.ResourceLocation unlocks();
    Code:
       0: aload_0
       1: getfield      #27                 // Field unlocks:Lnet/minecraft/resources/ResourceLocation;
       4: areturn

  public java.lang.String rarity();
    Code:
       0: aload_0
       1: getfield      #29                 // Field rarity:Ljava/lang/String;
       4: areturn
}


==================== com.ogaba.sa_combat.item.BlueprintItem ====================
Compiled from "BlueprintItem.java"
public class com.ogaba.sa_combat.item.BlueprintItem extends net.minecraft.world.item.Item {
  public static final java.lang.String ROOT;

  public static final java.lang.String ID;

  public static final java.lang.String NAME;

  public static final java.lang.String UNLOCKS;

  public static final java.lang.String RARITY;

  private final net.minecraft.resources.ResourceLocation fixedId;

  private final net.minecraft.resources.ResourceLocation fixedUnlocks;

  private final java.lang.String fixedRarity;

  public com.ogaba.sa_combat.item.BlueprintItem(net.minecraft.world.item.Item$Properties);
    Code:
       0: aload_0
       1: aload_1
       2: aconst_null
       3: aconst_null
       4: aconst_null
       5: invokespecial #44                 // Method "<init>":(Lnet/minecraft/world/item/Item$Properties;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Ljava/lang/String;)V
       8: return

  public com.ogaba.sa_combat.item.BlueprintItem(net.minecraft.world.item.Item$Properties, net.minecraft.resources.ResourceLocation, net.minecraft.resources.ResourceLocation, java.lang.String);
    Code:
       0: aload_0
       1: aload_1
       2: invokespecial #50                 // Method net/minecraft/world/item/Item."<init>":(Lnet/minecraft/world/item/Item$Properties;)V
       5: aload_0
       6: aload_2
       7: putfield      #52                 // Field fixedId:Lnet/minecraft/resources/ResourceLocation;
      10: aload_0
      11: aload_3
      12: putfield      #54                 // Field fixedUnlocks:Lnet/minecraft/resources/ResourceLocation;
      15: aload_0
      16: aload         4
      18: putfield      #56                 // Field fixedRarity:Ljava/lang/String;
      21: return

  public net.minecraft.network.chat.Component m_7626_(net.minecraft.world.item.ItemStack);
    Code:
       0: aload_1
       1: invokestatic  #62                 // Method getBlueprintData:(Lnet/minecraft/world/item/ItemStack;)Lnet/minecraft/nbt/CompoundTag;
       4: astore_2
       5: aload_2
       6: ifnull        28
       9: aload_2
      10: ldc           #28                 // String Name
      12: invokevirtual #68                 // Method net/minecraft/nbt/CompoundTag.m_128441_:(Ljava/lang/String;)Z
      15: ifeq          28
      18: aload_2
      19: ldc           #28                 // String Name
      21: invokevirtual #72                 // Method net/minecraft/nbt/CompoundTag.m_128461_:(Ljava/lang/String;)Ljava/lang/String;
      24: invokestatic  #78                 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent;
      27: areturn
      28: aload_1
      29: invokestatic  #82                 // Method com/ogaba/sa_combat/blueprint/BlueprintDefinitionRegistry.byItem:(Lnet/minecraft/world/item/ItemStack;)Ljava/util/Optional;
      32: aconst_null
      33: invokevirtual #88                 // Method java/util/Optional.orElse:(Ljava/lang/Object;)Ljava/lang/Object;
      36: checkcast     #10                 // class com/ogaba/sa_combat/blueprint/BlueprintDefinitionRegistry$Definition
      39: astore_3
      40: aload_3
      41: ifnull        62
      44: aload_3
      45: invokevirtual #92                 // Method com/ogaba/sa_combat/blueprint/BlueprintDefinitionRegistry$Definition.name:()Ljava/lang/String;
      48: invokevirtual #98                 // Method java/lang/String.isBlank:()Z
      51: ifne          62
      54: aload_3
      55: invokevirtual #92                 // Method com/ogaba/sa_combat/blueprint/BlueprintDefinitionRegistry$Definition.name:()Ljava/lang/String;
      58: invokestatic  #78                 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent;
      61: areturn
      62: aload_1
      63: invokestatic  #102                // Method getBlueprintId:(Lnet/minecraft/world/item/ItemStack;)Lnet/minecraft/resources/ResourceLocation;
      66: astore        4
      68: aload         4
      70: ifnull        143
      73: aload         4
      75: invokevirtual #107                // Method net/minecraft/resources/ResourceLocation.m_135827_:()Ljava/lang/String;
      78: aload         4
      80: invokevirtual #110                // Method net/minecraft/resources/ResourceLocation.m_135815_:()Ljava/lang/String;
      83: bipush        47
      85: bipush        46
      87: invokevirtual #114                // Method java/lang/String.replace:(CC)Ljava/lang/String;
      90: invokedynamic #126,  0            // InvokeDynamic #0:makeConcatWithConstants:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
      95: invokestatic  #129                // InterfaceMethod net/minecraft/network/chat/Component.m_237115_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent;
      98: astore        5
     100: aload         5
     102: invokeinterface #132,  1          // InterfaceMethod net/minecraft/network/chat/Component.getString:()Ljava/lang/String;
     107: ldc           #134                // String blueprint.
     109: invokevirtual #137                // Method java/lang/String.startsWith:(Ljava/lang/String;)Z
     112: ifeq          128
     115: aload         4
     117: invokevirtual #110                // Method net/minecraft/resources/ResourceLocation.m_135815_:()Ljava/lang/String;
     120: invokestatic  #140                // Method prettyName:(Ljava/lang/String;)Ljava/lang/String;
     123: invokestatic  #78                 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent;
     126: astore        5
     128: ldc           #142                // String item.sa_combat.blueprint.named
     130: iconst_1
     131: anewarray     #144                // class java/lang/Object
     134: dup
     135: iconst_0
     136: aload         5
     138: aastore
     139: invokestatic  #148                // InterfaceMethod net/minecraft/network/chat/Component.m_237110_:(Ljava/lang/String;[Ljava/lang/Object;)Lnet/minecraft/network/chat/MutableComponent;
     142: areturn
     143: aload_0
     144: aload_1
     145: invokespecial #150                // Method net/minecraft/world/item/Item.m_7626_:(Lnet/minecraft/world/item/ItemStack;)Lnet/minecraft/network/chat/Component;
     148: areturn

  public java.util.Optional<net.minecraft.world.inventory.tooltip.TooltipComponent> m_142422_(net.minecraft.world.item.ItemStack);
    Code:
       0: aload_1
       1: invokestatic  #102                // Method getBlueprintId:(Lnet/minecraft/world/item/ItemStack;)Lnet/minecraft/resources/ResourceLocation;
       4: astore_2
       5: aload_1
       6: invokestatic  #164                // Method getBlueprintUnlocks:(Lnet/minecraft/world/item/ItemStack;)Lnet/minecraft/resources/ResourceLocation;
       9: astore_3
      10: aload_1
      11: invokestatic  #168                // Method getBlueprintRarity:(Lnet/minecraft/world/item/ItemStack;)Ljava/lang/String;
      14: astore        4
      16: aload_2
      17: ifnonnull     41
      20: aload_3
      21: ifnonnull     41
      24: aload         4
      26: ifnull        37
      29: aload         4
      31: invokevirtual #98                 // Method java/lang/String.isBlank:()Z
      34: ifeq          41
      37: invokestatic  #172                // Method java/util/Optional.empty:()Ljava/util/Optional;
      40: areturn
      41: new           #174                // class com/ogaba/sa_combat/item/BlueprintTooltipComponent
      44: dup
      45: aload_2
      46: aload_3
      47: aload         4
      49: invokespecial #177                // Method com/ogaba/sa_combat/item/BlueprintTooltipComponent."<init>":(Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Ljava/lang/String;)V
      52: invokestatic  #181                // Method java/util/Optional.of:(Ljava/lang/Object;)Ljava/util/Optional;
      55: areturn

  public void m_7373_(net.minecraft.world.item.ItemStack, net.minecraft.world.level.Level, java.util.List<net.minecraft.network.chat.Component>, net.minecraft.world.item.TooltipFlag);
    Code:
       0: aload_1
       1: invokestatic  #62                 // Method getBlueprintData:(Lnet/minecraft/world/item/ItemStack;)Lnet/minecraft/nbt/CompoundTag;
       4: astore        5
       6: aload_1
       7: invokestatic  #102                // Method getBlueprintId:(Lnet/minecraft/world/item/ItemStack;)Lnet/minecraft/resources/ResourceLocation;
      10: astore        6
      12: aload_1
      13: invokestatic  #164                // Method getBlueprintUnlocks:(Lnet/minecraft/world/item/ItemStack;)Lnet/minecraft/resources/ResourceLocation;
      16: astore        7
      18: aload_1
      19: invokestatic  #168                // Method getBlueprintRarity:(Lnet/minecraft/world/item/ItemStack;)Ljava/lang/String;
      22: astore        8
      24: aload         5
      26: ifnonnull     63
      29: aload         6
      31: ifnonnull     63
      34: aload         7
      36: ifnonnull     63
      39: aload         8
      41: ifnonnull     63
      44: aload_3
      45: ldc           #188                // String tooltip.sa_combat.blueprint.empty
      47: invokestatic  #129                // InterfaceMethod net/minecraft/network/chat/Component.m_237115_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent;
      50: getstatic     #194                // Field net/minecraft/ChatFormatting.DARK_GRAY:Lnet/minecraft/ChatFormatting;
      53: invokevirtual #200                // Method net/minecraft/network/chat/MutableComponent.m_130940_:(Lnet/minecraft/ChatFormatting;)Lnet/minecraft/network/chat/MutableComponent;
      56: invokeinterface #206,  2          // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
      61: pop
      62: return
      63: return

  public net.minecraft.resources.ResourceLocation getFixedId();
    Code:
       0: aload_0
       1: getfield      #52                 // Field fixedId:Lnet/minecraft/resources/ResourceLocation;
       4: areturn

  public net.minecraft.resources.ResourceLocation getFixedUnlocks();
    Code:
       0: aload_0
       1: getfield      #54                 // Field fixedUnlocks:Lnet/minecraft/resources/ResourceLocation;
       4: areturn

  public java.lang.String getFixedRarity();
    Code:
       0: aload_0
       1: getfield      #56                 // Field fixedRarity:Ljava/lang/String;
       4: areturn

  private static java.lang.String prettyName(java.lang.String);
    Code:
       0: aload_0
       1: ifnonnull     9
       4: ldc           #225                // String Blueprint
       6: goto          27
       9: aload_0
      10: bipush        47
      12: bipush        32
      14: invokevirtual #114                // Method java/lang/String.replace:(CC)Ljava/lang/String;
      17: bipush        95
      19: bipush        32
      21: invokevirtual #114                // Method java/lang/String.replace:(CC)Ljava/lang/String;
      24: invokevirtual #228                // Method java/lang/String.trim:()Ljava/lang/String;
      27: astore_1
      28: aload_1
      29: invokevirtual #231                // Method java/lang/String.isEmpty:()Z
      32: ifeq          38
      35: ldc           #225                // String Blueprint
      37: areturn
      38: new           #233                // class java/lang/StringBuilder
      41: dup
      42: invokespecial #236                // Method java/lang/StringBuilder."<init>":()V
      45: astore_2
      46: aload_1
      47: ldc           #238                // String
      49: invokevirtual #242                // Method java/lang/String.split:(Ljava/lang/String;)[Ljava/lang/String;
      52: astore_3
      53: aload_3
      54: arraylength
      55: istore        4
      57: iconst_0
      58: istore        5
      60: iload         5
      62: iload         4
      64: if_icmpge     127
      67: aload_3
      68: iload         5
      70: aaload
      71: astore        6
      73: aload         6
      75: invokevirtual #98                 // Method java/lang/String.isBlank:()Z
      78: ifeq          84
      81: goto          121
      84: aload_2
      85: invokevirtual #248                // Method java/lang/StringBuilder.length:()I
      88: ifle          98
      91: aload_2
      92: bipush        32
      94: invokevirtual #252                // Method java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder;
      97: pop
      98: aload_2
      99: aload         6
     101: iconst_0
     102: invokevirtual #256                // Method java/lang/String.charAt:(I)C
     105: invokestatic  #262                // Method java/lang/Character.toUpperCase:(C)C
     108: invokevirtual #252                // Method java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder;
     111: aload         6
     113: iconst_1
     114: invokevirtual #266                // Method java/lang/String.substring:(I)Ljava/lang/String;
     117: invokevirtual #269                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     120: pop
     121: iinc          5, 1
     124: goto          60
     127: aload_2
     128: invokevirtual #272                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     131: areturn

  public static net.minecraft.resources.ResourceLocation getBlueprintId(net.minecraft.world.item.ItemStack);
    Code:
       0: aload_0
       1: invokestatic  #62                 // Method getBlueprintData:(Lnet/minecraft/world/item/ItemStack;)Lnet/minecraft/nbt/CompoundTag;
       4: astore_1
       5: aload_1
       6: ifnull        34
       9: aload_1
      10: ldc           #25                 // String Id
      12: invokevirtual #68                 // Method net/minecraft/nbt/CompoundTag.m_128441_:(Ljava/lang/String;)Z
      15: ifeq          34
      18: aload_1
      19: ldc           #25                 // String Id
      21: invokevirtual #72                 // Method net/minecraft/nbt/CompoundTag.m_128461_:(Ljava/lang/String;)Ljava/lang/String;
      24: invokestatic  #281                // Method net/minecraft/resources/ResourceLocation.m_135820_:(Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation;
      27: astore_2
      28: aload_2
      29: ifnull        34
      32: aload_2
      33: areturn
      34: aload_0
      35: invokestatic  #82                 // Method com/ogaba/sa_combat/blueprint/BlueprintDefinitionRegistry.byItem:(Lnet/minecraft/world/item/ItemStack;)Ljava/util/Optional;
      38: invokedynamic #299,  0            // InvokeDynamic #1:apply:()Ljava/util/function/Function;
      43: invokevirtual #303                // Method java/util/Optional.map:(Ljava/util/function/Function;)Ljava/util/Optional;
      46: aconst_null
      47: invokevirtual #88                 // Method java/util/Optional.orElse:(Ljava/lang/Object;)Ljava/lang/Object;
      50: checkcast     #104                // class net/minecraft/resources/ResourceLocation
      53: astore_2
      54: aload_2
      55: ifnull        60
      58: aload_2
      59: areturn
      60: aload_0
      61: invokevirtual #307                // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item;
      64: astore        4
      66: aload         4
      68: instanceof    #2                  // class com/ogaba/sa_combat/item/BlueprintItem
      71: ifeq          85
      74: aload         4
      76: checkcast     #2                  // class com/ogaba/sa_combat/item/BlueprintItem
      79: astore_3
      80: aload_3
      81: invokevirtual #309                // Method getFixedId:()Lnet/minecraft/resources/ResourceLocation;
      84: areturn
      85: aconst_null
      86: areturn

  public static net.minecraft.resources.ResourceLocation getBlueprintUnlocks(net.minecraft.world.item.ItemStack);
    Code:
       0: aload_0
       1: invokestatic  #62                 // Method getBlueprintData:(Lnet/minecraft/world/item/ItemStack;)Lnet/minecraft/nbt/CompoundTag;
       4: astore_1
       5: aload_1
       6: ifnull        34
       9: aload_1
      10: ldc           #31                 // String Unlocks
      12: invokevirtual #68                 // Method net/minecraft/nbt/CompoundTag.m_128441_:(Ljava/lang/String;)Z
      15: ifeq          34
      18: aload_1
      19: ldc           #31                 // String Unlocks
      21: invokevirtual #72                 // Method net/minecraft/nbt/CompoundTag.m_128461_:(Ljava/lang/String;)Ljava/lang/String;
      24: invokestatic  #281                // Method net/minecraft/resources/ResourceLocation.m_135820_:(Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation;
      27: astore_2
      28: aload_2
      29: ifnull        34
      32: aload_2
      33: areturn
      34: aload_0
      35: invokestatic  #82                 // Method com/ogaba/sa_combat/blueprint/BlueprintDefinitionRegistry.byItem:(Lnet/minecraft/world/item/ItemStack;)Ljava/util/Optional;
      38: invokedynamic #315,  0            // InvokeDynamic #2:apply:()Ljava/util/function/Function;
      43: invokevirtual #303                // Method java/util/Optional.map:(Ljava/util/function/Function;)Ljava/util/Optional;
      46: aconst_null
      47: invokevirtual #88                 // Method java/util/Optional.orElse:(Ljava/lang/Object;)Ljava/lang/Object;
      50: checkcast     #104                // class net/minecraft/resources/ResourceLocation
      53: astore_2
      54: aload_2
      55: ifnull        60
      58: aload_2
      59: areturn
      60: aload_0
      61: invokevirtual #307                // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item;
      64: astore        4
      66: aload         4
      68: instanceof    #2                  // class com/ogaba/sa_combat/item/BlueprintItem
      71: ifeq          85
      74: aload         4
      76: checkcast     #2                  // class com/ogaba/sa_combat/item/BlueprintItem
      79: astore_3
      80: aload_3
      81: invokevirtual #317                // Method getFixedUnlocks:()Lnet/minecraft/resources/ResourceLocation;
      84: areturn
      85: aconst_null
      86: areturn

  public static java.lang.String getBlueprintRarity(net.minecraft.world.item.ItemStack);
    Code:
       0: aload_0
       1: invokestatic  #62                 // Method getBlueprintData:(Lnet/minecraft/world/item/ItemStack;)Lnet/minecraft/nbt/CompoundTag;
       4: astore_1
       5: aload_1
       6: ifnull        25
       9: aload_1
      10: ldc           #34                 // String Rarity
      12: invokevirtual #68                 // Method net/minecraft/nbt/CompoundTag.m_128441_:(Ljava/lang/String;)Z
      15: ifeq          25
      18: aload_1
      19: ldc           #34                 // String Rarity
      21: invokevirtual #72                 // Method net/minecraft/nbt/CompoundTag.m_128461_:(Ljava/lang/String;)Ljava/lang/String;
      24: areturn
      25: aload_0
      26: invokestatic  #82                 // Method com/ogaba/sa_combat/blueprint/BlueprintDefinitionRegistry.byItem:(Lnet/minecraft/world/item/ItemStack;)Ljava/util/Optional;
      29: invokedynamic #323,  0            // InvokeDynamic #3:apply:()Ljava/util/function/Function;
      34: invokevirtual #303                // Method java/util/Optional.map:(Ljava/util/function/Function;)Ljava/util/Optional;
      37: ldc_w         #325                // String
      40: invokevirtual #88                 // Method java/util/Optional.orElse:(Ljava/lang/Object;)Ljava/lang/Object;
      43: checkcast     #94                 // class java/lang/String
      46: astore_2
      47: aload_2
      48: invokevirtual #98                 // Method java/lang/String.isBlank:()Z
      51: ifne          56
      54: aload_2
      55: areturn
      56: aload_0
      57: invokevirtual #307                // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item;
      60: astore        4
      62: aload         4
      64: instanceof    #2                  // class com/ogaba/sa_combat/item/BlueprintItem
      67: ifeq          81
      70: aload         4
      72: checkcast     #2                  // class com/ogaba/sa_combat/item/BlueprintItem
      75: astore_3
      76: aload_3
      77: invokevirtual #327                // Method getFixedRarity:()Ljava/lang/String;
      80: areturn
      81: aconst_null
      82: areturn

  public static net.minecraft.nbt.CompoundTag getBlueprintData(net.minecraft.world.item.ItemStack);
    Code:
       0: aload_0
       1: invokevirtual #331                // Method net/minecraft/world/item/ItemStack.m_41783_:()Lnet/minecraft/nbt/CompoundTag;
       4: astore_1
       5: aload_1
       6: ifnull        18
       9: aload_1
      10: ldc           #22                 // String SACombatBlueprint
      12: invokevirtual #68                 // Method net/minecraft/nbt/CompoundTag.m_128441_:(Ljava/lang/String;)Z
      15: ifne          20
      18: aconst_null
      19: areturn
      20: aload_1
      21: ldc           #22                 // String SACombatBlueprint
      23: invokevirtual #335                // Method net/minecraft/nbt/CompoundTag.m_128469_:(Ljava/lang/String;)Lnet/minecraft/nbt/CompoundTag;
      26: areturn
}
