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

Статус
Закрыто для дальнейших ответов.

pavlinVP

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


И так, Под первым вопросом я подрузумиваю следующие, На сколько я понимаю слой абстракции, У майнкрафт cервера. Сделаны следуюшим образом,Ну достустим мы установили сокетную связь через протокол tcp начали обмен данными, После этого сервер в асинхроном режиме проранил набор eventov, И после этого начал действовать по следуюший модели игрок сломал блок Был запушен BlockBreakEvent другие java скрипты которые находились в папке plugin тоже начали обрабатывать этот event только они после начала тк как событие было явно преднозначено не для них были закрыты в break;/Любую другую херню которая бы позволила прикратить выполнение кода в конструкторе. Смысол: Все ли правильно я заливаю, Или же сейчас я херню несу?.
 
Последнее редактирование:
И так, Под первым вопросом я подрузумиваю следующие, На сколько я понимаю слой абстракции, У майнкрафт cервера. Сделаны следуюшим образом,Ну достустим мы установили сокетную связь через протокол tcp начали обмен данными, После этого сервер в асинхроном режиме проранил набор eventov, И после этого начал действовать по следуюший модели игрок сломал блок Был запушен BlockBreakEvent другие java скрипты которые находились в папке plugin тоже начали обрабатывать этот event только они после начала тк как событие было явно преднозначено не для них были закрыты в break;/Любую другую херню которая бы позволила прикратить выполнение кода в конструкторе. Смысол: Все ли правильно я заливаю, Или же сейчас я херню несу?.
Хрень! Баккит запускает эвент и все плагины(не скрипты), что обрабатывают этот ивент выполняют код. Никаких распределений что для чего нету. Запустил, и если обрабатывает эвент, то выполняется код. Насколько я знаю там ещё приоритеты есть. Вроде, чтобы некоторые эвенты обрабатывались раньше.
 
Хрень! Баккит запускает эвент и все плагины(не скрипты), что обрабатывают этот ивент выполняют код. Никаких распределений что для чего нету. Запустил, и если обрабатывает эвент, то выполняется код. Насколько я знаю там ещё приоритеты есть. Вроде, чтобы некоторые эвенты обрабатывались раньше.
Ну смотри, Java это обьекто орентированый язык програмирования, У него усе пашет по следуюший модели, Есть обьект он чтоли бо делает у него есть причина возникновения и у него есть конструктор:
public void PlayerItemHeldEvent(PlayerInteractEvent e)
{
// Вот он кстати.

}
После запуска ядро лезет в папку plugins и получает лист всех ярников.
Через plugin.yml ишет main класс.
И там OnEnable.
Подключает слушатель событий.
И все остальное.
Потому я и называю так называемы плагины скриптами.
А высокоувневыми скриптами я это евление называю по следуюший причине.
Ну достустим minecraft серверу нужно будет создать область или виртуальный жесткий диск. Не знаю накой но для примера. Bukkit API не дает такого гибкого функционала. Шо мы делаем, Мы пишем драйвер который даст на функционал под типу public mount(){
sdisk.mount........
sdisk.create..........
*
}
Ну а драйвер нам ясен пень нужен будет. Тк как java не дает нам сделать нужно действие.
Если что в данном случае по факту наш драйвер будет клиент-сервер приложением.
(( ЭТО ПРОСТО ПРИМЕР ))
 
Хрень! Баккит запускает эвент и все плагины(не скрипты), что обрабатывают этот ивент выполняют код. Никаких распределений что для чего нету. Запустил, и если обрабатывает эвент, то выполняется код. Насколько я знаю там ещё приоритеты есть. Вроде, чтобы некоторые эвенты обрабатывались раньше.
Ну смотри а что если мы возмем такую шнягу как WorldEdit. И за чего он там начинает биться в кунвульсиях если я его заставлю заюзать огромное колво блокок через команду //set *****?. : Мое предположение после выделения и ввода. Для начала он групирует все блоки которые ему нужно будет удалить, И после Он начинает это делать причем драконским образом. И за огромных вычеслений сервер начинает тупить и в некоторых случиях дохнет.
 
Ну смотри а что если мы возмем такую шнягу как WorldEdit. И за чего он там начинает биться в кунвульсиях если я его заставлю заюзать огромное колво блокок через команду //set *****?. : Мое предположение после выделения и ввода. Для начала он групирует все блоки которые ему нужно будет удалить, И после Он начинает это делать причем драконским образом. И за огромных вычеслений сервер начинает тупить и в некоторых случиях дохнет.
Для этого придумали fawe. С ним не дохнет. Все в твоих руках как бы. Как накодишь так и будет работать. И к ивентам есть документация, когда и где они вызываются. Есть приоритеты и игнореканселед.
 
Для этого придумали fawe. С ним не дохнет. Все в твоих руках как бы. Как накодишь так и будет работать. И к ивентам есть документация, когда и где они вызываются. Есть приоритеты и игнореканселед.
Слушай, Как думаеш будет ли эфективна верификация юзеров на smtp, Ну не знаю игрок зашел на сервер, Hi тебе нужно зарегаться вводи почту, После ввода smtp отправит туда письмо. Где будет просить ввести код. Ну еще красивый html шаблон приедит вмести. После перезахода каждого, Игрока будет просить введи команду /go для того чтобы зайти, После этого ему на почту приедит письмо с красивым шаблоном. В котором будет код. Или кнопка войти. Ну не знаю там будет ссылка на домен 2/3 Уровня который через A запись будет сыллка на ipv4 он постучиться на порт 80/443/После этого сервер увидет о том что http клиент передал такой та session id ,И разрешит юзверю ломать блоки. Сохранение сессий пилить не буду боюсь, Я не знаю можно ли поставить в tcp в заголовок отправителя любой ipv4 адресс.
 
