38 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package net.minecraft.client.gui.components;
 | |
| 
 | |
| import com.google.common.collect.Lists;
 | |
| import java.util.List;
 | |
| import java.util.Optional;
 | |
| import net.fabricmc.api.EnvType;
 | |
| import net.fabricmc.api.Environment;
 | |
| import net.minecraft.ChatFormatting;
 | |
| import net.minecraft.client.ComponentCollector;
 | |
| import net.minecraft.client.Minecraft;
 | |
| import net.minecraft.client.gui.Font;
 | |
| import net.minecraft.locale.Language;
 | |
| import net.minecraft.network.chat.FormattedText;
 | |
| import net.minecraft.network.chat.Style;
 | |
| import net.minecraft.util.FormattedCharSequence;
 | |
| 
 | |
| @Environment(EnvType.CLIENT)
 | |
| public class ComponentRenderUtils {
 | |
| 	private static final FormattedCharSequence INDENT = FormattedCharSequence.codepoint(32, Style.EMPTY);
 | |
| 
 | |
| 	private static String stripColor(String text) {
 | |
| 		return Minecraft.getInstance().options.chatColors().get() ? text : ChatFormatting.stripFormatting(text);
 | |
| 	}
 | |
| 
 | |
| 	public static List<FormattedCharSequence> wrapComponents(FormattedText component, int maxWidth, Font font) {
 | |
| 		ComponentCollector componentCollector = new ComponentCollector();
 | |
| 		component.visit((style, string) -> {
 | |
| 			componentCollector.append(FormattedText.of(stripColor(string), style));
 | |
| 			return Optional.empty();
 | |
| 		}, Style.EMPTY);
 | |
| 		List<FormattedCharSequence> list = Lists.<FormattedCharSequence>newArrayList();
 | |
| 		font.getSplitter().splitLines(componentCollector.getResultOrEmpty(), maxWidth, Style.EMPTY, (formattedText, boolean_) -> {
 | |
| 			FormattedCharSequence formattedCharSequence = Language.getInstance().getVisualOrder(formattedText);
 | |
| 			list.add(boolean_ ? FormattedCharSequence.composite(INDENT, formattedCharSequence) : formattedCharSequence);
 | |
| 		});
 | |
| 		return (List<FormattedCharSequence>)(list.isEmpty() ? Lists.<FormattedCharSequence>newArrayList(FormattedCharSequence.EMPTY) : list);
 | |
| 	}
 | |
| }
 |