From 12a8b0c23a5a551a756afd15314f6cd98e08b8a9 Mon Sep 17 00:00:00 2001 From: Frank Date: Fri, 18 Mar 2022 20:20:44 +0100 Subject: [PATCH] Fixed TollTip Layout --- .../ru/bclib/interfaces/SurvivesOnBlocks.java | 10 +++++-- .../interfaces/SurvivesOnSpecialGround.java | 30 +++++++++---------- .../ru/bclib/interfaces/SurvivesOnTags.java | 9 +++++- 3 files changed, 30 insertions(+), 19 deletions(-) diff --git a/src/main/java/ru/bclib/interfaces/SurvivesOnBlocks.java b/src/main/java/ru/bclib/interfaces/SurvivesOnBlocks.java index b792d22f..148606c6 100644 --- a/src/main/java/ru/bclib/interfaces/SurvivesOnBlocks.java +++ b/src/main/java/ru/bclib/interfaces/SurvivesOnBlocks.java @@ -5,6 +5,7 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; +import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; @@ -15,8 +16,13 @@ public interface SurvivesOnBlocks extends SurvivesOnSpecialGround{ default String getSurvivableBlocksString(){ return getSurvivableBlocks() .stream() - .filter(block -> block!= Blocks.AIR) - .map(block ->new ItemStack(block).getHoverName().getString()) + .filter(block -> block!= Blocks.AIR && block!=null) + .map(block -> { + ItemStack stack = new ItemStack(block); + if (stack.hasCustomHoverName()) return stack.getHoverName().getString(); + else return block.getName().getString(); + }) + .sorted(Comparator.naturalOrder()) .collect(Collectors.joining(", ")); } diff --git a/src/main/java/ru/bclib/interfaces/SurvivesOnSpecialGround.java b/src/main/java/ru/bclib/interfaces/SurvivesOnSpecialGround.java index e2ad9342..de1dae4c 100644 --- a/src/main/java/ru/bclib/interfaces/SurvivesOnSpecialGround.java +++ b/src/main/java/ru/bclib/interfaces/SurvivesOnSpecialGround.java @@ -17,22 +17,18 @@ public interface SurvivesOnSpecialGround { String getSurvivableBlocksString(); @Environment(EnvType.CLIENT) - static List splitLines(String input){ - final int MAX_LEN = 30; - final int MAX_LEN_SECOND = 40; + static List splitLines(String input) { + final int MAX_LEN = 45; List lines = Lists.newArrayList(); - int maxLen = MAX_LEN; - while (input.length()>maxLen){ - int idx = input.lastIndexOf(",", maxLen); + while (input.length()>MAX_LEN){ + int idx = input.lastIndexOf(",", MAX_LEN); if (idx>=0) { lines.add( input.substring(0, idx+1).trim()); - input = input.substring(idx+1, input.length()).trim(); + input = input.substring(idx+1).trim(); } else { break; } - - maxLen = MAX_LEN_SECOND; } lines.add(input.trim()); @@ -41,15 +37,17 @@ public interface SurvivesOnSpecialGround { @Environment(EnvType.CLIENT) static void appendHoverText(List list, String description) { - final int MAX_LINES = 5; + final int MAX_LINES = 7; List lines = splitLines(description); - if (lines.size()>0) { + if (lines.size()==1) { list.add(new TranslatableComponent("tooltip.bclib.place_on", lines.get(0)).withStyle(ChatFormatting.GREEN)); - } - for (int i=1; i1) { + list.add(new TranslatableComponent("tooltip.bclib.place_on", "").withStyle(ChatFormatting.GREEN)); + for (int i = 0; i < Math.min(lines.size(), MAX_LINES); i++) { + String line = lines.get(i); + if (i == MAX_LINES - 1 && i < lines.size() - 1) line += " ..."; + list.add(new TextComponent(" " + line).withStyle(ChatFormatting.GREEN)); + } } } diff --git a/src/main/java/ru/bclib/interfaces/SurvivesOnTags.java b/src/main/java/ru/bclib/interfaces/SurvivesOnTags.java index b39d909c..fbd9d614 100644 --- a/src/main/java/ru/bclib/interfaces/SurvivesOnTags.java +++ b/src/main/java/ru/bclib/interfaces/SurvivesOnTags.java @@ -5,8 +5,10 @@ import net.minecraft.tags.TagKey; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.NetherrackBlock; import net.minecraft.world.level.block.state.BlockState; +import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; @@ -22,7 +24,12 @@ public interface SurvivesOnTags extends SurvivesOnSpecialGround{ .map(named->named.get()) .flatMap(named->named.stream()) .filter(block -> block != Blocks.AIR && block != null) - .map(block ->new ItemStack(block.value()).getHoverName().getString()) + .map(block -> { + ItemStack stack = new ItemStack(block.value()); + if (stack.hasCustomHoverName()) return stack.getHoverName().getString(); + else return block.value().getName().getString(); + }) + .sorted(Comparator.naturalOrder()) .collect(Collectors.joining(", ")); }