diff --git a/src/main/java/fi/dy/masa/minihud/config/Configs.java b/src/main/java/fi/dy/masa/minihud/config/Configs.java index f3d0848b7..117a743f7 100644 --- a/src/main/java/fi/dy/masa/minihud/config/Configs.java +++ b/src/main/java/fi/dy/masa/minihud/config/Configs.java @@ -31,6 +31,8 @@ public static class Generic { public static final ConfigBoolean AXOLOTL_TOOLTIPS = new ConfigBoolean("axolotlTooltips", false).apply(GENERIC_KEY); public static final ConfigBoolean BEE_TOOLTIPS = new ConfigBoolean("beeTooltips", false).apply(GENERIC_KEY); + public static final ConfigBoolean BUNDLE_TOOLTIPS = new ConfigBoolean("bundleTooltips", true).apply(GENERIC_KEY); + public static final ConfigInteger BUNDLE_TOOLTIPS_FILL_LEVEL = new ConfigInteger("bundleTooltipsFillLevel", 64, 1, 64).apply(GENERIC_KEY); public static final ConfigBoolean HONEY_TOOLTIPS = new ConfigBoolean("honeyTooltips", false).apply(GENERIC_KEY); public static final ConfigInteger BIOME_OVERLAY_RANGE = new ConfigInteger("biomeOverlayRange", 4, 0, 32).apply(GENERIC_KEY); public static final ConfigInteger BIOME_OVERLAY_RANGE_VERTICAL = new ConfigInteger("biomeOverlayRangeVertical", 0, 0, 32).apply(GENERIC_KEY); @@ -123,6 +125,8 @@ public static class Generic public static final ImmutableList OPTIONS = ImmutableList.of( AXOLOTL_TOOLTIPS, BEE_TOOLTIPS, + BUNDLE_TOOLTIPS, + BUNDLE_TOOLTIPS_FILL_LEVEL, HONEY_TOOLTIPS, BIOME_OVERLAY_SINGLE_COLOR, BUNDLE_PREVIEW, diff --git a/src/main/java/fi/dy/masa/minihud/event/RenderHandler.java b/src/main/java/fi/dy/masa/minihud/event/RenderHandler.java index dbb7624ae..127d6a86c 100644 --- a/src/main/java/fi/dy/masa/minihud/event/RenderHandler.java +++ b/src/main/java/fi/dy/masa/minihud/event/RenderHandler.java @@ -1620,7 +1620,7 @@ else if (type == InfoToggle.PLAYER_EXPERIENCE) { if (mc.player != null) { - this.addLineI18n("minihud.info_line.player_experience", mc.player.experienceLevel, mc.player.experienceProgress, mc.player.totalExperience); + this.addLineI18n("minihud.info_line.player_experience", mc.player.experienceLevel, 100 * mc.player.experienceProgress, mc.player.totalExperience); } } else if (type == InfoToggle.LOOKING_AT_PLAYER_EXP) @@ -1644,13 +1644,13 @@ else if (type == InfoToggle.LOOKING_AT_PLAYER_EXP) if (triple.getLeft() > 0) { - this.addLineI18n("minihud.info_line.looking_at_player_exp", triple.getLeft(), triple.getRight(), triple.getMiddle()); + this.addLineI18n("minihud.info_line.looking_at_player_exp", triple.getLeft(), triple.getRight(), 100 * triple.getMiddle()); } } } else if (pair.getLeft() instanceof ServerPlayerEntity player) { - this.addLineI18n("minihud.info_line.looking_at_player_exp", player.experienceLevel, player.experienceProgress, player.totalExperience); + this.addLineI18n("minihud.info_line.looking_at_player_exp", player.experienceLevel, 100 * player.experienceProgress, player.totalExperience); } } } diff --git a/src/main/java/fi/dy/masa/minihud/mixin/MixinItemStack.java b/src/main/java/fi/dy/masa/minihud/mixin/MixinItemStack.java index bc255a74b..3c9a74666 100644 --- a/src/main/java/fi/dy/masa/minihud/mixin/MixinItemStack.java +++ b/src/main/java/fi/dy/masa/minihud/mixin/MixinItemStack.java @@ -1,14 +1,12 @@ package fi.dy.masa.minihud.mixin; import java.util.List; +import com.llamalad7.mixinextras.sugar.Local; import org.jetbrains.annotations.Nullable; import net.minecraft.block.BeehiveBlock; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.BlockItem; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; +import net.minecraft.item.*; import net.minecraft.item.tooltip.TooltipType; import net.minecraft.text.Text; import org.spongepowered.asm.mixin.Mixin; @@ -26,6 +24,20 @@ public abstract class MixinItemStack @Shadow public abstract Item getItem(); + @Inject(method = "getTooltip", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/item/ItemStack;appendTooltip(Lnet/minecraft/component/ComponentType;Lnet/minecraft/item/Item$TooltipContext;Ljava/util/function/Consumer;Lnet/minecraft/item/tooltip/TooltipType;)V", + ordinal = 0)) + private void onGetTooltipComponents(Item.TooltipContext context, @Nullable PlayerEntity player, TooltipType type, CallbackInfoReturnable> cir, + @Local List list) + { + if (Configs.Generic.BUNDLE_TOOLTIPS.getBooleanValue() && + this.getItem() instanceof BundleItem) + { + MiscUtils.addBundleTooltip((ItemStack) (Object) this, list); + } + } + @Inject(method = "getTooltip", at = @At("RETURN")) private void onGetTooltip(Item.TooltipContext context, @Nullable PlayerEntity player, TooltipType type, CallbackInfoReturnable> cir) { diff --git a/src/main/java/fi/dy/masa/minihud/util/MiscUtils.java b/src/main/java/fi/dy/masa/minihud/util/MiscUtils.java index 06d6c40bb..45812c4f0 100644 --- a/src/main/java/fi/dy/masa/minihud/util/MiscUtils.java +++ b/src/main/java/fi/dy/masa/minihud/util/MiscUtils.java @@ -4,13 +4,15 @@ import java.util.Random; import javax.annotation.Nonnull; import javax.annotation.Nullable; -import it.unimi.dsi.fastutil.objects.Object2IntMap; -import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; +import it.unimi.dsi.fastutil.objects.Reference2IntMap; +import it.unimi.dsi.fastutil.objects.Reference2IntOpenHashMap; +import org.apache.commons.lang3.math.Fraction; import net.minecraft.block.entity.AbstractFurnaceBlockEntity; import net.minecraft.block.entity.BeehiveBlockEntity; import net.minecraft.component.DataComponentTypes; import net.minecraft.component.type.BlockStateComponent; +import net.minecraft.component.type.BundleContentsComponent; import net.minecraft.component.type.NbtComponent; import net.minecraft.entity.passive.AxolotlEntity; import net.minecraft.item.ItemStack; @@ -25,11 +27,15 @@ import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockBox; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; import net.minecraft.world.World; import fi.dy.masa.malilib.util.Constants; import fi.dy.masa.malilib.util.IntBoundingBox; +import fi.dy.masa.malilib.util.StringUtils; import fi.dy.masa.malilib.util.nbt.NbtBlockUtils; +import fi.dy.masa.minihud.config.Configs; +import fi.dy.masa.minihud.data.HudDataManager; import fi.dy.masa.minihud.mixin.IMixinAbstractFurnaceBlockEntity; public class MiscUtils @@ -211,6 +217,21 @@ public static void addBeeTooltip(ItemStack stack, List lines) } } + public static void addBundleTooltip(ItemStack stack, List lines) + { + BundleContentsComponent bundleData = stack.get(DataComponentTypes.BUNDLE_CONTENTS); + int maxCount = Configs.Generic.BUNDLE_TOOLTIPS_FILL_LEVEL.getIntegerValue(); + + if (bundleData != null) + { + Fraction occupancy = bundleData.getOccupancy(); + int count = MathHelper.multiplyFraction(occupancy, maxCount); + float fillPercent = 100 * occupancy.floatValue(); + String result = StringUtils.translate("minihud.label.bundle_tooltip.count", count, maxCount, fillPercent); + lines.add(Text.of(result)); + } + } + public static void addHoneyTooltip(ItemStack stack, List lines) { BlockStateComponent blockItemState = stack.getComponents().get(DataComponentTypes.BLOCK_STATE); diff --git a/src/main/resources/assets/minihud/lang/ko_kr.json b/src/main/resources/assets/minihud/lang/ko_kr.json index 4347a8fd4..b401576b0 100644 --- a/src/main/resources/assets/minihud/lang/ko_kr.json +++ b/src/main/resources/assets/minihud/lang/ko_kr.json @@ -80,8 +80,8 @@ "minihud.config.colors.name.textColor": "텍스트 색상", "minihud.config.generic.comment.axolotlTooltips": "아홀로틀 양동이 툴팁에 유형 숫자를 추가합니다.", "minihud.config.generic.comment.beeTooltips": "벌집 및 벌통의 툴팁에 포함된 꿀벌의 수를 추가합니다.", - "minihud.config.generic.comment.bundleTooltips": "꾸러미의 툴팁에 포함된 아이템 수를 추가합니다.\n원래의 바닐라 작동 방식과 유사하지만\n§e꾸러미 툴팁 채우기 레벨§r 설정을 통해 표시할\n§d채우기 레벨§r을 원하는대로 조정할 수 있습니다.", - "minihud.config.generic.comment.bundleTooltipsFillLevel": "§e꾸러미 툴팁§r에서 표시 목적으로만 사용되는 꾸러미의\n툴팁에 대한 포함 아이템 최대값을 설정합니다.\n미니 게임에 유용할 수 있습니다.", + "minihud.config.generic.comment.bundleTooltips": "Adds the number of contained items to the tooltip of a Bundle,\nSimilar to the original Vanilla behavior,\nbut you can also adjust the desired §dfillLevel§r to be shown\nusing the §ebundleTooltipsFillLevel§r config", + "minihud.config.generic.comment.bundleTooltipsFillLevel": "Sets the desired max contained items for the tooltip\nof a Bundle used by §ebundleTooltips§r for display purposes only.\nIt might be useful for mini games.", "minihud.config.generic.comment.biomeOverlayRange": "생물군계 경계 오버레이를 렌더링하는 수평 청크 반경입니다.", "minihud.config.generic.comment.biomeOverlayRangeVertical": "생물군계 경계 오버레이를 렌더링하는 수직 (서브-)청크 반경입니다.", "minihud.config.generic.comment.biomeOverlaySingleColor": "활성화된 경우, 생물군계 경계 오버레이는 모든 생물군계에 대해\n동일한 색상을 사용합니다. 인접한 생물군계의 색상과 선이\n엄청난 색상의 혼란으로 섞이지 않을 때 \"덜 지저분해\" 보일 수 있습니다.\n", @@ -90,7 +90,7 @@ "minihud.config.generic.comment.blockPosFormat": "\"정보 블록 위치\"의 형식 문자열입니다.\n세 개의 %%d 형식 문자열이 필요합니다!\n기본값: \"Block: %%d, %%d, %%d\"", "minihud.config.generic.comment.bundleDisplayBgColor": "꾸러미 미리보기의 배경색을 꾸러미의 염색 색상과 일치시킵니다.", "minihud.config.generic.comment.bundleDisplayRequireShift": "꾸러미 미리보기를 할 때 Shift 키를 눌러야 하는지 여부를 설정합니다.\n§6참고: 이 기능을 비활성화하면 바닐라 꾸러미 툴팁이 완전히 비활성화됩니다.", - "minihud.config.generic.comment.bundleDisplayRowWidth": "꾸러미 미리보기의 행 너비 크기를 조정합니다.\n기본값보다 작거나 크면 텍스처 표시 문제가 발생할 수 있습니다.", + "minihud.config.generic.comment.bundleDisplayRowWidth": "Adjust the Row Width size of the Bundle Preview display,\nAnything smaller or larger will cause texture display problems.", "minihud.config.generic.comment.bundlePreview": "꾸러미 위에 마우스를 올려놓은 상태에서 Shift 키를 누르면\n꾸러미의 내용물을 미리보기 할 수 있습니다.", "minihud.config.generic.comment.coordinateFormat": "좌표 정보 라인의 형식 문자열입니다.\n세 개의 %%f 형식 문자열이 필요합니다!\n기본값: x: %%.1f y: %%.1f z: %%.1f", "minihud.config.generic.comment.dateFormatMinecraft": "마인크래프트 날짜에 대한 형식 문자열입니다.\n지원되는 자리 표시자는 다음과 같습니다: {DAY_1}, {DAY}, {HOUR}, {MIN}, {SEC}, {MOON}.\n{DAY_1}은 1부터 시작하고, {DAY}는 0부터 시작합니다.", @@ -172,8 +172,8 @@ "minihud.config.generic.comment.villagerOfferPriceThreshold": "이 비율보다 가격이 낮은 주민 거래만 표시합니다.\n모든 제안을 표시하려면 1.0으로 설정합니다.", "minihud.config.generic.name.axolotlTooltips": "아홀로틀 툴팁", "minihud.config.generic.name.beeTooltips": "꿀벌 툴팁", - "minihud.config.generic.name.bundleTooltips": "꾸러미 툴팁", - "minihud.config.generic.name.bundleTooltipsFillLevel": "꾸러미 툴팁 채우기 레벨", + "minihud.config.generic.name.bundleTooltips": "bundleTooltips", + "minihud.config.generic.name.bundleTooltipsFillLevel": "bundleTooltipsFillLevel", "minihud.config.generic.name.biomeOverlayRange": "생물군계 오버레이 범위", "minihud.config.generic.name.biomeOverlayRangeVertical": "생물군계 오버레이 수직 범위", "minihud.config.generic.name.biomeOverlaySingleColor": "생물군계 오버레이 단일 색상", @@ -182,7 +182,7 @@ "minihud.config.generic.name.blockPosFormat": "블록 위치 형식", "minihud.config.generic.name.bundleDisplayBgColor": "꾸머리 표시 배경 색상", "minihud.config.generic.name.bundleDisplayRequireShift": "꾸러미 표시 Shift 여부", - "minihud.config.generic.name.bundleDisplayRowWidth": "꾸러미 표시 행 너비", + "minihud.config.generic.name.bundleDisplayRowWidth": "bundleDisplayRowWidth", "minihud.config.generic.name.bundlePreview": "꾸러미 미리보기", "minihud.config.generic.name.coordinateFormat": "좌표 형식", "minihud.config.generic.name.dateFormatMinecraft": "마인크래프트 날짜 형식", @@ -217,7 +217,7 @@ "minihud.config.generic.name.lightLevelNumberRotation": "밝기 숫자 회전", "minihud.config.generic.name.lightLevelNumbers": "밝기 숫자", "minihud.config.generic.name.lightLevelRange": "밝기 범위", - "minihud.config.generic.name.lightLevelRenderOffset": "밝기 렌더 오프셋", + "minihud.config.generic.name.lightLevelRenderOffset": " 밝기 렌더 오프셋", "minihud.config.generic.name.lightLevelRenderThrough": "밝기 렌더 투시", "minihud.config.generic.name.lightLevelSkipBlockCheck": "밝기 스킵 블록 체크", "minihud.config.generic.name.lightLevelThresholdDim": "밝기 어둑함 임계값", @@ -274,7 +274,7 @@ "minihud.config.info_toggle.comment.infoChunkSections": "현재 렌더링된 청크 섹션의 수를 표시합니다(F3의 C 값)", "minihud.config.info_toggle.comment.infoChunkSectionsLine": "F3 화면의 C 값 전체를 표시합니다.", "minihud.config.info_toggle.comment.infoChunkUpdates": "초당 현재 청크 업데이트 수를 표시합니다.", - "minihud.config.info_toggle.comment.infoComparatorOutput": "바라보고 있는 비교기의\n신호 출력 세기를 표시합니다.", + "minihud.config.info_toggle.comment.infoComparatorOutput": "Show the Signal Strength of a\nComparator's Output when looked at", "minihud.config.info_toggle.comment.infoCoordinates": "플레이어의 좌표를 표시합니다.", "minihud.config.info_toggle.comment.infoCoordinatesScaled": "플레이어의 좌표를 차원의 축척에 따라 조정하여 표시합니다.\n오버월드와 네더에서만 작동하고, 바닐라 네더 포털 축척을 가정합니다.", "minihud.config.info_toggle.comment.infoDifficulty": "지역 난이도를 표시합니다.", @@ -332,7 +332,7 @@ "minihud.config.info_toggle.name.infoChunkSections": "정보 청크 섹션", "minihud.config.info_toggle.name.infoChunkSectionsLine": "정보 청크 섹션 라인", "minihud.config.info_toggle.name.infoChunkUpdates": "정보 청크 업데이트", - "minihud.config.info_toggle.name.infoComparatorOutput": "정보 비교기 출력", + "minihud.config.info_toggle.name.infoComparatorOutput": "infoComparatorOutput", "minihud.config.info_toggle.name.infoCoordinates": "정보 좌표", "minihud.config.info_toggle.name.infoCoordinatesScaled": "정보 좌표 조정", "minihud.config.info_toggle.name.infoDifficulty": "정보 난이도", @@ -773,7 +773,7 @@ "minihud.info_line.chunk_pos": "서브-청크: %d, %d, %d", "minihud.info_line.chunk_sections": "C: %d", "minihud.info_line.chunk_updates": "TODO", - "minihud.info_line.comparator_output_signal": "비교기 출력: §c§l%d§r", + "minihud.info_line.comparator_output_signal": "Comparator Output: §c§l%d§r", "minihud.info_line.coordinates.exception": "좌표 형식 문자열이 틀렸습니다!", "minihud.info_line.coordinates.format": "XYZ: %.2f / %.4f / %.2f", "minihud.info_line.coordinates_scaled.nether": "네더: ", @@ -788,12 +788,12 @@ "minihud.info_line.entity_variant.cat": "고양이 유형: §b%s§r (%s 색)", "minihud.info_line.entity_variant.frog": "개구리 유형: §b%s§r", "minihud.info_line.entity_variant.horse": "말 유형: §b%s§r / §d%s§r", - "minihud.info_line.entity_variant.llama": "라마 유형: §b%s§r, 힘: §e§l%s§r", - "minihud.info_line.entity_variant.painting.author_only": "그림 유형: by §e§l%s§r", - "minihud.info_line.entity_variant.painting.both": "그림 유형: §b§l%s§r by §e§l%s§r", - "minihud.info_line.entity_variant.painting.title_only": "그림 유형: §b§l%s§r", + "minihud.info_line.entity_variant.llama": "Llama Variant: §b%s§r, Strength: §e§l%s§r", + "minihud.info_line.entity_variant.painting.author_only": "Painting Variant: by §e§l%s§r", + "minihud.info_line.entity_variant.painting.both": "Painting Variant: §b§l%s§r by §e§l%s§r", + "minihud.info_line.entity_variant.painting.title_only": "Painting Variant: §b§l%s§r", "minihud.info_line.entity_variant.parrot": "앵무새 유형: §b%s§r", - "minihud.info_line.entity_variant.rabbit": "토끼 유형: §b%s§r", + "minihud.info_line.entity_variant.rabbit": "Rabbit Variant: §b%s§r", "minihud.info_line.entity_variant.sheep": "양 색상: §b%s§r", "minihud.info_line.entity_variant.tropical_fish": "열대어 유형: §b%s§r", "minihud.info_line.entity_variant.wolf": "늑대 유형: §b%s§r (%s 색)", @@ -952,4 +952,4 @@ "minihud.message.toggled_using_player_spawn": "토글 %s %s, 시뮬레이션 거리 %s", "minihud.message.toggled_using_position": "토글 %s %s, 위치 %s", "minihud.message.toggled_using_world_spawn": "토글 %s %s, 월드 스폰 %s" -} +} \ No newline at end of file