Skip to content

Commit

Permalink
add tooltip colors and attributes applied if applicable (Prismwork#18)
Browse files Browse the repository at this point in the history
  • Loading branch information
fzzyhmstrs committed Sep 1, 2024
1 parent 5680ce6 commit 70f4eb2
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@
import net.minecraft.client.render.GameRenderer;
import net.minecraft.client.texture.Sprite;
import net.minecraft.client.texture.StatusEffectSpriteManager;
import net.minecraft.entity.attribute.EntityAttribute;
import net.minecraft.entity.attribute.EntityAttributeModifier;
import net.minecraft.entity.attribute.EntityAttributes;
import net.minecraft.entity.effect.DamageModifierStatusEffect;
import net.minecraft.entity.effect.StatusEffect;
import net.minecraft.entity.effect.StatusEffectInstance;
import net.minecraft.item.ItemStack;
Expand All @@ -25,6 +29,7 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;

public class StatusEffectEmiStack extends EmiStack {
@Nullable
Expand Down Expand Up @@ -98,8 +103,48 @@ public List<TooltipComponent> getTooltip() {
EmiPort.translatable("tooltip.emiffect.harmful").formatted(Formatting.RED))));
}
tooltips.add(TooltipComponent.of(EmiPort.ordered(
EmiPort.translatable("tooltip.emiffect.color", "#" + String.format("%02x", effect.getColor())).formatted(Formatting.GRAY))));
EmiPort.translatable("tooltip.emiffect.color", "#" + String.format("%02x", effect.getColor())).styled(style -> style.withColor(effect.getColor())))));
Identifier id = Registries.STATUS_EFFECT.getId(effect);
if (!effect.getAttributeModifiers().isEmpty()) {
tooltips.add(TooltipComponent.of(EmiPort.ordered(EmiPort.literal(""))));
tooltips.add(TooltipComponent.of(EmiPort.ordered(EmiPort.translatable("tooltip.emiffect.applied").formatted(Formatting.GRAY))));
for (Map.Entry<EntityAttribute, EntityAttributeModifier> entry: effect.getAttributeModifiers().entrySet()) {
System.out.println(entry);
EntityAttributeModifier entityAttributeModifier = entry.getValue();
double d = entityAttributeModifier.getValue();
boolean damage = false;
if (effect instanceof DamageModifierStatusEffect damageModifierStatusEffect) {
damage = true;
d = damageModifierStatusEffect.adjustModifierAmount(0, entityAttributeModifier);
}
double e;
if (entityAttributeModifier.getOperation() != EntityAttributeModifier.Operation.MULTIPLY_BASE && entityAttributeModifier.getOperation() != EntityAttributeModifier.Operation.MULTIPLY_TOTAL) {
if ((entry.getKey()).equals(EntityAttributes.GENERIC_KNOCKBACK_RESISTANCE)) {
e = d * 10.0;
} else {
e = d;
}
} else {
e = d * 100.0;
}

if (damage) {
if (d > 0.0) {
tooltips.add(TooltipComponent.of(EmiPort.ordered((EmiPort.translatable("attribute.modifier.plus." + entityAttributeModifier.getOperation().getId(), ItemStack.MODIFIER_FORMAT.format(e), Text.translatable((entry.getKey()).getTranslationKey())).formatted(Formatting.BLUE).append(EmiPort.translatable("tooltip.emiffect.per_level").formatted(Formatting.BLUE))))));
} else if (d < 0.0) {
e *= -1.0;
tooltips.add(TooltipComponent.of(EmiPort.ordered((EmiPort.translatable("attribute.modifier.take." + entityAttributeModifier.getOperation().getId(), ItemStack.MODIFIER_FORMAT.format(e), Text.translatable((entry.getKey()).getTranslationKey())).formatted(Formatting.RED).append(EmiPort.translatable("tooltip.emiffect.per_level").formatted(Formatting.RED))))));
}
} else {
if (d > 0.0) {
tooltips.add(TooltipComponent.of(EmiPort.ordered((EmiPort.translatable("attribute.modifier.plus." + entityAttributeModifier.getOperation().getId(), ItemStack.MODIFIER_FORMAT.format(e), Text.translatable((entry.getKey()).getTranslationKey())).formatted(Formatting.BLUE)))));
} else if (d < 0.0) {
e *= -1.0;
tooltips.add(TooltipComponent.of(EmiPort.ordered((EmiPort.translatable("attribute.modifier.take." + entityAttributeModifier.getOperation().getId(), ItemStack.MODIFIER_FORMAT.format(e), Text.translatable((entry.getKey()).getTranslationKey())).formatted(Formatting.RED)))));
}
}
}
}
if (id != null)
tooltips.add(TooltipComponent.of(EmiPort.ordered(EmiPort.literal(EmiUtil.getModName(id.getNamespace()), Formatting.BLUE, Formatting.ITALIC))));
return tooltips;
Expand Down
2 changes: 2 additions & 0 deletions common/src/main/resources/assets/emiffect/lang/en_us.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
"tooltip.emiffect.neutral": "Neutral",
"tooltip.emiffect.harmful": "Harmful",
"tooltip.emiffect.color": "Color: %s",
"tooltip.emiffect.applied": "While Active:",
"tooltip.emiffect.per_level": " per level",

"effect.minecraft.absorption.description": "Adds damage some damaging absorbing hearths (which can't be regenerated); higher levels give more absorption.",
"effect.minecraft.bad_omen.description": "Causes an illager raid to start upon entering a village; higher levels increase the raid difficulty.",
Expand Down

0 comments on commit 70f4eb2

Please sign in to comment.