FelipeDye Postado Maio 31, 2018 Denunciar Compartilhar Postado Maio 31, 2018 É possivel enviar uma actionbar para o jogador sem utilização de uma API? Uso o PaperSpigot 1.8.8 como base de desenvolvimento. Link para o comentário Compartilhar em outros sites More sharing options...
0 zDubsCrazy2 Postado Junho 6, 2018 Denunciar Compartilhar Postado Junho 6, 2018 Pra que usar NMS? Usa a própria API do spigot: p.spigot().sendMessage(ChatMessageType.ACTION_BAR, new TextComponent("Action Bar Top")); Resolvido usando uma linha e funciona em múltiplas versões também. 1 Link para o comentário Compartilhar em outros sites More sharing options...
0 DaaviPlugins Postado Maio 31, 2018 Denunciar Compartilhar Postado Maio 31, 2018 Me chame no discord zDaaviPvP_#0159 que te mando uma api de Title e de ActionBar 1 Link para o comentário Compartilhar em outros sites More sharing options...
0 TequilAxBr Postado Maio 31, 2018 Denunciar Compartilhar Postado Maio 31, 2018 Sim, através de NMS. Link para o comentário Compartilhar em outros sites More sharing options...
0 FelipeDye Postado Maio 31, 2018 Autor Denunciar Compartilhar Postado Maio 31, 2018 Crie uma classe com este código public static void sendAction(Player p, String message) { Class<?> playOutChat, baseComponent, chatMsg; Constructor<?> chatConstructor, playOutConstructor; try { message = ChatColor.translateAlternateColorCodes('&', message); playOutChat = getNMSClass("PacketPlayOutChat"); baseComponent = getNMSClass("IChatBaseComponent"); chatMsg = getNMSClass("ChatMessage"); chatConstructor = chatMsg.getDeclaredConstructor(String.class, Object[].class); playOutConstructor = playOutChat.getConstructor(baseComponent, Byte.TYPE); Object ichatbc = chatConstructor.newInstance(message, new Object[0]); Object packet = playOutConstructor.newInstance(ichatbc, (byte) 2); sendPacket(p, packet); } catch (Exception e) { e.printStackTrace(); } } private static void sendPacket(Player p, Object packet) { try { Object handle = p.getClass().getMethod("getHandle").invoke(p); Object playerConnection = handle.getClass().getField("playerConnection").get(handle); playerConnection.getClass().getMethod("sendPacket", getNMSClass("Packet")).invoke(playerConnection, packet); } catch (Exception e) { e.printStackTrace(); } } public static Class<?> getNMSClass(String name) { String version = Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3]; try { return Class.forName("net.minecraft.server." + version + "." + name); } catch (ClassNotFoundException e) { e.printStackTrace(); return null; } } Caso precise das imports import java.lang.reflect.Constructor; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.entity.Player; Agora em outra classe (na classe que você irá utilizar o action) use NomeDaClasseQueTáComOCódigoQueTeMandei.sendAction(p, "MENSAGEM"); Muito G0D, obrigado mano ! Resolvido Link para o comentário Compartilhar em outros sites More sharing options...
0 sadUKZ Postado Junho 6, 2018 Denunciar Compartilhar Postado Junho 6, 2018 Muito G0D, obrigado mano ! Resolvido Use esse código muito mais pequeno e é a mesma coisa public static void sendActionBar(Player p, String msg) { String s = ChatColor.translateAlternateColorCodes('&', msg); IChatBaseComponent icbc = ChatSerializer.a("{\"text\": \"" + s + "\"}"); PacketPlayOutChat bar = new PacketPlayOutChat(icbc, (byte) 2); ((CraftPlayer) p).getHandle().playerConnection.sendPacket(bar); } Link para o comentário Compartilhar em outros sites More sharing options...
0 Out of Orbit Postado Junho 6, 2018 Denunciar Compartilhar Postado Junho 6, 2018 Use esse código muito mais pequeno e é a mesma coisa public static void sendActionBar(Player p, String msg) { String s = ChatColor.translateAlternateColorCodes('&', msg); IChatBaseComponent icbc = ChatSerializer.a("{\"text\": \"" + s + "\"}"); PacketPlayOutChat bar = new PacketPlayOutChat(icbc, (byte) 2); ((CraftPlayer) p).getHandle().playerConnection.sendPacket(bar); } Não é a mesma coisa. O outro código foi feito com reflection, então funciona com qualquer versão, já esse aí só funciona em 1 versão. Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
FelipeDye
É possivel enviar uma actionbar para o jogador sem utilização de uma API? Uso o PaperSpigot 1.8.8 como base de desenvolvimento.
Link para o comentário
Compartilhar em outros sites
6 respostass a esta questão
Posts Recomendados