Ir para conteúdo

JsonAPI - Envie mensagens JSON de maneira simples e pratica!


RUSHyoutuber

Posts Recomendados

 - JsonAPI - 

 

Olá pessoal da Gamer'sBoard! A alguns dias atras estive pesquisando uma maneira simples, pratica, e básica de enviar mensagens JSON contendo comandos, sugestões de comandos, URLs e textos simples.

Depois de procurar por umas 2 horas tudo que eu encontrei foram códigos super complexos usando Packets, NMS, Reflection etc etc etc... 

Como eu não consegui encontrar nada de útil e também não consegui entender estes códigos "avançados" então decidi criar meu próprio código!

 

Source:

HasteBinhttps://hastebin.com/ahikecikon.vbs

GhostBinhttps://ghostbin.com/paste/yhhta

PasteBin: https://pastebin.com/WFfUfVFJ

Código aqui no tópico:

 

import static org.bukkit.Bukkit.getServer;
import static org.bukkit.Bukkit.getConsoleSender;

/**
 * @author Mior
 * @version 1.0
 * @category utils
 */

public class Json {
	
	/*
	 * Texts with extra text in the message.
	 */
	
	public static void sendText(String player, String message, String extra) {
		String rawText = "{\"text\":\""+message+"\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":\""+extra+"\"}}";
		sendJsonMessage(player,rawText);
	}
	
	public static void sendTextWithUrl(String player, String message, String extra, String url) {
		String rawText = "{\"text\":\""+message+"\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\""+url+"\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":\""+extra+"\"}}";
		sendJsonMessage(player,rawText);
	}
	
	public static void sendTextWithCommand(String player, String message, String extra, String command) {
		String rawText = "{\"text\":\""+message+"\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\""+command+"\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":\""+extra+"\"}}";
		sendJsonMessage(player,rawText);
	}
	
	public static void sendTextWithSuggestCommand(String player, String message, String extra, String suggestCommand) {
		String rawText = "{\"text\":\""+message+"\",\"clickEvent\":{\"action\":\"suggest_command\",\"value\":\""+suggestCommand+"\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":\""+extra+"\"}}";
		sendJsonMessage(player,rawText);
	}
	
	/*
	 * Texts without extra text in the message.
	 */
	
	public static void sendTextWithUrl(String player, String message, String url) {
		String rawText = "{\"text\":\""+message+"\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\""+url+"\"}}";
		sendJsonMessage(player,rawText);
	}
	
	public static void sendTextWithCommand(String player, String message, String command) {
		String rawText = "{\"text\":\""+message+"\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\""+command+"\"}}";
		sendJsonMessage(player,rawText);
	}
	
	public static void sendTextWithSuggestCommand(String player, String message, String suggestCommand) {
		String rawText = "{\"text\":\""+message+"\",\"clickEvent\":{\"action\":\"suggest_command\",\"value\":\""+suggestCommand+"\"}}";
		sendJsonMessage(player,rawText);
	}
	
	/*
	 * Method used to send a message
	 */
	
	static void sendJsonMessage(String player, String rawText) {
		getServer().dispatchCommand(getConsoleSender(), "tellraw " + player + " " + rawText);
	}
} 

 

 

 

Exemplos de uso:

// Mensagem JSON apenas com texto.
String player = e.getPlayer().getName();
String mensagem = "Mensagem no chat.";
String extra = "Mensagem no JSON :D";
Json.sendText(player, mensagem, extra);
  
// Mensagem JSON com texto e comando.
String player = e.getPlayer().getName();
String mensagem = "Um novo item foi adicionado no mercado!";
String extra = "Clique para abrir o mercado";
String comando = "/mercado ver";
Json.sendTextWithCommand(player, mensagem, extra, comando);
 
// Mensagem JSON com texto e sugestão de comando.
String player = e.getPlayer().getName();
String mensagem = "RUSH lhe enviou uma mensagem!";
String extra = "Use /responder RUSH <mensagem> para responde-lo!";
String sugestaoDeComando = "/responder RUSH";
Json.sendTextWithSuggestCommand(player, mensagem, extra, sugestaoDeComando);
// PS: Quando ele clicar na mensagem o chat vai abrir com a sugestão do comando.
	  
