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

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

Discussion in 'Разработка плагинов для новичков' started by amw202020, Feb 3, 2017.

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

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

    Trophy Points:
    66
    Нужно уменьшить код
    (Внимание) Опасно для психики, смотреть только профессионалам!
    src - click
    VT
     
  2. Хостинг MineCraft
    <
  3. Mr_RoboMan

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

    Trophy Points:
    123
    Подпишусь на темку только для того чтобы увидеть, какие дибилы будут скачивать это, ради того чтоб тебе помочь..)
     
  4. Mabus

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

    Trophy Points:
    76
    Skype:
    chervanenko
    Имя в Minecraft:
    Chervanenko
  5. Blc_Dragon

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

    Trophy Points:
    76
    Имя в Minecraft:
    Blc_Dragon


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


    Ясно кто это был[DOUBLEPOST=1486117406,1486117150][/DOUBLEPOST]Список файлов показывает только один класс. кидай сюда
     
  6. XjCyan1de

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

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

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

    Trophy Points:
    76
    Имя в Minecraft:
    Blc_Dragon
    не думаю что он умеет
     
  8. XjCyan1de

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

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

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

    Trophy Points:
    76
    Имя в Minecraft:
    Blc_Dragon
    хе хе ))0)0))
     
  10. Автор темы
    amw202020

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

    Trophy Points:
    66
    Code:
    http://pastebin.com/FiH1DRDN
    
    Rubukkit не дал залить слишком много кода XD
     
  11. Blc_Dragon

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

    Trophy Points:
    76
    Имя в Minecraft:
    Blc_Dragon
    шутки про кровь из глаз еще актуальны?
     
  12. Exception_Prototype

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

    Trophy Points:
    46
  13. Blc_Dragon

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

    Trophy Points:
    76
    Имя в Minecraft:
    Blc_Dragon
    ну я так понял из кода, что он хочет прокручивать вещи в инвентаре.
     
  14. Автор темы
    amw202020

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

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

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

    Trophy Points:
    76
    Имя в Minecraft:
    Blc_Dragon
    Code:
    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);//ну а это запускатор таймера. про сокр. форму не писать ибо мне такая нравится.
    Вот мой код прокрутки инвентаря.
     
    Last edited: Feb 3, 2017
  16. Автор темы
    amw202020

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

    Trophy Points:
    66
    можешь это в мой гавноплагин вшить ? XD
     
  17. Blc_Dragon

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

    Trophy Points:
    76
    Имя в Minecraft:
    Blc_Dragon
    каким куем?
     
  18. XjCyan1de

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

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

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

    Trophy Points:
    173
    Skype:
    jampire-h
    Имя в Minecraft:
    Jampire
    а я видел
     
  20. alexandrage

    alexandrage Администратор

    Trophy Points:
    173
    Skype:
    alexandr0116
  21. Dymeth

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

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

Share This Page