From f2ac9c67fb821ed21c64ac050a2562313e953fbb Mon Sep 17 00:00:00 2001 From: Eldrinn-Elantey <46845681+Eldrinn-Elantey@users.noreply.github.com> Date: Sun, 8 Mar 2026 15:28:45 +0400 Subject: [PATCH] feat: add dynamic tooltip info for backpacks - Added getTier() utility method to BackpackUtil - Added dynamic slot count calculation (36 + tier * 27) - Added tooltip lines for tier, total slots, crafting slots, ender backpack - All tooltip strings are localizable via lang files - Basic info (tier, slots) shown always; used/total slots shown on Shift - Resolved TODO for BackpackUtil.getTier() --- .../backpack/item/ItemBackpackBase.java | 54 +++++++++++++------ .../eydamos/backpack/misc/Localizations.java | 4 ++ .../eydamos/backpack/util/BackpackUtil.java | 5 ++ .../resources/assets/backpack/lang/en_US.lang | 3 ++ .../resources/assets/backpack/lang/ru_RU.lang | 3 ++ 5 files changed, 52 insertions(+), 17 deletions(-) diff --git a/src/main/java/de/eydamos/backpack/item/ItemBackpackBase.java b/src/main/java/de/eydamos/backpack/item/ItemBackpackBase.java index 6f062aef..5bf4dfbd 100644 --- a/src/main/java/de/eydamos/backpack/item/ItemBackpackBase.java +++ b/src/main/java/de/eydamos/backpack/item/ItemBackpackBase.java @@ -136,7 +136,7 @@ public String getUnlocalizedName(ItemStack itemStack) { String name = super.getUnlocalizedName(); int damage = itemStack.getItemDamage(); - int tier = damage / 100 < 3 ? damage / 100 : 0; + int tier = BackpackUtil.getTier(itemStack); int meta = damage % 100; name += (tier == 0 ? "" : '.') + ItemsBackpack.BACKPACK_TIERS[tier]; if (meta > 0 && meta < 17) { // add color @@ -177,26 +177,46 @@ public void onCreated(ItemStack itemStack, World world, EntityPlayer entityPlaye @SideOnly(Side.CLIENT) public void addInformation(ItemStack itemStack, EntityPlayer entityPlayer, List information, boolean advancedTooltip) { - if (Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) || Keyboard.isKeyDown(Keyboard.KEY_RSHIFT)) { - if (itemStack.getItemDamage() != ItemsBackpack.ENDERBACKPACK) { - // TODO BackpackUtil.getTier() - information.add( - EnumChatFormatting.YELLOW + StatCollector.translateToLocal(Localizations.TIER) - + " " - + (itemStack.getItemDamage() / 100 + 1)); + int damage = itemStack.getItemDamage(); - if (itemStack.stackTagCompound == null) return; + if (damage == ItemsBackpack.ENDERBACKPACK) { + information + .add(EnumChatFormatting.AQUA + StatCollector.translateToLocal(Localizations.ENDER_BACKPACK_INFO)); + return; + } - String uuid = itemStack.stackTagCompound.getString(Constants.NBT.UID); - if (uuid == null) return; + int tier = BackpackUtil.getTier(itemStack); + int meta = damage % 100; - BackpackUsageCache.BackpackSlotUsageInfo info = BackpackUsageCache.getBackpackInfo(uuid); + if (meta == 17) { + int craftSlots = tier == 0 ? 9 : 18; + information.add( + EnumChatFormatting.AQUA + + String.format(StatCollector.translateToLocal(Localizations.CRAFTING_SLOTS), craftSlots)); + return; + } + + int slots = 36 + tier * 27; + information.add( + EnumChatFormatting.AQUA + + String.format(StatCollector.translateToLocal(Localizations.SLOTS_TOTAL), slots)); - if (info != null) { - String slotsText = StatCollector.translateToLocal(Localizations.SLOTS_USED); - information.add(info.usedSlots + "/" + info.totalSlots + ' ' + slotsText); - } else { - BackpackUsageCache.requestBackpackInfo(uuid); + if (Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) || Keyboard.isKeyDown(Keyboard.KEY_RSHIFT)) { + information.add( + EnumChatFormatting.YELLOW + StatCollector.translateToLocal(Localizations.TIER) + " " + (tier + 1)); + if (itemStack.stackTagCompound != null) { + String uuid = itemStack.stackTagCompound.getString(Constants.NBT.UID); + if (uuid != null) { + BackpackUsageCache.BackpackSlotUsageInfo info = BackpackUsageCache.getBackpackInfo(uuid); + if (info != null) { + information.add( + info.usedSlots + "/" + + info.totalSlots + + " " + + StatCollector.translateToLocal(Localizations.SLOTS_USED)); + } else { + BackpackUsageCache.requestBackpackInfo(uuid); + } } } } else { diff --git a/src/main/java/de/eydamos/backpack/misc/Localizations.java b/src/main/java/de/eydamos/backpack/misc/Localizations.java index 8e120edb..5be027c9 100644 --- a/src/main/java/de/eydamos/backpack/misc/Localizations.java +++ b/src/main/java/de/eydamos/backpack/misc/Localizations.java @@ -30,4 +30,8 @@ public class Localizations { public static final String BUTTON_OK = "button.backpack.ok"; public static final String BUTTON_CANCEL = "button.backpack.cancel"; + + public static final String SLOTS_TOTAL = "tooltip.slots"; + public static final String CRAFTING_SLOTS = "tooltip.crafting_slots"; + public static final String ENDER_BACKPACK_INFO = "tooltip.ender"; } diff --git a/src/main/java/de/eydamos/backpack/util/BackpackUtil.java b/src/main/java/de/eydamos/backpack/util/BackpackUtil.java index 82b0bdff..8c157460 100644 --- a/src/main/java/de/eydamos/backpack/util/BackpackUtil.java +++ b/src/main/java/de/eydamos/backpack/util/BackpackUtil.java @@ -61,6 +61,11 @@ public static byte getType(ItemStack backpack) { return 0; } + public static int getTier(ItemStack itemStack) { + int tier = itemStack.getItemDamage() / 100; + return tier < 3 ? tier : 0; + } + public static void pickupItem(EntityPlayer entityPlayer, ItemStack itemStack) { PlayerSave playerSave = new PlayerSave(entityPlayer); ItemStack backpack = playerSave.getPersonalBackpack(); diff --git a/src/main/resources/assets/backpack/lang/en_US.lang b/src/main/resources/assets/backpack/lang/en_US.lang index a296ec15..cd53b73a 100644 --- a/src/main/resources/assets/backpack/lang/en_US.lang +++ b/src/main/resources/assets/backpack/lang/en_US.lang @@ -75,4 +75,7 @@ tooltip.slots_used=Slots used tooltip.tier=Tier: tooltip.more_information=Press SHIFT for more information tooltip.intelligent=Intelligent +tooltip.slots=%s Slots +tooltip.crafting_slots=Crafting Backpack with %s Inventory Slots +tooltip.ender=§4Disabled Item; No recipe itemGroup.tab.backpacks=Backpacks diff --git a/src/main/resources/assets/backpack/lang/ru_RU.lang b/src/main/resources/assets/backpack/lang/ru_RU.lang index b3f6a72b..bd4858d9 100644 --- a/src/main/resources/assets/backpack/lang/ru_RU.lang +++ b/src/main/resources/assets/backpack/lang/ru_RU.lang @@ -75,4 +75,7 @@ tooltip.slots_used=Использовано слотов tooltip.tier=Уровень: tooltip.more_information=Нажмите SHIFT, для большей информации tooltip.intelligent=Умный +tooltip.slots=%s слотов +tooltip.crafting_slots=Рюкзак-верстак с %s слотами инвентаря +tooltip.ender=§4Выключенный предмет; нет рецепта itemGroup.tab.backpacks=Backpacks