Skip to content

Commit

Permalink
Update repair level language
Browse files Browse the repository at this point in the history
  • Loading branch information
Protonull committed Jun 6, 2024
1 parent 054013c commit dd3ba9d
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 44 deletions.
63 changes: 31 additions & 32 deletions patches/0006-Replace-item-renderer-mixin.patch
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,16 @@ Content-Transfer-Encoding: 8bit

Instead of replacing the entire renderItemDecorations method, this instead makes two injections. But before all that, this mixins the ItemStack class to add a cached result so that we aren't wading into the item's NBT every 👏 single 👏 frame 👏.

diff --git a/common/src/main/java/sh/okx/civmodern/common/features/compacted/PotentiallyCompactedItem.java b/common/src/main/java/sh/okx/civmodern/common/features/compacted/PotentiallyCompactedItem.java
diff --git a/common/src/main/java/sh/okx/civmodern/common/features/ExtendedItemStack.java b/common/src/main/java/sh/okx/civmodern/common/features/ExtendedItemStack.java
new file mode 100644
index 0000000000000000000000000000000000000000..7fa4c064c7546f57a8ff16e863ee0f2e2f8a9578
index 0000000000000000000000000000000000000000..eeff819ae228fa94328b2f0e3964b2b9347090d1
--- /dev/null
+++ b/common/src/main/java/sh/okx/civmodern/common/features/compacted/PotentiallyCompactedItem.java
@@ -0,0 +1,7 @@
+package sh.okx.civmodern.common.features.compacted;
+++ b/common/src/main/java/sh/okx/civmodern/common/features/ExtendedItemStack.java
@@ -0,0 +1,6 @@
+package sh.okx.civmodern.common.features;
+
+public interface PotentiallyCompactedItem {
+public interface ExtendedItemStack {
+ String COMPACTED_ITEM_LORE = "Compacted Item";
+
+ boolean isMarkedAsCompacted();
+}
diff --git a/common/src/main/java/sh/okx/civmodern/common/mixins/DecorationsGuiGraphicsMixin.java b/common/src/main/java/sh/okx/civmodern/common/mixins/DecorationsGuiGraphicsMixin.java
Expand Down Expand Up @@ -116,13 +115,13 @@ index 2156a3b35b40d08754adebca22d50aafe150cbbd..00000000000000000000000000000000
- return false;
- }
-}
diff --git a/common/src/main/java/sh/okx/civmodern/common/mixins/compacted/GuiGraphicsMixin.java b/common/src/main/java/sh/okx/civmodern/common/mixins/compacted/GuiGraphicsMixin.java
diff --git a/common/src/main/java/sh/okx/civmodern/common/mixins/GuiGraphicsMixin.java b/common/src/main/java/sh/okx/civmodern/common/mixins/GuiGraphicsMixin.java
new file mode 100644
index 0000000000000000000000000000000000000000..8051611a6c91a9e079acbb94218a5402fa9b037a
index 0000000000000000000000000000000000000000..de746105dda6e3235cfb05031ff78bbc3dc41cf3
--- /dev/null
+++ b/common/src/main/java/sh/okx/civmodern/common/mixins/compacted/GuiGraphicsMixin.java
+++ b/common/src/main/java/sh/okx/civmodern/common/mixins/GuiGraphicsMixin.java
@@ -0,0 +1,53 @@
+package sh.okx.civmodern.common.mixins.compacted;
+package sh.okx.civmodern.common.mixins;
+
+import com.llamalad7.mixinextras.sugar.Local;
+import com.llamalad7.mixinextras.sugar.ref.LocalRef;
Expand All @@ -136,12 +135,12 @@ index 0000000000000000000000000000000000000000..8051611a6c91a9e079acbb94218a5402
+import org.spongepowered.asm.mixin.injection.ModifyConstant;
+import org.spongepowered.asm.mixin.injection.ModifyVariable;
+import sh.okx.civmodern.common.AbstractCivModernMod;
+import sh.okx.civmodern.common.features.compacted.PotentiallyCompactedItem;
+import sh.okx.civmodern.common.features.ExtendedItemStack;
+
+@Mixin(GuiGraphics.class)
+public abstract class GuiGraphicsMixin {
+ @Unique
+ private boolean cm_unique$isCompactedItem = false;
+ private boolean cm$isCompactedItem = false;
+
+ @ModifyVariable(
+ method = "renderItemDecorations(Lnet/minecraft/client/gui/Font;Lnet/minecraft/world/item/ItemStack;IILjava/lang/String;)V",
Expand All @@ -152,11 +151,11 @@ index 0000000000000000000000000000000000000000..8051611a6c91a9e079acbb94218a5402
+ ),
+ argsOnly = true
+ )
+ public @NotNull ItemStack cm_modify_variable$renderItemDecorations(
+ public @NotNull ItemStack cm$alwaysShowItemAmountIfCompacted(
+ final @NotNull ItemStack stack,
+ final @Local(argsOnly = true) LocalRef<String> text
+ ) {
+ if (this.cm_unique$isCompactedItem = ((PotentiallyCompactedItem) (Object) stack).isMarkedAsCompacted()) {
+ if (this.cm$isCompactedItem = ((ExtendedItemStack) (Object) stack).isMarkedAsCompacted()) {
+ text.set(Integer.toString(stack.getCount()));
+ }
+ return stack;
Expand All @@ -166,22 +165,22 @@ index 0000000000000000000000000000000000000000..8051611a6c91a9e079acbb94218a5402
+ method = "renderItemDecorations(Lnet/minecraft/client/gui/Font;Lnet/minecraft/world/item/ItemStack;IILjava/lang/String;)V",
+ constant = @Constant(intValue = 16777215)
+ )
+ public int cm_modify_constant$renderItemDecorations(
+ public int cm$colourItemDecorationIfCompacted(
+ final int decorationColour
+ ) {
+ if (this.cm_unique$isCompactedItem) {
+ if (this.cm$isCompactedItem) {
+ return AbstractCivModernMod.getInstance().getColourProvider().getCompactedColour();
+ }
+ return decorationColour;
+ }
+}
diff --git a/common/src/main/java/sh/okx/civmodern/common/mixins/compacted/ItemStackMixin.java b/common/src/main/java/sh/okx/civmodern/common/mixins/compacted/ItemStackMixin.java
diff --git a/common/src/main/java/sh/okx/civmodern/common/mixins/ItemStackMixin.java b/common/src/main/java/sh/okx/civmodern/common/mixins/ItemStackMixin.java
new file mode 100644
index 0000000000000000000000000000000000000000..399dee20951977e63cbfdd013316dba59b0d4091
index 0000000000000000000000000000000000000000..3b02b7a62f280590223ba89a514e3284cd867808
--- /dev/null
+++ b/common/src/main/java/sh/okx/civmodern/common/mixins/compacted/ItemStackMixin.java
+++ b/common/src/main/java/sh/okx/civmodern/common/mixins/ItemStackMixin.java
@@ -0,0 +1,60 @@
+package sh.okx.civmodern.common.mixins.compacted;
+package sh.okx.civmodern.common.mixins;
+
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.nbt.ListTag;
Expand All @@ -191,24 +190,24 @@ index 0000000000000000000000000000000000000000..399dee20951977e63cbfdd013316dba5
+import net.minecraft.world.item.ItemStack;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.Unique;
+import sh.okx.civmodern.common.features.compacted.PotentiallyCompactedItem;
+import sh.okx.civmodern.common.features.ExtendedItemStack;
+
+@Mixin(ItemStack.class)
+public abstract class ItemStackMixin implements PotentiallyCompactedItem {
+public abstract class ItemStackMixin implements ExtendedItemStack {
+ @Unique
+ private Boolean cm_unique$isCompacted = null;
+ private Boolean cm$isCompacted = null;
+
+ @Unique
+ @Override
+ public boolean isMarkedAsCompacted() {
+ if (this.cm_unique$isCompacted == null) {
+ this.cm_unique$isCompacted = cm_unique$isCompacted();
+ if (this.cm$isCompacted == null) {
+ this.cm$isCompacted = cm$isCompacted();
+ }
+ return this.cm_unique$isCompacted;
+ return this.cm$isCompacted;
+ }
+
+ @Unique
+ private boolean cm_unique$isCompacted() {
+ private boolean cm$isCompacted() {
+ final CompoundTag itemTag = ((ItemStack) (Object) this).getTag();
+ if (itemTag == null) {
+ return false;
Expand All @@ -234,26 +233,26 @@ index 0000000000000000000000000000000000000000..399dee20951977e63cbfdd013316dba5
+ }
+ content.append(child.getString());
+ }
+ if (PotentiallyCompactedItem.COMPACTED_ITEM_LORE.contentEquals(content)) {
+ if (ExtendedItemStack.COMPACTED_ITEM_LORE.contentEquals(content)) {
+ return true;
+ }
+ }
+ return false;
+ }
+}
diff --git a/common/src/main/resources/civmodern.mixins.json b/common/src/main/resources/civmodern.mixins.json
index 050e517ede60a63ceaa9a0ba88e880f46cb15b21..9db9bc27300b5ab1675ddeabfcdc59d350d8ce72 100644
index 050e517ede60a63ceaa9a0ba88e880f46cb15b21..9ac61b79a7d623284bfadeecdd75307721ef218f 100644
--- a/common/src/main/resources/civmodern.mixins.json
+++ b/common/src/main/resources/civmodern.mixins.json
@@ -5,9 +5,10 @@
"compatibilityLevel": "JAVA_17",
"mixins": [],
"client": [
+ "compacted.GuiGraphicsMixin",
+ "compacted.ItemStackMixin",
+ "GuiGraphicsMixin",
"InventoryMixin",
- "KeyMappingAccessor",
- "DecorationsGuiGraphicsMixin"
+ "ItemStackMixin",
+ "KeyMappingAccessor"
],
"server": [],
Expand Down
24 changes: 12 additions & 12 deletions patches/0007-Add-show-item-repair-level-option.patch
Original file line number Diff line number Diff line change
Expand Up @@ -162,12 +162,12 @@ index 0000000000000000000000000000000000000000..cf631bd5a68b207f65fb09bd7c23f003
+ setMessage(generateLabel());
+ }
+}
diff --git a/common/src/main/java/sh/okx/civmodern/common/mixins/compacted/ItemStackMixin.java b/common/src/main/java/sh/okx/civmodern/common/mixins/compacted/ItemStackMixin.java
index 399dee20951977e63cbfdd013316dba59b0d4091..79da0d989ff7c9119212e2e1cb55701dd3959790 100644
--- a/common/src/main/java/sh/okx/civmodern/common/mixins/compacted/ItemStackMixin.java
+++ b/common/src/main/java/sh/okx/civmodern/common/mixins/compacted/ItemStackMixin.java
diff --git a/common/src/main/java/sh/okx/civmodern/common/mixins/ItemStackMixin.java b/common/src/main/java/sh/okx/civmodern/common/mixins/ItemStackMixin.java
index 3b02b7a62f280590223ba89a514e3284cd867808..e79cb64be75755ea6152fd015a81d15864238195 100644
--- a/common/src/main/java/sh/okx/civmodern/common/mixins/ItemStackMixin.java
+++ b/common/src/main/java/sh/okx/civmodern/common/mixins/ItemStackMixin.java
@@ -1,13 +1,23 @@
package sh.okx.civmodern.common.mixins.compacted;
package sh.okx.civmodern.common.mixins;

+import com.llamalad7.mixinextras.sugar.Local;
+import java.util.List;
Expand All @@ -187,10 +187,10 @@ index 399dee20951977e63cbfdd013316dba59b0d4091..79da0d989ff7c9119212e2e1cb55701d
+import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
+import sh.okx.civmodern.common.AbstractCivModernMod;
+import sh.okx.civmodern.common.CivMapConfig;
import sh.okx.civmodern.common.features.compacted.PotentiallyCompactedItem;
import sh.okx.civmodern.common.features.ExtendedItemStack;

@Mixin(ItemStack.class)
@@ -57,4 +67,31 @@ public abstract class ItemStackMixin implements PotentiallyCompactedItem {
@@ -57,4 +67,31 @@ public abstract class ItemStackMixin implements ExtendedItemStack {
}
return false;
}
Expand All @@ -203,7 +203,7 @@ index 399dee20951977e63cbfdd013316dba59b0d4091..79da0d989ff7c9119212e2e1cb55701d
+ shift = At.Shift.BEFORE
+ )
+ )
+ private void cm_inject$getTooltipLines(
+ private void cm$showRepairLevel(
+ final Player player,
+ final @NotNull TooltipFlag isAdvanced,
+ final @NotNull CallbackInfoReturnable<List<Component>> cir,
Expand All @@ -215,23 +215,23 @@ index 399dee20951977e63cbfdd013316dba59b0d4091..79da0d989ff7c9119212e2e1cb55701d
+ final int repairCost = self.getBaseRepairCost();
+ if (repairCost > 0) {
+ lines.add(Component.translatable(
+ "civmodern.repair.cost",
+ "civmodern.repair.level",
+ Integer.toString(repairCost)
+ ));
+ }
+ }
+ }
}
diff --git a/common/src/main/resources/assets/civmodern/lang/en_us.json b/common/src/main/resources/assets/civmodern/lang/en_us.json
index 61c55e1b5c88affb814e5c4337d9e0cd75032d0b..d2b4c8d5099ee6a9a31050b33da5975dab6b82a6 100644
index 61c55e1b5c88affb814e5c4337d9e0cd75032d0b..9a70c15e6a49c4546562681da0bf91b89f6ac8cd 100644
--- a/common/src/main/resources/assets/civmodern/lang/en_us.json
+++ b/common/src/main/resources/assets/civmodern/lang/en_us.json
@@ -27,6 +27,8 @@
"civmodern.screen.radar.transparency": "Transparency: %s",
"civmodern.screen.radar.background_transparency": "BG Transparency: %s",
"civmodern.screen.compacted.title": "Civ Modern Config (Compacted Items)",
+ "civmodern.screen.items.showRepair": "Show repair level",
+ "civmodern.screen.items.showRepair.tooltip": "Whether to show the item's base repair level. This will NOT be the level shown in the Anvil, but rather the base number used to calculate that number.",
+ "civmodern.screen.items.showRepair.tooltip": "Whether to show the item's base repair level. This ISN'T the total repair cost in an Anvil! The total cost is typically level+2.",
"civmodern.screen.ice.title": "Civ Modern Config (Ice Road Macro)",
"civmodern.screen.ice.cardinal.pitch.enable": "Snap pitch to cardinal: Enabled",
"civmodern.screen.ice.cardinal.pitch.disable": "Snap pitch to cardinal: Disabled",
Expand All @@ -241,7 +241,7 @@ index 61c55e1b5c88affb814e5c4337d9e0cd75032d0b..d2b4c8d5099ee6a9a31050b33da5975d
"civmodern.radar.hover" : "Click to highlight position\nControl click to add waypoint",
- "civmodern.radar.leave" : "§r%s §edisappeared at §b[%s§b]"
+ "civmodern.radar.leave" : "§r%s §edisappeared at §b[%s§b]",
+ "civmodern.repair.cost": "§fRepair cost: %s",
+ "civmodern.repair.level": "§fRepair level: %s",
+ "civmodern.button.toggle": "%s: %s"
}
\ No newline at end of file

0 comments on commit dd3ba9d

Please sign in to comment.