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

Помогите Bukkit и его Особености.

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

Статус темы:
Закрыта.
  1. Автор темы
    pavlinVP

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

    Баллы:
    46
    Собствена сабж: p.s О гугле не говорите даже, Гуглил коечто просто не понял.
    И так сразу скажу. Я начинающий кодер за небольшое время изучения java ,Я решил попробывать свой силы в майнкрафте. И начал c Bukkit API, Хотелось бы уточнить у вас. Кхм, Ну допустим мы сломали блок в мире, На сколько я понимаю Bukkit запустил event BlockBreakEvent и после этого все высокоуровневые java скрипты тоже проюзали этот event в своем конструкторе . Ну не знаю начали юзать но если условие не совпало в if/switch .Закрыли в break/return. Или как?. Вопрос номер 2: Ну допустим я хочу сделать плагин на царя горы,И решил сделать следуюшию релизация, Сервер каждую секунду допустим будет получать лист игроков и после этого проверять на какой кординате они находиться, Если один из них будет на определеной то в таком случае ему будет начисляется валюта через vault. Сильно ли будет в таком случае трясти сервер?. Или трясти не будет совсем?.
     
  2. LuckyZeeRo

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

    Баллы:
    96
    Имя в Minecraft:
    i0xHeX
    Тебе определенно нужно перечитать / переучить материалы по Java, включая термины вроде "конструкторов", отличия скриптовых языков от нескриптовых и т.д. Первый вопрос мне непонятен совсем.
    На счет второго - будет трясти настолько, насколько хорошо ты сделаешь проверку координат. Но лучше проверять координату, когда игрок перешел на 1 целый блок (PlayerMoveEvent -> чек координат от и до).
     
  3. Автор темы
    pavlinVP

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

    Баллы:
    46

    И так, Под первым вопросом я подрузумиваю следующие, На сколько я понимаю слой абстракции, У майнкрафт cервера. Сделаны следуюшим образом,Ну достустим мы установили сокетную связь через протокол tcp начали обмен данными, После этого сервер в асинхроном режиме проранил набор eventov, И после этого начал действовать по следуюший модели игрок сломал блок Был запушен BlockBreakEvent другие java скрипты которые находились в папке plugin тоже начали обрабатывать этот event только они после начала тк как событие было явно преднозначено не для них были закрыты в break;/Любую другую херню которая бы позволила прикратить выполнение кода в конструкторе. Смысол: Все ли правильно я заливаю, Или же сейчас я херню несу?.
     
    Последнее редактирование: 18 апр 2019
  4. Energy warrior

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

    Баллы:
    76
    Хрень! Баккит запускает эвент и все плагины(не скрипты), что обрабатывают этот ивент выполняют код. Никаких распределений что для чего нету. Запустил, и если обрабатывает эвент, то выполняется код. Насколько я знаю там ещё приоритеты есть. Вроде, чтобы некоторые эвенты обрабатывались раньше.
     
  5. Автор темы
    pavlinVP

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

    Баллы:
    46
    Ну смотри, Java это обьекто орентированый язык програмирования, У него усе пашет по следуюший модели, Есть обьект он чтоли бо делает у него есть причина возникновения и у него есть конструктор:
    public void PlayerItemHeldEvent(PlayerInteractEvent e)
    {
    // Вот он кстати.

    }
    После запуска ядро лезет в папку plugins и получает лист всех ярников.
    Через plugin.yml ишет main класс.
    И там OnEnable.
    Подключает слушатель событий.
    И все остальное.
    Потому я и называю так называемы плагины скриптами.
    А высокоувневыми скриптами я это евление называю по следуюший причине.
    Ну достустим minecraft серверу нужно будет создать область или виртуальный жесткий диск. Не знаю накой но для примера. Bukkit API не дает такого гибкого функционала. Шо мы делаем, Мы пишем драйвер который даст на функционал под типу public mount(){
    sdisk.mount........
    sdisk.create..........
    *
    }
    Ну а драйвер нам ясен пень нужен будет. Тк как java не дает нам сделать нужно действие.
    Если что в данном случае по факту наш драйвер будет клиент-сервер приложением.
    (( ЭТО ПРОСТО ПРИМЕР ))
     
  6. Автор темы
    pavlinVP

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

    Баллы:
    46
    Ну смотри а что если мы возмем такую шнягу как WorldEdit. И за чего он там начинает биться в кунвульсиях если я его заставлю заюзать огромное колво блокок через команду //set *****?. : Мое предположение после выделения и ввода. Для начала он групирует все блоки которые ему нужно будет удалить, И после Он начинает это делать причем драконским образом. И за огромных вычеслений сервер начинает тупить и в некоторых случиях дохнет.
     
  7. alexandrage

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

    Баллы:
    173
    Для этого придумали fawe. С ним не дохнет. Все в твоих руках как бы. Как накодишь так и будет работать. И к ивентам есть документация, когда и где они вызываются. Есть приоритеты и игнореканселед.
     
  8. Автор темы
    pavlinVP

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

    Баллы:
    46
    Слушай, Как думаеш будет ли эфективна верификация юзеров на smtp, Ну не знаю игрок зашел на сервер, Hi тебе нужно зарегаться вводи почту, После ввода smtp отправит туда письмо. Где будет просить ввести код. Ну еще красивый html шаблон приедит вмести. После перезахода каждого, Игрока будет просить введи команду /go для того чтобы зайти, После этого ему на почту приедит письмо с красивым шаблоном. В котором будет код. Или кнопка войти. Ну не знаю там будет ссылка на домен 2/3 Уровня который через A запись будет сыллка на ipv4 он постучиться на порт 80/443/После этого сервер увидет о том что http клиент передал такой та session id ,И разрешит юзверю ломать блоки. Сохранение сессий пилить не буду боюсь, Я не знаю можно ли поставить в tcp в заголовок отправителя любой ipv4 адресс.
     
  9. Автор темы
    pavlinVP

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

    Баллы:
    46
    Если что smtp будет на loop back интерфейсе.
     
  10. alexandrage

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

    Баллы:
    173
    Ньюфаг 80лвл. На такое есть лаунчеры. Игрок регистрируется подтверждает почту, авторизуется в лаунчере и входит уже по сессии на сервер. Вариант по проще плагин authme. Тоже умеет с почтой работать.
     
  11. Автор темы
    pavlinVP

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

    Баллы:
    46
    Ну дык я говорю про ванилу. Authme не очень подходит. Я сейчас говорю про полное избовление пользователя от авторизаций по паролю.
     
  12. Автор темы
    pavlinVP

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

    Баллы:
    46
    "Где будет просить ввести код" = опечатался не много , Будет находиться код.
     
  13. Автор темы
    pavlinVP

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

    Баллы:
    46
    Ну а юзверы будет находиться в субд mysql/*
     
  14. Energy warrior

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

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

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

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    На ваниле такое никому не интересно, да и подтверждать при каждом заходе не оч удобно
     
  16. Автор темы
    pavlinVP

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

    Баллы:
    46
    Типа того. Только на ваниле.Без модов.
     
  17. Автор темы
    pavlinVP

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

    Баллы:
    46
    Ну тоесть типичному юзеру будет тяжко открыть http клиент,Зайти на yandex/gooogle/*. Почту и нажать одну кнопку?.
     
  18. LuckyZeeRo

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

    Баллы:
    96
    Имя в Minecraft:
    i0xHeX
    Конечно. Проще пароль ввести и не парится.
    Даже двуфакторка через гугл и то не удобна. Ради чего это?
    Если юзверь захочет защиту своего акка, он сделает надежный пароль (учитывая конечно, что у тебя авторизация использует нормальные хеши для паролей в наше время). А тупой школьник сразу покинет сервер, если ему еще каждый раз куда то заходить надо. Это то же самое, что заставлять чиркать сложные пароли.
     
  19. LuckyZeeRo

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

    Баллы:
    96
    Имя в Minecraft:
    i0xHeX
    Почти все события вызываются синхронно, кроме тех, где isAsynchronous() = true или начинаются на Async (AsyncChatEvent). Событие вызывается, по порядку каждый плагин его обрабатывает, это значит, что пока один плагин обрабатывает (те, кто подписаны на данное событие), все остальные ждут. Одновременно не делается. Как только все обработали - смотрится результат ивента и выполняется ряд соответствующих действий со стороны сервера.

    Пакеты идут асинхронно, ивенты - синхронизируются в большинстве. И если ты будешь в ивенте выполнять трудоемкие вещи, сервер соответственно будет "лагать". Я не пойму про какие break ты говоришь. Повторюсь - переучи все понятия и язык в целом. Так как сейчас не оч годится.
     
  20. Автор темы
    pavlinVP

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

    Баллы:
    46
    Нда. заметил пару минут назад. то что в switch нет break/* Просто долго работал с c# и там оно было. Думал то что в java так как они достаточно похожи.
     
Статус темы:
Закрыта.

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