Помогите Как сделать рандомный генератор лута? Система лутания сундука.

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

Ryazha_

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
Ryazha_
Я хочу сделать систему лутания сундука, чтобы после определённого времени, открывалось Gui меню с рандомными ресами из списка, по типу золотого яблока с название аптечка. Так же хотелось бы сделать так, чтобы после того как игрок закроет сундук (меню) и там что-то останется сундук оставался и другим игрокам и тому игроку открывалось то же самое меню пока не перезагрузятся сундуки, а если игрок забирает всё, сундук изчезал, но после определённого времени он появлялся вновь и всё по новому кругу. Я вроде что-то набросал на первое время, далее буду по советам дополнять.
 
Инвентарь сундука один на всех?
Если да то всё вроде просто.
Для респауна сундуков нужен список локация:направление сундука, можно создать обьект хранящий эти данные и хранить в листе, а можно просто запихать в мапу.
Для удаления сундука InventoryCloseEvent, получать холдера, если это сундук то проверяешь пустой ли инвентарь и удаляешь
 
Инвентарь сундука один на всех?
Если да то всё вроде просто.
Для респауна сундуков нужен список локация:направление сундука, можно создать обьект хранящий эти данные и хранить в листе, а можно просто запихать в мапу.
Для удаления сундука InventoryCloseEvent, получать холдера, если это сундук то проверяешь пустой ли инвентарь и удаляешь
Друк блин.... И ещё хотел бы узнать - Как получить игрока, который открыл ЭНДЕР сундук и отменить это действие?
Буду благодарен
 
Друк блин.... И ещё хотел бы узнать - Как получить игрока, который открыл ЭНДЕР сундук и отменить это действие?
Буду благодарен
Есть InventoryOpenEvent, получаешь инвентарь и сравниваешь является ли он эндер инвентарём игрока
 
Инвентарь сундука один на всех?
Если да то всё вроде просто.
Для респауна сундуков нужен список локация:направление сундука, можно создать обьект хранящий эти данные и хранить в листе, а можно просто запихать в мапу.
Для удаления сундука InventoryCloseEvent, получать холдера, если это сундук то проверяешь пустой ли инвентарь и удаляешь
И ещё я никогда не сталкивался с тем чтобы рандомные ресурсы из списка генерировались (с названиями, так как будет ресурспак).
 
И ещё я никогда не сталкивался с тем чтобы рандомные ресурсы из списка генерировались (с названиями, так как будет ресурспак).
Помести предметы в список, и получай рандомные элементы из списка когда нужно, разве это будет проблемой?
Если нужен весовой рандом, то используй весовой рандом - https://stackoverflow.com/questions/6409652/random-weighted-selection-in-java
Для этой задачи я его и использовал
 
Помести предметы в список, и получай рандомные элементы из списка когда нужно, разве это будет проблемой?
Если нужен весовой рандом, то используй весовой рандом - https://stackoverflow.com/questions/6409652/random-weighted-selection-in-java
Для этой задачи я его и использовал
Я понимаю, что из списка, но как?
 
Я понимаю, что из списка, но как?
Создаёшь List, заполняешь, получаешь его размер, генерируешь рандомное число от 0 до размер - 1, получаешь из листа элемент по индексу, равному рандомному числу.
Готовый код специально не кидаю, шоб ты учился
 
Создаёшь List, заполняешь, получаешь его размер, генерируешь рандомное число от 0 до размер - 1, получаешь из листа элемент по индексу, равному рандомному числу.
Готовый код специально не кидаю, шоб ты учился
я в принципе ничего не понял, но посмотрю туториал по теме листов в плагинах
 
Создаёшь List, заполняешь, получаешь его размер, генерируешь рандомное число от 0 до размер - 1, получаешь из листа элемент по индексу, равному рандомному числу.
Готовый код специально не кидаю, шоб ты учился
Я лично ниодного туториала по ключевым словам не нашёл, даже на англоязычных каналах((
 
Создаёшь List, заполняешь, получаешь его размер, генерируешь рандомное число от 0 до размер - 1, получаешь из листа элемент по индексу, равному рандомному числу.
Готовый код специально не кидаю, шоб ты учился
И так, то что я понял - Лист это тот или иной список объектов, выводящихся по очереди или по решению разработчика (в той или иной последовательности или рандомно). И я так монял что можно сделать примерно так:

ArrayList<String> myArrayList = new ArrayList<String>();

myArrayList.add(//Тот либо иной предмет, его описания, то есть мета и т.д.);

Но как выбрать из этого рандомное я не понял.
 
И так, то что я понял - Лист это тот или иной список объектов, выводящихся по очереди или по решению разработчика (в той или иной последовательности или рандомно). И я так монял что можно сделать примерно так:

ArrayList<String> myArrayList = new ArrayList<String>();

myArrayList.add(//Тот либо иной предмет, его описания, то есть мета и т.д.);

Но как выбрать из этого рандомное я не понял.
Теперь гуглишь java random и учишься создавать случайное целое число на отрезке от 0 до N-1, где в качестве N берёшь длину списка
 
Последнее редактирование:
Теперь гуглишь java random и учишься создавать случайное целое число на отрезке от 0 до N-1, где в качестве N берёшь длину списка
Теперь я понял что dauble - это выводящееся число, Math.random() далее можно указать наибольшее число вещей в списке умножив к примру и наименьшее будет = 0, а наибольшее числу предметов. Но как это вписать в код я всё же не понимаю((
 
Ну я понимаю что то число которое будет выведено, точнее по нему будет выбран предмет из списка или несколько предметов, смотря как
 
Ну я понимаю что то число которое будет выведено, точнее по нему будет выбран предмет из списка или несколько предметов, смотря как
Ну у тебя есть лист с предметами, делаешь случайное число и по нему берёшь элемент листа, что смущает?
 
Теперь я понял что dauble - это выводящееся число, Math.random() далее можно указать наибольшее число вещей в списке умножив к примру и наименьшее будет = 0, а наибольшее числу предметов. Но как это вписать в код я всё же не понимаю((
Не dauble, а double. Это дробное число.
Для получения из листа объекта по индексу тебе нужно целое - в твоём случае int.
Индекс - это порядковый номер элемента в листе. Индексы начинаются с нуля.
Таким образом, индекс первого элемента = 0
А последнего = размер списка - 1.

Получить размер списка: list.size()
получить объект из списка по его индексу (номеру): list.get(index)
Сам индекс нужно сгенерировать случайным образом между минимальным и максимальным значением
 
Не dauble, а double. Это дробное число.
Для получения из листа объекта по индексу тебе нужно целое - в твоём случае int.
Индекс - это порядковый номер элемента в листе. Индексы начинаются с нуля.
Таким образом, индекс первого элемента = 0
А последнего = размер списка - 1.

Получить размер списка: list.size()
получить объект из списка по его индексу (номеру): list.get(index)
Сам индекс нужно сгенерировать случайным образом между минимальным и максимальным значением
ага.... ну теперь определённо стало легче друк, точнее я что-то хотя бы понимаю теперь)
 
Назад
Верх