AstroCoder Postado Março 7, 2016 Denunciar Compartilhar Postado Março 7, 2016 BossBar Requer: ProtocolLib Bem a uns dias atrás comecei a fazer o core da minha network e comecei a perceberque precisava de uma BossBar para passar mais facilmente anúncios e não estara utilizar excessivamente o Title,chat ou o ActionBar, portanto peguei no protocol lib efiz esta pequena api para me ajudar neste trabalho. Se tás a perguntar o porque de usarprotocol lib a resposta é muito simples por mais que eu adore NMS/Packets etc ele faz esse trabalho ser mais fácil BossBar Classe: import com.comphenix.protocol.PacketType; import com.comphenix.protocol.ProtocolLibrary; import com.comphenix.protocol.events.PacketContainer; import com.comphenix.protocol.reflect.StructureModifier; import com.comphenix.protocol.wrappers.WrappedDataWatcher; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.entity.Player; import org.bukkit.metadata.FixedMetadataValue; import org.bukkit.plugin.Plugin; import org.bukkit.scheduler.BukkitRunnable; import java.lang.reflect.Field; import java.util.HashMap; public class BossBar { private static int enderdragonId; private static Plugin plugin = aTuaMainClass; private static HashMap<String, BukkitRunnable> toHide = new HashMap<String, BukkitRunnable>(); static { try { Field field = Class.forName( "net.minecraft.server." + Bukkit.getServer().getClass().getName().split("\\.")[3] + ".Entity") .getDeclaredField("entityCount"); field.setAccessible(true); enderdragonId = field.getInt(null); field.set(null, enderdragonId + 1); } catch (Exception ex) { ex.printStackTrace(); } } public static void removeBar(final Player player, int ticks) { if (player.hasMetadata("SeesEnderdragon") && !toHide.containsKey(player.getName())) { BukkitRunnable runnable = new BukkitRunnable() { @Override public void run() { player.removeMetadata("SeesEnderdragon", plugin); sendRemove(player); toHide.remove(player.getName()); } }; runnable.runTaskLater(plugin, ticks); toHide.put(player.getName(), runnable); } } /* Remove Packet */ private static void sendRemove(Player player) { try { PacketContainer spawnPacket = new PacketContainer(PacketType.Play.Server.ENTITY_DESTROY); spawnPacket.getIntegerArrays().write(0, new int[] { enderdragonId }); ProtocolLibrary.getProtocolManager().sendServerPacket(player, spawnPacket, false); } catch (Exception ex) { ex.printStackTrace(); } } /* Spawn Packet */ private static void sendSpawn(Player player, String message, float health) throws Exception { PacketContainer spawnPacket = new PacketContainer(PacketType.Play.Server.SPAWN_ENTITY_LIVING); StructureModifier<Object> spawnPacketModifier = spawnPacket.getModifier(); Location toSpawn = player.getEyeLocation().add(player.getEyeLocation().getDirection().normalize().multiply(23)); spawnPacketModifier.write(0, enderdragonId); spawnPacketModifier.write(1, (byte) 64); spawnPacketModifier.write(2, toSpawn.getBlockX() * 32); spawnPacketModifier.write(3, toSpawn.getBlockY() * 32); spawnPacketModifier.write(4, toSpawn.getBlockZ() * 32); WrappedDataWatcher watcher = new WrappedDataWatcher(); watcher.setObject(0, (byte) 32); watcher.setObject(2, message); watcher.setObject(6, health, true); watcher.setObject(10, message); watcher.setObject(20, 881); spawnPacket.getDataWatcherModifier().write(0, watcher); ProtocolLibrary.getProtocolManager().sendServerPacket(player, spawnPacket, false); } public static void setBossName(Player player, String message, float health) { try { if (!player.hasMetadata("SeesEnderdragon")) { player.setMetadata("SeesEnderdragon", new FixedMetadataValue(plugin, true)); } if (toHide.containsKey(player.getName())) { toHide.remove(player.getName()).cancel(); } sendSpawn(player, message, health); } catch (Exception ex) { ex.printStackTrace(); } } } Link para o comentário Compartilhar em outros sites More sharing options...
Gutyerrez Postado Março 7, 2016 Denunciar Compartilhar Postado Março 7, 2016 Eu não entendi muito não mais beleza! Se era para ajudar pessoas a criar plugin não sei se ajudo '-' Ex: criar uma bar API Link para o comentário Compartilhar em outros sites More sharing options...
Proyx Postado Março 7, 2016 Denunciar Compartilhar Postado Março 7, 2016 spigot 1.9 já tem bossbar vlw flw Link para o comentário Compartilhar em outros sites More sharing options...
Guest Matrix241 Postado Março 20, 2016 Denunciar Compartilhar Postado Março 20, 2016 Muitooo top man gg adoro plugin com GUI nossa man seus plugins são TOP demais Link para o comentário Compartilhar em outros sites More sharing options...
Guest » xKįzämę Pęčæ Postado Março 20, 2016 Denunciar Compartilhar Postado Março 20, 2016 Funciona 1.5.2? Link para o comentário Compartilhar em outros sites More sharing options...
Guest SparklyTop Postado Março 22, 2016 Denunciar Compartilhar Postado Março 22, 2016 Muitooo top man gg adoro plugin com GUI nossa man seus plugins são TOP demais Free-Post membro denunciado Link para o comentário Compartilhar em outros sites More sharing options...
Guest zFireDev (ZmFire) Postado Março 27, 2016 Denunciar Compartilhar Postado Março 27, 2016 aews gf! Link para o comentário Compartilhar em outros sites More sharing options...
LymeeFairy Postado Setembro 20, 2024 Denunciar Compartilhar Postado Setembro 20, 2024 ANÁLISE DE INATIVIDADE Este tópico foi automaticamente arquivado devido à inatividade. Para manter a organização e fluidez das discussões na comunidade, tópicos que permanecem sem novas interações por um período prolongado são fechados automaticamente. Se houver interesse em retomar o conteúdo, sinta-se à vontade para criar um novo tópico ou entre em contato com a equipe da comunidade para reabrir este tópico. Equipe de Moderação Gamer's Board Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados