Множественные Capы

Версия Minecraft
1.12.2
10
0
Как сделать больше одной переменной в capabilites?Я могу конечно делать под каждую переменную свой интерфейс, класс, его осуществляющий, сторедж и провайдер, но это не удобно и наверняка можно сделать быстрее и лучше.
 
3,005
192
592
Ты в Interface пишешь все методы, которые ты хочешь "трогать".
В классе, который реализует твой Interface пишешь обработку.
 
10
0
Это понятно, но как занести в cap storage?

Сторедж:
public class GearStorage implements IStorage<IGear> {
    @Override
    public NBTBase writeNBT(Capability<IGear> capability, IGear instance, EnumFacing side) {
        return new NBTTagByte((byte)(instance.havePermission()) ? 1 : 0);
    }

    @Override
    public void readNBT(Capability<IGear> capability, IHandcuffValue instance, EnumFacing side, NBTBase nbt) {
        instance.setPermission((NBTPrimitive) nbt).getByte() == 1);
    }
}
 
Последнее редактирование:
3,005
192
592
У тебя на write должен быть NBTTagCompound.
На read ты nbt кастишь на NBTTagCompound.
 
7,099
324
1,510
Кстати, не обязательно использовать интерфейс для значений капы, можно сразу класс и переменные в нем, без методов
 
7,099
324
1,510
Зависит от задачи. Если делаешь для апи, то скорее всего лучше интерфейс, чтобы юзеры могли делать свои реализации. А если для внутренних нужд - проще классом
 
Сверху