package net.md_5.bungee.api.chat;

import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@NoArgsConstructor
public class HoverEvent
{
    @Getter
    @Setter
    private Action action;

    @Getter
    private Object value;

    public HoverEvent(Action action, String value)
    {
        setAction( action );
        setValue( value );
    }

    public HoverEvent(Action action, BaseComponent value)
    {
        setAction( action );
        setValue( value );
    }

    public void setValue(String value)
    {
        this.value = value;
    }

    public void setValue(BaseComponent value)
    {
        this.value = value;
    }

    public enum Action
    {
        SHOW_TEXT,
        SHOW_ACHIEVEMENT,
        SHOW_ITEM
    }

    @Override
    public String toString() {
        return String.format( "HoverEvent{action=%s, value=%s}", action, value );
    }
}

@@ -28,16 +28,50 @@
 .chat;%0A%0A
+import lombok.AllArgsConstructor;%0A
 import l
@@ -84,16 +84,16 @@
 Getter;%0A
-
 import l
@@ -159,16 +159,52 @@
 tructor%0A
+@Getter%0A@Setter%0A@AllArgsConstructor%0A
 public c
@@ -225,32 +225,8 @@
 t%0A%7B%0A
-    @Getter%0A    @Setter%0A
     
@@ -252,460 +252,40 @@
 on;%0A
-%0A    @Getter%0A    private Object value;%0A%0A    public HoverEvent(Action action, String value)%0A    %7B%0A        setAction( action );%0A        setValue( value );%0A    %7D%0A%0A    public HoverEvent(Action action, BaseComponent value)%0A    %7B%0A        setAction( action );%0A        setValue( value );%0A    %7D%0A%0A    public void setValue(String value)%0A    %7B%0A        this.value = value;%0A    %7D%0A%0A    public void setValue(BaseComponent value)%0A    %7B%0A        this.value = value;%0A    %7D
+    private BaseComponent value;
 %0A%0A  

Remove string methods from HoverEvent. TextComponents will become strings if formatting isn't used