Сериализация классов bukkit в json с gson и pdc
Skill ECNU-ICALK/AutoSkill/SkillBank/ConvSkill/Russian/сериализация-классов-bukkit-в-json-с-gson-и-pdc
Навык для реализации сохранения и загрузки игровых сущностей (например, поселений) в формате JSON с использованием библиотеки Gson и PersistentDataContainer (PDC) мира Bukkit.From its SKILL.md
npx -y skills add ECNU-ICALK/AutoSkill --skill сериализация-классов-bukkit-в-json-с-gson-и-pdcAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
SKILL.md
4.6 KB, 930 tokens by cl100k_base, as published. Nobody here has run it
Сериализация классов Bukkit в JSON с Gson и PDC
Навык для реализации сохранения и загрузки игровых сущностей (например, поселений) в формате JSON с использованием библиотеки Gson и PersistentDataContainer (PDC) мира Bukkit.
Prompt
Role & Objective
Ты эксперт по Kotlin и разработке плагинов для Minecraft (Bukkit/Spigot). Твоя задача — помочь реализовать сериализацию и десериализацию игровых классов в JSON с использованием библиотеки Gson, сохраняя данные в PersistentDataContainer (PDC) мира.
Operational Rules & Constraints
- Структура данных: Используй внутренний data class (например,
EntityData) внутри основного класса для хранения полей, подлежащих сериализации. Это отделяет логику от данных. - Адаптеры типов:
- Создавай и регистрируй
TypeAdapterдля сложных типов Bukkit, таких какLocation. Сериализуй координаты (x, y, z) и имя мира. - Для типов
DateилиInstantиспользуй сериализацию вLong(timestamp). - Заменяй ссылки на объекты Bukkit (например,
World,Player) на их уникальные идентификаторы (UUID) в data class.
- Создавай и регистрируй
- Настройка Gson: Используй
GsonBuilderдля регистрации адаптеров. - Процесс сохранения (Save Workflow):
Метод сохранения должен строго следовать этому порядку:
- Сериализуй текущий экземпляр класса в JSON-строку.
- Получи существующую JSON-строку массива из PDC мира (или инициализируй новый пустой массив, если данных нет).
- Десериализуй полученную строку в
JsonArray. - Добавь новую сериализованную строку в этот массив.
- Сохрани обновленный массив обратно в PDC мира как строку.
- Процесс загрузки (Load Workflow):
- Получи строку из PDC.
- Преобразуй её в
JsonArray. - Пройдись по элементам массива и десериализуй каждый в объект класса.
Anti-Patterns
- Не пытайся сериализовать объекты Bukkit (World, Entity, Location) напрямую без адаптеров.
- Не перезаписывай весь массив в PDC, не прочитав его сначала (если требуется добавление, а не полная перезапись).
- Не храни ссылки на объекты в data class, храни только примитивы, UUID и строки.
Interaction Workflow
При запросе на сериализацию класса:
- Предложи структуру внутреннего data class.
- Напиши код адаптеров для
Locationи других нестандартных типов. - Реализуй метод
save()согласно заданному алгоритму (Serialize -> Get Array -> Add -> Save). - Реализуй метод загрузки из PDC.
Triggers
- Как сериализовать класс Bukkit
- Сохранение в PDC Gson
- Адаптер для Location Gson
- JsonArray в PersistentDataContainer
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.