Как преобразовать объект в nbt типа INBT в Minecraft Forge для Minecraft 1.15 - PullRequest
0 голосов
/ 14 апреля 2020

Я недавно работал над своим модом Minecraft и, работая над оператором return для функции, обнаружил, что для возвращаемого типа нужен экземпляр INBT. У меня есть пользовательский объект, который мне нужно преобразовать в NBT типа INBT? Вот функция:

public INBT writeNBT(Capability<IAllergies> capability, IAllergies instance, Direction side) {

        return null;

    }

Я посмотрел на иерархию типов INBT и не нашел ничего, что могло бы быть полезным.

Заранее спасибо, Kid Koder

Ответы [ 2 ]

0 голосов
/ 28 апреля 2020

Нет, вы не должны создавать свой собственный класс. Это зависит от того, что вы хотите, но есть много классов, от CompountNBT (который немного похож на Map), ListNBT (список INBT), до BooleanNBT, StringNBT, IntegerNBT et c. Посмотрите на иерархию типов INBT и выберите ту, которая вам нужна.

0 голосов
/ 15 апреля 2020

Я узнал, как это сделать. Я создал класс ObjectNBT, реализованный INBT, и написал несколько методов для получения / установки Object. Вот как выглядел мой последний класс:

public class ObjectNBT implements INBT {

    public Object object;

    public ObjectNBT(Object object) {
        this.object = object;
    }

    @Override
    public void write(DataOutput output) throws IOException {

    }

    @Override
    public byte getId() {
        return 0;
    }

    @Override
    public INBTType<?> func_225647_b_() {
        return null;
    }

    @Override
    public INBT copy() {
        return null;
    }

    @Override
    public ITextComponent toFormattedComponent(String indentation, int indentDepth) {
        return new StringTextComponent(indentation + indentDepth);
    }
}

Не стесняйтесь скопировать и вставить.

...