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

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем VolanDeVovan, 14 авг 2015.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Баллы:
    78
    Имя в Minecraft:
    Steve
    Скидываю TitleAPI Код:
    Код:
    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);
    }
    
    }
    

    Вот ещё хотел менять с помощью команды таб, вот набросок:
    Код:
    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, можно писать разные слова.
     
    Последнее редактирование: 14 авг 2015
  10. ql_Nik_lp

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

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

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

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

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

    Баллы:
    66
    Protocol это ProtocolLib?
     
  13. ql_Nik_lp

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

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

Поделиться этой страницей