1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Kotlin и Java-типы

Тема в разделе "Разработка плагинов для новичков", создана пользователем ifxandy, 9 авг 2021.

Статус темы:
Закрыта.
  1. Автор темы
    ifxandy

    ifxandy Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    witwar
    Здравствуйте, форумчане. Решил посмотреть в сторону Kotlin'а как языка для Spigot плагинов. Начал писать на нём плагин с функциями для лобби (блоки не-ломаемые, NPC, музыка), я не мазохист, поэтому подключил ProtocolLib. Покопавшись с ошибками и старыми темами на американских форумах нашёл ДАННУЮ ТЕМКУ, решил адаптировать исходя из Issue'шок ProtocolLib до текущей версии. Начал получать DataWatcher'ы, проблема возникла на моменте получения сериалайзеров.

    Сама суть проблемы - Kotlin имеет свою имплементацию типов (они представляются в виде отдельных классов либы). При получении сериалайзеров, мне необходимо в метод Registry.get() передать класс, но т.к. это не обычная Java, там нету её стандартных классов представляющих типы (Integer, Byte, Float, Double) и Kotlin передаёт туда объект класса своей имплементации, по которой соответственно ничего из Registry получить не удаётся и он выкидывает экзепшн.

    Мои версии:
    - ProtocolLib - 4.7.0
    - PacketWrapper - 1.12.1-R0-1 (добавил из локального файла, билд взял с CI, номер #69)
    - Paper - 1.12.2-R0.1
    - kotlin-stdlib-jdk8 - 1.4.32
    - maven-failsafe-plugin - 2.22.2
    - maven-surefire-plugin - 2.22.2
    - maven-shade-plugin 3.2.4
    - kotlin-maven-plugin 1.4.32

    Скрин самой ошибки:
    - [ТЫК]

    Соурс-код файла ProtocolNPC (файл логики NPC):
    - [ТЫК]

    Файл с полным экзепшном (текстом):
    - [ТЫК]
     
  2. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Вот тебе делать то нечего, кодил бы на java и все. Оно все равно в java классы компилируется, только жизнь себе усложняешь.
     
  3. Автор темы
    ifxandy

    ifxandy Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    witwar
    там есть некоторые удобства по сравнению с ванилльной java
     
  4. imDaniX

    imDaniX Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Что-то здесь не стыкуется.
    Так или иначе, с котлином в таких аспектах я мало знаком. Гугл предлагает использовать что-то вроде Float::class.javaObjectType
     
  5. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Мы уже заметили :D
     
  6. Автор темы
    ifxandy

    ifxandy Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    witwar
    Спасибо, это действительно сработало для меня!
     
Статус темы:
Закрыта.

Поделиться этой страницей