- Баллы
- 66
Я создаю плагин и для того, чтобы выводить в зависимости от того, изучил игрок способность или нет предмет с определённым лором. Как можно воссоздать такую проверку? Я думал с помощью list'а сделать, но не додумался как)
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Смотри, получается Я создаю 2 стака с разными материалами, к примеру красная стеклянная панель - не изучено, зеленая изучено. Когда игрок будет нажимать на красную, он изучит скилл и мне нужно как-то записать этому игроку, что он изучил этот скилл и он будет отображаться зелёной панелью и не кликабельным.Можно добавлять на изученный стак NBT-метку о том, что он изучен. Делается это при помощи PersistentDataContainer: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/persistence/PersistentDataContainer.html
Получить контейнер: itemMeta.getPersistentDataContainer()
Изучение привязано к игрокам или конкретным предметам? Ты уж определись )Смотри, получается Я создаю 2 стака с разными материалами, к примеру красная стеклянная панель - не изучено, зеленая изучено. Когда игрок будет нажимать на красную, он изучит скилл и мне нужно как-то записать этому игроку, что он изучил этот скилл и он будет отображаться зелёной панелью и не кликабельным.
Таких данных о методах нужно будет хранить много для каждого. Как это можно сделать?
И я не до конца понял, как работает Persistent Data Container.
Нужно узнать изучил ли игрок скилл и в зависимости от этого положить тот или иной стак в слот меню.Изучение привязано к игрокам или конкретным предметам? Ты уж определись )
В любом случае, и у стаков, и у сущностей есть дата контейнер.
Там можно хранить данные примитивных типов или свои собственные, которые сериализуются в примитивные.
Наложил пометку - считай, что способность изучена.
В интернете есть туторы по дата контейнеру, думаю разберёшься
Получается я могу добавить информацию об игроке, что он изучил скилл, к примеру за то, что он изучил его добавлять название скила и проверять присутствует оно или нет?Изучение привязано к игрокам или конкретным предметам? Ты уж определись )
В любом случае, и у стаков, и у сущностей есть дата контейнер.
Там можно хранить данные примитивных типов или свои собственные, которые сериализуются в примитивные.
Наложил пометку - считай, что способность изучена.
В интернете есть туторы по дата контейнеру, думаю разберёшься
Ну в таком случае да. Надо информацию привязывать к игроку. Можно в базе хранить инфу, можно в Persistent Data Container'е - как удобноПолучается я могу добавить информацию об игроке, что он изучил скилл, к примеру за то, что он изучил его добавлять название скила и проверять присутствует оно или нет?
Понял, благодарю.Ну в таком случае да. Надо информацию привязывать к игроку. Можно в базе хранить инфу, можно в Persistent Data Container'е - как удобно
Получается, я создаю PersistentDataContainer и NamespacedKey с Ником игрока.Ну в таком случае да. Надо информацию привязывать к игроку. Можно в базе хранить инфу, можно в Persistent Data Container'е - как удобно
Документацию открывал? )Получается, я создаю PersistentDataContainer и NamespacedKey с Ником игрока.
Но как положить туда какой либо String, допустим с названием скилла и затем проверить есть ли он там?
Можно ли положить их туда несколько?
Значит для каждого скилла я должен сделать key? И проверять каждый из скиллов в каждом из ключей??Документацию открывал? )
Посмотреть вложение 64633
Если совсем сложно, то читай гайд:
https://www.spigotmc.org/threads/a-guide-to-1-14-persistentdataholder-api.371200/
Там же есть пример создания собственного типа данных. Как раз пригодится для создания массива строк. Несколько значений по одному ключу хранить нельзя, но можно хранить в качестве значения массив/лист строк
Можно так, да. Но если неудобно, то можно и сериализовать все в массив байт или строчку - например json.Значит для каждого скилла я должен сделать key? И проверять каждый из скиллов в каждом из ключей??
А нужно ли вручную сохранять данные об игроке или нет? Если да то каким образом?Можно так, да. Но если неудобно, то можно и сериализовать все в массив байт или строчку - например json.
Я бы, может, вообще все хранил в оперативке в своем плагине. А сохранял в контейнер данные из оперативке при выходе игрока и раз в 5 минут шедулером, и загружал бы при входе
Что значит вручную? Можно программно раз в 5 минут или при выходе с сервера в базу или файлА нужно ли вручную сохранять данные об игроке или нет? Если да то каким образом?
А в какой файл их можно сохранять и как потом выгружать данные?Что значит вручную? Можно программно раз в 5 минут или при выходе с сервера в базу или файл
В любой файл в папке плагина. Вопрос про выгрузку не понял. Посмотри видео, как работать с файлами в java.А в какой файл их можно сохранять и как потом выгружать данные?