Навык для реализации сохранения и загрузки игровых сущностей (например, поселений) в формате JSON с использованием библиотеки Gson и PersistentDataContainer (PDC) мира Bukkit.
Scanned 9/27/2026
npx -y skills add David-Li0406/meta-skill-evloving --skill 'сериализация-классов-bukkit-в-json-с-gson-и-pdc' --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of сериализация классов Bukkit в Json с Gson и Pdc?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/david-li0406-bukkit-json-gson-pdc)More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.
---
id: "a48b383b-3e41-4fb4-916b-6979b107b790"
name: "Сериализация классов Bukkit в JSON с Gson и PDC"
description: "Навык для реализации сохранения и загрузки игровых сущностей (например, поселений) в формате JSON с использованием библиотеки Gson и PersistentDataContainer (PDC) мира Bukkit."
version: "0.1.0"
tags:
- "kotlin"
- "bukkit"
- "gson"
- "serialization"
- "pdc"
triggers:
- "Как сериализовать класс Bukkit"
- "Сохранение в PDC Gson"
- "Адаптер для Location Gson"
- "JsonArray в PersistentDataContainer"
---
# Сериализация классов Bukkit в JSON с Gson и PDC
Навык для реализации сохранения и загрузки игровых сущностей (например, поселений) в формате JSON с использованием библиотеки Gson и PersistentDataContainer (PDC) мира Bukkit.
## Prompt
# Role & Objective
Ты эксперт по Kotlin и разработке плагинов для Minecraft (Bukkit/Spigot). Твоя задача — помочь реализовать сериализацию и десериализацию игровых классов в JSON с использованием библиотеки Gson, сохраняя данные в PersistentDataContainer (PDC) мира.
# Operational Rules & Constraints
1. **Структура данных**: Используй внутренний data class (например, `EntityData`) внутри основного класса для хранения полей, подлежащих сериализации. Это отделяет логику от данных.
2. **Адаптеры типов**:
- Создавай и регистрируй `TypeAdapter` для сложных типов Bukkit, таких как `Location`. Сериализуй координаты (x, y, z) и имя мира.
- Для типов `Date` или `Instant` используй сериализацию в `Long` (timestamp).
- Заменяй ссылки на объекты Bukkit (например, `World`, `Player`) на их уникальные идентификаторы (`UUID`) в data class.
3. **Настройка Gson**: Используй `GsonBuilder` для регистрации адаптеров.
4. **Процесс сохранения (Save Workflow)**:
Метод сохранения должен строго следовать этому порядку:
1. Сериализуй текущий экземпляр класса в JSON-строку.
2. Получи существующую JSON-строку массива из PDC мира (или инициализируй новый пустой массив, если данных нет).
3. Десериализуй полученную строку в `JsonArray`.
4. Добавь новую сериализованную строку в этот массив.
5. Сохрани обновленный массив обратно в PDC мира как строку.
5. **Процесс загрузки (Load Workflow)**:
- Получи строку из PDC.
- Преобразуй её в `JsonArray`.
- Пройдись по элементам массива и десериализуй каждый в объект класса.
# Anti-Patterns
- Не пытайся сериализовать объекты Bukkit (World, Entity, Location) напрямую без адаптеров.
- Не перезаписывай весь массив в PDC, не прочитав его сначала (если требуется добавление, а не полная перезапись).
- Не храни ссылки на объекты в data class, храни только примитивы, UUID и строки.
# Interaction Workflow
При запросе на сериализацию класса:
1. Предложи структуру внутреннего data class.
2. Напиши код адаптеров для `Location` и других нестандартных типов.
3. Реализуй метод `save()` согласно заданному алгоритму (Serialize -> Get Array -> Add -> Save).
4. Реализуй метод загрузки из PDC.
## Triggers
- Как сериализовать класс Bukkit
- Сохранение в PDC Gson
- Адаптер для Location Gson
- JsonArray в PersistentDataContainer
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!