/** * Change attribute format when displayed on item tooltip * * @param event */ @SubscribeEvent public void onItemTooltip(ItemTooltipEvent event) { for (String txt : event.toolTip) { if (txt.startsWith(EnumChatFormatting.BLUE.toString())) { if (txt.contains(attributeNames[0]) || txt.contains(attributeNames[2])) event.toolTip.set( event.toolTip.indexOf(txt), EnumChatFormatting.DARK_GREEN + EnumChatFormatting.getTextWithoutFormattingCodes(txt)); else if (txt.contains(attributeNames[3])) event.toolTip.set( event.toolTip.indexOf(txt), EnumChatFormatting.DARK_GREEN + reformat(txt, 3)); else if (txt.contains(attributeNames[1])) event.toolTip.set(event.toolTip.indexOf(txt), EnumChatFormatting.GOLD + reformat(txt, 1)); } } if (event.itemStack.getItem() instanceof IBackStabbable) { event.toolTip.add( EnumChatFormatting.GOLD + StatCollector.translateToLocal("attribute.name.weapon.backstab")); } }
/** * Format into "ratio" attribute localization * * @param txt current attribute local * @param type the attribute index * @return the new localization */ private String reformat(String txt, int type) { String result = EnumChatFormatting.getTextWithoutFormattingCodes(txt); Matcher matcher = FLOAT.matcher(result); if (matcher.find()) { int start = matcher.start(); int end = matcher.end(); String temp = result.substring(start, end).replace(",", "."); try { float value = Float.valueOf(temp) * 100; temp = ".plus.1"; if (start > 0 && result.charAt(start - 1) == '-') { temp = ".take.1"; } return StatCollector.translateToLocalFormatted( "attribute.modifier" + temp, ItemStack.DECIMALFORMAT.format(value), attributeNames[type]); } catch (NumberFormatException notNumber) { notNumber.printStackTrace(); } } return result; }