1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Упростить код прокрутки GUI

Тема в разделе "Разработка плагинов для новичков", создана пользователем amw202020, 3 фев 2017.

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

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

    Баллы:
    66
    Нужно уменьшить код
    (Внимание) Опасно для психики, смотреть только профессионалам!
    src - click
    VT
     
  2. Mabus

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

    Баллы:
    76
    Skype:
    chervanenko
    Имя в Minecraft:
    Chervanenko
  3. Blc_Dragon

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

    Баллы:
    76


    Кееееек
    upload_2017-2-3_15-21-40.png


    Ясно кто это был
    Список файлов показывает только один класс. кидай сюда
     
  4. XjCyan1de

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

    Баллы:
    76
    Имя в Minecraft:
    XjCyan1de
    Залей на гитхаб, че как лох
     
  5. Blc_Dragon

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

    Баллы:
    76
    не думаю что он умеет
     
  6. XjCyan1de

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

    Баллы:
    76
    Имя в Minecraft:
    XjCyan1de
    Пусть в [соde=java] запихнет))
     
  7. Blc_Dragon

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

    Баллы:
    76
    хе хе ))0)0))
     
  8. Автор темы
    amw202020

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

    Баллы:
    66
    Код:
    http://pastebin.com/FiH1DRDN
    
    Rubukkit не дал залить слишком много кода XD
     
  9. Blc_Dragon

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

    Баллы:
    76
    шутки про кровь из глаз еще актуальны?
     
  10. Exception_Prototype

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

    Баллы:
    96
  11. Blc_Dragon

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

    Баллы:
    76
    ну я так понял из кода, что он хочет прокручивать вещи в инвентаре.
     
  12. Автор темы
    amw202020

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

    Баллы:
    66
    так и есть,просто не нашел вариант как можно прокручивать и сделал циклом ручной перебор
     
  13. Blc_Dragon

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

    Баллы:
    76
    Код:
    final static Random random = new Random(); //подключаем наш супирпупир рандом
    //не забываем что рандом - это поле (вне метода), а все что ниже  - это где то в методе должно быть
            final Inventory inv = Bukkit.createInventory(null, 27, "name"); //создаем инвентарь
            final List<ItemStack> items = new ArrayList<>();
            items.add(new ItemStack(Material.ACACIA_DOOR));//заполняем массив с вещами
            for (int i=0; i<27; i++){
                if (((i>=0&&i<9)||(i>=18&&i<27))&&(i!=4&&i!=22)){
                    inv.setItem(i, ItemUtil.create(35,(short)14, null));
                } else if (i==4||i==22) {inv.setItem(i, new ItemStack(Material.GLASS));} //засовываем в первую и третью строку стекло.
            }
       
            for (int i =0; i<9; i++) {
                ItemStack item = items.get(random.nextInt(items.size()));
                inv.setItem(i+9, item); //засовываем во вторую строку инвентаря вещи, благодоря рандому они берутся случайно из массива с вещами.
            }
            p.openInventory(inv);
            BukkitRunnable cani = new BukkitRunnable() { //таймер
                double i = 1;
                double time = 0;
                ItemStack winitem  = null;
                @Override
                public void run() {
                    if (time>i&&time<100){
                        for (int f=9; f<17; f++) {
                            inv.setItem(f, inv.getItem(f+1)); //смещаем все вещи во второй троке на один слот влево.
                        }
                        inv.setItem(17, items.get(random.nextInt(items.size()))); //заполняем слот который оказался пустым, т.к. мы все сместили. вещь снова берем рандомную из того же массива               
                        i=i*1.125; //магия. тут я делаю что бы прокрутка сначала шла быстро, а последние несколько делала "из последних сил"
                    }
                    time++; //увеличиваем некий аналог "времени"
                    if (p.getInventory().getName()!=genS.genStrng(plugin.cases.getString("cases."+casetype+".Name"))) {p.openInventory(inv);} //если игрок дибил и вдруг закрыл инвентарь до того как он прокрутился, то открываем его снова
                    if (time==100) {
                        winitem = inv.getItem(13); //получаем из середины инвентаря вещь которую выиграл игрок
                        p.sendMessage("ты дурак, который выиграл вещь {item}".replace("{item}", inv.getItem(13).getItemMeta().getDisplayName())); //поздравляем игрока
                    }
               
               
                    if (time>100&&time<150&&time%10==0){ //это сделано чтобы вещь которую игрок выиграл еще немного помаргала.
                        if (time%20==0){
                            inv.setItem(13, winitem);
                        }else {
                            inv.setItem(13, null);       
                            }
                    }//о да, анимация
                    if (time>150){
                        p.getInventory().addItem(winitem); //выдаем игроку его вещь которую он выиграл. Тут же делаем еще кучу всего что связано с выигрышем. поздравлять можно тоже тут, но я не стали ибо "0)0)))0)"
                        p.closeInventory(); //закрываем инвентарь куда подальше
                        cancel(); //останавливаем таймер, ибо нефиг опертивку кушть
                    }
                }
            };
            cani.runTaskTimer(plugin, 10, 1);//ну а это запускатор таймера. про сокр. форму не писать ибо мне такая нравится.
    Вот мой код прокрутки инвентаря.
     
    Последнее редактирование: 3 фев 2017
  14. Автор темы
    amw202020

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

    Баллы:
    66
    можешь это в мой гавноплагин вшить ? XD
     
  15. Blc_Dragon

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

    Баллы:
    76
    каким куем?
     
  16. XjCyan1de

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

    Баллы:
    76
    Имя в Minecraft:
    XjCyan1de
    Такое количество говнокода я ещё не видел *like*
     
  17. Jampire

    Jampire Старожил Пользователь

    Баллы:
    173
    Skype:
    jampire-h
    Имя в Minecraft:
    Jampire
    а я видел
     
  18. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
  19. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Нет, ну я понимаю, что люди говнокодят, потому что это быстрее, чем научиться писать нормально. Но наверно это не тот случай. ТС, тебе было не лень это всё писать? Вот серьёзно... 1300 строк? Что-о-о?
    Ладно...
    На данном этапе могу лишь посоветовать определять однотипные участки кода в отдельные методы. А различающиеся значения передавать в параметрах. Так читабельность кода заметно возрастёт, а вот размер текста уменьшится в разы.
    Вот сделаешь это - кидай обновлённый паст в тему, а то в твоём нынешнем варианте вряд ли кто-то будет разбираться.
     
  20. CoolBoy

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

    Баллы:
    96
    Имя в Minecraft:
    Xezard
    Извините конечно, но, БОЖЕ КАК ЖЕ Я ОРУ.
     

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