Ir para conteúdo

[Util] Crie mensagens JSON's facilmente!


jeta

Posts Recomendados

Fiz essa classe por que tava precisando criar mensagens JSON sem aqueles boiler plates chatos. Então tive a ideia de criar uma classe para fazer isso com muitaaaaaa mais facilidade, além de que ela é chainable (new Class().method1().method2()) deixando muito mais fácil de usar.

 

Classe:

import java.util.ArrayList;
import java.util.List;

import org.bukkit.entity.Player;

import net.md_5.bungee.api.chat.ClickEvent;
import net.md_5.bungee.api.chat.ComponentBuilder;
import net.md_5.bungee.api.chat.HoverEvent;
import net.md_5.bungee.api.chat.TextComponent;

public class FancyMessage {

    private TextComponent main;
    private List<TextComponent> components;

    public FancyMessage(String text) {
        main = new TextComponent(text);
        components = new ArrayList<>();
    }

    public FancyMessage text(String text) {
        components.add(new TextComponent(text));
        return this;
    }

    public FancyMessage hover(String text) {
        TextComponent comp = components.get(components.size() - 1);
        comp.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT,
                new ComponentBuilder(text).create()));
        return this;
    }

    public FancyMessage command(String command) {
        TextComponent comp = components.get(components.size() - 1);
        comp.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, command));
        return this;
    }

    public FancyMessage url(String url) {
        TextComponent comp = components.get(components.size() - 1);
        comp.setClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, url));
        return this;
    }

    public void send(Player player) {
        components.forEach(component -> main.addExtra(component));
        player.spigot().sendMessage(main);
    }
    
}

Se tiverem alguma dúvida/sugestão/correção sobre a classe podem comentar aí.

Link para o comentário
Compartilhar em outros sites

Boa cara, já vi algo assim chamado "FancyMessage" porém de 1 jeito diferente.

Goxtei, talvez use :3

sim a lib fanciful, só que ela é meio chatinha de usar então fiz essa que é muitoooo mais simples e fácil de se usar.

Link para o comentário
Compartilhar em outros sites

Em 01/10/2017 em 15:35, jeta disse:

Fiz essa classe por que tava precisando criar mensagens JSON sem aqueles boiler plates chatos. Então tive a ideia de criar uma classe para fazer isso com muitaaaaaa mais facilidade, além de que ela é chainable (new Class().method1().method2()) deixando muito mais fácil de usar.

 

Classe:


import java.util.ArrayList;
import java.util.List;

import org.bukkit.entity.Player;

import net.md_5.bungee.api.chat.ClickEvent;
import net.md_5.bungee.api.chat.ComponentBuilder;
import net.md_5.bungee.api.chat.HoverEvent;
import net.md_5.bungee.api.chat.TextComponent;

public class FancyMessage {

    private TextComponent main;
    private List<TextComponent> components;

    public FancyMessage(String text) {
        main = new TextComponent(text);
        components = new ArrayList<>();
    }

    public FancyMessage text(String text) {
        components.add(new TextComponent(text));
        return this;
    }

    public FancyMessage hover(String text) {
        TextComponent comp = components.get(components.size() - 1);
        comp.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT,
                new ComponentBuilder(text).create()));
        return this;
    }

    public FancyMessage command(String command) {
        TextComponent comp = components.get(components.size() - 1);
        comp.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, command));
        return this;
    }

    public FancyMessage url(String url) {
        TextComponent comp = components.get(components.size() - 1);
        comp.setClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, url));
        return this;
    }

    public void send(Player player) {
        components.forEach(component -> main.addExtra(component));
        player.spigot().sendMessage(main);
    }
    
}

Se tiverem alguma dúvida/sugestão/correção sobre a classe podem comentar aí.

Opa poderia me enviar o seu discord?

Link para o comentário
Compartilhar em outros sites

Participe da Conversa

Você pode postar agora e se cadastrar mais tarde. Se você tiver uma conta, a class='ipsType_brandedLink' href='https://gamersboard.com.br/login/' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title='Sign In Now'>acesse agora para postar com sua conta.
Observação: sua postagem exigirá aprovação do moderador antes de ficar visível.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.

Processando...
×
×
  • Criar Novo...