Иконка ресурса

Хранение в meta двух небольших чисел, допустим поворот и рост

Нет прав для скачивания
Версия(и) Minecraft
1.+
Для работы с этим кодом, понадобиться вот этот класс ZZZubec/PluginUtils

Код:
System.out.println("-----------------------");
byte meta = 23;
BitsArray bits = new BitsArray(meta);
int rotateAngle = bits.GetInt(1,2, 0); //0,1,2,3 * 90
int growth = bits.GetInt(3,6, 2);
System.out.println("rotateAngle:" + rotateAngle);
System.out.println("growth:" + growth);

growth++;

BitsArray ba_growth = new BitsArray(growth);
BitsArray ba_rotate = new BitsArray(rotateAngle);
BitsArray result = BitsArray.join(ba_rotate, 2, ba_growth );
meta = (byte)result.GetInt();
System.out.println("meta:" + meta);

Изначально ты суешь мету которую хранит твой блок
BitsArray bits = new BitsArray(meta);

далее получаешь свои значения двух переменных:
Java:
int rotateAngle = bits.GetInt(1,2, 0); //0,1,2,3 * 90
int growth = bits.GetInt(3,6, 2);
GetInt(1,2,0)
взять число лежащим по биту с 1 до 2 бита, где 0 - это сколько из 8 бит нужно удалить справа (удалить с самого начала)
поворот у тебя имеет 4 значения (вторые числа - это в виде двоичной):
0 = 00
1 = 01
2 = 10
3 = 11
это чтоб тебе понятнее было, разберем вторую строку
int growth = bits.GetInt(3,6, 2);
Взять число начиная с 3го бита по 6ой включительно, и удалить 2 бита справа (в массиве хранятся числа в 8ми битах), первые два бита будут чему то равны, потому что там у нас другое число хранится. И эти 2а бита нам не нужны в этом числе.
второе число у нас занимает 4 бита (3ий бит, 4ый, 5ый, 6ой)

нам допустим надо увеличить рост, делаем
growth++;

теперь нам надо как то запихнуть это всё обратно

Java:
BitsArray ba_growth = new BitsArray(growth);
BitsArray ba_rotate = new BitsArray(rotateAngle);
BitsArray result = BitsArray.join(ba_rotate, 2, ba_growth );
meta = (byte)result.GetInt();

Создаем два обьекта, каждый из которых хранится и раскладывается в 8 битах
а потом соединяем первый, со вторым.
BitsArray.join(ba_rotate, 2, ba_growth );
число 2а, это длинна в битах первого числа. То есть записать второе число после 2го бита (то бишь начиная с 3го).

Если нужен срочный ответ пишите в скайп или телеграмм (ник такой же). Если готовы подождать, то спрашивайте по полной тут, попробуем разобраться с Вами вместе на нужном Вам примере.

PS: это только одна из частей выложенных на гитхаб. Возможно позже появится статья по работе с MySQL и SQLite которые там уже есть вместе с примерами. (ZZZubec/PluginUtils)

Написано на скорую руку немного топорно, но работает. Будет время, улучшу реализацию.
Автор
ZZZubec
Скачивания
0
Просмотры
513
Первый выпуск
Обновление
Оценка
4.00 звёзд 1 оценок

Последние рецензии

Почему не описана основная идея о впихивании нескольких значений ограниченного диапазона в одно число? Вместо этого приведен частный случай с двумя значениями
Сверху