Admin (обсуждение | вклад) |
|||
(не показаны 3 промежуточные версии 2 участников) | |||
Строка 5: | Строка 5: | ||
<span style="line-height:103%"><span style="font-size:12.0pt"><span style="line-height:103%">Кроме id, кол-ва и data предмет может иметь еще и дополнительные данные, такие как зачарования, измененное имя и прочее. Далее будет описан интерфейс для работы с ними.</span></span></span> | <span style="line-height:103%"><span style="font-size:12.0pt"><span style="line-height:103%">Кроме id, кол-ва и data предмет может иметь еще и дополнительные данные, такие как зачарования, измененное имя и прочее. Далее будет описан интерфейс для работы с ними.</span></span></span> | ||
+ | <div class="mw-parser-output"> | ||
+ | <div class="mw-parser-output"> | ||
=== <span style="font-size:large;"><span style="line-height:107%">Доступ к дополнительным данным</span></span> === | === <span style="font-size:large;"><span style="line-height:107%">Доступ к дополнительным данным</span></span> === | ||
− | <span style="line-height:103%"><span style="font-size:12.0pt"><span style="line-height:103%">Методы Inner Core отдают предметы в виде объектов, содержащих 3 поля - id, count и data, описывающие соответствующие параметры предметов. В дополнение к ним может существовать (только в случае, если предмет имеет доп. данные) поле extra, которое содержит в себе интерфейс для доступа к дополнительным данным предмета<ref>На момент версии 1.1.1.X некоторые методы не поддерживают этот 4 параметр, для получения полностью рабочих методов можно использовать ModAPI.requireGlobal(</ref>. </span></span></span> | + | <span style="line-height:103%"><span style="font-size:12.0pt"><span style="line-height:103%">Методы Inner Core отдают предметы в виде объектов, содержащих 3 поля - id, count и data, описывающие соответствующие параметры предметов. В дополнение к ним может существовать (только в случае, если предмет имеет доп. данные) поле extra, которое содержит в себе интерфейс для доступа к дополнительным данным предмета<ref>На момент версии 1.1.1.X некоторые методы не поддерживают этот 4 параметр, для получения полностью рабочих методов можно использовать ModAPI.requireGlobal('имя метода')</ref>. </span></span></span> |
'''''Важно: ''''' | '''''Важно: ''''' | ||
Строка 13: | Строка 15: | ||
<span style="line-height:103%"><span style="font-size:12.0pt"><span style="line-height:103%">Объект предмета, изменение основных параметров которого поведет изменение реального предмета (например, предметы, полученные из контейнера или в каллбеках брони) обладает таким же качеством при изменении доп. данных (т.е. их изменения изменят доп. данные реального предмета). </span></span></span> | <span style="line-height:103%"><span style="font-size:12.0pt"><span style="line-height:103%">Объект предмета, изменение основных параметров которого поведет изменение реального предмета (например, предметы, полученные из контейнера или в каллбеках брони) обладает таким же качеством при изменении доп. данных (т.е. их изменения изменят доп. данные реального предмета). </span></span></span> | ||
− | <span style="line-height:103%"><span style="font-size:12.0pt"><span style="line-height:103%">И наоборот, объект предмета, который не привязан к реальному предмету (большая часть методов работы с инвентарем, к примеру Player.getCarriedItem()) при изменении доп. данных не изменит сам предмет, потому измененные или новые доп. данные для их применения передаются после параметров id, count, data в устанавливающие методы<font color="#000000" face="Calibri, sans-serif">.</font></span></span></span> | + | <span style="line-height:103%"><span style="font-size:12.0pt"><span style="line-height:103%">И наоборот, объект предмета, который не привязан к реальному предмету (большая часть методов работы с инвентарем, к примеру Player.getCarriedItem()) при изменении доп. данных не изменит сам предмет, потому измененные или новые доп. данные для их применения передаются после параметров id, count, data в устанавливающие методы<font color="#000000" face="Calibri, sans-serif">.</font></span></span></span> |
+ | </div> | ||
== <span style="font-size:large;"><span style="line-height:107%">Класс ItemExtraData</span></span> == | == <span style="font-size:large;"><span style="line-height:107%">Класс ItemExtraData</span></span> == | ||
Строка 51: | Строка 54: | ||
<span style="line-height:103%"><span style="font-size:12.0pt"><span style="line-height:103%">Произвольные данные нужны чтобы сохранять в конкретном предмете что-то нужное конкретному моду для выполнения функций данного предмета (к примеру, там можно хранить какие-то данные о внутреннем инвентаре, режим инструмента, данные вида пчелы и т.п.)</span></span></span> | <span style="line-height:103%"><span style="font-size:12.0pt"><span style="line-height:103%">Произвольные данные нужны чтобы сохранять в конкретном предмете что-то нужное конкретному моду для выполнения функций данного предмета (к примеру, там можно хранить какие-то данные о внутреннем инвентаре, режим инструмента, данные вида пчелы и т.п.)</span></span></span> | ||
+ | <div class="mw-parser-output"> | ||
+ | <div class="mw-parser-output"> | ||
=== Работа с произвольными данными === | === Работа с произвольными данными === | ||
Строка 61: | Строка 66: | ||
''<span style="font-size:12.0pt"><span style="line-height:107%">extra.putFloat(name, value) - 64 битное дробное число</span></span>'' | ''<span style="font-size:12.0pt"><span style="line-height:107%">extra.putFloat(name, value) - 64 битное дробное число</span></span>'' | ||
− | <span style="line-height:162%">''<span style="font-size:12.0pt"><span style="line-height:162%">extra.putString(name, value) - строка extra.putBoolean(name, value) - булева переменная (true/false)</span></span>''</span> | + | <span style="line-height:162%">''<span style="font-size:12.0pt"><span style="line-height:162%">extra.putString(name, value) - строка</span></span>''</span> |
+ | |||
+ | <span style="line-height:162%">''<span style="font-size:12.0pt"><span style="line-height:162%">extra.putBoolean(name, value) - булева переменная (true/false)</span></span>''</span> | ||
<span style="line-height:108%">''<span style="font-size:12.0pt"><span style="line-height:108%">Методы доступа отдают значение, сохраненное под данным именем или значение по умолчанию, которое может быть передано вторым параметром (если оно не передано, то значение по умолчанию это null/false/0 в зависимости от типа)</span></span>''</span> | <span style="line-height:108%">''<span style="font-size:12.0pt"><span style="line-height:108%">Методы доступа отдают значение, сохраненное под данным именем или значение по умолчанию, которое может быть передано вторым параметром (если оно не передано, то значение по умолчанию это null/false/0 в зависимости от типа)</span></span>''</span> | ||
− | <span style="line-height:162%">''<span style="font-size:12.0pt"><span style="line-height:162%">extra.getInt(name, fallback) extra.getLong(name, fallback) extra.getFloat(name, fallback) extra.getString(name, fallback) extra.getBoolean(name, fallback) extra.removeCustomData() - удаляет все произвольные данные</span></span>''</span> | + | <span style="line-height:162%">''<span style="font-size:12.0pt"><span style="line-height:162%">extra.getInt(name, fallback) </span></span>''</span> |
+ | |||
+ | <span style="line-height:162%">''<span style="font-size:12.0pt"><span style="line-height:162%">extra.getLong(name, fallback) </span></span>''</span> | ||
+ | |||
+ | <span style="line-height:162%">''<span style="font-size:12.0pt"><span style="line-height:162%">extra.getFloat(name, fallback) </span></span>''</span> | ||
+ | |||
+ | <span style="line-height:162%">''<span style="font-size:12.0pt"><span style="line-height:162%">extra.getString(name, fallback) </span></span>''</span> | ||
+ | |||
+ | <span style="line-height:162%">''<span style="font-size:12.0pt"><span style="line-height:162%">extra.getBoolean(name, fallback) </span></span>''</span> | ||
+ | |||
+ | <span style="line-height:162%">''<span style="font-size:12.0pt"><span style="line-height:162%">extra.removeCustomData() - удаляет все произвольные данные</span></span>''</span> </div> | ||
+ | </div> | ||
=== Другие методы: === | === Другие методы: === |
Кроме id, кол-ва и data предмет может иметь еще и дополнительные данные, такие как зачарования, измененное имя и прочее. Далее будет описан интерфейс для работы с ними.
Методы Inner Core отдают предметы в виде объектов, содержащих 3 поля - id, count и data, описывающие соответствующие параметры предметов. В дополнение к ним может существовать (только в случае, если предмет имеет доп. данные) поле extra, которое содержит в себе интерфейс для доступа к дополнительным данным предмета[1].
Важно:
Объект предмета, изменение основных параметров которого поведет изменение реального предмета (например, предметы, полученные из контейнера или в каллбеках брони) обладает таким же качеством при изменении доп. данных (т.е. их изменения изменят доп. данные реального предмета).
И наоборот, объект предмета, который не привязан к реальному предмету (большая часть методов работы с инвентарем, к примеру Player.getCarriedItem()) при изменении доп. данных не изменит сам предмет, потому измененные или новые доп. данные для их применения передаются после параметров id, count, data в устанавливающие методы.
Объект доп. данных является объектом типа ItemExtraData, реализующим интерфейс для работы с ними.
Примечание:
Объект ItemExtraData является сохраняемым объектом, что значит, он может присутствовать в любых сохраняемых данных, автоматически преобразовываться в JSON и загружаться из него.
new ItemExtraData() - создает новые пустые доп. данные
new ItemExtraData(extraData) - принимает другой объект доп. данных и создает его копию, если передан null, аналогичен первому конструктору
extra.isEnchanted() - возвращает true, если предмет зачарован.
extra.addEnchant(id, level) - добавляет зачарование типа id и уровня level предмету, если зачарование такого типа уже имеется, то изменяет его уровень.
extra.getEnchantLevel(id) - возвращает уровень зачарования типа id или 0, если такого нет extra.removeEnchant(id) - удаляет зачарование данного типа, если оно есть extra.removeAllEnchants() - удаляет все зачарования extra.getEnchantCount() - возвращает кол-во зачарований
extra.getEnchants() - возвращает объект, содержащий все зачарования, где ключи это типы зачарований, а значения - их уровни extra.getEnchantName(id, level) - возвращает имя зачарования по его типу и уровню
extra.getEnchantName(id) - возвращает имя зачарования по его типу и уровню, который сохранен в доп. данных на данный момент
extra.getAllEnchantNames() - возвращает имена всех присутствующих зачарований, разделенные символом перевода строки (так же, как они отображаются под предметом)
extra.getCustomName() - возвращает измененное имя предмета или null, если оно не изменено
extra.setCustomName(name) - изменяет имя предмета или убирает измененное имя, если передан null
Произвольные данные нужны чтобы сохранять в конкретном предмете что-то нужное конкретному моду для выполнения функций данного предмета (к примеру, там можно хранить какие-то данные о внутреннем инвентаре, режим инструмента, данные вида пчелы и т.п.)
Методы сохранения сохраняют значение какого-то типа под данным именем, чтобы в последствии к нему можно было осуществить доступ:
extra.putInt(name, value) - целое число
extra.putLong(name, value) - большое целое число, больше 32 бит (более 2х миллиардов по модулю)
extra.putFloat(name, value) - 64 битное дробное число
extra.putString(name, value) - строка
extra.putBoolean(name, value) - булева переменная (true/false)
Методы доступа отдают значение, сохраненное под данным именем или значение по умолчанию, которое может быть передано вторым параметром (если оно не передано, то значение по умолчанию это null/false/0 в зависимости от типа)
extra.getInt(name, fallback)
extra.getLong(name, fallback)
extra.getFloat(name, fallback)
extra.getString(name, fallback)
extra.getBoolean(name, fallback)
extra.removeCustomData() - удаляет все произвольные данныеcopy() - создает копию объекта
isEmpty() - возвращает true, если не содержит никаких доп. данных (такой объект аналогичен null, т.е. доп. данных нет)