Скорее всего, это делается путем объединения различных двоичных флагов.Чтобы дать вам четкое объяснение, вы должны понимать, как числа представляются побитовым образом.По сути, это все равно что считать в десятичном виде с той лишь разницей, что доступны только два числа.Ниже приведен пример (десятичные числа 0-16 в их двоичном представлении).
Decimal Binary
0 0
1 1
2 10
3 11
4 100
5 101
6 110
7 111
8 1000
9 1001
10 1010
11 1011
12 1100
13 1101
14 1110
15 1111
16 10000
Именно так ваш компьютер хранит числа.Вы также должны получить базовые знания о побитовых операторах.Допустим, у вас есть две строки по 8 битов, которые выглядят следующим образом:
10101010
01011111
Если вы объедините эти две строки с помощью побитового оператора или оператора - "|"- бит вывода x равен 1, если бит x строки 1 равен 1 или бит x строки 2 равен 1. Таким образом, в нашем случае результат будет выглядеть следующим образом:
11111111
По битам иОператор (&) проверяет, равен ли бит строки 1 строки 1 1, а битом строки 2 x 1. В нашем случае это вывод:
00001010
Побитовый оператор xor (исключая или)) проверяет, равен ли бит одной строки х 1. Наш результат будет выглядеть следующим образом:
11110101
По сути, разработчики Minecraft сделали, что они определили несколько флагов.они должны были хотеть состояние двери, когда верхняя часть двери обращена на запад и открыта, они написали бы это так:
byte state = ORIENTATION_WEST | PART_UPPER | STATE_OPEN;
По битам это будет выглядеть так:
Что в итоге будет иметь вид:
00001110 (west, upper part, open)
Хотя, как вы сказали, используются только первые 4 бита байта, вы не можете просто сохранить биты.Скорее всего, весь байт будет сохранен.