diff --git a/src/main/java/com/radimous/vhatcaniroll/Config.java b/src/main/java/com/radimous/vhatcaniroll/Config.java index 19ab3cf..009814d 100644 --- a/src/main/java/com/radimous/vhatcaniroll/Config.java +++ b/src/main/java/com/radimous/vhatcaniroll/Config.java @@ -60,7 +60,7 @@ public class Config { AFFIX_TAG_GROUP_CHANCE_BLACKLIST = builder .comment("vhcir won't show chance/weight for affixes in these groups") - .define("affixTagGroupBlacklist", List.of(VaultGearTierConfig.ModifierAffixTagGroup.BASE_ATTRIBUTES.name(), VaultGearTierConfig.ModifierAffixTagGroup.CRAFTED_PREFIX.name(), VaultGearTierConfig.ModifierAffixTagGroup.CRAFTED_SUFFIX.name())); + .define("affixTagGroupBlacklist", List.of(VaultGearTierConfig.ModifierAffixTagGroup.CRAFTED_PREFIX.name(), VaultGearTierConfig.ModifierAffixTagGroup.CRAFTED_SUFFIX.name())); SPEC = builder.build(); } diff --git a/src/main/java/com/radimous/vhatcaniroll/logic/Modifiers.java b/src/main/java/com/radimous/vhatcaniroll/logic/Modifiers.java index e28fc70..1ad5432 100644 --- a/src/main/java/com/radimous/vhatcaniroll/logic/Modifiers.java +++ b/src/main/java/com/radimous/vhatcaniroll/logic/Modifiers.java @@ -24,6 +24,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -59,22 +60,35 @@ public class Modifiers { } + Map groupCounts = countGroups(lvl, affixTagGroup, modifierGroup, modifierCategory); + + AtomicBoolean noWeightAttr = new AtomicBoolean(false); int totalWeight = modifierGroup.get(affixTagGroup).stream() - .mapToInt(x -> getModifierTiers(lvl, x, modifierCategory).stream().mapToInt(VaultGearTierConfig.ModifierTier::getWeight).sum()) + .mapToInt(modTierGroup -> getModifierTiers(lvl, modTierGroup, modifierCategory).stream().mapToInt( + tier -> { + if ((affixTagGroup == VaultGearTierConfig.ModifierAffixTagGroup.IMPLICIT + || affixTagGroup == VaultGearTierConfig.ModifierAffixTagGroup.BASE_ATTRIBUTES) && groupCounts.get(modTierGroup.getModifierGroup()) == 1) { + noWeightAttr.set(true); + return 0; + } + return tier.getWeight(); + } + ) + .sum()) .sum(); - if (totalWeight == 0) { + + if (totalWeight == 0 && !noWeightAttr.get()) { return componentList; } componentList.add(new TextComponent(affixTagGroup.toString().replace("_", " ")).withStyle(ChatFormatting.BOLD)); - if (Config.SHOW_WEIGHT.get() && shouldShowWeight(modifierCategory, affixTagGroup)) { + if (Config.SHOW_WEIGHT.get() && shouldShowWeight(modifierCategory, affixTagGroup) && totalWeight > 0) { componentList.add(new TextComponent("Total Weight: " + totalWeight).withStyle(ChatFormatting.BOLD)); } - Map groupCounts = countGroups(lvl, affixTagGroup, modifierGroup, modifierCategory); Map> groupedModifiers = new HashMap<>(); for (VaultGearTierConfig.ModifierTierGroup modifierTierGroup : modifierGroup.get(affixTagGroup)) { @@ -89,14 +103,22 @@ public class Modifiers { MutableComponent modComp = getModifierComponent(VaultGearAttributeRegistry.getAttribute(modifierTierGroup.getAttribute()),mTierList); - int weight = modTierListWeight(mTierList); - if (Config.SHOW_WEIGHT.get() && shouldShowWeight(modifierCategory, affixTagGroup)) { - modComp.append(new TextComponent(" w"+weight).withStyle(ChatFormatting.GRAY)); +// //if (implicit||base) && groupCounts == 0 + if (!( + (affixTagGroup == VaultGearTierConfig.ModifierAffixTagGroup.BASE_ATTRIBUTES + || affixTagGroup == VaultGearTierConfig.ModifierAffixTagGroup.IMPLICIT + ) + && groupCounts.get(modGr) == 1)){ + int weight = modTierListWeight(mTierList); + if (Config.SHOW_WEIGHT.get() && shouldShowWeight(modifierCategory, affixTagGroup)) { + modComp.append(new TextComponent(" w"+weight).withStyle(ChatFormatting.GRAY)); + } + + if (Config.SHOW_CHANCE.get() && shouldShowWeight(modifierCategory, affixTagGroup)) { + modComp.append(new TextComponent(String.format(" %.2f%%", ((double) weight * 100 / totalWeight))).withStyle(ChatFormatting.GRAY)); + } } - if (Config.SHOW_CHANCE.get() && shouldShowWeight(modifierCategory, affixTagGroup)) { - modComp.append(new TextComponent(String.format(" %.2f%%", ((double) weight * 100 / totalWeight))).withStyle(ChatFormatting.GRAY)); - } if (groupCounts.get(modGr) > 1) { groupedModifiers.computeIfAbsent(modGr, k -> new ArrayList<>()).add(modComp);