// Mensagem JSON com texto e URL.
String player = e.getPlayer().getName();
String mensagem = "Conheça já nosso novo fórum. [CLIQUE]";
String extra = "Clique para visitar nosso fórum!";
String sugestaoDeComando = "http://gamersboard.com.br/";
Json.sendTextWithSuggestCommand(player, mensagem, extra, sugestaoDeComando);
	  
/*
* Caso você queira enviar a mensagem em JSON sem o texto EXTRA ou sejá
* apenas com os comandos ou com a URL basta você remover a string extra.
*/
	  
// Mensagem JSON apenas com comando.
String player = e.getPlayer().getName();
String mensagem = "Você morreu! Clique para voltar para o local onde vc morreu.";
String comando = "/back";
Json.sendTextWithCommand(player, mensagem, comando);
// Para enviar uma mensagem broadcast basta colocarmos o nome do player como @a

// Mensagem JSON broadcast com texto e URL.
String player = "@a";
String mensagem = "Amanhã as 6:30 haverá guerra no servidor! [MAIS DETALHES]";
String extra = "Clique para acessar nosso site";
String url = "https://www.gamersboard.com/guerra";
Json.sendTextWithCommand(player, mensagem, extra, url); 

 

Vídeo demonstrativo da API em funcionamento: 

https://youtu.be/LRHZYqFr2PQ

 

Principal documentação que eu usei para aprender a criar os códigos: 

 

Caso vocês tiverem alguma duvida ou sugestão basta comentar aqui em baixo!

Quem for usar por favor não remova os créditos!

Editado por RUSHyoutuber
Link para o comentário
Compartilhar em outros sites

Muito bom, vai ajudar bastante gente.

Vlw pelo apoio pai <3

 

plugin simples mas eficaz, parabéns, ele está ótimo!

Vlw ai mano pelo feedback e pelo apoio!

 

 

Evulução

 

G O R I L A kkkk 

 

Irá ajudar muitas pessoas, parabéns. Não sei se conhece o Ultimate Fancy do @FabioZumbi12, acho bem mais prático.

Sim eu até conhecida essa livraria do fabio, não só a dele mas como de outros developers também... foi como eu te falei cara eu queria algo que fosse simples e 'pequeno', 'pratico' então resolvi criar isso.

Creio eu que mais pratico e leve que essa API que eu fiz não existe... eu ainda poderia deixar ela menor mas assim ta top.

vlw pelo apoio e pelo comentario <3

Link para o comentário
Compartilhar em outros sites

 

 

Sim eu até conhecida essa livraria do fabio, não só a dele mas como de outros developers também... foi como eu te falei cara eu queria algo que fosse simples e 'pequeno', 'pratico' então resolvi criar isso.

Creio eu que mais pratico e leve que essa API que eu fiz não existe... eu ainda poderia deixar ela menor mas assim ta top.

vlw pelo apoio e pelo comentario <3

 

:risada:

 

@topic

 

legal

Link para o comentário
Compartilhar em outros sites

Bem, isso apenas faz com que mande um comando via console... não seria melhor apenas usar o "TextComponent" que a própria Spigot tem? Um exemplo:
 

Player player = ...;
TextComponent sup = new TextComponent("Sup");
sup.setClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/suicide"));
player.spigot().sendMessage(sup);

tutorial: https://www.spigotmc.org/wiki/the-chat-component-api/.

Link para o comentário
Compartilhar em outros sites

Bem, isso apenas faz com que mande um comando via console... não seria melhor apenas usar o "TextComponent" que a própria Spigot tem? Um exemplo:

 

Player player = ...;
TextComponent sup = new TextComponent("Sup");
sup.setClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/suicide"));
player.spigot().sendMessage(sup);

tutorial: https://www.spigotmc.org/wiki/the-chat-component-api/.

 

Se você soubesse a quantidade de pessoas que ainda usam BUKKIT você nunca teria comentando nesse tópico.

Eu criei essa API justamente pra não usar isso.

Vlw pelo comment pai <3

 

 

Good job, mas acho que uma api dessas era mais bem aproveitada usando este design pattern https://martinfowler.com/bliki/FluentInterface.html

Sou muito novo ainda em Java... acho que você deve ter percebido pelo código... se eu soubesse usar isso eu com certeza faria dessa maneira. (se quiser adaptar meu código eu edito o tópico com o seu e dou os créditos) 

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...