Skip to content

Commit

Permalink
feat: Bundle Fill Level Tooltips,
Browse files Browse the repository at this point in the history
fix: Player Experience % display
  • Loading branch information
sakura-ryoko committed Dec 27, 2024
1 parent d91404a commit 05ead4a
Show file tree
Hide file tree
Showing 5 changed files with 62 additions and 25 deletions.
4 changes: 4 additions & 0 deletions src/main/java/fi/dy/masa/minihud/config/Configs.java
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -123,6 +125,8 @@ public static class Generic
public static final ImmutableList<IConfigBase> OPTIONS = ImmutableList.of(
AXOLOTL_TOOLTIPS,
BEE_TOOLTIPS,
BUNDLE_TOOLTIPS,
BUNDLE_TOOLTIPS_FILL_LEVEL,
HONEY_TOOLTIPS,
BIOME_OVERLAY_SINGLE_COLOR,
BUNDLE_PREVIEW,
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/fi/dy/masa/minihud/event/RenderHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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);
}
}
}
Expand Down
20 changes: 16 additions & 4 deletions src/main/java/fi/dy/masa/minihud/mixin/MixinItemStack.java
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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<List<Text>> cir,
@Local List<Text> 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<List<Text>> cir)
{
Expand Down
25 changes: 23 additions & 2 deletions src/main/java/fi/dy/masa/minihud/util/MiscUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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
Expand Down Expand Up @@ -211,6 +217,21 @@ public static void addBeeTooltip(ItemStack stack, List<Text> lines)
}
}

public static void addBundleTooltip(ItemStack stack, List<Text> 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<Text> lines)
{
BlockStateComponent blockItemState = stack.getComponents().get(DataComponentTypes.BLOCK_STATE);
Expand Down
32 changes: 16 additions & 16 deletions src/main/resources/assets/minihud/lang/ko_kr.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand All @@ -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부터 시작합니다.",
Expand Down Expand Up @@ -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": "생물군계 오버레이 단일 색상",
Expand All @@ -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": "마인크래프트 날짜 형식",
Expand Down Expand Up @@ -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": "밝기 어둑함 임계값",
Expand Down Expand Up @@ -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": "지역 난이도를 표시합니다.",
Expand Down Expand Up @@ -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": "정보 난이도",
Expand Down Expand Up @@ -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": "네더: ",
Expand All @@ -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 색)",
Expand Down Expand Up @@ -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"
}
}

0 comments on commit 05ead4a

Please sign in to comment.