CC-Tweaked/src/main/java/dan200/computercraft/shared/command/text/ChatHelpers.java

90 lines
2.8 KiB
Java

/*
* This file is part of ComputerCraft - http://www.computercraft.info
* Copyright Daniel Ratcliffe, 2011-2019. Do not distribute without permission.
* Send enquiries to dratcliffe@gmail.com
*/
package dan200.computercraft.shared.command.text;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.text.*;
import net.minecraft.util.text.event.ClickEvent;
import net.minecraft.util.text.event.HoverEvent;
/**
* Various helpers for building chat messages
*/
public final class ChatHelpers
{
private static final TextFormatting HEADER = TextFormatting.LIGHT_PURPLE;
private ChatHelpers() {}
public static ITextComponent coloured( String text, TextFormatting colour )
{
ITextComponent component = new TextComponentString( text == null ? "" : text );
component.getStyle().setColor( colour );
return component;
}
public static <T extends ITextComponent> T coloured( T component, TextFormatting colour )
{
component.getStyle().setColor( colour );
return component;
}
public static ITextComponent text( String text )
{
return new TextComponentString( text == null ? "" : text );
}
public static ITextComponent translate( String text )
{
return new TextComponentTranslation( text == null ? "" : text );
}
public static ITextComponent translate( String text, Object... args )
{
return new TextComponentTranslation( text == null ? "" : text, args );
}
public static ITextComponent list( ITextComponent... children )
{
ITextComponent component = new TextComponentString( "" );
for( ITextComponent child : children )
{
component.appendSibling( child );
}
return component;
}
public static ITextComponent position( BlockPos pos )
{
if( pos == null ) return translate( "commands.computercraft.generic.no_position" );
return translate( "commands.computercraft.generic.position", pos.getX(), pos.getY(), pos.getZ() );
}
public static ITextComponent bool( boolean value )
{
return value
? coloured( translate( "commands.computercraft.generic.yes" ), TextFormatting.GREEN )
: coloured( translate( "commands.computercraft.generic.no" ), TextFormatting.RED );
}
public static ITextComponent link( ITextComponent component, String command, ITextComponent toolTip )
{
Style style = component.getStyle();
if( style.getColor() == null ) style.setColor( TextFormatting.YELLOW );
style.setClickEvent( new ClickEvent( ClickEvent.Action.RUN_COMMAND, command ) );
style.setHoverEvent( new HoverEvent( HoverEvent.Action.SHOW_TEXT, toolTip ) );
return component;
}
public static ITextComponent header( String text )
{
return coloured( text, HEADER );
}
}