From 6f67cff3652d68aa6520a6ae5ed7dea6207d9d3c Mon Sep 17 00:00:00 2001 From: Roelymole Date: Fri, 31 Jan 2025 23:54:25 +0000 Subject: [PATCH 1/3] fix: format tooltips in the same way as other Galacticraft blocks by splitting into lines of at most 150 characters --- .../dev/galacticraft/machinelib/api/block/MachineBlock.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/dev/galacticraft/machinelib/api/block/MachineBlock.java b/src/main/java/dev/galacticraft/machinelib/api/block/MachineBlock.java index 8704a08..7b62659 100644 --- a/src/main/java/dev/galacticraft/machinelib/api/block/MachineBlock.java +++ b/src/main/java/dev/galacticraft/machinelib/api/block/MachineBlock.java @@ -34,6 +34,7 @@ import dev.galacticraft.machinelib.client.api.util.DisplayUtil; import dev.galacticraft.machinelib.impl.Constant; import dev.galacticraft.machinelib.impl.block.entity.MachineBlockEntityTicker; +import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.Screen; import net.minecraft.core.BlockPos; import net.minecraft.core.component.DataComponentPatch; @@ -43,6 +44,7 @@ import net.minecraft.nbt.Tag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; +import net.minecraft.network.chat.Style; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.LivingEntity; @@ -212,7 +214,7 @@ public void onPlace(BlockState state, Level level, BlockPos pos, BlockState bloc @Override public void appendHoverText(ItemStack stack, TooltipContext context, List tooltip, @NotNull TooltipFlag flag) { if (Screen.hasShiftDown()) { - tooltip.addAll(DisplayUtil.wrapText(Component.translatable(this.getDescriptionId() + ".description"), 128)); + tooltip.addAll(Minecraft.getInstance().font.getSplitter().splitLines(this.getDescriptionId() + ".description", 150, Style.EMPTY).stream().map(formattedText -> Component.literal(formattedText.getString()).withStyle(Constant.Text.GRAY_STYLE)).toList()); } else { tooltip.add(PRESS_SHIFT); } From df75df47291811b28170f5a03441e269c008659b Mon Sep 17 00:00:00 2001 From: Roelymole Date: Wed, 5 Feb 2025 11:23:23 +0000 Subject: [PATCH 2/3] refactor: moved code to handle splitting long lines to DisplayUtil.wrapText and added descriptions of varying lengths to the test machines --- .../machinelib/api/block/MachineBlock.java | 2 +- .../client/api/util/DisplayUtil.java | 20 ++----------------- .../assets/machinelib_testmod/lang/en_us.json | 5 ++++- 3 files changed, 7 insertions(+), 20 deletions(-) diff --git a/src/main/java/dev/galacticraft/machinelib/api/block/MachineBlock.java b/src/main/java/dev/galacticraft/machinelib/api/block/MachineBlock.java index 7b62659..b689d4b 100644 --- a/src/main/java/dev/galacticraft/machinelib/api/block/MachineBlock.java +++ b/src/main/java/dev/galacticraft/machinelib/api/block/MachineBlock.java @@ -214,7 +214,7 @@ public void onPlace(BlockState state, Level level, BlockPos pos, BlockState bloc @Override public void appendHoverText(ItemStack stack, TooltipContext context, List tooltip, @NotNull TooltipFlag flag) { if (Screen.hasShiftDown()) { - tooltip.addAll(Minecraft.getInstance().font.getSplitter().splitLines(this.getDescriptionId() + ".description", 150, Style.EMPTY).stream().map(formattedText -> Component.literal(formattedText.getString()).withStyle(Constant.Text.GRAY_STYLE)).toList()); + tooltip.addAll(DisplayUtil.wrapText(Component.translatable(this.getDescriptionId() + ".description").withStyle(Constant.Text.GRAY_STYLE), 150)); } else { tooltip.add(PRESS_SHIFT); } diff --git a/src/main/java/dev/galacticraft/machinelib/client/api/util/DisplayUtil.java b/src/main/java/dev/galacticraft/machinelib/client/api/util/DisplayUtil.java index 099d372..f7e4849 100644 --- a/src/main/java/dev/galacticraft/machinelib/client/api/util/DisplayUtil.java +++ b/src/main/java/dev/galacticraft/machinelib/client/api/util/DisplayUtil.java @@ -91,26 +91,10 @@ public static String truncateDecimal(double d, int places) { } public static @NotNull @Unmodifiable List wrapText(@NotNull String text, int length, @Nullable Style style) { - if (text.length() <= length) { - return ImmutableList.of(Component.literal(text)); - } - Minecraft minecraft = Minecraft.getInstance(); ImmutableList.Builder list = ImmutableList.builder(); - StringBuilder builder = new StringBuilder(); - int lineLength = 0; - for (int i = 0; i < text.length(); i++) { - char c = text.charAt(i); - lineLength += minecraft.font.width(String.valueOf(c)); - if (Character.isWhitespace(c) && lineLength >= length) { - lineLength = 0; - list.add(Component.literal(builder.toString()).setStyle(style)); - builder.delete(0, builder.length()); - } else { - builder.append(c); - } - } - list.add(Component.literal(builder.toString()).setStyle(style)); + minecraft.font.getSplitter().splitLines(text, length, Style.EMPTY).stream() + .forEach(formattedText -> list.add(Component.literal(formattedText.getString()).withStyle(style))); return list.build(); } diff --git a/src/testmod/resources/assets/machinelib_testmod/lang/en_us.json b/src/testmod/resources/assets/machinelib_testmod/lang/en_us.json index ad38c69..a2676ef 100644 --- a/src/testmod/resources/assets/machinelib_testmod/lang/en_us.json +++ b/src/testmod/resources/assets/machinelib_testmod/lang/en_us.json @@ -1,5 +1,8 @@ { "block.machinelib_testmod.generator": "Generator", + "block.machinelib_testmod.generator.description": "Burns the same items that can be used to power a furnace to instead produce energy which can be used to charge batteries and power other machines.", "block.machinelib_testmod.mixer": "Mixer", - "block.machinelib_testmod.melter": "Melter" + "block.machinelib_testmod.mixer.description": "Combines water and lava to produce obsidian in a controlled environment.", + "block.machinelib_testmod.melter": "Melter", + "block.machinelib_testmod.melter.description": "Melts cobblestone into lava." } \ No newline at end of file From 2613a4940cb5a1283361199a13fc71f30626378a Mon Sep 17 00:00:00 2001 From: Roelymole Date: Wed, 5 Feb 2025 11:32:40 +0000 Subject: [PATCH 3/3] refactor: removed unused imports --- .../dev/galacticraft/machinelib/api/block/MachineBlock.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/dev/galacticraft/machinelib/api/block/MachineBlock.java b/src/main/java/dev/galacticraft/machinelib/api/block/MachineBlock.java index b689d4b..5205b43 100644 --- a/src/main/java/dev/galacticraft/machinelib/api/block/MachineBlock.java +++ b/src/main/java/dev/galacticraft/machinelib/api/block/MachineBlock.java @@ -34,7 +34,6 @@ import dev.galacticraft.machinelib.client.api.util.DisplayUtil; import dev.galacticraft.machinelib.impl.Constant; import dev.galacticraft.machinelib.impl.block.entity.MachineBlockEntityTicker; -import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.Screen; import net.minecraft.core.BlockPos; import net.minecraft.core.component.DataComponentPatch; @@ -44,7 +43,6 @@ import net.minecraft.nbt.Tag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.Style; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.LivingEntity;