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

Помогите Сборник багов спигота

Тема в разделе "Разработка плагинов для новичков", создана пользователем Energy warrior, 31 дек 2018.

Статус темы:
Закрыта.
  1. alexandrage

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

    Баллы:
    173
    Код:
    public interface Button {
        public void pressed();
    }
    Код:
    public class ButtonChangeName implements Button {
    
        @Override
        public void pressed() {
            // TODO Auto-generated method stub
        }
    }
     
  2. AbstractCoder

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

    Баллы:
    76
    Имя в Minecraft:
    AbstractCoder
    Я те сказал юзать функциональные интерфейсы, а какой именно юзать сам не можешь что ли догадаться? приходит клик, с ним совершается действие, это консумер. Для perplayer видимости игроков ты можешь использовать еще и Predicate.
    Сори, но эт уже твои траблы, фингю какую-то спрашиваешь.
     
  3. Автор темы
    Energy warrior

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

    Баллы:
    76
    Смотри. У меня есть меню с двумя(пока) типами кнопок. Первый который когда нажимаешь что-то происходит. А второй это когда нажимаешь и меняется имя кнопки и так по кругу.
    Для кликов я и так юзаю Consumer.
    PHP:
    public ItemButton(ItemStack btnConsumer<InventoryClickEventaction) {
            
    this.action action;
            
    this.btn btn;
        }
     
  4. AbstractCoder

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

    Баллы:
    76
    Имя в Minecraft:
    AbstractCoder
    ну в консумере совершай действия для изменения предмета или че ты там хочешь сделать
     
  5. Автор темы
    Energy warrior

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

    Баллы:
    76
    ТАк а для чего я по вашему массив с именами кнопки сделал?
     
  6. alexandrage

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

    Баллы:
    173
    Короче вот те пример с "по кругу".

    Код:
            List<String> string = new ArrayList<String>();
            string.add("1");
            string.add("2");
            string.add("3");
            string.add("4");
            string.add("5");
            string.add("6");
            int i = 0;
            for(;;) {
                if(i==string.size()) {
                    i = 0;
                }
                System.out.println(string.get(i));
                i++;
            }
     
  7. AbstractCoder

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

    Баллы:
    76
    Имя в Minecraft:
    AbstractCoder
    Ну ты должен был сделать его в классе, реализующем Consumer для изменения состояния предмета, который хранит у себя список и крутит их, а не в том виде, как у тебя.
     
  8. Автор темы
    Energy warrior

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

    Баллы:
    76
    Типо okay. Спасибо большое всем за ответы!
     
  9. Автор темы
    Energy warrior

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

    Баллы:
    76

    Не робит чёт.
    PHP:
    int i 0;
        public 
    void init(){
            
    ArrayList<Stringnames = new ArrayList<>();
            
    names.add("§aФорма: §3ЛИНИЯ");
            
    names.add("§aФорма: §3КВАДРАТ");
            
    ItemButton form_type = new ItemButton(new ButtonBuilder(Material.STONE).setName("§aФорма: §3КВАДРАТ"));
            
    form_type.setAction(event -> {
                
    HumanEntity who event.getWhoClicked();
                if(
    who instanceof Player) {
                    try {
                        
    event.getWhoClicked().sendMessage(names.get(i));
                        if (
    == names.size()) {
                            
    debug("Equals size of list");
                            
    0;
                            
    debug("Index");
                        }
                        
    Player player = (Playerevent.getWhoClicked();
                        
    form_type.setName(names.get(i));
                        
    debug("Name was changed");
                        
    addComponent(0form_type);
                        
    open(player);
                        
    i++;
                        
    debug("index was upped");
                    } catch (
    Exception e){

                    }
                }
            });
            
    //form_type.setAction(event -> event.getWhoClicked().sendMessage("BUTTON WORKS!!"));
            
    addComponent(0,form_type);
        }
     
    Последнее редактирование: 6 янв 2019
  10. AbstractCoder

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

    Баллы:
    76
    Имя в Minecraft:
    AbstractCoder
    Мда, ничего не понял из того, что тебе сказали - выбрасывай.
     
  11. Автор темы
    Energy warrior

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

    Баллы:
    76
    Я же говорил.
     
  12. Автор темы
    Energy warrior

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

    Баллы:
    76
    Я, конечно, делал класс с реализацией Consumer, но чёт не получилось и я перешёл обратно. Но класс с Consumer у меня есть и он реализовывал то что ты говорил. Но как мне быть с тем что мне выбрасывает IOOBE. Почему-то игнорируется строка где проверяется ровняется ли индекс размеру листа.
     
  13. AbstractCoder

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

    Баллы:
    76
    Имя в Minecraft:
    AbstractCoder
    Ну это уже твои траблы, да мб я хреново объяснил и новичку сложно понять, но по-другому я не умею и возится с тобой не буду.
     
  14. Автор темы
    Energy warrior

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

    Баллы:
    76
    Я заметил. Но как ты думаешь, почему игнорируется проверка?
     
  15. AbstractCoder

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

    Баллы:
    76
    Имя в Minecraft:
    AbstractCoder
    Я не буду вникать в твой вырвиглазный код, сори.
     
  16. Автор темы
    Energy warrior

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

    Баллы:
    76
    Ну ладно.
     
  17. Автор темы
    Energy warrior

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

    Баллы:
    76
    Вообщем я решил проблему! Оказалось что я тупой и не заметил, что сообщение, которое выводится, когда нажимаешь, стоит перед проверкой, поэтому и вылетал IOOBE. Я всё пофиксил и таки послушал совет и сделал всё в отдельном классе с реализацией Consumer. Всем спасибо за ответы, показа нового принципа ООП. Тему закрываю!
     
Статус темы:
Закрыта.

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