From c5349bd242bc59d0fa4d775774b02334341c57f4 Mon Sep 17 00:00:00 2001 From: Sollace Date: Fri, 21 Oct 2022 14:55:44 +0200 Subject: [PATCH] Change how traits are obfuscated and obfuscate trait descriptions if you haven't discovered it yet --- .../ability/magic/spell/trait/Trait.java | 42 +++++++++++------- .../client/gui/ItemTraitsTooltipRenderer.java | 11 +++-- .../client/gui/spellbook/IngredientTree.java | 15 ++++++- .../unicopia/textures/gui/trait/unknown.png | Bin 0 -> 1804 bytes 4 files changed, 44 insertions(+), 24 deletions(-) create mode 100644 src/main/resources/assets/unicopia/textures/gui/trait/unknown.png diff --git a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/trait/Trait.java b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/trait/Trait.java index cb8e3944..a1f3189b 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/trait/Trait.java +++ b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/trait/Trait.java @@ -8,7 +8,6 @@ import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.Stream; -import com.minelittlepony.common.client.gui.Tooltip; import com.minelittlepony.unicopia.Unicopia; import net.minecraft.item.ItemStack; @@ -65,10 +64,31 @@ public enum Trait { private final Identifier sprite; private final TraitGroup group; + private final Text tooltip; + private final Text obfuscatedTooltip; + Trait(TraitGroup group) { this.id = Unicopia.id(name().toLowerCase()); this.sprite = Unicopia.id("textures/gui/trait/" + name().toLowerCase() + ".png"); this.group = group; + + Formatting corruptionColor = getGroup().getCorruption() < -0.01F + ? Formatting.GREEN + : getGroup().getCorruption() > 0.25F + ? Formatting.RED + : Formatting.WHITE; + + MutableText tooltipText = Text.translatable("gui.unicopia.trait.label", + Text.translatable("trait." + getId().getNamespace() + "." + getId().getPath() + ".name") + ).formatted(Formatting.YELLOW) + .append(Text.translatable("gui.unicopia.trait.group", getGroup().name().toLowerCase()).formatted(Formatting.ITALIC, Formatting.GRAY)) + .append(Text.literal("\n\n").formatted(Formatting.WHITE) + .append(Text.translatable("trait." + getId().getNamespace() + "." + getId().getPath() + ".description").formatted(Formatting.GRAY)) + .append("\n") + .append(Text.translatable("gui.unicopia.trait.corruption", ItemStack.MODIFIER_FORMAT.format(getGroup().getCorruption())).formatted(Formatting.ITALIC, corruptionColor))); + this.tooltip = tooltipText; + this.obfuscatedTooltip = tooltipText.copy().formatted(Formatting.OBFUSCATED); + } public Identifier getId() { @@ -83,22 +103,12 @@ public enum Trait { return sprite; } - public Tooltip getTooltip() { - Formatting corruptionColor = getGroup().getCorruption() < -0.01F - ? Formatting.GREEN - : getGroup().getCorruption() > 0.25F - ? Formatting.RED - : Formatting.WHITE; + public Text getTooltip() { + return tooltip; + } - return Tooltip.of( - Text.translatable("gui.unicopia.trait.label", - Text.translatable("trait." + getId().getNamespace() + "." + getId().getPath() + ".name") - ).formatted(Formatting.YELLOW) - .append(Text.translatable("gui.unicopia.trait.group", getGroup().name().toLowerCase()).formatted(Formatting.ITALIC, Formatting.GRAY)) - .append(Text.literal("\n\n").formatted(Formatting.WHITE) - .append(Text.translatable("trait." + getId().getNamespace() + "." + getId().getPath() + ".description").formatted(Formatting.GRAY)) - .append("\n") - .append(Text.translatable("gui.unicopia.trait.corruption", ItemStack.MODIFIER_FORMAT.format(getGroup().getCorruption())).formatted(Formatting.ITALIC, corruptionColor))), 200); + public Text getObfuscatedTooltip() { + return obfuscatedTooltip; } public static Collection all() { diff --git a/src/main/java/com/minelittlepony/unicopia/client/gui/ItemTraitsTooltipRenderer.java b/src/main/java/com/minelittlepony/unicopia/client/gui/ItemTraitsTooltipRenderer.java index 953549de..faab1666 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/gui/ItemTraitsTooltipRenderer.java +++ b/src/main/java/com/minelittlepony/unicopia/client/gui/ItemTraitsTooltipRenderer.java @@ -3,6 +3,7 @@ package com.minelittlepony.unicopia.client.gui; import java.util.ArrayList; import java.util.List; +import com.minelittlepony.unicopia.Unicopia; import com.minelittlepony.unicopia.ability.magic.spell.trait.*; import com.minelittlepony.unicopia.entity.player.Pony; import com.mojang.blaze3d.systems.RenderSystem; @@ -17,9 +18,11 @@ import net.minecraft.client.render.item.ItemRenderer; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.item.ItemStack; import net.minecraft.text.*; +import net.minecraft.util.Identifier; import net.minecraft.util.math.MathHelper; public class ItemTraitsTooltipRenderer implements Text, OrderedText, TooltipComponent { + private static final Identifier UNKNOWN = Unicopia.id("textures/gui/trait/unknown.png"); private final SpellTraits traits; @@ -100,7 +103,7 @@ public class ItemTraitsTooltipRenderer implements Text, OrderedText, TooltipComp } } - private static boolean isKnown(Trait trait) { + public static boolean isKnown(Trait trait) { return MinecraftClient.getInstance().player == null || Pony.of(MinecraftClient.getInstance().player).getDiscoveries().isKnown(trait); } @@ -111,11 +114,7 @@ public class ItemTraitsTooltipRenderer implements Text, OrderedText, TooltipComp int size = 12; - if (!isKnown(trait)) { - trait = Trait.values()[MinecraftClient.getInstance().player.getRandom().nextInt(Trait.all().size())]; - } - - RenderSystem.setShaderTexture(0, trait.getSprite()); + RenderSystem.setShaderTexture(0, isKnown(trait) ? trait.getSprite() : UNKNOWN); matrices.push(); matrices.translate(xx, yy, itemRenderer.zOffset + 300.0F); diff --git a/src/main/java/com/minelittlepony/unicopia/client/gui/spellbook/IngredientTree.java b/src/main/java/com/minelittlepony/unicopia/client/gui/spellbook/IngredientTree.java index 6af276d5..4ad93049 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/gui/spellbook/IngredientTree.java +++ b/src/main/java/com/minelittlepony/unicopia/client/gui/spellbook/IngredientTree.java @@ -102,7 +102,18 @@ class IngredientTree implements SpellbookRecipe.CraftingTreeBuilder { int left = x + column * colWidth + 3 + (addLabels && row > 0 ? colWidth : 0); int top = y + row * rowHeight + 3; - container.addButton(new IngredientButton(left, top, colWidth, rowHeight, entry, !addLabels || ii == 0 ? "" : "+", false)); + var button = container.addButton(new IngredientButton(left, top, colWidth, rowHeight, entry, !addLabels || ii == 0 ? "" : "+", false)); + + if (entry instanceof Traits traits) { + final Trait trait = traits.trait; + button.onClick(sender -> { + if (MinecraftClient.getInstance().currentScreen instanceof SpellbookScreen spellbook) { + spellbook.getState().setCurrentPageId(SpellbookChapterList.TRAIT_DEX_ID); + spellbook.getTraitDex().pageTo(spellbook, trait); + } + }); + } + ii++; } result.ifPresent(result -> { @@ -263,7 +274,7 @@ class IngredientTree implements SpellbookRecipe.CraftingTreeBuilder { @Override public Tooltip getTooltip() { - return trait.getTooltip(); + return Tooltip.of(ItemTraitsTooltipRenderer.isKnown(trait) ? trait.getTooltip() : trait.getObfuscatedTooltip(), 200); } } } \ No newline at end of file diff --git a/src/main/resources/assets/unicopia/textures/gui/trait/unknown.png b/src/main/resources/assets/unicopia/textures/gui/trait/unknown.png new file mode 100644 index 0000000000000000000000000000000000000000..9abf7af0b2307192381ef80f0ab7e1044453a7d2 GIT binary patch literal 1804 zcmV+n2lM!eP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+O1btk_0CV{pS=u0+I;gIK(R7z{mF^bkFS0Y;b65 z7Md1HPk}Z4uRn+R0}oSh#`&lrg<$cx7iInh6#$`e#gShQzQ*SVz=DYb)pWDMz--HAQ9M0jOUwdVKCJ{g*`7{>(=koVl6B|DJ-aFnNPoQbq(+4J5;3IPZ& zK_Z|@l7W?T-UZ{LQ^ZjA;+^+C_~_LqpMwM!dpR#B&3gGNflwPV-0&leICP|uZ`2m5<^yK0$bF9*9n=7rS(rHxU8rF@ z#)}2ba^fduK#Uy$@i-AcK=Z`RDmlj!IWsY{iIEkap{1YTG@6J3LDz}>pc}gfaxb_U znW>!$}KbwsmzRwkx zVn+*gFzr{Zqo&`pGyhJ$9fh~*!|4c))%^0Dw!IwU2I(k(YQFX^72c$t%{Idg#MO^V zl)Y@#Hre*Wvs%{Dl*ZDMbaDGrZBm0>Yc!i5X6bdaDa|Z4J}*(Vj^w#Fa-O_W*EFo2 zH;ej)g?pI^;Q$)5)@jT=AF7?5wk#p%I6$88@DvKG@-9%OL7P=_u(^kCgTol#u3eOUUL8 zDlbl#O;mL`owfnt;fOh#XU{xbQI95(AiO-8o{~RmsjVv(lTz96dz4SA&pPO>+S@pK z(Kv7THx(`_Pf83_mu(KiiLV;#j$qhH4Yl{usPzQV7?MsNfDYXlMBd7HJJL z7bBF8D6NTou2sBWnjJa+s>YZPMdhWYJQSo;+27Vcv=no6)F@e@_I|@n+)j*)xb8G=M?-te-Veg0|X9^K9v(6Ju&_-GU3E- z%`<&Z#5M=ESHH6W_2d^~QBK_Y^ppXOS3oWI7IkgbN7Vn12(Vu*Qb$pHj+u#Ah}2^*>7n}9dr7hUuv;N`@2M{bcUl*|F=ha7mg z={UMMd&$WTHr&^mnohwHB=#51{*Cc9$Nyl<|b=kJ>BrZL~P&-@kR z*Q_+(wN?9L+kLbX^KUewQevZXKlKC9gs*~3*y&}~{Gazey|ExJu>jnQS%*ep=4 z2+pJ?x+#lt1sd+x8cfRu*O#lox85UKYua9b)|&WR<-$xMW(5oYnV2hruM^F_W&%tT zg%>EEZ)^O-aGK2i&jkRgWr@40@drF3P%Od}h$oWHL~v0uQ7v1f12wz1MZtvLRB=93 z`K7qNr0oTahVwnkAaX+8_5z~uoYNY_RN!NvaecWJ;CPe+5#aj3;9aSm(0U2fGq1n! uI`J|&9i}YA>`?Vl`#n+QgnHA@OzjurVbB}2P!w?h0000