Add ComponentBuilder + make events final
An example of ComponentBuilder usage can be found at CommandAlertRaw
This commit is contained in:
@@ -55,11 +55,13 @@ public class BaseComponentSerializer
|
||||
if ( object.has( "hoverEvent" ) )
|
||||
{
|
||||
JsonObject event = object.getAsJsonObject( "hoverEvent" );
|
||||
HoverEvent hoverEvent = new HoverEvent();
|
||||
hoverEvent.setAction( HoverEvent.Action.valueOf( event.get( "action" ).getAsString().toUpperCase() ) );
|
||||
BaseComponent res = context.deserialize( event.get( "value" ), BaseComponent.class );
|
||||
hoverEvent.setValue( res );
|
||||
component.setHoverEvent( hoverEvent );
|
||||
BaseComponent[] res;
|
||||
if (event.get("value").isJsonArray()) {
|
||||
res = context.deserialize( event.get( "value" ), BaseComponent[].class );
|
||||
} else {
|
||||
res = new BaseComponent[]{context.<BaseComponent>deserialize( event.get( "value" ), BaseComponent.class )};
|
||||
}
|
||||
component.setHoverEvent( new HoverEvent( HoverEvent.Action.valueOf( event.get( "action" ).getAsString().toUpperCase() ), res ) );
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -4,6 +4,7 @@ import com.google.common.base.Joiner;
|
||||
import net.md_5.bungee.api.ChatColor;
|
||||
import net.md_5.bungee.api.CommandSender;
|
||||
import net.md_5.bungee.api.ProxyServer;
|
||||
import net.md_5.bungee.api.chat.ComponentBuilder;
|
||||
import net.md_5.bungee.api.chat.HoverEvent;
|
||||
import net.md_5.bungee.api.chat.TextComponent;
|
||||
import net.md_5.bungee.api.plugin.Command;
|
||||
@@ -34,15 +35,12 @@ public class CommandAlertRaw extends Command
|
||||
ProxyServer.getInstance().broadcast( ComponentSerializer.parse( message ) );
|
||||
} catch ( Exception e )
|
||||
{
|
||||
TextComponent error = new TextComponent( "An error occurred while parsing your message. (Hover for details)" );
|
||||
error.setColor( ChatColor.RED );
|
||||
error.setUnderlined( true );
|
||||
|
||||
TextComponent errorMessage = new TextComponent( e.getMessage() );
|
||||
errorMessage.setColor( ChatColor.RED );
|
||||
|
||||
error.setHoverEvent( new HoverEvent( HoverEvent.Action.SHOW_TEXT, errorMessage ) );
|
||||
sender.sendMessage( error );
|
||||
sender.sendMessage(
|
||||
new ComponentBuilder( "An error occured while parsing your message. (Hover for details)" ).
|
||||
color( ChatColor.RED ).underlined( true ).
|
||||
event( new HoverEvent( HoverEvent.Action.SHOW_TEXT,
|
||||
new ComponentBuilder( e.getMessage() ).color( ChatColor.RED ).create() ) ).
|
||||
create() );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -3,6 +3,7 @@ package net.md_5.bungee.chat;
|
||||
import net.md_5.bungee.api.ChatColor;
|
||||
import net.md_5.bungee.api.chat.BaseComponent;
|
||||
import net.md_5.bungee.api.chat.ClickEvent;
|
||||
import net.md_5.bungee.api.chat.ComponentBuilder;
|
||||
import net.md_5.bungee.api.chat.TextComponent;
|
||||
import net.md_5.bungee.api.chat.TranslatableComponent;
|
||||
import org.junit.Assert;
|
||||
@@ -66,4 +67,16 @@ public class ComponentsTest
|
||||
Assert.assertEquals( ChatColor.WHITE + "Page " + ChatColor.WHITE + "5" + ChatColor.WHITE + " of " + ChatColor.WHITE + "50", positional.toLegacyText() );
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBuilder()
|
||||
{
|
||||
BaseComponent[] components = new ComponentBuilder( "Hello " ).color( ChatColor.RED ).
|
||||
append( "World" ).bold( true ).color( ChatColor.BLUE ).
|
||||
append( "!" ).color( ChatColor.YELLOW ).create();
|
||||
|
||||
Assert.assertEquals( "Hello World!", BaseComponent.toPlainText( components ) );
|
||||
Assert.assertEquals( ChatColor.RED + "Hello " + ChatColor.BLUE + ChatColor.BOLD +
|
||||
"World" + ChatColor.YELLOW + ChatColor.BOLD + "!", BaseComponent.toLegacyText( components ) );
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user