Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Dismiss Notice

Помогите Сообщения над слотами

Discussion in 'Разработка плагинов для новичков' started by VolanDeVovan, Aug 14, 2015.

  1. Автор темы
    VolanDeVovan

    VolanDeVovan Активный участник Пользователь

    Trophy Points:
    66
    Добрый день. Недавно ( вчера) начал изучать АПИ spigot'a и bukkit'a и вот не могу найти библиотеку которая помогает выводить сообщения над слотами которые снизу.. Как к примеру titlemanager или action bar.
     
  2. Хостинг MineCraft
    <
  3. MrTrojan

    MrTrojan Активный участник Пользователь

    Trophy Points:
    98
    Skype:
    mrtrojan.ru
    Имя в Minecraft:
    MrTrojan
    Может тебе пригодится этот сайт.
     
  4. Автор темы
    VolanDeVovan

    VolanDeVovan Активный участник Пользователь

    Trophy Points:
    66
    Не понял намека.. Я имею в виду какой класс или метод отвечает за вывод сообщения над слотами.
     
  5. MrTrojan

    MrTrojan Активный участник Пользователь

    Trophy Points:
    98
    Skype:
    mrtrojan.ru
    Имя в Minecraft:
    MrTrojan
    Декомпилируй этот плагин и посмотри, там это реализовано по разному.
     
  6. Автор темы
    VolanDeVovan

    VolanDeVovan Активный участник Пользователь

    Trophy Points:
    66
    Причем тут MOTD ?[DOUBLEPOST=1439547300,1439547241][/DOUBLEPOST]
    я имею ввиду такие сообщения http://dev.bukkit.org/bukkit-plugins/actionbar/
     
  7. MrTrojan

    MrTrojan Активный участник Пользователь

    Trophy Points:
    98
    Skype:
    mrtrojan.ru
    Имя в Minecraft:
    MrTrojan
    Ааа, не так понял. Так декомпилируй плагин и посмотри как там сделано или посмотри исходники, если они есть.
     
  8. Автор темы
    VolanDeVovan

    VolanDeVovan Активный участник Пользователь

    Trophy Points:
    66
    Да я плохо еще разбираюсь.. и прямого намека не библиотеки там не вижу.
     
  9. _EnderWorld_

    _EnderWorld_ Активный участник Пользователь

    Trophy Points:
    78
    Имя в Minecraft:
    Steve
    Скидываю TitleAPI Код:
    Code:
    package Тут Твой Пакет
    
    import java.lang.reflect.Field;
    
    import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer;
    import org.bukkit.entity.Player;
    import org.bukkit.event.Listener;
    import org.bukkit.plugin.java.JavaPlugin;
    
    import net.minecraft.server.v1_8_R3.IChatBaseComponent;
    import net.minecraft.server.v1_8_R3.IChatBaseComponent.ChatSerializer;
    import net.minecraft.server.v1_8_R3.PacketPlayOutChat;
    import net.minecraft.server.v1_8_R3.PacketPlayOutPlayerListHeaderFooter;
    import net.minecraft.server.v1_8_R3.PacketPlayOutTitle;
    import net.minecraft.server.v1_8_R3.PacketPlayOutTitle.EnumTitleAction;
    import net.minecraft.server.v1_8_R3.PlayerConnection;
    
    public class TitleAPI extends JavaPlugin implements Listener {
     
        public static void sendTitle(Player player, String title, String subtitle) {
            CraftPlayer craftplayer = (CraftPlayer) player;
            PlayerConnection connection = craftplayer.getHandle().playerConnection;
            IChatBaseComponent titleJSON = ChatSerializer.a("{'text': '" + title + "'}");
            IChatBaseComponent subtitleJSON = ChatSerializer.a("{'text': '" + subtitle + "'}");
            PacketPlayOutTitle titlePacket = new PacketPlayOutTitle(EnumTitleAction.TITLE, titleJSON);
            PacketPlayOutTitle subtitlePacket = new PacketPlayOutTitle(EnumTitleAction.SUBTITLE, subtitleJSON);
            connection.sendPacket(titlePacket);
            connection.sendPacket(subtitlePacket);
        }
    
        public static void sendTabHF(Player player, String header, String footer){
         
            CraftPlayer craftplayer = (CraftPlayer) player;
            PlayerConnection connection = craftplayer.getHandle().playerConnection;
            IChatBaseComponent headerJSON = ChatSerializer.a("{\"text\": \"" + header +"\"}");
            IChatBaseComponent footerJSON = ChatSerializer.a("{\"text\": \"" + footer +"\"}");
            PacketPlayOutPlayerListHeaderFooter packet = new PacketPlayOutPlayerListHeaderFooter();
       
            try {
                Field headerField = packet.getClass().getDeclaredField("a");
                headerField.setAccessible(true);
                headerField.set(packet, headerJSON);
                headerField.setAccessible(!headerField.isAccessible());
           
                Field footerField = packet.getClass().getDeclaredField("b");
                footerField.setAccessible(true);
                footerField.set(packet, footerJSON);
                footerField.setAccessible(!footerField.isAccessible());
            } catch (Exception e) {
                e.printStackTrace();
            }
         
            connection.sendPacket(packet);
        
         
        }
     
     
     
        public static void sendActionBar(Player p, String message){
            IChatBaseComponent cbc = ChatSerializer.a("{\"text\": \"" + message +"\"}");
            PacketPlayOutChat ppoc = new PacketPlayOutChat(cbc,(byte) 2);
            ((CraftPlayer) p).getHandle().playerConnection.sendPacket(ppoc);
    }
    
    }
    

    Вот ещё хотел менять с помощью команды таб, вот набросок:
    Code:
    public boolean onCommand1(CommandSender sender, Command cmd, String label, String[] args) {
          
            Player p = (Player) sender;
          
            if(label.equalsIgnoreCase("example")) {
                if(!p.hasPermission("example.tab"))
                    sender.sendMessage(ChatColor.DARK_RED + "У вас Нету Прав Чтобы Использовать Данную Команду!");
                        return true;
                }
              
                if(args.length != 0) {
                  
                    sender.sendMessage(ChatColor.RED + "Внимание! " + ChatColor.GOLD + "Меню 'Таб' Было Успешно Изменено! :3");
                    TitleAPI.sendTabHF(p, args[0], args[1]);
                  
                }
     
            return false;
          
        }
    Кстати, чтобы создать Таб, надо написать: /example RuBukkit NiceForum
    Вместо РуБаккит и NiceForum, можно писать разные слова.
     
    Last edited: Aug 14, 2015
  10. ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Trophy Points:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    уууу какой ужас.
    Может лучше таки подключить протокол?[DOUBLEPOST=1439587711,1439587679][/DOUBLEPOST]Алсо, последняя версия API умеет это делать и без пакетов
     
  11. Rider3217

    Rider3217 Активный участник Пользователь

    Trophy Points:
    98
    Имя в Minecraft:
    Planet0111
    Ну не все же топ кодеры)
    Он ещё только учится, как и вы.
     
  12. Автор темы
    VolanDeVovan

    VolanDeVovan Активный участник Пользователь

    Trophy Points:
    66
    Protocol это ProtocolLib?
     
  13. ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Trophy Points:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Ну, либо TinyProtocol. По ситуации
     

Share This Page