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

[Решено] ФейкСлоты

Тема в разделе "Разработка плагинов для новичков", создана пользователем Незнайчик, 12 апр 2016.

Статус темы:
Закрыта.
  1. Автор темы
    Незнайчик

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

    Баллы:
    76
    Всем привет, решил попробовать себя в сфере написания плагинов, но что-то не получается :confused:
    Глянул темку, подумал будет легко, но не тут-то было...
    Максимальное количество игроков измененное через плагин
    Код:
    import java.util.Iterator;
    import java.util.logging.Logger;
    
    import org.bukkit.Bukkit;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.server.ServerListPingEvent;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class FakeSlots extends JavaPlugin {
    
        Logger log = getLogger();
      
        public void onEnable(ServerListPingEvent e){
            log.info("FakeSlots start1!"); // Отображается
            e.setMaxPlayers(10); // Максимальное количество игроков не меняется
            log.info("FakeSlots start2!"); // Это сообщение не отображается...
        }
      
        public void onDisable(){
            log.info("FakeSlots has been disabled!");
        }
      
    }
    Помогите разобраться кто знает где ошибка)
     
    Последнее редактирование: 13 апр 2016
  2. Хостинг MineCraft
    <
  3. AxmeD

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

    Баллы:
    103
    Skype:
    ahmed136323
    Неправильно ты понял суть onEnable()
     
  4. Автор темы
    Незнайчик

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

    Баллы:
    76
    Я свои функции тоже создавал. Потом туда запихал, чтоб запустился точно.
     
  5. Rassvej

    Rassvej Активный участник

    Баллы:
    61
    Имя в Minecraft:
    Rassvej
    Спасибо я ору...

    Задаюсь вопросом причем здесь?
     
  6. Автор темы
    Незнайчик

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

    Баллы:
    76
    Не оно?) Было очень похоже(
    Как тогда найти нужную функцию? Связано ли с server.properties?
     
  7. Reality_SC

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

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Метод onEnable() не имеет аргументов. По крайней мере тот метод, который запустит сервер, загрузивший плагин в память при запуске. Метод, написанный в коде первого поста — это другой метод. Да, у него то же название, но другой список аргументов — а всё это вместе определяет сигнатуру (а ещё и возвращаемое значение, но тут ТС угадал).
    На всякий случай, когда методы переопределяются, следует дописывать им аннотацию @Override — это будет пометка и программисту, и IDE, и компилятору о том, как всё должно быть устроено.
    Событие ServerListPingEvent (как и любое другое в рамках Bukkit API) приходит в методы, имеющие область видимости public, тип void, расположенные в классе, наследующем интерфейс Listener, а также помеченные аннотацией @EventHandler.
    Код:
    public class FakeSlots extends JavaPlugin implements Listener {
        private final Logger log = getLogger();
        // ...
        @Override
        public void onEnable() {
            log.info("FakeSlots has been successfully enabled!");
        }
        @Override
        public void onDisable() {
            log.info("FakeSlots has been disabled!");
        }
        @EventHandler
        public void onServerListPing(ServerListPingEvent e) {
            e.setMaxPlayers(10);
            log.info("FakeSlots did that shit!");
        }
        // ...
    }
    P.S. Пожалуйста, используйте теги CODE=<язык> с тем языком, который фактически приводится (в случае данной темы это Java). PHP никак не подходит для исходников на Java, хотя бы потому, что его тупо нельзя скопировать без номеров строк.
     
    Последнее редактирование: 13 апр 2016
  8. Автор темы
    Незнайчик

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

    Баллы:
    76
    Спасибо пока все сложновато, и компилятор жалуется: "e cannot be resolved to a type" :(
    Пытался исправить сам исправить ошибку, но безуспешно.
    Я в spigot api такого не нашел onServerListPing...
    P.S. Исправил тег CODE, не знал что поддерживает Java
    Что посоветуете?
     
  9. Reality_SC

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

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Большое спасибо!
    Учись :)
    К какому типу?
    Обращаю внимание, что я не сказал об имени метода. Имёна могут быть любые, Bukkit API распознаёт их по public void и списку аргументов, точнее по типу единственного аргумента — классу события. А класс события я тебе уже написал: ServerListPingEvent.[DOUBLEPOST=1460559552,1460558932][/DOUBLEPOST]P.S. Прошу прощения, у меня в коде выше была опечатка, сам не заметил. Там не (e), а (ServerListPingEvent e)...
     
  10. Автор темы
    Незнайчик

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

    Баллы:
    76
    Я уже так пробовал( Перепроверил, ошибок нет, но слотов все еще 20 (
     
  11. Reality_SC

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

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Я ещё не написал, что Listener-ы нужно регистрировать...
    В onEnable: getServer().getPluginManager().registerEvents(this, this);
    В onDisable: getServer().getServicesManager().unregisterAll(this);
    Без этого сервер не знает, у кого вызывать обработчики событий.
     
  12. Автор темы
    Незнайчик

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

    Баллы:
    76
    Спасибо)
    Но теперь другая беда, все эти слоты визуальные (при входе пишет что нет места).
    Надо найти событие для входа на полный сервер?

    allow() - впустило игрока.
     
    Последнее редактирование: 14 апр 2016
Статус темы:
Закрыта.

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