Class ComponentBuilder


  • public final class ComponentBuilder
    extends Object

    ComponentBuilder simplifies creating basic messages by allowing the use of a chainable builder.

     new ComponentBuilder("Hello ").color(ChatColor.RED).
     append("World").color(ChatColor.BLUE). append("!").bold(true).create();
     

    All methods (excluding append(String) and create() work on the last part appended to the builder, so in the example above "Hello " would be ChatColor.RED and "World" would be ChatColor.BLUE but "!" would be bold and ChatColor.BLUE because append copies the previous part's formatting

    • Constructor Detail

      • ComponentBuilder

        public ComponentBuilder​(ComponentBuilder original)
        Creates a ComponentBuilder from the other given ComponentBuilder to clone it.
        Parameters:
        original - the original for the new ComponentBuilder.
      • ComponentBuilder

        public ComponentBuilder​(String text)
        Creates a ComponentBuilder with the given text as the first part.
        Parameters:
        text - the first text element
      • ComponentBuilder

        public ComponentBuilder​(BaseComponent component)
        Creates a ComponentBuilder with the given component as the first part.
        Parameters:
        component - the first component element
      • ComponentBuilder

        public ComponentBuilder()
    • Method Detail

      • resetCursor

        public ComponentBuilder resetCursor()
        Resets the cursor to index of the last element.
        Returns:
        this ComponentBuilder for chaining
      • setCursor

        public ComponentBuilder setCursor​(int pos)
                                   throws IndexOutOfBoundsException
        Sets the position of the current component to be modified
        Parameters:
        pos - the cursor position synonymous to an element position for a list
        Returns:
        this ComponentBuilder for chaining
        Throws:
        IndexOutOfBoundsException - if the index is out of range (index < 0 || index >= size())
      • append

        public ComponentBuilder append​(BaseComponent component)
        Appends a component to the builder and makes it the current target for formatting. The component will have all the formatting from previous part.
        Parameters:
        component - the component to append
        Returns:
        this ComponentBuilder for chaining
      • append

        public ComponentBuilder append​(BaseComponent component,
                                       ComponentBuilder.FormatRetention retention)
        Appends a component to the builder and makes it the current target for formatting. You can specify the amount of formatting retained from previous part.
        Parameters:
        component - the component to append
        retention - the formatting to retain
        Returns:
        this ComponentBuilder for chaining
      • append

        public ComponentBuilder append​(BaseComponent[] components)
        Appends the components to the builder and makes the last element the current target for formatting. The components will have all the formatting from previous part.
        Parameters:
        components - the components to append
        Returns:
        this ComponentBuilder for chaining
      • append

        public ComponentBuilder append​(BaseComponent[] components,
                                       ComponentBuilder.FormatRetention retention)
        Appends the components to the builder and makes the last element the current target for formatting. You can specify the amount of formatting retained from previous part.
        Parameters:
        components - the components to append
        retention - the formatting to retain
        Returns:
        this ComponentBuilder for chaining
      • append

        public ComponentBuilder append​(String text)
        Appends the text to the builder and makes it the current target for formatting. The text will have all the formatting from previous part.
        Parameters:
        text - the text to append
        Returns:
        this ComponentBuilder for chaining
      • appendLegacy

        public ComponentBuilder appendLegacy​(String text)
        Parse text to BaseComponent[] with colors and format, appends the text to the builder and makes it the current target for formatting. The component will have all the formatting from previous part.
        Parameters:
        text - the text to append
        Returns:
        this ComponentBuilder for chaining
      • append

        public ComponentBuilder append​(String text,
                                       ComponentBuilder.FormatRetention retention)
        Appends the text to the builder and makes it the current target for formatting. You can specify the amount of formatting retained from previous part.
        Parameters:
        text - the text to append
        retention - the formatting to retain
        Returns:
        this ComponentBuilder for chaining
      • removeComponent

        public void removeComponent​(int pos)
                             throws IndexOutOfBoundsException
        Remove the component part at the position of given index.
        Parameters:
        pos - the index to remove at
        Throws:
        IndexOutOfBoundsException - if the index is out of range (index < 0 || index >= size())
      • getCurrentComponent

        public BaseComponent getCurrentComponent()
        Gets the component at the position of the cursor.
        Returns:
        the active component or null if builder is empty
      • color

        public ComponentBuilder color​(ChatColor color)
        Sets the color of the current part.
        Parameters:
        color - the new color
        Returns:
        this ComponentBuilder for chaining
      • font

        public ComponentBuilder font​(String font)
        Sets the font of the current part.
        Parameters:
        font - the new font
        Returns:
        this ComponentBuilder for chaining
      • bold

        public ComponentBuilder bold​(boolean bold)
        Sets whether the current part is bold.
        Parameters:
        bold - whether this part is bold
        Returns:
        this ComponentBuilder for chaining
      • italic

        public ComponentBuilder italic​(boolean italic)
        Sets whether the current part is italic.
        Parameters:
        italic - whether this part is italic
        Returns:
        this ComponentBuilder for chaining
      • underlined

        public ComponentBuilder underlined​(boolean underlined)
        Sets whether the current part is underlined.
        Parameters:
        underlined - whether this part is underlined
        Returns:
        this ComponentBuilder for chaining
      • strikethrough

        public ComponentBuilder strikethrough​(boolean strikethrough)
        Sets whether the current part is strikethrough.
        Parameters:
        strikethrough - whether this part is strikethrough
        Returns:
        this ComponentBuilder for chaining
      • obfuscated

        public ComponentBuilder obfuscated​(boolean obfuscated)
        Sets whether the current part is obfuscated.
        Parameters:
        obfuscated - whether this part is obfuscated
        Returns:
        this ComponentBuilder for chaining
      • insertion

        public ComponentBuilder insertion​(String insertion)
        Sets the insertion text for the current part.
        Parameters:
        insertion - the insertion text
        Returns:
        this ComponentBuilder for chaining
      • event

        public ComponentBuilder event​(ClickEvent clickEvent)
        Sets the click event for the current part.
        Parameters:
        clickEvent - the click event
        Returns:
        this ComponentBuilder for chaining
      • event

        public ComponentBuilder event​(HoverEvent hoverEvent)
        Sets the hover event for the current part.
        Parameters:
        hoverEvent - the hover event
        Returns:
        this ComponentBuilder for chaining
      • reset

        public ComponentBuilder reset()
        Sets the current part back to normal settings. Only text is kept.
        Returns:
        this ComponentBuilder for chaining
      • retain

        public ComponentBuilder retain​(ComponentBuilder.FormatRetention retention)
        Retains only the specified formatting. Text is not modified.
        Parameters:
        retention - the formatting to retain
        Returns:
        this ComponentBuilder for chaining
      • create

        public BaseComponent[] create()
        Returns the components needed to display the message created by this builder.git
        Returns:
        the created components
      • getCursor

        public int getCursor()
        The position for the current part to modify. Modified cursors will automatically reset to the last part after appending new components. Default value at -1 to assert that the builder has no parts.