Слушай, Как думаеш будет ли эфективна верификация юзеров на smtp, Ну не знаю игрок зашел на сервер, Hi тебе нужно зарегаться вводи почту, После ввода smtp отправит туда письмо. Где будет просить ввести код. Ну еще красивый html шаблон приедит вмести. После перезахода каждого, Игрока будет просить введи команду /go для того чтобы зайти, После этого ему на почту приедит письмо с красивым шаблоном. В котором будет код. Или кнопка войти. Ну не знаю там будет ссылка на домен 2/3 Уровня который через A запись будет сыллка на ipv4 он постучиться на порт 80/443/После этого сервер увидет о том что http клиент передал такой та session id ,И разрешит юзверю ломать блоки. Сохранение сессий пилить не буду боюсь, Я не знаю можно ли поставить в tcp в заголовок отправителя любой ipv4 адресс.
Ньюфаг 80лвл. На такое есть лаунчеры. Игрок регистрируется подтверждает почту, авторизуется в лаунчере и входит уже по сессии на сервер. Вариант по проще плагин authme. Тоже умеет с почтой работать.
 
Ньюфаг 80лвл. На такое есть лаунчеры. Игрок регистрируется подтверждает почту, авторизуется в лаунчере и входит уже по сессии на сервер. Вариант по проще плагин authme. Тоже умеет с почтой работать.
Ну дык я говорю про ванилу. Authme не очень подходит. Я сейчас говорю про полное избовление пользователя от авторизаций по паролю.
 
"Где будет просить ввести код" = опечатался не много , Будет находиться код.
 
Ну дык я говорю про ванилу. Authme не очень подходит. Я сейчас говорю про полное избовление пользователя от авторизаций по паролю.
На ваниле такое никому не интересно, да и подтверждать при каждом заходе не оч удобно
 
На ваниле такое никому не интересно, да и подтверждать при каждом заходе не оч удобно
Ну тоесть типичному юзеру будет тяжко открыть http клиент,Зайти на yandex/gooogle/*. Почту и нажать одну кнопку?.
 
Ну тоесть типичному юзеру будет тяжко открыть http клиент,Зайти на yandex/gooogle/*. Почту и нажать одну кнопку?.
Конечно. Проще пароль ввести и не парится.
Даже двуфакторка через гугл и то не удобна. Ради чего это?
Если юзверь захочет защиту своего акка, он сделает надежный пароль (учитывая конечно, что у тебя авторизация использует нормальные хеши для паролей в наше время). А тупой школьник сразу покинет сервер, если ему еще каждый раз куда то заходить надо. Это то же самое, что заставлять чиркать сложные пароли.
 
И так, Под первым вопросом я подрузумиваю следующие, На сколько я понимаю слой абстракции, У майнкрафт cервера. Сделаны следуюшим образом,Ну достустим мы установили сокетную связь через протокол tcp начали обмен данными, После этого сервер в асинхроном режиме проранил набор eventov, И после этого начал действовать по следуюший модели игрок сломал блок Был запушен BlockBreakEvent другие java скрипты которые находились в папке plugin тоже начали обрабатывать этот event только они после начала тк как событие было явно преднозначено не для них были закрыты в break;/Любую другую херню которая бы позволила прикратить выполнение кода в конструкторе. Смысол: Все ли правильно я заливаю, Или же сейчас я херню несу?.
Почти все события вызываются синхронно, кроме тех, где isAsynchronous() = true или начинаются на Async (AsyncChatEvent). Событие вызывается, по порядку каждый плагин его обрабатывает, это значит, что пока один плагин обрабатывает (те, кто подписаны на данное событие), все остальные ждут. Одновременно не делается. Как только все обработали - смотрится результат ивента и выполняется ряд соответствующих действий со стороны сервера.

Пакеты идут асинхронно, ивенты - синхронизируются в большинстве. И если ты будешь в ивенте выполнять трудоемкие вещи, сервер соответственно будет "лагать". Я не пойму про какие break ты говоришь. Повторюсь - переучи все понятия и язык в целом. Так как сейчас не оч годится.
 
Почти все события вызываются синхронно, кроме тех, где isAsynchronous() = true или начинаются на Async (AsyncChatEvent). Событие вызывается, по порядку каждый плагин его обрабатывает, это значит, что пока один плагин обрабатывает (те, кто подписаны на данное событие), все остальные ждут. Одновременно не делается. Как только все обработали - смотрится результат ивента и выполняется ряд соответствующих действий со стороны сервера.

Пакеты идут асинхронно, ивенты - синхронизируются в большинстве. И если ты будешь в ивенте выполнять трудоемкие вещи, сервер соответственно будет "лагать". Я не пойму про какие break ты говоришь. Повторюсь - переучи все понятия и язык в целом. Так как сейчас не оч годится.
Нда. заметил пару минут назад. то что в switch нет break/* Просто долго работал с c# и там оно было. Думал то что в java так как они достаточно похожи.
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх