Работа верстака, не мнгновенная, а с ожиданием как у печки.

  • Автор темы Автор темы Bukkake
  • Дата начала Дата начала

Bukkake

Активный участник
Пользователь
Баллы
66
Имя в Minecraft
666
Можно ли изменить принцип работы верстака, чтобы нужно было ждать некоторое время чтобы получить результат ? Принцип как у печки - нужно подождать окончания работы.
 
Есть пару вариантов, которые я придумал сразу.

Создать ООП класс игрока, ООП класс скрафченных предметов (грубо говоря), а позже с помощью 1 шедулера проверять всех игроков. Через опр. время - выдавать вещь, а при крафте ее забирать.

При крафте - удалять предмет (как и в I-ом вар-е), и записывать в Table<Player, Material, Long>. Каждые n-секунд (как пример) через шедулер снимать в Table соответственно, по окончанию - выдавать предмет соответственно.
 
Есть пару вариантов, которые я придумал сразу.

Создать ООП класс игрока, ООП класс скрафченных предметов (грубо говоря), а позже с помощью 1 шедулера проверять всех игроков. Через опр. время - выдавать вещь, а при крафте ее забирать.

При крафте - удалять предмет (как и в I-ом вар-е), и записывать в Table<Player, Material, Long>. Каждые n-секунд (как пример) через шедулер снимать в Table соответственно, по окончанию - выдавать предмет соответственно.
Зач сложности с коллекциями?
Событие крафта -> отмена события -> шед на сет результата через время для этого игрока.
Еще нужны будут разные нюансы, если игрок закрыл меню или изменил крафт.
 
Может у тебя инет слабый или комп, если нет то придётся бомбить систему
 
Зач сложности с коллекциями?
Событие крафта -> отмена события -> шед на сет результата через время для этого игрока.
Еще нужны будут разные нюансы, если игрок закрыл меню или изменил крафт.
Конечно, а давай сразу еще запустим 500 шедулеров? На час каждый к примеру. Скрафтит человек стак досок - на те.
 
Вот эту кстати часть тоже не особо понял:
закрыл меню или изменил крафт
вообще не понял. Ты скрафтил, у тебя закрылось меню крафта, забросило в список, обновляет со всеми другими игроками, в опр. момент дает шмот.
 
Он не понял ещё, что придется его серверу падать из за этого:))
 
Много игроков не будет, 10-20 максимум.
 
Конечно, а давай сразу еще запустим 500 шедулеров? На час каждый к примеру. Скрафтит человек стак досок - на те.
Эм.. Да хоть оверстак крафтит, событие одно, ItemStack result один. Какие 500 шедулеров?
 
Вот эту кстати часть тоже не особо понял:

вообще не понял. Ты скрафтил, у тебя закрылось меню крафта, забросило в список, обновляет со всеми другими игроками, в опр. момент дает шмот.
Почему закрылось, он же сказал, что ждать надо. Ты закинул, но тебе в ячейку результата не сразу кидает вещь, а через время.
 
Много игроков не будет, 10-20 максимум.
Да хоть 1000 будет. Во первых шедулеры почти не несут нагрузки, во вторых, сколько игроков из всех в онлайне одновременно будут использовать крафт? Да не больше 10%, и то - пик. В третьих, если конечно не говнокодить и уметь отменять ненужные шеды, то ты даже на одну десятую тика тпс не уменьшишь. Сам сервер обрабатывает и генерирует столько всего за тик, что твой шедулер это маленький атом в большом обьекте.
 
Да хоть 1000 будет. Во первых шедулеры почти не несут нагрузки, во вторых, сколько игроков из всех в онлайне одновременно будут использовать крафт? Да не больше 10%, и то - пик. В третьих, если конечно не говнокодить и уметь отменять ненужные шеды, то ты даже на одну десятую тика тпс не уменьшишь. Сам сервер обрабатывает и генерирует столько всего за тик, что твой шедулер это маленький атом в большом обьекте.
Окей. Но если смоделировать ситуацию где 1000 игроков сразу открывают такой верстак,есть шанс больших лагов/крашей.
 
Эм.. Да хоть оверстак крафтит, событие одно, ItemStack result один. Какие 500 шедулеров?
Во-первых. CraftItemEvent не возвращает скрафченный предмет, можно получить только рецепт (получить кол-во скрафченного можно, но костыльно).
шедулеры почти не несут нагрузки
Во-вторых. сомневаюсь, очень сомневаюсь. @alexandrage, правда ли это? Я просто наслышан о том, как сервера ложились от таких как он...
 
Последнее редактирование:
Во-первых. CraftItemEvent не возвращает скрафченный предмет, можно получить только рецепт (получить кол-во скрафченного можно, но костыльно).
Эм, советую пойти и получше учить Bukkit API. Можно получить, при том не костыльно, а внимательно прочитав документацию по данному событию.
Я просто наслышан о том, как сервера ложились от таких как он...
Возьми тестовый сервер и запушь 5000 шедулеров синхронных с инициализацией айтемстака. Предоставь результаты с таймингов и код тестового плагина. Посмотрим.
 
Назад
Верх