Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите Получить X, Y, Z из числа

Метки:
Теги Теги
java
Статус
Закрыто для дальнейших ответов.

WhileInside

Активный участник
Пользователь
Баллы
66
Имя в Minecraft
WhileInside
У меня есть массив блоков: short[] blockData;

Блок в данный массив записывается так:
Код:
public void writeBlockData(int x, int y, int z, int id, int data) {
  int index = (y * l + z) * w + x;
  blockData[index] = MathUtil.pair2b(id, data);
}
и мне нужно из переменной index получить обратно X, Y, Z (я уже знаю w и l)
есть какие-то идеи?
 
Код, в котором мне нужно знать X, Y, Z
upload_2020-5-19_1-9-14.png
 
У меня есть массив блоков: short[] blockData;

Блок в данный массив записывается так:
Код:
public void writeBlockData(int x, int y, int z, int id, int data) {
  int index = (y * l + z) * w + x;
  blockData[index] = MathUtil.pair2b(id, data);
}
и мне нужно из переменной index получить обратно X, Y, Z (я уже знаю w и l)
есть какие-то идеи?
А почему бы не использовать объект блока для хранения в массиве?
 
А почему бы не использовать объект блока для хранения в массиве?
Жрёт много памяти, любой объект (даже не смотря на то, что он пустой) будет жрать больше, чем short, это особенно заметно, когда у тебя будет 4 лямов элементов в массиве. (Раньше арена ела 14 мегабайт памяти, это я хранил только объект с ID и Data, я не знаю, что в Bukkit API, но возможно вышло бы больше, если бы я использовал Block. Сейчас арена съедает 5 мегабайтов)

Кстати, мне ответили, забыл вчера тему закрыть.
Вот ответ:

Код:
x = index % w
z = (index / w) % l
y = index / w / l

Ещё были варианты сделать тройным циклом от 0 по w, от 0 до h и от 0 до l
 
Статус
Закрыто для дальнейших ответов.

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

Назад
Верх